diff --git a/.gitignore b/.gitignore index 66fd13c9..aac80734 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ # Dependency directories (remove the comment below to include it) # vendor/ +testdata/.metadata/ +.idea/ diff --git a/.idea/mdclasses.iml b/.idea/mdclasses.iml index c956989b..5e764c4f 100644 --- a/.idea/mdclasses.iml +++ b/.idea/mdclasses.iml @@ -1,5 +1,6 @@ + diff --git a/EventSubscription.go b/EventSubscription.go new file mode 100644 index 00000000..dda7b4ce --- /dev/null +++ b/EventSubscription.go @@ -0,0 +1,19 @@ +package mdclasses + +import "github.com/v8platform/mdclasses/encoding/xml" + +type Source struct { + Types []string `xml:"types"` +} + +type EventSubscription struct { + MDOBaseType + XMLName xml.Name `xml:"EventSubscription"` + Mdclass string `xml:"mdclass,attr"` + Uuid string `xml:"uuid,attr"` + Name string `xml:"name"` + Synonym ObjectKeyValueType `xml:"synonym"` + Source Source `xml:"source"` + Event string `xml:"event"` + Handler string `xml:"handler"` +} diff --git a/ExchangePlan.go b/ExchangePlan.go new file mode 100644 index 00000000..c5baf40f --- /dev/null +++ b/ExchangePlan.go @@ -0,0 +1,38 @@ +package mdclasses + +import "github.com/v8platform/mdclasses/encoding/xml" + +type Content []struct { + MdObject string `xml:"mdObject"` +} + +type ExchangePlan struct { + MDOBaseType + XMLName xml.Name `xml:"ExchangePlan"` + Xsi string `xml:"xsi,attr"` + Core string `xml:"core,attr"` + Mdclass string `xml:"mdclass,attr"` + Uuid string `xml:"uuid,attr"` + ThisNode string `xml:"thisNode,attr"` + ProducedTypes MDOProducedTypes `xml:"producedTypes"` + Name string `xml:"name"` + Synonym ObjectKeyValueType `xml:"synonym"` + UseStandardCommands string `xml:"useStandardCommands"` + InputByString []string `xml:"inputByString"` + FullTextSearchOnInputByString string `xml:"fullTextSearchOnInputByString"` + StandardAttributes []StandardAttribute `xml:"standardAttributes"` + CreateOnInput string `xml:"createOnInput"` + DataLockFields string `xml:"dataLockFields"` + DataLockControlMode string `xml:"dataLockControlMode"` + FullTextSearch string `xml:"fullTextSearch"` + ObjectPresentation ObjectKeyValueType `xml:"objectPresentation"` + ListPresentation ObjectKeyValueType `xml:"listPresentation"` + CodeLength string `xml:"codeLength"` + CodeAllowedLength string `xml:"codeAllowedLength"` + DescriptionLength string `xml:"descriptionLength"` + Content Content `xml:"content"` + DefaultPresentation string `xml:"defaultPresentation"` + EditType string `xml:"editType"` + ChoiceMode string `xml:"choiceMode"` + Attributes []Attribute `xml:"attributes"` +} diff --git a/commonTestMethods.go b/commonTestMethods.go new file mode 100644 index 00000000..fdc726dc --- /dev/null +++ b/commonTestMethods.go @@ -0,0 +1,12 @@ +package mdclasses + +import "testing" + +func unpackTestConf(t *testing.T) Configuration { + got, err := UnpackConfiguration("tests/metadata/ssl/src") + if err != nil { + t.Errorf("UnpackConfiguration() error = %v", err) + return Configuration{} + } + return got +} diff --git a/configuration.go b/configuration.go index a6b87266..cb1b101c 100644 --- a/configuration.go +++ b/configuration.go @@ -29,9 +29,9 @@ type Language struct { type Configuration struct { MDOBaseType - XMLName xml.Name `xml:"mdclass Configuration"` + XMLName xml.Name `xml:"mdclass Configuration"` Synonym []ObjectKeyValueType `xml:"synonym"` - ContainedObjects []ContainedObject `xml:"containedObjects,allowempty"` + ContainedObjects []ContainedObject `xml:"containedObjects,allowempty"` ConfigurationProperties Languages []*Language `xml:"languages"` @@ -45,12 +45,12 @@ type Configuration struct { // FilterCriteria []MDOTypeRef `xml:"filterCriteria"` CommonModules []*CommonModule `xml:"-"` // CommonAttributes []MDOTypeRef `xml:"commonAttributes"` - // ExchangePlans []MDOTypeRef `xml:"exchangePlans"` + ExchangePlans []*ExchangePlan `xml:"-"` // XDTOPackages []MDOTypeRef `xml:"xDTOPackages"` // WebServices []MDOTypeRef `xml:"webServices"` // HttpServices []MDOTypeRef `xml:"httpServices"` // WsReferences []MDOTypeRef `xml:"wsReferences"` - // EventSubscriptions []MDOTypeRef `xml:"eventSubscriptions"` + EventSubscriptions []*EventSubscription `xml:"-"` // ScheduledJobs []MDOTypeRef `xml:"scheduledJobs"` // SettingsStorages []MDOTypeRef `xml:"settingsStorages"` // FunctionalOptions []MDOTypeRef `xml:"functionalOptions"` @@ -167,9 +167,6 @@ type ConfigurationChildObjects struct { CalculationRegisters MDOTypeRefList `xml:"calculationRegisters"` BusinessProcesses MDOTypeRefList `xml:"businessProcesses"` Tasks MDOTypeRefList `xml:"tasks"` - WebService MDOTypeRefList `xml:"serviceService"` - WSReference MDOTypeRefList `xml:"wsReferenceReference"` - XDTOPackage MDOTypeRefList `xml:"xdtoPackage"` } const ConfigurationFile = "Configuration.mdo" @@ -219,6 +216,16 @@ func (conf *Configuration) Unpack(cfg UnpackConfig) error { return err } + err = conf.ConfigurationChildObjects.ExchangePlans.Unpack(cfg, &conf.ExchangePlans) + if err != nil { + return err + } + + err = conf.ConfigurationChildObjects.EventSubscriptions.Unpack(cfg, &conf.EventSubscriptions) + if err != nil { + return err + } + // for _, mdoTypeRef := range conf.ConfigurationChildObjects.Subsystems { // // subsystem := Subsystem{} @@ -248,3 +255,93 @@ func (conf *Configuration) Unpack(cfg UnpackConfig) error { return nil } + +// Возвращает раздел не распаковоанных объектов метаданных по имени типа +func (o ConfigurationChildObjects) GetChildByType(mdoType MDOType) *MDOTypeRefList { + switch mdoType { + case SUBSYSTEM: + return &o.Subsystems + case STYLE_ITEM: + return &o.StyleItems + case STYLE: + return &o.Styles + case COMMON_PICTURE: + return &o.CommonPictures + case SESSION_PARAMETER: + return &o.SessionParameters + case ROLE: + return &o.Roles + case COMMON_TEMPLATE: + return &o.CommonTemplates + case FILTER_CRITERION: + return &o.FilterCriteria + case COMMON_MODULE: + return &o.CommonModules + case COMMON_ATTRIBUTE: + return &o.CommonAttributes + case EXCHANGE_PLAN: + return &o.ExchangePlans + case XDTO_PACKAGE: + return &o.XDTOPackages + case WEB_SERVICE: + return &o.WebServices + case HTTP_SERVICE: + return &o.HttpServices + case WS_REFERENCE: + return &o.WsReferences + case EVENT_SUBSCRIPTION: + return &o.EventSubscriptions + case SCHEDULED_JOB: + return &o.ScheduledJobs + case SETTINGS_STORAGE: + return &o.SettingsStorages + case FUNCTIONAL_OPTION: + return &o.FunctionalOptions + case FUNCTIONAL_OPTIONS_PARAMETER: + return &o.FunctionalOptionsParameters + case DEFINED_TYPE: + return &o.DefinedTypes + case COMMON_COMMAND: + return &o.CommonCommands + case COMMAND_GROUP: + return &o.CommandGroups + case CONSTANT: + return &o.Constants + case COMMON_FORM: + return &o.CommonForms + case CATALOG: + return &o.Catalogs + case DOCUMENT: + return &o.Documents + case DOCUMENT_NUMERATOR: + return &o.DocumentNumerators + case SEQUENCE: + return &o.Sequences + case DOCUMENT_JOURNAL: + return &o.DocumentJournals + case ENUM: + return &o.Enums + case REPORT: + return &o.Reports + case DATA_PROCESSOR: + return &o.DataProcessors + case INFORMATION_REGISTER: + return &o.InformationRegisters + case ACCOUNTING_REGISTER: + return &o.AccountingRegisters + case ACCUMULATION_REGISTER: + return &o.AccumulationRegisters + case CHART_OF_CALCULATION_TYPES: + return &o.ChartsOfCalculationTypes + case CHART_OF_CHARACTERISTIC_TYPES: + return &o.ChartsOfCharacteristicTypes + case CALCULATION_REGISTER: + return &o.CalculationRegisters + case BUSINESS_PROCESS: + return &o.BusinessProcesses + case TASK: + return &o.Tasks + } + log.Warnf("Не найден раздел методанных %s", mdoType) + return nil +} diff --git a/configuration_test.go b/configuration_test.go new file mode 100644 index 00000000..f94410cb --- /dev/null +++ b/configuration_test.go @@ -0,0 +1,13 @@ +package mdclasses + +import ( + "github.com/stretchr/testify/require" + "testing" +) + +func TestGetChildByTypeName(t *testing.T) { + got := unpackTestConf(t) + children := got.ConfigurationChildObjects + exchangePlan := children.GetChildByType(EVENT_SUBSCRIPTION) + require.True(t, exchangePlan != nil) +} diff --git a/mdclasses_test.go b/mdclasses_test.go index c6bb50f5..522b2ce3 100644 --- a/mdclasses_test.go +++ b/mdclasses_test.go @@ -42,7 +42,7 @@ func TestUnpackConfiguration(t *testing.T) { } } -func Test(t *testing.T) { +func TestCompareFile(t *testing.T) { tests := []struct { name string dir string diff --git a/mdoTypes.go b/mdoTypes.go index 36ae5f63..142a9568 100644 --- a/mdoTypes.go +++ b/mdoTypes.go @@ -66,32 +66,86 @@ func (m *MDOType) UnmarshalText(text []byte) error { func (m MDOType) Group() string { switch m { - case ACCOUNTING_REGISTER: - return "AccountingRegisters" - case CATALOG: - return "Catalogs" - case DOCUMENT: - return "Documents" case SUBSYSTEM: return "Subsystems" + case STYLE_ITEM: + return "StyleItems" + case STYLE: + return "Styles" + case COMMON_PICTURE: + return "CommonPictures" + case SESSION_PARAMETER: + return "SessionParameters" + case ROLE: + return "Roles" case COMMON_TEMPLATE: return "CommonTemplates" + case FILTER_CRITERION: + return "FilterCriteria" case COMMON_MODULE: return "CommonModules" - case FORM: - return "Forms" + case COMMON_ATTRIBUTE: + return "CommonAttributes" + case EXCHANGE_PLAN: + return "ExchangePlans" + case XDTO_PACKAGE: + return "XDTOPackages" + case WEB_SERVICE: + return "WebServices" + case HTTP_SERVICE: + return "HttpServices" + case WS_REFERENCE: + return "WsReferences" + case EVENT_SUBSCRIPTION: + return "EventSubscriptions" + case SCHEDULED_JOB: + return "ScheduledJobs" + case SETTINGS_STORAGE: + return "SettingsStorages" + case FUNCTIONAL_OPTION: + return "FunctionalOptions" + case FUNCTIONAL_OPTIONS_PARAMETER: + return "FunctionalOptionsParameters" + case DEFINED_TYPE: + return "DefinedTypes" + case COMMON_COMMAND: + return "CommonCommands" + case COMMAND_GROUP: + return "CommandGroups" + case CONSTANT: + return "Constants" + case COMMON_FORM: + return "CommonForms" + case CATALOG: + return "Catalogs" + case DOCUMENT: + return "Documents" + case DOCUMENT_NUMERATOR: + return "DocumentNumerators" + case SEQUENCE: + return "Sequences" + case DOCUMENT_JOURNAL: + return "DocumentJournals" + case ENUM: + return "Enums" case REPORT: return "Reports" + case DATA_PROCESSOR: + return "DataProcessors" case INFORMATION_REGISTER: return "InformationRegisters" + case ACCOUNTING_REGISTER: + return "AccountingRegisters" + case ACCUMULATION_REGISTER: + return "AccumulationRegisters" case CHART_OF_CHARACTERISTIC_TYPES: return "ChartsOfCharacteristicTypes" - //case COMMON_MODULE: - // return "CommonModules" - //case COMMON_MODULE: - // return "CommonModules" - //case COMMON_MODULE: - // return "CommonModules" + case CALCULATION_REGISTER: + return "CalculationRegisters" + case BUSINESS_PROCESS: + return "BusinessProcesses" + case TASK: + return "Tasks" default: return "" } @@ -222,6 +276,16 @@ func (e MDOTypeRefList) Delete(index int) ([]MDOTypeRef, error) { return e, errors.New(fmt.Sprintf("Error delete object from index %v", index)) } +// Возвращает элемент по имени +func (e MDOTypeRefList) GetByName(name string) (MDOTypeRef, error) { + for _, t := range e { + if t.ref == name { + return t, nil + } + } + return MDOTypeRef{}, errors.Errorf("Нет такого объекта метаданных") +} + func removeElement(list []MDOTypeRef, i int) []MDOTypeRef { if i < len(list)-1 { list = append(list[:i], list[i+1:]...) @@ -252,7 +316,7 @@ func (m *MDOTypeRef) UnmarshalText(text []byte) error { } -func newMDOTypeRef(modType MDOType, ref string, parent MDOTypeRef) MDOTypeRef { +func NewMDOTypeRef(modType MDOType, ref string, parent MDOTypeRef) MDOTypeRef { raw := fmt.Sprintf("%s.%s", modType, ref) if modType == REF { @@ -285,7 +349,7 @@ func NewMDOTypeRefFromString(raw string) MDOTypeRef { ref = values[len(values)-1] } - return newMDOTypeRef(mdoType, ref, parent) + return NewMDOTypeRef(mdoType, ref, parent) } func getParentMDOTypeRef(name string, parent MDOTypeRef) MDOTypeRef { @@ -305,7 +369,7 @@ func getParentMDOTypeRef(name string, parent MDOTypeRef) MDOTypeRef { parentName := name[0:i] if parentName != "" { values := strings.Split(parentName, ".") - val = newMDOTypeRef(MDOType(values[0]), values[1], val) + val = NewMDOTypeRef(MDOType(values[0]), values[1], val) } } @@ -319,9 +383,11 @@ func (m MDOTypeRef) IsNull() bool { } func (m MDOTypeRef) Filename() string { - return filepath.Join(m.Dir(), m.ref+ExtMdo) +} +func (m MDOTypeRef) GetPath() string { + return m.Filename() } func (m MDOTypeRef) Dir() string { diff --git a/mdoTypes_test.go b/mdoTypes_test.go index 2d65a9ea..cfc663ad 100644 --- a/mdoTypes_test.go +++ b/mdoTypes_test.go @@ -58,11 +58,7 @@ func TestNewMDOTypeRefFromString(t *testing.T) { } func TestMDOTypeRefExist(t *testing.T) { - got, err := UnpackConfiguration("tests/metadata/edt/src") - if err != nil { - t.Errorf("UnpackConfiguration() error = %v", err) - return - } + got := unpackTestConf(t) subsystem := MDOTypeRef{ mdoType: "Subsystem", ref: "ПерваяПодсистема", @@ -73,11 +69,7 @@ func TestMDOTypeRefExist(t *testing.T) { } func TestMDOTypeRefGetIndex(t *testing.T) { - got, err := UnpackConfiguration("tests/metadata/edt/src") - if err != nil { - t.Errorf("UnpackConfiguration() error = %v", err) - return - } + got := unpackTestConf(t) mdo := MDOTypeRef{ mdoType: "Subsystem", ref: "ВтораяПодсистема", @@ -86,17 +78,13 @@ func TestMDOTypeRefGetIndex(t *testing.T) { } index := got.ConfigurationChildObjects.Subsystems.GetIndex(mdo) if index < 0 { - t.Errorf("Ошибка поиска дочернего объекта = %v", err) + t.Errorf("Ошибка поиска дочернего объекта = %s", mdo.ref) } require.True(t, index == 1) } func TestMDOTypeRefDelete(t *testing.T) { - got, err := UnpackConfiguration("tests/metadata/edt/src") - if err != nil { - t.Errorf("UnpackConfiguration() error = %v", err) - return - } + got := unpackTestConf(t) ref := got.ConfigurationChildObjects.Subsystems newChild, err := ref.Delete(1) if err != nil { @@ -107,13 +95,21 @@ func TestMDOTypeRefDelete(t *testing.T) { } func TestMDOTypeRefCreate(t *testing.T) { - got, err := UnpackConfiguration("tests/metadata/edt/src") - if err != nil { - t.Errorf("UnpackConfiguration() error = %v", err) - return - } + got := unpackTestConf(t) MDOTypeRef := NewMDOTypeRefFromString("Subsystem.NewSubsystem") got.ConfigurationChildObjects.Subsystems = append(got.ConfigurationChildObjects.Subsystems, MDOTypeRef) require.True(t, true) } + +func TestGetFilename(t *testing.T) { + config := UnpackConfig{ + Base: "tests/metadata/ssl", + Path: "tests/metadata/ssl", + } + path, err := config.getFilename("EventSubscription.АвтономнаяРаботаПроверитьВозможностьЗаписиОбщихДанных") + if err != nil { + t.Errorf("Ошибка получения пути к файлу %s", err) + } + require.True(t, path == "") +} diff --git a/subsystem.go b/subsystem.go index c4c352c7..16a502d1 100644 --- a/subsystem.go +++ b/subsystem.go @@ -22,13 +22,13 @@ type SubsystemChildSubsystems struct { func (conf *Subsystem) Unpack(cfg UnpackConfig) error { - parentMDO := newMDOTypeRef(SUBSYSTEM, conf.Name, conf.ParentSubsystem) + parentMDO := NewMDOTypeRef(SUBSYSTEM, conf.Name, conf.ParentSubsystem) var subsystems []MDOTypeRef for _, name := range conf.SubsystemChildSubsystems.Subsystems { - subsystems = append(subsystems, newMDOTypeRef( + subsystems = append(subsystems, NewMDOTypeRef( SUBSYSTEM, name, parentMDO, @@ -86,3 +86,27 @@ func objectByType(contentType string) interface{} { return nil } + +func (c Subsystem) GetContents() MDOTypeRefList { + list := MDOTypeRefList{} + addRecurse(&c, &list) + return list +} + +func addRecurse(c *Subsystem, list *MDOTypeRefList) { + addContents(c, list) + for _, childSubsystem := range c.Subsystems { + addRecurse(childSubsystem, list) + } +} + +func addContents(c *Subsystem, list *MDOTypeRefList) { + for _, content := range c.Content { + for _, v := range *list { + if v.raw == content.raw { + return + } + } + *list = append(*list, content) + } +} diff --git a/subsystem_test.go b/subsystem_test.go new file mode 100644 index 00000000..f34eab08 --- /dev/null +++ b/subsystem_test.go @@ -0,0 +1,22 @@ +package mdclasses + +import ( + "github.com/stretchr/testify/require" + "testing" +) + +func TestGetContents(t *testing.T) { + got, err := UnpackConfiguration("tests/metadata/ssl/src") + if err != nil { + t.Errorf("UnpackConfiguration() error = %v", err) + return + } + var list MDOTypeRefList + for _, subsystem := range got.Subsystems { + if subsystem.MDOBaseType.Name == "СтандартныеПодсистемы" { + list = subsystem.GetContents() + } + } + log.Infof("Количество элементов: %d", len(list)) + require.True(t, len(list) == 2054) +} diff --git a/tests/metadata/ssl/.project b/tests/metadata/ssl/.project new file mode 100644 index 00000000..5e163288 --- /dev/null +++ b/tests/metadata/ssl/.project @@ -0,0 +1,18 @@ + + + cf + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + com._1c.g5.v8.dt.core.V8ConfigurationNature + + diff --git a/tests/metadata/ssl/.settings/org.eclipse.core.resources.prefs b/tests/metadata/ssl/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..99f26c02 --- /dev/null +++ b/tests/metadata/ssl/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/tests/metadata/ssl/DT-INF/PROJECT.PMF b/tests/metadata/ssl/DT-INF/PROJECT.PMF new file mode 100644 index 00000000..353edbd0 --- /dev/null +++ b/tests/metadata/ssl/DT-INF/PROJECT.PMF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 +Runtime-Version: 8.3.17 diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Flowchart.scheme" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Flowchart.scheme" new file mode 100644 index 00000000..cc85dda7 --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Flowchart.scheme" @@ -0,0 +1,975 @@ + + + style:FieldBackColor + true + Lines + 20 + 20 + + 10 + 10 + 10 + 10 + false + Auto + + + + + Старт + + <ToolTip/> + <TabOrder>1</TabOrder> + <BackColor>auto</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>0</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <Location top="20" left="380" bottom="60" right="420"/> + <Border width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Solid</v8ui:style> + </Border> + <Picture/> + <PictureSize>AutoSize</PictureSize> + </Properties> + <Events> + <Event name="BeforeStart"/> + </Events> + </Start> + <ConnectionLine id="2"> + <Properties> + <Name>Линия1</Name> + <Title/> + <ToolTip/> + <TabOrder>2</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>1</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="400" y="60"/> + <Point x="400" y="80"/> + <Point x="400" y="80"/> + <Point x="400" y="100"/> + </PivotPoints> + <Connect> + <From> + <Item>Старт</Item> + <PortIndex>4</PortIndex> + </From> + <To> + <Item>Выполнить</Item> + <PortIndex>2</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Solid</v8ui:style> + </Line> + <DecorativeLine>false</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>Filled</EndArrow> + </Properties> + </ConnectionLine> + <Activity id="3" uuid="fa123bb1-d6d4-46b6-9285-47328d5526b2"> + <Properties> + <Name>Выполнить</Name> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Выполнить</v8:content> + </v8:item> + + + 3 + auto + style:FormTextColor + style:BorderColor + 0 + 2 + false + false + + Center + Center + Left + + + Solid + + + AutoSize + Выполнить + Исполнитель + false + + + + + + + + + + + + + + + + + + ВыполнитьПередСозданиемЗадач + ВыполнитьПриСозданииЗадач + ВыполнитьПриВыполнении + + + + + + + + Линия2 + + <ToolTip/> + <TabOrder>4</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>3</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="400" y="160"/> + <Point x="400" y="180"/> + <Point x="400" y="180"/> + <Point x="400" y="200"/> + </PivotPoints> + <Connect> + <From> + <Item>Выполнить</Item> + <PortIndex>4</PortIndex> + </From> + <To> + <Item>НужнаПроверка</Item> + <PortIndex>2</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Solid</v8ui:style> + </Line> + <DecorativeLine>false</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>Filled</EndArrow> + </Properties> + </ConnectionLine> + <Activity id="5" uuid="74a2cd47-0642-4401-8831-720bd844f736"> + <Properties> + <Name>Проверить</Name> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Проверить</v8:content> + </v8:item> + + + 5 + auto + style:FormTextColor + style:BorderColor + 0 + 4 + false + false + + Center + Center + Left + + + Solid + + + AutoSize + Проверить + Проверяющий + false + + + + + + + + + + + + + + + + + + + ПроверитьПриСозданииЗадач + ПроверитьПриВыполнении + + + + + + + + Линия3 + + <ToolTip/> + <TabOrder>6</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>5</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="400" y="360"/> + <Point x="400" y="380"/> + <Point x="400" y="380"/> + <Point x="400" y="400"/> + </PivotPoints> + <Connect> + <From> + <Item>Проверить</Item> + <PortIndex>4</PortIndex> + </From> + <To> + <Item>ВернутьИсполнителю</Item> + <PortIndex>2</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Solid</v8ui:style> + </Line> + <DecorativeLine>false</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>Filled</EndArrow> + </Properties> + </ConnectionLine> + <Condition id="11" uuid="6427007c-b0ff-468b-944b-6b183bb9ba6d"> + <Properties> + <Name>ВернутьИсполнителю</Name> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вернуть исполнителю?</v8:content> + </v8:item> + + + 8 + auto + style:FormTextColor + style:BorderColor + 0 + 6 + false + false + + Center + Center + Left + + + Solid + + + AutoSize + 3 + 1 + + + ВернутьИсполнителюПроверкаУсловия + + + + + Линия4 + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Нет</v8:content> + </v8:item> + + + 9 + #000000 + style:FormTextColor + style:BorderColor + 0 + 7 + false + false + + Center + Center + Left + + + + + + + + + + + + + + + + ВернутьИсполнителю + 1 + + + Завершение + 2 + + + + Solid + + false + FirstSegment + None + Filled + + + + + Линия5 + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Да</v8:content> + </v8:item> + + + 10 + #000000 + style:FormTextColor + style:BorderColor + 0 + 8 + false + false + + Center + Center + Left + + + + + + + + + + + + + + + + ВернутьИсполнителю + 3 + + + Выполнить + 2 + + + + Solid + + false + FirstSegment + None + Filled + + + + + НужнаПроверка + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Нужна проверка?</v8:content> + </v8:item> + + + 11 + auto + style:FormTextColor + style:BorderColor + 0 + 9 + false + false + + Center + Center + Left + + + Solid + + + AutoSize + 3 + 1 + + + НужнаПроверкаПроверкаУсловия + + + + + Линия6 + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Нет</v8:content> + </v8:item> + + + 12 + #000000 + style:FormTextColor + style:BorderColor + 0 + 10 + false + false + + Center + Center + Left + + + + + + + + + + + + + + + + + + + + НужнаПроверка + 1 + + + Завершение + 2 + + + + Solid + + false + FirstSegment + None + Filled + + + + + Линия7 + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Да</v8:content> + </v8:item> + + + 13 + #000000 + style:FormTextColor + style:BorderColor + 0 + 11 + false + false + + Center + Center + Left + + + + + + + + + + + + + + + + НужнаПроверка + 3 + + + Проверить + 2 + + + + Solid + + false + FirstSegment + None + Filled + + + + + ДекоративнаяЛиния1 + + <ToolTip/> + <TabOrder>14</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>12</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="160" y="20"/> + <Point x="160" y="640"/> + </PivotPoints> + <Connect> + <From> + <Item/> + <PortIndex>0</PortIndex> + </From> + <To> + <Item/> + <PortIndex>0</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Dashed</v8ui:style> + </Line> + <DecorativeLine>true</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>None</EndArrow> + </Properties> + </ConnectionLine> + <ConnectionLine id="24"> + <Properties> + <Name>ДекоративнаяЛиния2</Name> + <Title/> + <ToolTip/> + <TabOrder>15</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>13</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="540" y="20"/> + <Point x="540" y="640"/> + </PivotPoints> + <Connect> + <From> + <Item/> + <PortIndex>0</PortIndex> + </From> + <To> + <Item/> + <PortIndex>0</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Dashed</v8ui:style> + </Line> + <DecorativeLine>true</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>None</EndArrow> + </Properties> + </ConnectionLine> + <Decoration id="25"> + <Properties> + <Name>Декорация1</Name> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>постановка задачи</v8:content> + </v8:item> + + + 16 + auto + style:FormTextColor + style:BorderColor + 0 + 14 + false + true + + Center + Center + Left + + + AutoSize + Document + 0 + 0 + + + + + ДекоративнаяЛиния3 + + <ToolTip/> + <TabOrder>17</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>15</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="140" y="130"/> + <Point x="240" y="130"/> + <Point x="240" y="130"/> + <Point x="340" y="130"/> + </PivotPoints> + <Connect> + <From> + <Item>Декорация1</Item> + <PortIndex>5</PortIndex> + </From> + <To> + <Item>Выполнить</Item> + <PortIndex>1</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Dashed</v8ui:style> + </Line> + <DecorativeLine>true</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>Filled</EndArrow> + </Properties> + </ConnectionLine> + <Decoration id="27"> + <Properties> + <Name>Декорация2</Name> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>результат выполнения (оценка исполнителя): +- выполнено; +- отменено.</v8:content> + </v8:item> + + + 18 + auto + style:FormTextColor + style:BorderColor + 0 + 16 + false + true + + Left + Center + Left + + + AutoSize + Document + 0 + 0 + + + + + Декорация3 + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>результат выполнения (оценка исполнителя)</v8:content> + </v8:item> + + + 20 + auto + style:FormTextColor + style:BorderColor + 0 + 17 + false + true + + Center + Center + Left + + + AutoSize + Document + 0 + 0 + + + + + ДекоративнаяЛиния5 + + <ToolTip/> + <TabOrder>21</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>18</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="320" y="330"/> + <Point x="330" y="330"/> + <Point x="330" y="330"/> + <Point x="340" y="330"/> + </PivotPoints> + <Connect> + <From> + <Item>Декорация3</Item> + <PortIndex>5</PortIndex> + </From> + <To> + <Item>Проверить</Item> + <PortIndex>1</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Dashed</v8ui:style> + </Line> + <DecorativeLine>true</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>Filled</EndArrow> + </Properties> + </ConnectionLine> + <ConnectionLine id="34"> + <Properties> + <Name>ДекоративнаяЛиния4</Name> + <Title/> + <ToolTip/> + <TabOrder>24</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>19</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="460" y="130"/> + <Point x="510" y="130"/> + <Point x="510" y="130"/> + <Point x="560" y="130"/> + </PivotPoints> + <Connect> + <From> + <Item>Выполнить</Item> + <PortIndex>3</PortIndex> + </From> + <To> + <Item>Декорация2</Item> + <PortIndex>1</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Dashed</v8ui:style> + </Line> + <DecorativeLine>true</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>Filled</EndArrow> + </Properties> + </ConnectionLine> + <Decoration id="35"> + <Properties> + <Name>Декорация5</Name> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>результат выполнения (оценка проверяющего): +- выполнено +- отменено +- возвращено (на доработку исполнителю)</v8:content> + </v8:item> + + + 25 + auto + style:FormTextColor + style:BorderColor + 0 + 20 + false + true + + Left + Center + Left + + + AutoSize + Document + 0 + 0 + + + + + ДекоративнаяЛиния7 + + <ToolTip/> + <TabOrder>26</TabOrder> + <BackColor>#000000</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>21</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <PivotPoints> + <Point x="460" y="330"/> + <Point x="510" y="330"/> + <Point x="510" y="330"/> + <Point x="560" y="330"/> + </PivotPoints> + <Connect> + <From> + <Item>Проверить</Item> + <PortIndex>3</PortIndex> + </From> + <To> + <Item>Декорация5</Item> + <PortIndex>5</PortIndex> + </To> + </Connect> + <Line width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Dashed</v8ui:style> + </Line> + <DecorativeLine>true</DecorativeLine> + <TextLocation>FirstSegment</TextLocation> + <BeginArrow>None</BeginArrow> + <EndArrow>Filled</EndArrow> + </Properties> + </ConnectionLine> + <Completion id="74" uuid="de38fbf1-a4c1-4f42-ae7f-4760652559e0"> + <Properties> + <Name>Завершение</Name> + <Title/> + <ToolTip/> + <TabOrder>41</TabOrder> + <BackColor>auto</BackColor> + <TextColor>style:FormTextColor</TextColor> + <LineColor>style:BorderColor</LineColor> + <GroupNumber>0</GroupNumber> + <ZOrder>22</ZOrder> + <Hyperlink>false</Hyperlink> + <Transparent>false</Transparent> + <Font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" ref="sys:DefaultGUIFont" kind="WindowsFont"/> + <HorizontalAlign>Center</HorizontalAlign> + <VerticalAlign>Center</VerticalAlign> + <PictureLocation>Left</PictureLocation> + <Location top="500" left="380" bottom="540" right="420"/> + <Border width="1" gap="false"> + <v8ui:style xsi:type="sch:ConnectorLineType">Solid</v8ui:style> + </Border> + <Picture/> + <PictureSize>AutoSize</PictureSize> + </Properties> + <Events> + <Event name="OnComplete">ЗавершениеПриЗавершении</Event> + </Events> + </Completion> + </Items> +</GraphicalSchema> \ No newline at end of file diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Form.form" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Form.form" new file mode 100644 index 00000000..c8c73dfc --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Form.form" @@ -0,0 +1,2005 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:FormGroup"> + <name>Документ</name> + <id>207</id> + <items xsi:type="form:FormGroup"> + <name>Шапка</name> + <id>154</id> + <items xsi:type="form:FormGroup"> + <name>ГруппыШапки</name> + <id>165</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаАвторИсполнитель</name> + <id>160</id> + <items xsi:type="form:FormField"> + <name>Автор</name> + <id>161</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:MultiLanguageDataPath"> + <paths xsi:type="form:DataPath"> + <segments>Объект.Автор</segments> + </paths> + </dataPath> + <extendedTooltip> + <name>АвторExtendedTooltip</name> + <id>176</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>АвторКонтекстноеМеню</name> + <id>162</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <autoFill>true</autoFill> + </contextMenu> + <type>InputField</type> + <readOnly>true</readOnly> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:InputFieldExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <wrap>true</wrap> + <chooseType>true</chooseType> + <typeDomainEnabled>true</typeDomainEnabled> + <textEdit>true</textEdit> + </extInfo> + </items> + <items xsi:type="form:FormField"> + <name>Исполнитель</name> + <id>163</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:MultiLanguageDataPath"> + <paths xsi:type="form:DataPath"> + <segments>Исполнитель</segments> + </paths> + </dataPath> + <toolTip> + <key>ru</key> + <value>Исполнитель</value> + </toolTip> + <extendedTooltip> + <name>ИсполнительExtendedTooltip</name> + <id>177</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ИсполнительКонтекстноеМеню</name> + <id>164</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <autoFill>true</autoFill> + </contextMenu> + <type>InputField</type> + <readOnly>true</readOnly> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <footerHorizontalAlign>Left</footerHorizontalAlign> + <extInfo xsi:type="form:InputFieldExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <wrap>true</wrap> + <dropListButton>false</dropListButton> + <choiceButton>true</choiceButton> + <choiceButtonRepresentation>ShowInInputField</choiceButtonRepresentation> + <chooseType>true</chooseType> + <typeDomainEnabled>true</typeDomainEnabled> + <textEdit>true</textEdit> + </extInfo> + </items> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <title> + <key>ru</key> + <value>Автор исполнитель</value> + + + ГруппаАвторИсполнительExtendedTooltip + 175 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаДатаИСрок + 109 + + Дата + 152 + true + true + + true + + + + Объект.Date + + + + ДатаExtendedTooltip + 179 + true + true + + true + + Label + true + true + + Left + + + + ДатаКонтекстноеМеню + 153 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + СрокИсполнения + 12 + true + true + + true + + + + Объект.СрокИсполнения + + + + ru + Срок исполнения + + + СрокИсполненияExtendedTooltip + 180 + true + true + + true + + Label + true + true + + Left + + + + СрокИсполненияКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + Left + + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Дата и срок</value> + + + ГруппаДатаИСрокExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаНомерИВажность + 28 + + Номер + 149 + true + true + + true + + + + Объект.Number + + + + НомерExtendedTooltip + 182 + true + true + + true + + Label + true + true + + Left + + + + НомерКонтекстноеМеню + 150 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 14 + true + true + false + true + true + true + true + + + + Важность + 16 + true + true + + true + + + + Объект.Важность + + + + ВажностьExtendedTooltip + 183 + true + true + + true + + Label + true + true + + Left + + + + ВажностьКонтекстноеМеню + 17 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 14 + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Номер и важность</value> + + + ГруппаНомерИВажностьExtendedTooltip + 181 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группы шапки</value> + + + ГруппыШапкиExtendedTooltip + 174 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПриоритет + 155 + + СрокНачалаИсполнения + 119 + true + true + + true + + + + Объект.ДатаНачала + + + + ru + Срок начала исполнения + + + OnChange + СрокНачалаИсполненияПриИзменении + + + СрокНачалаИсполненияExtendedTooltip + 185 + true + true + + true + + Label + true + true + + Left + + + + СрокНачалаИсполненияКонтекстноеМеню + 120 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + + ru + ДЛФ=D + + true + true + true + + + + СрокНачалаИсполненияВремя + 135 + true + true + + true + + + + Объект.ДатаНачала + + + None + + ru + Срок начала исполнения + + + СрокНачалаИсполненияВремяExtendedTooltip + 186 + true + true + + true + + Label + true + true + + Left + + + + СрокНачалаИсполненияВремяКонтекстноеМеню + 136 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + false + + ru + ДЛФ=T + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Приоритет</value> + + + ГруппаПриоритетExtendedTooltip + 184 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ШапкаExtendedTooltip + 173 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + Страницы + 201 + + Главное + 203 + + ГруппаСодержание + 94 + + Наименование + 156 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 188 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 157 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + Предмет + 129 + true + true + + true + + + + ПредметСтрокой + + + + ПредметExtendedTooltip + 189 + true + true + + true + + Label + true + true + + Left + + + + ПредметКонтекстноеМеню + 130 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ПредметНажатие + + 60 + true + true + true + + + + Содержание + 18 + true + true + + true + + + + ЗаданиеСодержание + + + None + + СодержаниеExtendedTooltip + 190 + true + true + + true + + Label + true + true + + Left + + + + СодержаниеКонтекстноеМеню + 19 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + Left + + true + true + true + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Содержание</value> + + + ГруппаСодержаниеExtendedTooltip + 187 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Главное</value> + + + ГлавноеРасширеннаяПодсказка + 204 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ИсторияВыполнения + 205 + + РезультатВыполнения + 126 + + <key>ru</key> + <value>История выполнения</value> + + true + true + + true + + + + ЗаданиеРезультатВыполнения + + + None + + РезультатВыполненияExtendedTooltip + 191 + true + true + + true + + Label + true + true + + Left + + + + РезультатВыполненияКонтекстноеМеню + 127 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>История выполнения</value> + + + ИсторияВыполненияРасширеннаяПодсказка + 206 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + ГруппаСостояние + 131 + true + true + + true + + + <key>ru</key> + <value>Состояние</value> + + true + + ГруппаСостояниеExtendedTooltip + 172 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ГруппаРезультат + 27 + + ОписаниеРезультата + 78 + true + true + + true + + + + Объект.РезультатВыполнения + + + true + None + + ru + Описание результата выполнения + + + ОписаниеРезультатаExtendedTooltip + 193 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеРезультатаКонтекстноеМеню + 79 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ГруппаВыполненоДата + 54 + + Выполнено + 123 + true + true + + true + + false + + ВыполненоExtendedTooltip + 195 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Выполнено + PictureAndText + true + 1 + true + UserCmds + Auto + + + Отклонено + 137 + true + true + + true + + false + + ОтклоненоExtendedTooltip + 196 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Отменено + PictureAndText + true + 1 + true + UserCmds + + StdPicture.Stop + + Auto + + + ДатаИсполнения + 55 + + <key>ru</key> + <value>Дата</value> + + true + true + + true + + + + Объект.ДатаИсполнения + + + + OnChange + ДатаИсполненияПриИзменении + + + ДатаИсполненияExtendedTooltip + 197 + true + true + + true + + Label + true + true + + Left + + + + ДатаИсполненияКонтекстноеМеню + 56 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + false + + ru + ДЛФ=D + + true + true + true + + + + ДатаИсполненияВремя + 146 + true + true + + true + + + + Объект.ДатаИсполнения + + + None + + ru + Срок начала исполнения + + + ДатаИсполненияВремяExtendedTooltip + 198 + true + true + + true + + Label + true + true + + Left + + + + ДатаИсполненияВремяКонтекстноеМеню + 147 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + false + + ru + ДЛФ=T + + true + true + true + + + + ИзменитьЗадание + 199 + true + true + + true + + + ИзменитьЗаданиеРасширеннаяПодсказка + 200 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ИзменитьЗадание + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Выполнено дата</value> + + + ГруппаВыполненоДатаExtendedTooltip + 194 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Результат выполнения задания:</value> + + + ГруппаРезультатExtendedTooltip + 192 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Документ</value> + + false + + ДокументРасширеннаяПодсказка + 208 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ЗаписатьИЗакрыть + 45 + true + true + + true + + false + + ЗаписатьИЗакрытьExtendedTooltip + 166 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ОсновнаяКоманднаяПанель + 1 + true + true + + true + + + <key>ru</key> + <value>Основная командная панель</value> + + + ОсновнаяКоманднаяПанельExtendedTooltip + 167 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаПринятьКИсполнению + 158 + true + true + + true + + + ФормаПринятьКИсполнениюExtendedTooltip + 168 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПринятьКИсполнению + Auto + true + true + UserCmds + Auto + + + ФормаОтменитьПринятиеКИсполнению + 159 + true + true + + true + + + ФормаОтменитьПринятиеКИсполнениюExtendedTooltip + 169 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОтменитьПринятиеКИсполнению + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + Дополнительно + 148 + true + true + + true + + false + + ДополнительноExtendedTooltip + 170 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Дополнительно + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + Справка + 151 + true + true + + true + + false + + СправкаExtendedTooltip + 171 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Activate + Copy + Delete + Execute + ExecuteAndClose + SetDeletionMark + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + TaskObject.ЗадачаИсполнителя + + + true + + + true + +
true
+ true +
+ + НачальныйПризнакВыполнения + 2 + + Boolean + + + true + + + true + + + + ПредметСтрокой + + <key>ru</key> + <value>Предмет</value> + + 3 + + String + + + + true + + + true + + + + ТекущийПользователь + 5 + + CatalogRef.Пользователи + + + true + + + true + + + + ЗаданиеВыполнено + 7 + + Boolean + + + true + + + true + + + + ЗаданиеСодержание + + <key>ru</key> + <value>Содержание</value> + + 6 + + String + + + + true + + + true + + + + ЗаданиеРезультатВыполнения + + <key>ru</key> + <value>История сообщений</value> + + 8 + + String + + + + true + + + true + + + + Исполнитель + + <key>ru</key> + <value>Исполнитель</value> + + 4 + + CatalogRef.РолиИсполнителей + CatalogRef.Пользователи + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрытьВыполнить + + + true + DontUse + + + Выполнено + + <key>ru</key> + <value>Выполнено</value> + + 3 + + ru + Отметить задание как выполненное и закрыть + + + true + + + StdPicture.ExecuteTask + + + + ВыполненоВыполнить + + + DontUse + + + Отменено + + <key>ru</key> + <value>Отменено</value> + + 2 + + ru + Отметить задание как невыполненное и закрыть + + + true + + + + Отменено + + + DontUse + + + Дополнительно + + <key>ru</key> + <value>Дополнительно...</value> + + 4 + + ru + Дополнительная информация о задаче + + + true + + + + Дополнительно + + + DontUse + + + ПринятьКИсполнению + + <key>ru</key> + <value>Принять к исполнению</value> + + 5 + + ru + Принять к исполнению + + + true + + + + ПринятьКИсполнению + + + DontUse + + + ОтменитьПринятиеКИсполнению + + <key>ru</key> + <value>Отменить принятие к исполнению</value> + + 6 + + ru + Отменить принятие к исполнению + + + true + + + + ОтменитьПринятиеКИсполнению + + + DontUse + + + ИзменитьЗадание + + <key>ru</key> + <value>Изменить задание</value> + + 7 + + ru + Изменить задание + + + true + + + + ИзменитьЗадание + + + FunctionalOption.ИзменятьЗаданияЗаднимЧислом + DontUse + + + + + + Task.ЗадачаИсполнителя.Command.Выполнено + FormCommandBarImportant + 0 + + + + BusinessProcess.Задание.StandardCommand.CreateBasedOn + + true + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Help/ru.html" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Help/ru.html" new file mode 100644 index 00000000..45da3e9c --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Help/ru.html" @@ -0,0 +1,38 @@ + +

Предназначена для выполнения бизнес-процесса Задание.

+

Открывается из списков задач, например, Мои задачи на рабочем столе или Все задачи.

+

Главное

+
  • На вкладке Главное размещается Предмет задания, указывается Задача и расшифровка задачи.

История выполнения

+
  • На вкладке История выполнения можно просмотреть информацию о работе исполнителя над задачей (заполняется автоматически). +
  • Если задача выполнена или отменена, такую задачу уже невозможно изменить. Обратите внимание, что поле История выполнения заполняется программой автоматически и защищено от редактирования.

Важность

+
  • Принимает значения Обычная (по умолчанию), Низкая, Высокая. +
  • Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выберите соответствующее значение этого поля.

Дата начала выполнения

+
  • В поле Дата начала можно проставить дату и время, когда задание начало выполняться. Для того чтобы это поле было доступно, в разделе Администрирование - Органайзер необходимо установить флажок Дата начала задач. По данному полю можно будет затем сортировать задачи в списках.

Принятие к исполнению

+
  • +
    Задача, непринятая к исполнению, в списках выделяется жирным шрифтом. Выполните соответствующую команду меню Еще, для того чтобы Принятьк исполнению задачу. После этого задача исчезает из списков задач других исполнителей, назначенных на ту же роль.
    +
  • +
    С помощью соответствующей команды меню Еще можно Отменить принятие к исполнению.

Выполнение задания

+
  • Задачи могут быть без проверки выполнения. В этом случае проверяющим является сам исполнитель. +
  • В поле Результат выполнения задания напишите комментарий о выполнении задания. +
  • Подтвердите выполнение (нажав кнопку Выполнено), +
  • После этого заполняется дата выполнения, задача закрывается и становится защищенной от редактирования.

Невыполнение

+
  • В поле Результат выполнения задания напишите причину невыполнения задания. +
  • Нажмите кнопку Отменено, что означает невыполнение задачи. +
  • После нажатия кнопки заполняется Дата отказа от выполнения, задача закрывается и становится защищенной от редактирования.

Отправка другому исполнителю

+
  • Задачу можно Перенаправить другому исполнителю с помощью соответствующей кнопки. +
  • Заполните необходимые поля.

Создание подчиненного бизнес-процесса

+
  • +
    Для того чтобы использовать подчиненные бизнес-процессы, в разделе Администрирование - Органайзер необходимо установить соответствующий флажок.
    +
  • +
    Часто бизнес-процессы создаются не сами по себе, а в рамках продолжения задач других бизнес-процессов. Например, директор поручает руководителям подразделений подготовить ежегодный план-отчет. Руководители на основании этой задачи дают поручения своим исполнителям. Исполнители начинают работать, формировать отчеты, отправлять их на согласование и т.д. Таким образом, от первого поручения директора вырастает целая иерархия бизнес-процессов и задач.
    +
  • +
    Для того чтобы запустить один бизнес-процесс на основании другого, в задаче родительского бизнес-процесса выполните команду Создать на основании, из списка выберите вид бизнес-процесса, например, Задание. Заполните необходимые поля.

Напоминание

+

Изменение задания

+
  • С помощью ссылки Изменить задание можно открыть задание и переработать его (при наличии прав доступа). В этом случае задание снова будет направлено исполнителю.

Дополнительные сведения о задаче

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Module.bsl" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Module.bsl" new file mode 100644 index 00000000..1ac4c1de --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214/Module.bsl" @@ -0,0 +1,324 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Для нового объекта выполняем код инициализации формы в ПриСозданииНаСервере. + // Для существующего - в ПриЧтенииНаСервере. + Если Объект.Ссылка.Пустая() Тогда + ИнициализацияФормы(); + КонецЕсли; + + ТекущийПользователь = Пользователи.ТекущийПользователь(); + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + ПараметрыГиперссылки = МодульРаботаСФайлами.ГиперссылкаФайлов(); + ПараметрыГиперссылки.Размещение = "КоманднаяПанель"; + ПараметрыГиперссылки.Владелец = "Объект.БизнесПроцесс"; + МодульРаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + БизнесПроцессыИЗадачиКлиент.ОбновитьДоступностьКомандПринятияКИсполнению(ЭтотОбъект); + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ВыполнитьЗадачу = Ложь; + Если НЕ (ПараметрыЗаписи.Свойство("ВыполнитьЗадачу", ВыполнитьЗадачу) И ВыполнитьЗадачу) Тогда + Возврат; + КонецЕсли; + + Если НЕ ЗаданиеВыполнено И НЕ ЗначениеЗаполнено(ТекущийОбъект.РезультатВыполнения) Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Укажите причину, по которой задача отклоняется.'"),, + "Объект.РезультатВыполнения",, + Отказ); + Возврат; + КонецЕсли; + + // Предварительная запись бизнес-процесса для корректной работы обработчика точки маршрута. + ЗаписатьРеквизитыБизнесПроцесса(ТекущийОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + БизнесПроцессыИЗадачиКлиент.ФормаЗадачиОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник); + Если ИмяСобытия = "Запись_Задание" Тогда + Если (Источник = Объект.БизнесПроцесс ИЛИ (ТипЗнч(Источник) = Тип("Массив") + И Источник.Найти(Объект.БизнесПроцесс) <> Неопределено)) Тогда + Прочитать(); + КонецЕсли; + КонецЕсли; + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + ИнициализацияФормы(); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СрокНачалаИсполненияПриИзменении(Элемент) + + Если Объект.ДатаНачала = НачалоДня(Объект.ДатаНачала) Тогда + Объект.ДатаНачала = КонецДня(Объект.ДатаНачала); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДатаИсполненияПриИзменении(Элемент) + + Если Объект.ДатаИсполнения = НачалоДня(Объект.ДатаИсполнения) Тогда + Объект.ДатаИсполнения = КонецДня(Объект.ДатаИсполнения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрытьВыполнить() + + БизнесПроцессыИЗадачиКлиент.ЗаписатьИЗакрытьВыполнить(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредметНажатие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПоказатьЗначение(,Объект.Предмет); + +КонецПроцедуры + +// СтандартныеПодсистемы.РаботаСФайлами +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, + ПараметрыПеретаскивания, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, + ПараметрыПеретаскивания, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры +// Конец СтандартныеПодсистемы.РаботаСФайлами + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполненоВыполнить(Команда) + + ЗаданиеВыполнено = Истина; + БизнесПроцессыИЗадачиКлиент.ЗаписатьИЗакрытьВыполнить(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Отменено(Команда) + + ЗаданиеВыполнено = Ложь; + БизнесПроцессыИЗадачиКлиент.ЗаписатьИЗакрытьВыполнить(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Дополнительно(Команда) + + БизнесПроцессыИЗадачиКлиент.ОткрытьДопИнформациюОЗадаче(Объект.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ПринятьКИсполнению(Команда) + + БизнесПроцессыИЗадачиКлиент.ПринятьЗадачуКИсполнению(ЭтотОбъект, ТекущийПользователь); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьПринятиеКИсполнению(Команда) + + БизнесПроцессыИЗадачиКлиент.ОтменитьПринятиеЗадачиКИсполнению(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьЗадание(Команда) + + Если Модифицированность Тогда + Записать(); + КонецЕсли; + ПоказатьЗначение(,Объект.БизнесПроцесс); + +КонецПроцедуры + +// СтандартныеПодсистемы.РаботаСФайлами +&НаКлиенте +Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда); + КонецЕсли; + +КонецПроцедуры +// Конец СтандартныеПодсистемы.РаботаСФайлами + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ИнициализацияФормы() + + НачальныйПризнакВыполнения = Объект.Выполнена; + ПрочитатьРеквизитыБизнесПроцесса(); + УстановитьСостояниеЭлементов(); + + ИспользоватьДатуИВремяВСрокахЗадач = ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"); + Элементы.СрокНачалаИсполненияВремя.Видимость = ИспользоватьДатуИВремяВСрокахЗадач; + Элементы.ДатаИсполненияВремя.Видимость = ИспользоватьДатуИВремяВСрокахЗадач; + БизнесПроцессыИЗадачиСервер.УстановитьФорматДаты(Элементы.СрокИсполнения); + БизнесПроцессыИЗадачиСервер.УстановитьФорматДаты(Элементы.Дата); + + БизнесПроцессыИЗадачиСервер.ФормаЗадачиПриСозданииНаСервере(ЭтотОбъект, Объект, + Элементы.ГруппаСостояние, Элементы.ДатаИсполнения); + Элементы.ОписаниеРезультата.ТолькоПросмотр = Объект.Выполнена; + + Элементы.ИзменитьЗадание.Видимость = (Объект.Автор = Пользователи.ТекущийПользователь()); + Исполнитель = ?(ЗначениеЗаполнено(Объект.Исполнитель), Объект.Исполнитель, Объект.РольИсполнителя); + + Если ПравоДоступа("Изменение", Метаданные.БизнесПроцессы.Задание) Тогда + Элементы.Выполнено.Доступность = Истина; + Элементы.Отклонено.Доступность = Истина; + Иначе + Элементы.Выполнено.Доступность = Ложь; + Элементы.Отклонено.Доступность = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьРеквизитыБизнесПроцесса() + + ЗадачаОбъект = РеквизитФормыВЗначение("Объект"); + + УстановитьПривилегированныйРежим(Истина); + ЗаданиеОбъект = ЗадачаОбъект.БизнесПроцесс.ПолучитьОбъект(); + ЗаданиеВыполнено = ЗаданиеОбъект.Выполнено; + ЗаданиеРезультатВыполнения = ЗаданиеОбъект.РезультатВыполнения; + ЗаданиеСодержание = ЗаданиеОбъект.Содержание; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьРеквизитыБизнесПроцесса(ЗадачаОбъект) + + УстановитьПривилегированныйРежим(Истина); + НачатьТранзакцию(); + Попытка + БизнесПроцессыИЗадачиСервер.ЗаблокироватьБизнесПроцессы(ЗадачаОбъект.БизнесПроцесс); + + БизнесПроцессОбъект = ЗадачаОбъект.БизнесПроцесс.ПолучитьОбъект(); + ЗаблокироватьДанныеДляРедактирования(БизнесПроцессОбъект.Ссылка); + + БизнесПроцессОбъект.Выполнено = ЗаданиеВыполнено; + БизнесПроцессОбъект.Записать(); // АПК:1327 Блокировка установлена в БизнесПроцессыИЗадачиСервер.ЗаблокироватьБизнесПроцессы + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; +КонецПроцедуры + +&НаСервере +Процедура УстановитьСостояниеЭлементов() + + БизнесПроцессы.Задание.УстановитьСостояниеЭлементовФормыЗадачи(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Form.form" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Form.form" new file mode 100644 index 00000000..76604963 --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Form.form" @@ -0,0 +1,2147 @@ + + + + Документ + 234 + + ГруппаСостояние + 134 + true + true + + true + + + <key>ru</key> + <value>Состояние</value> + + + ГруппаСостояниеExtendedTooltip + 193 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + Шапка + 165 + + ГруппыШапки + 166 + + ГруппаАвторИсполнитель + 167 + + Автор + 168 + true + true + + true + + + + Объект.Автор + + + + АвторExtendedTooltip + 197 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 169 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 35 + true + true + true + true + true + true + + + + Исполнитель + 170 + + <key>ru</key> + <value>Проверяющий</value> + + true + true + + true + + + + Исполнитель + + + + ru + Исполнитель + + + ИсполнительExtendedTooltip + 198 + true + true + + true + + Label + true + true + + Left + + + + ИсполнительКонтекстноеМеню + 171 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + Left + + 35 + true + true + true + false + true + ShowInInputField + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Автор исполнитель</value> + + + ГруппаАвторИсполнительExtendedTooltip + 196 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаДатаИСрок + 172 + + Дата + 173 + true + true + + true + + + + Объект.Date + + + + ДатаExtendedTooltip + 200 + true + true + + true + + Label + true + true + + Left + + + + ДатаКонтекстноеМеню + 174 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + СрокИсполнения + 175 + true + true + + true + + + + Объект.СрокИсполнения + + + + ru + Срок исполнения + + + СрокИсполненияExtendedTooltip + 201 + true + true + + true + + Label + true + true + + Left + + + + СрокИсполненияКонтекстноеМеню + 176 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + Left + + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Дата и срок</value> + + + ГруппаДатаИСрокExtendedTooltip + 199 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаНомерИВажность + 177 + + Номер + 178 + true + true + + true + + + + Объект.Number + + + + НомерExtendedTooltip + 203 + true + true + + true + + Label + true + true + + Left + + + + НомерКонтекстноеМеню + 179 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + Важность + 180 + true + true + + true + + + + Объект.Важность + + + + ВажностьExtendedTooltip + 204 + true + true + + true + + Label + true + true + + Left + + + + ВажностьКонтекстноеМеню + 181 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 14 + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Номер и важность</value> + + + ГруппаНомерИВажностьExtendedTooltip + 202 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группы шапки</value> + + + ГруппыШапкиExtendedTooltip + 195 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаПриоритет + 182 + + СрокНачалаИсполнения + 183 + true + true + + true + + + + Объект.ДатаНачала + + + + ru + Срок начала исполнения + + + OnChange + СрокНачалаИсполненияПриИзменении + + + СрокНачалаИсполненияExtendedTooltip + 206 + true + true + + true + + Label + true + true + + Left + + + + СрокНачалаИсполненияКонтекстноеМеню + 184 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + + ru + ДЛФ=D + + true + true + true + + + + СрокНачалаИсполненияВремя + 185 + true + true + + true + + + + Объект.ДатаНачала + + + None + + ru + Срок начала исполнения + + + СрокНачалаИсполненияВремяExtendedTooltip + 207 + true + true + + true + + Label + true + true + + Left + + + + СрокНачалаИсполненияВремяКонтекстноеМеню + 186 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 4 + true + true + false + + ru + ДЛФ=T + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Приоритет</value> + + + ГруппаПриоритетExtendedTooltip + 205 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ШапкаExtendedTooltip + 194 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + Страницы + 222 + + Главное + 224 + + ГруппаСодержание + 94 + + Наименование + 159 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 209 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 160 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + Предмет + 132 + true + true + + true + + + + ПредметСтрокой + + + + ПредметExtendedTooltip + 210 + true + true + + true + + Label + true + true + + Left + + + + ПредметКонтекстноеМеню + 133 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ПредметНажатие + + 60 + true + true + true + + + + Содержание + 18 + + <key>ru</key> + <value>Содержание</value> + + true + true + + true + + + + ЗаданиеСодержание + + + None + + СодержаниеExtendedTooltip + 211 + true + true + + true + + Label + true + true + + Left + + + + СодержаниеКонтекстноеМеню + 19 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + Left + + 5 + true + true + true + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Содержание</value> + + + ГруппаСодержаниеExtendedTooltip + 208 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Главное</value> + + + ГлавноеРасширеннаяПодсказка + 225 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ИсторияВыполнения + 226 + + РезультатВыполнения + 126 + + <key>ru</key> + <value>История выполнения</value> + + true + true + + true + + + + ЗаданиеРезультатВыполнения + + + None + + РезультатВыполненияExtendedTooltip + 212 + true + true + + true + + Label + true + true + + Left + + + + РезультатВыполненияКонтекстноеМеню + 127 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>История выполнения</value> + + + ИсторияВыполненияРасширеннаяПодсказка + 227 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 223 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + ГруппаРезультат + 27 + + ОписаниеРезультата + 78 + true + true + + true + + + + Объект.РезультатВыполнения + + + true + None + + ru + Описание результата выполнения + + + ОписаниеРезультатаExtendedTooltip + 214 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеРезультатаКонтекстноеМеню + 79 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ГруппаВыполненаДата + 54 + + Выполнено + 123 + true + true + + true + + false + + ВыполненоExtendedTooltip + 216 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Выполнено + PictureAndText + true + 1 + true + UserCmds + Auto + + + Отменено + 147 + true + true + + true + + false + + ОтмененоExtendedTooltip + 217 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Отменено + PictureAndText + true + 1 + true + UserCmds + + StdPicture.Stop + + Auto + + + Возвращено + 124 + true + true + + true + + false + + ВозвращеноExtendedTooltip + 218 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Возвращено + PictureAndText + true + 1 + true + UserCmds + + CommonPicture.ЗаполнитьФорму + + Auto + + + ДатаИсполнения + 55 + + <key>ru</key> + <value>Дата проверки</value> + + true + true + + true + + + + Объект.ДатаИсполнения + + + + ДатаИсполненияExtendedTooltip + 219 + true + true + + true + + Label + true + true + + Left + + + + ДатаИсполненияКонтекстноеМеню + 56 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + false + + ru + ДЛФ=D + + true + true + true + + + + ДатаИсполненияВремя + 161 + true + true + + true + + + + Объект.ДатаИсполнения + + + None + + ДатаИсполненияВремяExtendedTooltip + 220 + true + true + + true + + Label + true + true + + Left + + + + ДатаИсполненияВремяКонтекстноеМеню + 162 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + false + + ru + ДЛФ=T + + true + true + true + + + + ИзменитьЗадание + 130 + true + true + + true + + false + + ИзменитьЗаданиеExtendedTooltip + 221 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ИзменитьЗадание + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Выполнена дата</value> + + + ГруппаВыполненаДатаExtendedTooltip + 215 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Результат проверки задания:</value> + + + ГруппаРезультатExtendedTooltip + 213 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Документ</value> + + false + + ДокументРасширеннаяПодсказка + 235 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ЗаписатьИЗакрыть + 45 + true + true + + true + + false + + ЗаписатьИЗакрытьExtendedTooltip + 187 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 228 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 229 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Picture + true + true + UserCmds + Auto + + + ФормаВыполнено + 230 + true + true + + true + + + ФормаВыполненоРасширеннаяПодсказка + 231 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выполнено + Auto + true + true + UserCmds + Auto + + + ФормаЗадачаЗадачаИсполнителяПеренаправить + 232 + true + true + + true + + + Объект.Ref + + + ФормаЗадачаЗадачаИсполнителяПеренаправитьРасширеннаяПодсказка + 233 + true + true + + true + + Label + true + true + + Left + + + Task.ЗадачаИсполнителя.Command.Перенаправить + Picture + true + true + UserCmds + Auto + + + ФормаПринятьКИсполнению + 163 + true + true + + true + + + ФормаПринятьКИсполнениюExtendedTooltip + 189 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПринятьКИсполнению + Picture + true + true + UserCmds + Auto + + + ФормаОтменитьПринятиеКИсполнению + 164 + true + true + + true + + + ФормаОтменитьПринятиеКИсполнениюExtendedTooltip + 190 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОтменитьПринятиеКИсполнению + Picture + true + true + UserCmds + Auto + InAdditionalSubmenu + + + Дополнительно + 148 + true + true + + true + + false + + ДополнительноExtendedTooltip + 191 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Дополнительно + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + Справка + 43 + true + true + + true + + false + + СправкаExtendedTooltip + 192 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Activate + Copy + Delete + Execute + ExecuteAndClose + SetDeletionMark + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + TaskObject.ЗадачаИсполнителя + + + true + + + true + +
true
+ true +
+ + НачальныйПризнакВыполнения + 2 + + Boolean + + + true + + + true + + + + ПредметСтрокой + + <key>ru</key> + <value>Предмет</value> + + 3 + + String + + + + true + + + true + + + + ТекущийПользователь + 5 + + CatalogRef.Пользователи + + + true + + + true + + + + ЗаданиеСодержание + + <key>ru</key> + <value>Содержание</value> + + 6 + + String + + + + true + + + true + + + + ЗаданиеВыполнено + 7 + + Boolean + + + true + + + true + + + + ЗаданиеРезультатВыполнения + + <key>ru</key> + <value>История сообщений</value> + + 8 + + String + + + + true + + + true + + + + ЗаданиеПодтверждено + 9 + + Boolean + + + true + + + true + + + + ЗаданиеСсылка + 10 + + BusinessProcessRef.Задание + + + true + + + true + + + + Исполнитель + + <key>ru</key> + <value>Исполнитель</value> + + 4 + + CatalogRef.РолиИсполнителей + CatalogRef.Пользователи + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрытьВыполнить + + + true + DontUse + + + Выполнено + + <key>ru</key> + <value>Выполнено</value> + + 3 + + ru + Отметить задание как выполненное и закрыть + + + true + + + StdPicture.ExecuteTask + + + + Выполнено + + + DontUse + + + Возвращено + + <key>ru</key> + <value>Возвращено исполнителю</value> + + 4 + + ru + Вернуть задание на доработку исполнителю и закрыть + + + true + + + + Возвращено + + + DontUse + + + ИзменитьЗадание + + <key>ru</key> + <value>Изменить задание</value> + + 6 + + ru + Изменить задание + + + true + + + + ИзменитьЗаданиеВыполнить + + + FunctionalOption.ИзменятьЗаданияЗаднимЧислом + DontUse + + + Отменено + + <key>ru</key> + <value>Отменено</value> + + 5 + + ru + Отметить задание как отмененное и закрыть + + + true + + + + Отменено + + + DontUse + + + Дополнительно + + <key>ru</key> + <value>Дополнительно...</value> + + 2 + + ru + Дополнительная информация о задаче + + + true + + + + Дополнительно + + + DontUse + + + ПринятьКИсполнению + + <key>ru</key> + <value>Принять к исполнению</value> + + 7 + + ru + Принять к исполнению + + + true + + + + ПринятьКИсполнению + + + DontUse + + + ОтменитьПринятиеКИсполнению + + <key>ru</key> + <value>Отменить принятие к исполнению</value> + + 8 + + ru + Отменить принятие к исполнению + + + true + + + + ОтменитьПринятиеКИсполнению + + + DontUse + + + + + + Task.ЗадачаИсполнителя.Command.Выполнено + FormCommandBarImportant + 0 + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Help/ru.html" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Help/ru.html" new file mode 100644 index 00000000..a10db517 --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Help/ru.html" @@ -0,0 +1,42 @@ + +

Предназначена для проверки выполнения бизнес-процесса Задание.

+

Открывается из списков задач, например, Мои задачи на рабочем столе или Все задачи.

+

Главное

+
  • На вкладке Главное размещается Предмет задания, указывается Задача и расшифровка задачи.

История выполнения

+
  • На вкладке История выполнения можно просмотреть информацию о работе исполнителя над задачей (заполняется автоматически). +
  • Если задача выполнена или отменена, такую задачу уже невозможно изменить. Обратите внимание, что поле История выполнения заполнилось программой автоматически и защищено от редактирования.

Важность

+
  • Принимает значения Обычная (по умолчанию), Низкая, Высокая. +
  • Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выберите соответствующие значения этого поля.

Дата начала выполнения

+
  • В поле Дата начала можно проставить дату и время, когда задание начало выполняться. Для того чтобы это поле было доступно, в разделе Администрирование - Органайзер необходимо установить флажок Дата начала задач. По данному полю можно будет затем сортировать задачи в списках.

Принятие к исполнению

+
  • +
    Задача, непринятая к исполнению, в списках выделяется жирным шрифтом. Выполните соответствующую команду меню Еще, для того чтобы Принятьк исполнению задачу. После этого задача исчезает из списков задач других исполнителей, назначенных на ту же роль.
    +
  • +
    С помощью соответствующей команды меню Еще можно Отменить принятие к исполнению.

Проверка выполнения

+
  • В поле Результат проверки задания напишите комментарий о выполнении задачи. +
  • Подтвердите выполнение (нажав кнопку Выполнено), +
  • После этого заполняется Дата выполнения, задача закрывается и становится защищенной от редактирования.

Невыполнение

+
  • В поле Результат проверки задания напишите причину невыполнения задания. +
  • Нажмите кнопку Отменено, что означает невыполнение задания. +
  • После нажатия кнопки заполняется дата отказа от выполнения, задача закрывается и становится защищенной от редактирования.

Возвращение исполнителю на доработку

+
  • +
    В поле Результат проверки укажите причину, по которой задача возвращается на доработку.
    +
  • +
    Нажмите Возвращено исполнителю. После этого задача вернется в список задач исполнителя.

Создание подчиненного бизнес-процесса

+
  • +
    Для того чтобы использовать подчиненные бизнес-процессы, в разделе Администрирование - Органайзер необходимо установить соответствующий флажок.
    +
  • +
    Часто бизнес-процессы создаются не сами по себе, а в рамках продолжения задач других бизнес-процессов. Например, директор поручает руководителям подразделений подготовить ежегодный план-отчет. Руководители на основании этой задачи дают поручения своим исполнителям. Исполнители начинают работать, формировать отчеты, отправлять их на согласование и т.д. Таким образом, от первого поручения директора вырастает целая иерархия бизнес-процессов и задач.
    +
  • +
    Для того чтобы запустить один бизнес-процесс на сновании другого, в задаче родительского бизнес-процесса выполните команду Создать на основании, из списка выберите вид бизнес-процесса, например, Задание. Заполните необходимые поля.
\ No newline at end of file diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Module.bsl" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Module.bsl" new file mode 100644 index 00000000..ded5716a --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\224\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214/Module.bsl" @@ -0,0 +1,338 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Для нового объекта выполняем код инициализации формы в ПриСозданииНаСервере. + // Для существующего - в ПриЧтенииНаСервере. + Если Объект.Ссылка.Пустая() Тогда + ИнициализацияФормы(); + КонецЕсли; + + ТекущийПользователь = Пользователи.ТекущийПользователь(); + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + ПараметрыГиперссылки = МодульРаботаСФайлами.ГиперссылкаФайлов(); + ПараметрыГиперссылки.Размещение = "КоманднаяПанель"; + ПараметрыГиперссылки.Владелец = "Объект.БизнесПроцесс"; + МодульРаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + БизнесПроцессыИЗадачиКлиент.ОбновитьДоступностьКомандПринятияКИсполнению(ЭтотОбъект); + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ВыполнитьЗадачу = Ложь; + Если НЕ (ПараметрыЗаписи.Свойство("ВыполнитьЗадачу", ВыполнитьЗадачу) И ВыполнитьЗадачу) Тогда + Возврат; + КонецЕсли; + + Если НЕ ЗаданиеВыполнено И НЕ ЗаданиеПодтверждено + И НЕ ЗначениеЗаполнено(ТекущийОбъект.РезультатВыполнения) Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Укажите причину, по которой задача возвращается на доработку.'"),, + "Объект.РезультатВыполнения",, + Отказ); + Возврат; + ИначеЕсли НЕ ЗаданиеВыполнено И ЗаданиеПодтверждено + И НЕ ЗначениеЗаполнено(ТекущийОбъект.РезультатВыполнения) Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Укажите причину, по которой задача отменяется.'"),, + "Объект.РезультатВыполнения",, + Отказ); + Возврат; + КонецЕсли; + + // Предварительная запись бизнес-процесса для корректной работы обработчика точки маршрута. + ЗаписатьРеквизитыБизнесПроцесса(ТекущийОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + ИнициализацияФормы(); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + БизнесПроцессыИЗадачиКлиент.ФормаЗадачиОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник); + + Если ИмяСобытия = "Запись_Задание" Тогда + Если (Источник = ЗаданиеСсылка ИЛИ (ТипЗнч(Источник) = Тип("Массив") + И Источник.Найти(ЗаданиеСсылка) <> Неопределено)) Тогда + Прочитать(); + КонецЕсли; + КонецЕсли; + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СрокНачалаИсполненияПриИзменении(Элемент) + + Если Объект.ДатаНачала = НачалоДня(Объект.ДатаНачала) Тогда + Объект.ДатаНачала = КонецДня(Объект.ДатаНачала); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПредметНажатие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПоказатьЗначение(,Объект.Предмет); + +КонецПроцедуры + +// СтандартныеПодсистемы.РаботаСФайлами +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, + ПараметрыПеретаскивания, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, + ПараметрыПеретаскивания, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры +// Конец СтандартныеПодсистемы.РаботаСФайлами + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрытьВыполнить(Команда) + + БизнесПроцессыИЗадачиКлиент.ЗаписатьИЗакрытьВыполнить(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура Выполнено(Команда) + + ЗаданиеПодтверждено = Истина; + ЗаданиеВыполнено = Истина; + БизнесПроцессыИЗадачиКлиент.ЗаписатьИЗакрытьВыполнить(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Возвращено(Команда) + + ЗаданиеПодтверждено = Ложь; + ЗаданиеВыполнено = Ложь; + БизнесПроцессыИЗадачиКлиент.ЗаписатьИЗакрытьВыполнить(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Отменено(Команда) + + ЗаданиеПодтверждено = Истина; + ЗаданиеВыполнено = Ложь; + БизнесПроцессыИЗадачиКлиент.ЗаписатьИЗакрытьВыполнить(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьЗаданиеВыполнить(Команда) + + Если Модифицированность Тогда + Записать(); + КонецЕсли; + ПоказатьЗначение(, ЗаданиеСсылка); + +КонецПроцедуры + +&НаКлиенте +Процедура Дополнительно(Команда) + + БизнесПроцессыИЗадачиКлиент.ОткрытьДопИнформациюОЗадаче(Объект.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ПринятьКИсполнению(Команда) + + БизнесПроцессыИЗадачиКлиент.ПринятьЗадачуКИсполнению(ЭтотОбъект, ТекущийПользователь); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьПринятиеКИсполнению(Команда) + + БизнесПроцессыИЗадачиКлиент.ОтменитьПринятиеЗадачиКИсполнению(ЭтотОбъект); + +КонецПроцедуры + +// СтандартныеПодсистемы.РаботаСФайлами +&НаКлиенте +Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда); + КонецЕсли; + +КонецПроцедуры +// Конец СтандартныеПодсистемы.РаботаСФайлами + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ИнициализацияФормы() + + НачальныйПризнакВыполнения = Объект.Выполнена; + ПрочитатьРеквизитыБизнесПроцесса(); + УстановитьСостояниеЭлементов(); + + ИспользоватьДатуИВремяВСрокахЗадач = ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"); + Элементы.СрокНачалаИсполненияВремя.Видимость = ИспользоватьДатуИВремяВСрокахЗадач; + Элементы.ДатаИсполненияВремя.Видимость = ИспользоватьДатуИВремяВСрокахЗадач; + БизнесПроцессыИЗадачиСервер.УстановитьФорматДаты(Элементы.СрокИсполнения); + БизнесПроцессыИЗадачиСервер.УстановитьФорматДаты(Элементы.Дата); + + БизнесПроцессыИЗадачиСервер.ФормаЗадачиПриСозданииНаСервере(ЭтотОбъект, Объект, + Элементы.ГруппаСостояние, Элементы.ДатаИсполнения); + Элементы.ОписаниеРезультата.ТолькоПросмотр = Объект.Выполнена; + Исполнитель = ?(ЗначениеЗаполнено(Объект.Исполнитель), Объект.Исполнитель, Объект.РольИсполнителя); + + Если ПравоДоступа("Изменение", Метаданные.БизнесПроцессы.Задание) Тогда + Элементы.Выполнено.Доступность = Истина; + Элементы.Отменено.Доступность = Истина; + Элементы.Возвращено.Доступность = Истина; + Иначе + Элементы.Выполнено.Доступность = Ложь; + Элементы.Отменено.Доступность = Ложь; + Элементы.Возвращено.Доступность = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьРеквизитыБизнесПроцесса() + + ЗадачаОбъект = РеквизитФормыВЗначение("Объект"); + + УстановитьПривилегированныйРежим(Истина); + ЗаданиеОбъект = ЗадачаОбъект.БизнесПроцесс.ПолучитьОбъект(); // БизнесПроцессОбъект + ЗаданиеВыполнено = ЗаданиеОбъект.Выполнено; + ЗаданиеСсылка = ЗаданиеОбъект.Ссылка; + ЗаданиеПодтверждено = ЗаданиеОбъект.Подтверждено; + ЗаданиеРезультатВыполнения = ЗаданиеОбъект.РезультатВыполнения; + ЗаданиеСодержание = ЗаданиеОбъект.Содержание; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьРеквизитыБизнесПроцесса(ЗадачаОбъект) + + УстановитьПривилегированныйРежим(Истина); + НачатьТранзакцию(); + Попытка + БизнесПроцессыИЗадачиСервер.ЗаблокироватьБизнесПроцессы(ЗадачаОбъект.БизнесПроцесс); + + ЗаданиеОбъект = ЗадачаОбъект.БизнесПроцесс.ПолучитьОбъект(); + ЗаблокироватьДанныеДляРедактирования(ЗаданиеОбъект.Ссылка); + + ЗаданиеОбъект.Выполнено = ЗаданиеВыполнено; + ЗаданиеОбъект.Подтверждено = ЗаданиеПодтверждено; + ЗаданиеОбъект.Записать(); // АПК:1327 Блокировка установлена в БизнесПроцессыИЗадачиСервер.ЗаблокироватьБизнесПроцессы + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; +КонецПроцедуры + +&НаСервере +Процедура УстановитьСостояниеЭлементов() + + БизнесПроцессы.Задание.УстановитьСостояниеЭлементовФормыЗадачи(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Form.form" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Form.form" new file mode 100644 index 00000000..7f37e25e --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Form.form" @@ -0,0 +1,2022 @@ + + + + Документ + 151 + + ГлавнаяЗадача + 99 + true + true + + true + + + + ГлавнаяЗадачаСтрокой + + + + ГлавнаяЗадачаExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + + ГлавнаяЗадачаКонтекстноеМеню + 100 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ГлавнаяЗадачаНажатие + + true + true + true + + + + ГруппаСостояние + 92 + + ДекорацияЗначок + 93 + true + true + + true + + + ДекорацияЗначокExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияЗначокКонтекстноеМеню + 94 + true + true + + true + + true + + true + true + false + + + CommonPicture.Информация + + + + + ИнфоНадписьЗаголовок + 155 + true + true + + true + + + + ИнфоНадписьЗаголовок + + + None + + ИнфоНадписьЗаголовокРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + + ИнфоНадписьЗаголовокКонтекстноеМеню + 156 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + URLProcessing + ИнфоНадписьЗаголовокОбработкаНавигационнойСсылки + + true + + + true + true + + true + + + <key>ru</key> + <value>Состояние</value> + + false + + ГруппаСостояниеExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + Шапка + 145 + + ГруппаСрокВажность + 27 + + ЗаголовокЗадания + 19 + true + true + + true + + + + Объект.Наименование + + + true + + ЗаголовокЗаданияExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокЗаданияКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + Важность + 57 + true + true + + true + + + + Объект.Важность + + + + ВажностьExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + + ВажностьКонтекстноеМеню + 58 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Номер + 103 + true + true + + + + Объект.Number + + + + НомерExtendedTooltip + 114 + true + true + + true + + Label + true + true + + Left + + + + НомерКонтекстноеМеню + 104 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Срок важность</value> + + + ГруппаСрокВажностьExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + + ГруппаИсполнение + 67 + + Исполнитель + 69 + true + true + + true + + + + Объект.Исполнитель + + + + OnChange + ИсполнительПриИзменении + + + ИсполнительExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + + ИсполнительКонтекстноеМеню + 70 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + AutoComplete + ИсполнительАвтоПодбор + + + StartChoice + ИсполнительНачалоВыбора + + + TextEditEnd + ИсполнительОкончаниеВводаТекста + + + ChoiceProcessing + ИсполнительОбработкаВыбора + + true + true + false + true + false + true + true + true + + + + ГруппаСрокИсполнения + 147 + + СрокИсполнения + 21 + + <key>ru</key> + <value>Срок</value> + + true + true + + true + + + + Объект.СрокИсполнения + + + + ru + Срок исполнения + + + OnChange + СрокИсполненияПриИзменении + + + СрокИсполненияExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + + СрокИсполненияКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 10 + true + true + + ru + ДЛФ=D + + true + true + true + + + + СрокИсполненияВремя + 88 + + <key>ru</key> + <value>Срок</value> + + true + true + + true + + + + Объект.СрокИсполнения + + + None + + ru + Срок исполнения (время) + + + СрокИсполненияВремяExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + + СрокИсполненияВремяКонтекстноеМеню + 89 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 8 + true + true + false + + ru + ДЛФ=T + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Срок исполнения</value> + + + ГруппаСрокИсполненияРасширеннаяПодсказка + 148 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Исполнение</value> + + + ГруппаИсполнениеExtendedTooltip + 115 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ШапкаРасширеннаяПодсказка + 146 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаСодержание + 75 + + Предмет + 86 + true + true + + true + + + + ПредметСтрокой + + + + ПредметExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + + ПредметКонтекстноеМеню + 87 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ПредметНажатие + + 60 + true + true + + + + Содержание + 17 + + <key>ru</key> + <value>Содержание</value> + + true + true + + true + + + + Объект.Содержание + + + None + + СодержаниеExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + + СодержаниеКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Содержание</value> + + + ГруппаСодержаниеExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ГруппаПроверка + 56 + + НаПроверке + 54 + + <key>ru</key> + <value>Проверить выполнение:</value> + + true + true + + true + + + + Объект.НаПроверке + + + Right + + OnChange + НаПроверкеПриИзменении + + + НаПроверкеExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + + НаПроверкеКонтекстноеМеню + 55 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаПроверяющий + 28 + + Проверяющий + 14 + true + true + + true + + + + Объект.Проверяющий + + + None + + OnChange + ПроверяющийПриИзменении + + + ПроверяющийExtendedTooltip + 125 + true + true + + true + + Label + true + true + + Left + + + + ПроверяющийКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + + AutoComplete + ПроверяющийАвтоПодбор + + + StartChoice + ПроверяющийНачалоВыбора + + + TextEditEnd + ПроверяющийОкончаниеВводаТекста + + + ChoiceProcessing + ПроверяющийОбработкаВыбора + + 35 + true + true + false + true + false + false + true + true + true + + Style.BorderColor + + + + + ГруппаСрокПроверки + 149 + + СрокПроверки + 23 + + <key>ru</key> + <value>Срок</value> + + true + true + + true + + + + Объект.СрокПроверки + + + + ru + Срок проверки + + + OnChange + СрокПроверкиПриИзменении + + + СрокПроверкиExtendedTooltip + 126 + true + true + + true + + Label + true + true + + Left + + + + СрокПроверкиКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 10 + true + true + + ru + ДЛФ=D + + true + true + true + + Style.BorderColor + + + + + СрокПроверкиВремя + 90 + + <key>ru</key> + <value>Срок</value> + + true + true + + true + + + + Объект.СрокПроверки + + + None + + ru + Срок проверки (время) + + + СрокПроверкиВремяExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + + СрокПроверкиВремяКонтекстноеМеню + 91 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 8 + true + true + false + + ru + ДЛФ=T + + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Срок проверки</value> + + + ГруппаСрокПроверкиРасширеннаяПодсказка + 150 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Проверяющий</value> + + + ГруппаПроверяющийExtendedTooltip + 124 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Проверка</value> + + + ГруппаПроверкаExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаОбщиеСведения + 81 + + Автор + 79 + true + true + + true + + + + Объект.Автор + + + + АвторExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 80 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 35 + true + true + false + true + true + true + + + + Дата + 97 + + <key>ru</key> + <value>Начато</value> + + true + true + + true + + + + Объект.Date + + + + ДатаExtendedTooltip + 130 + true + true + + true + + Label + true + true + + Left + + + + ДатаКонтекстноеМеню + 98 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Автор</value> + + + ГруппаОбщиеСведенияExtendedTooltip + 128 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Документ</value> + + false + + ДокументРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + Top + + ФормаКоманднаяПанель + -1 + + ФормаСтартИЗакрыть + 131 + true + true + + true + + + ФормаСтартИЗакрытьРасширеннаяПодсказка + 132 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.StartAndClose + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписатьИЗакрыть + 141 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 142 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 135 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Auto + true + true + UserCmds + Auto + + + ФормаСтарт + 137 + true + true + + true + + + ФормаСтартРасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Start + Auto + true + true + UserCmds + Auto + + + ФормаНастроитьОтложенныйСтарт + 153 + true + true + + true + + + ФормаНастроитьОтложенныйСтартРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НастроитьОтложенныйСтарт + Auto + true + true + UserCmds + Auto + + + ФормаОстановить + 101 + true + true + + true + + + ФормаОстановитьExtendedTooltip + 105 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Остановить + Auto + true + true + UserCmds + Auto + + + ФормаПродолжить + 102 + true + true + + true + + + ФормаПродолжитьExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Продолжить + Auto + true + true + UserCmds + Auto + + + ГлобальныеКоманды + 143 + true + true + + true + + + <key>ru</key> + <value>Глобальные команды</value> + + + ГлобальныеКомандыРасширеннаяПодсказка + 144 + true + true + + true + + Label + true + true + + Left + + + + FormCommandPanelGlobalCommands + + + + СтандартныеКоманды + 133 + true + true + + true + + + <key>ru</key> + <value>Стандартные команды</value> + + + СтандартныеКомандыРасширеннаяПодсказка + 134 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 139 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 140 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + ChoiceProcessing + ОбработкаВыбора + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Activate + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + BusinessProcessObject.Задание + + + true + + + true + +
true
+ true +
+ + НачальныйПризнакСтарта + 2 + + Boolean + + + true + + + true + + + + ПредметСтрокой + + <key>ru</key> + <value>Предмет</value> + + 3 + + String + + + + true + + + true + + + + ГлавнаяЗадачаСтрокой + + <key>ru</key> + <value>Главная задача</value> + + 4 + + String + + + + true + + + true + + + + ИнфоНадписьЗаголовок + + <key>ru</key> + <value>Инфо надпись заголовок</value> + + 5 + + FormattedString + + + true + + + true + + + + Отложен + 6 + + Boolean + + + true + + + true + + + + ДатаОтложенногоСтарта + 7 + + Date + + + + true + + + true + + + + ИспользоватьДатуИВремяВСрокахЗадач + 8 + + Boolean + + + true + + + true + + + + ИспользоватьПодчиненныеБизнесПроцессы + 9 + + Boolean + + + true + + + true + + + + ИзменятьЗаданияЗаднимЧислом + 10 + + Boolean + + + true + + + true + + + + Остановить + + <key>ru</key> + <value>Остановить</value> + + 1 + + ru + Остановить + + + true + + + + Остановить + + + DontUse + + + Продолжить + + <key>ru</key> + <value>Продолжить</value> + + 2 + + ru + Продолжить + + + true + + + + ПродолжитьБизнесПроцесс + + + DontUse + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 3 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + НастроитьОтложенныйСтарт + + <key>ru</key> + <value>Настроить отложенный старт</value> + + 4 + + ru + Настроить отложенный старт + + + true + + + CommonPicture.ПроцессОтложен + + + + НастроитьОтложенныйСтарт + + + DontUse + + + + + CommonCommand.ПрисоединенныеФайлы + FormNavigationPanelGoTo + 0 + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Help/ru.html" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Help/ru.html" new file mode 100644 index 00000000..0968eedd --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Help/ru.html" @@ -0,0 +1,68 @@ + +

Предназначено для постановки и проверки выполнения произвольных задач.

+

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

+

Сведения о задании

+
  • Главная задача - заполняется программой автоматически, если бизнес-процесс является подчиненным. По ссылке в этом поле можно просмотреть данные о главном бизнес-процессе. +
  • +
  • Задание - напишите заголовок задания, который будет показан в списках бизнес-процессов. Поле является обязательным для заполнения. +
  • +
  • Важность - принимает значения Обычная (по умолчанию), Низкая, Высокая. Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выберите соответствующее значение этого поля. +
  • +
  • Исполнитель - выберите исполнителя из списка пользователей программы или из списка исполнителей. Поля является обязательным для заполнения. +
  • +
  • Срок - укажите дату и время, когда нужно выполнить задание. +
  • +
  • Предмет - автоматически проставляется документ программы, на основании которого создано задание. +
  • +
  • В текстовом поле ниже можно при необходимости более подробно объяснить суть задания. Недоступно для подчиненных бизнес-процессов. +
  • +
  • +
    Включите флажок Проверить выполнение, для того чтобы:
    +
    • +
      назначить проверяющего из списка пользователей;
      +
    • +
    • +
      ввести Срок - дату и время, до которого надо проверить выполнение задания. Если срок не заполнен, то проверка не производится.
  • +
  • +
    Автор - автоматически проставляется программой текущий пользователь. Автора можно назначить из списка Пользователи.
    +
  • +
  • +
    Начато - дата ввода задания. Заполняется программой автоматически. Поле не подлежит редактированию.

Старт бизнес-процесса

+
  • После того как задание заполнено, нажмите кнопку Стартовать и закрыть, для того чтобы сохранить Задание, начать бизнес-процесс и вернуться в программу. +
  • +
  • Для того чтобы начать бизнес-процесс, можно также воспользоваться командой Старт. В этом случае программа сохранит задание, начнет бизнес-процесс, но задание останется открытым. +
  • +
  • Программа автоматически формируетзадачи, из которых состоит бизнес-процесс Задание: +
  • +
  • Для того чтобы записать черновик задания, но не стартовать его, нажмите Записать. Такое задание можно дозаполнить и стартовать позднее, в более подходящий момент времени из списка заданий или открыв задание.

Отложенный старт бизнес-процесса

+
  • +
    Имеется возможность начать бизнес-процесс не сразу, а отложить его старт на определенное время. Например, можно запланировать старт на завтра или через неделю.
    +
  • +
  • +
    Для настройки отложенного старта задания после заполнения всех необходимых полей нажмите кнопку .
    +
    • +
      В открывшемся окне включите флажок Отложенный старт задания.
      +
    • +
    • +
      Заполните поля Дата и Время - укажите, когда нужно начать бизнес-процесс. В нижней части окна отразится, через сколько дней и часов будет запущено задание.
      +
    • +
    • +
      Нажмите кнопку Готово.
  • +
  • +
    После этого в карточке бизнес-процесса выводится сообщение со ссылкой, в которой указывается дата и время отложенного старта.
    +
  • +
  • +
    Для запуска отложенных бизнес-процессов в нужное время необходимо настроить регламентное задание Старт отложенных бизнес-процессов.
    +
  • +
  • +
    После того как задание стартовано, кнопка отложенного старта становится неактивной.

Управление движением бизнес-процесса

+
  • Для того чтобы Остановить или Продолжить бизнес-процесс, воспользуйтесь соответствующими кнопками (активна одна из кнопок). Остановленный бизнес-процесс в некоторых списках выделяется значком .

Просмотр карты маршрута

+
  • Нажмите кнопку  Открыть карту маршрута бизнес-процесса, для того чтобы посмотреть бизнес-процесс в наглядной форме. +
  • +
  • Также можно воспользоваться командой Еще - Карта маршрута. +
  • +
  • Карта маршрута описывает логику бизнес-процесса и весь его жизненный цикл в виде схематического изображения - последовательности прохождения точек маршрута.

Просмотр задач

+
  • Для того чтобы просмотреть задачи, из которых состоит данный бизнес-процесс, выполните команду Задачи в панели навигации. Если задание не стартовано, то список задач пустой.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Module.bsl" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Module.bsl" new file mode 100644 index 00000000..3d5cdfe8 --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Module.bsl" @@ -0,0 +1,697 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ОткрытаФормаВыбораИсполнителя; // Признак того, что исполнитель выбирается из формы, а не быстрым вводом. +&НаКлиенте +Перем ОткрытаФормаВыбораПроверяющего; // Признак того, что проверяющий выбирается из формы, а не быстрым вводом. +&НаКлиенте +Перем КонтекстВыбора; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + // Для нового объекта выполняем код инициализации формы в ПриСозданииНаСервере. + // Для существующего - в ПриЧтенииНаСервере. + Если Объект.Ссылка.Пустая() Тогда + ИнициализацияФормы(); + КонецЕсли; + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + ГиперссылкаФайлов = МодульРаботаСФайлами.ГиперссылкаФайлов(); + ГиперссылкаФайлов.Размещение = "КоманднаяПанель"; + МодульРаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ГиперссылкаФайлов); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ОбновитьДоступностьКомандОстановки(); + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + ИнициализацияФормы(); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборРолиИсполнителя") Тогда + + Если КонтекстВыбора = "ИсполнительПриИзменении" Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Объект.Исполнитель = ВыбранноеЗначение.РольИсполнителя; + КонецЕсли; + + УстановитьДоступностьПроверяющего(ЭтотОбъект); + + ИначеЕсли КонтекстВыбора = "ПроверяющийПриИзменении" Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Объект.Проверяющий = ВыбранноеЗначение.РольИсполнителя; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ИзмененаНастройкаОтложенногоСтарта" Тогда + Отложен = (Параметр.Отложен И Параметр.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияПроцессовДляЗапуска.ГотовКСтарту")); + ДатаОтложенногоСтарта = Параметр.ДатаОтложенногоСтарта; + УстановитьСвойстваЭлементовФормы(ЭтотОбъект); + Если Элементы.ГруппаСостояние.Видимость Тогда + ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект)); + Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1); + КонецЕсли; + КонецЕсли; + + // СтандартныеПодсистемы.РаботаСФайлами + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия); + КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаСФайлами + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + ПроверитьДатуЗавершенияОтложенногоПроцесса(ТекущийОбъект, Отказ); +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ИзменятьЗаданияЗаднимЧислом = ПолучитьФункциональнуюОпцию("ИзменятьЗаданияЗаднимЧислом"); + Если НачальныйПризнакСтарта И ИзменятьЗаданияЗаднимЧислом Тогда + УстановитьПривилегированныйРежим(Истина); + ТекущийОбъект.ИзменитьРеквизитыНевыполненныхЗадач(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Запись_Задание", ПараметрыЗаписи, Объект.Ссылка); + Оповестить("Запись_ЗадачаИсполнителя", ПараметрыЗаписи, Неопределено); + Если ПараметрыЗаписи.Свойство("Старт") И ПараметрыЗаписи.Старт Тогда + ПодключитьОбработчикОжидания("ОбновитьФорму", 0.2, Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьФорму() + УстановитьСвойстваЭлементовФормы(ЭтотОбъект); + Если Элементы.ГруппаСостояние.Видимость Тогда + ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект)); + Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1); + КонецЕсли; + ОбновитьДоступностьКомандОстановки(); +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НаПроверкеПриИзменении(Элемент) + + УстановитьДоступностьПроверяющего(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредметНажатие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПоказатьЗначение(,Объект.Предмет); + +КонецПроцедуры + +&НаКлиенте +Процедура ГлавнаяЗадачаНажатие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПоказатьЗначение(,Объект.ГлавнаяЗадача); + +КонецПроцедуры + +&НаКлиенте +Процедура ИнфоНадписьЗаголовокОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОткрытьНастройкуОтложенногоСтарта(); +КонецПроцедуры + +&НаКлиенте +Процедура ИсполнительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + БизнесПроцессыИЗадачиКлиент.ВыбратьИсполнителя(Элемент, Объект.Исполнитель); + +КонецПроцедуры + +&НаКлиенте +Процедура ИсполнительПриИзменении(Элемент) + + Если ОткрытаФормаВыбораИсполнителя = Истина Тогда + Возврат; + КонецЕсли; + + ОсновнойОбъектАдресации = Неопределено; + ДополнительныйОбъектАдресации = Неопределено; + + Если ТипЗнч(Объект.Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей") И ЗначениеЗаполнено(Объект.Исполнитель) Тогда + + Если ИспользуетсяСОбъектамиАдресации(Объект.Исполнитель) Тогда + + КонтекстВыбора = "ИсполнительПриИзменении"; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РольИсполнителя", Объект.Исполнитель); + ПараметрыФормы.Вставить("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации); + ПараметрыФормы.Вставить("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации); + + ОткрытьФорму("ОбщаяФорма.ВыборРолиИсполнителя", ПараметрыФормы, ЭтотОбъект); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + УстановитьДоступностьПроверяющего(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ИсполнительОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + ОткрытаФормаВыбораИсполнителя = ТипЗнч(ВыбранноеЗначение) = Тип("Структура"); + Если ОткрытаФормаВыбораИсполнителя Тогда + СтандартнаяОбработка = Ложь; + Объект.Исполнитель = ВыбранноеЗначение.РольИсполнителя; + Объект.ОсновнойОбъектАдресации = ВыбранноеЗначение.ОсновнойОбъектАдресации; + Объект.ДополнительныйОбъектАдресации = ВыбранноеЗначение.ДополнительныйОбъектАдресации; + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсполнительАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Текст) Тогда + СтандартнаяОбработка = Ложь; + ДанныеВыбора = БизнесПроцессыИЗадачиВызовСервера.СформироватьДанныеВыбораИсполнителя(Текст); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИсполнительОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Текст) Тогда + СтандартнаяОбработка = Ложь; + ДанныеВыбора = БизнесПроцессыИЗадачиВызовСервера.СформироватьДанныеВыбораИсполнителя(Текст); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверяющийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + БизнесПроцессыИЗадачиКлиент.ВыбратьИсполнителя(Элемент, Объект.Проверяющий); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверяющийПриИзменении(Элемент) + + Если ОткрытаФормаВыбораПроверяющего = Истина Тогда + Возврат; + КонецЕсли; + + ОсновнойОбъектАдресации = Неопределено; + ДополнительныйОбъектАдресации = Неопределено; + + Если ТипЗнч(Объект.Проверяющий) = Тип("СправочникСсылка.РолиИсполнителей") И ЗначениеЗаполнено(Объект.Проверяющий) Тогда + + Если ИспользуетсяСОбъектамиАдресации(Объект.Проверяющий) Тогда + + КонтекстВыбора = "ПроверяющийПриИзменении"; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РольИсполнителя", Объект.Проверяющий); + ПараметрыФормы.Вставить("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации); + ПараметрыФормы.Вставить("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации); + + ОткрытьФорму("ОбщаяФорма.ВыборРолиИсполнителя", ПараметрыФормы, ЭтотОбъект); + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверяющийОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + ОткрытаФормаВыбораПроверяющего = ТипЗнч(ВыбранноеЗначение) = Тип("Структура"); + Если ОткрытаФормаВыбораПроверяющего Тогда + СтандартнаяОбработка = Ложь; + Объект.Проверяющий = ВыбранноеЗначение.РольИсполнителя; + Объект.ОсновнойОбъектАдресацииПроверяющий = ВыбранноеЗначение.ОсновнойОбъектАдресации; + Объект.ДополнительныйОбъектАдресацииПроверяющий = ВыбранноеЗначение.ДополнительныйОбъектАдресации; + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверяющийАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Текст) Тогда + СтандартнаяОбработка = Ложь; + ДанныеВыбора = БизнесПроцессыИЗадачиВызовСервера.СформироватьДанныеВыбораИсполнителя(Текст); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверяющийОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Текст) Тогда + СтандартнаяОбработка = Ложь; + ДанныеВыбора = БизнесПроцессыИЗадачиВызовСервера.СформироватьДанныеВыбораИсполнителя(Текст); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СрокИсполненияПриИзменении(Элемент) + Если Объект.СрокИсполнения = НачалоДня(Объект.СрокИсполнения) Тогда + Объект.СрокИсполнения = КонецДня(Объект.СрокИсполнения); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СрокПроверкиПриИзменении(Элемент) + Если Объект.СрокПроверки = НачалоДня(Объект.СрокПроверки) Тогда + Объект.СрокПроверки = КонецДня(Объект.СрокПроверки); + КонецЕсли; +КонецПроцедуры + +// СтандартныеПодсистемы.РаботаСФайлами +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, + ПараметрыПеретаскивания, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, + ПараметрыПеретаскивания, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры +// Конец СтандартныеПодсистемы.РаботаСФайлами + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + ОчиститьСообщения(); + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + Записать(); + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура Остановить(Команда) + + БизнесПроцессыИЗадачиКлиент.ОстановитьБизнесПроцессИзФормыОбъекта(ЭтотОбъект); + ОбновитьДоступностьКомандОстановки(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьБизнесПроцесс(Команда) + + БизнесПроцессыИЗадачиКлиент.ПродолжитьБизнесПроцессИзФормыОбъекта(ЭтотОбъект); + ОбновитьДоступностьКомандОстановки(); + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьОтложенныйСтарт(Команда) + ОткрытьНастройкуОтложенногоСтарта(); +КонецПроцедуры + +// СтандартныеПодсистемы.РаботаСФайлами +&НаКлиенте +Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда); + КонецЕсли; + +КонецПроцедуры +// Конец СтандартныеПодсистемы.РаботаСФайлами + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Проверяющий.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НаПроверке"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Проверяющий"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Проверяющий.Имя); + + ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НаПроверке"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Проверяющий"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; + Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь); + +КонецПроцедуры + +&НаСервере +Процедура ИнициализацияФормы() + + НачальныйПризнакСтарта = Объект.Стартован; + + УстановитьРеквизитыОтложенногоСтарта(); + + ИспользоватьДатуИВремяВСрокахЗадач = ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"); + ИзменятьЗаданияЗаднимЧислом = ПолучитьФункциональнуюОпцию("ИзменятьЗаданияЗаднимЧислом"); + ИспользоватьПодчиненныеБизнесПроцессы = ПолучитьФункциональнуюОпцию("ИспользоватьПодчиненныеБизнесПроцессы"); + + ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(Объект.Предмет); + + Если Объект.ГлавнаяЗадача = Неопределено Или Объект.ГлавнаяЗадача.Пустая() Тогда + ГлавнаяЗадачаСтрокой = НСтр("ru = 'не задана'"); + Иначе + ГлавнаяЗадачаСтрокой = Строка(Объект.ГлавнаяЗадача); + КонецЕсли; + + УстановитьСвойстваЭлементовФормы(ЭтотОбъект); + Если Элементы.ГруппаСостояние.Видимость Тогда + ИнфоНадписьЗаголовок = СтроковыеФункции.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект)); + Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьДоступностьКомандОстановки() + + Если Объект.Завершен Тогда + + Элементы.ФормаОстановить.Видимость = Ложь; + Элементы.ФормаПродолжить.Видимость = Ложь; + Возврат; + + КонецЕсли; + + Если Объект.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияБизнесПроцессов.Остановлен") Тогда + Элементы.ФормаОстановить.Видимость = Ложь; + Элементы.ФормаПродолжить.Видимость = Истина; + Иначе + Элементы.ФормаОстановить.Видимость = Объект.Стартован; + Элементы.ФормаПродолжить.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьПроверяющего(Форма) + + ДоступностьПоля = Форма.Объект.НаПроверке; + Форма.Элементы.ГруппаПроверяющий.Доступность = ДоступностьПоля; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ИспользуетсяСОбъектамиАдресации(ПроверяемыйОбъект) + + Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПроверяемыйОбъект, "ИспользуетсяСОбъектамиАдресации"); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСвойстваЭлементовФормы(Форма) + + Если Форма.ТолькоПросмотр Тогда + Форма.Элементы.ФормаОстановить.Видимость = Ложь; + Форма.Элементы.ФормаЗаписатьИЗакрыть.Видимость = Ложь; + Форма.Элементы.ФормаНастроитьОтложенныйСтарт.Видимость = Ложь; + Форма.Элементы.ФормаЗаписать.Видимость = Ложь; + Форма.Элементы.ФормаПродолжить.Видимость = Ложь; + Иначе + ОбъектСтартован = ОбъектСтартован(Форма); + + Форма.Элементы.СрокИсполненияВремя.Видимость = Форма.ИспользоватьДатуИВремяВСрокахЗадач; + Форма.Элементы.СрокПроверкиВремя.Видимость = Форма.ИспользоватьДатуИВремяВСрокахЗадач; + Форма.Элементы.Дата.Формат = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); + Форма.Элементы.Предмет.Гиперссылка = Форма.Объект.Предмет <> Неопределено И НЕ Форма.Объект.Предмет.Пустая(); + Форма.Элементы.ФормаСтартИЗакрыть.Видимость = Не ОбъектСтартован; + Форма.Элементы.ФормаСтартИЗакрыть.КнопкаПоУмолчанию = Не ОбъектСтартован; + Форма.Элементы.ФормаСтарт.Видимость = Не ОбъектСтартован; + Форма.Элементы.ФормаНастроитьОтложенныйСтарт.Видимость = Не ОбъектСтартован; + Форма.Элементы.ФормаЗаписатьИЗакрыть.Видимость = ?(Форма.Объект.Завершен, Ложь, ОбъектСтартован); + Форма.Элементы.ФормаЗаписать.Видимость = НЕ Форма.Объект.Завершен; + Форма.Элементы.ФормаЗаписатьИЗакрыть.КнопкаПоУмолчанию = ОбъектСтартован; + Форма.Элементы.ФормаНастроитьОтложенныйСтарт.Доступность = Не Форма.Объект.Стартован; + + Если Форма.Объект.ГлавнаяЗадача = Неопределено Или Форма.Объект.ГлавнаяЗадача.Пустая() Тогда + Форма.Элементы.ГлавнаяЗадача.Гиперссылка = Ложь; + КонецЕсли; + + Если Не Форма.ИспользоватьПодчиненныеБизнесПроцессы Тогда + Форма.Элементы.ГлавнаяЗадача.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + Форма.Элементы.ГруппаСостояние.Видимость = Форма.Объект.Завершен Или ОбъектСтартован(Форма); + УстановитьДоступностьПроверяющего(Форма); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция СообщениеОСтатусеЗадания(Форма) + + ТекстСостояния = ""; + + Если Форма.Объект.Завершен Тогда + ДатаЗавершенияСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, + Формат(Форма.Объект.ДатаЗавершения, "ДЛФ=DT"), Формат(Форма.Объект.ДатаЗавершения, "ДЛФ=D")); + СтрокаТекста = ?(Форма.Объект.Выполнено, + НСтр("ru = 'Задание выполнено %1.'"), + НСтр("ru = 'Задание отменено %1.'")); + ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаТекста, ДатаЗавершенияСтрокой); + + Для каждого Элемент Из Форма.Элементы Цикл + Если ТипЗнч(Элемент) <> Тип("ПолеФормы") И ТипЗнч(Элемент) <> Тип("ГруппаФормы") Тогда + Продолжить; + КонецЕсли; + Элемент.ТолькоПросмотр = Истина; + КонецЦикла; + + ИначеЕсли Форма.Объект.Стартован Тогда + ТекстСостояния = ?(Форма.ИзменятьЗаданияЗаднимЧислом, + НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания вступят в силу немедленно для ранее выданной задачи.'"), + НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания не будут отражены в ранее выданной задаче.'")); + ИначеЕсли Форма.Отложен Тогда + ДатаОтложенногоСтартаСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, + Формат(Форма.ДатаОтложенногоСтарта, "ДЛФ=DT"), Формат(Форма.ДатаОтложенногоСтарта, "ДЛФ=D")); + ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Задание будет запущено %1'"), + ДатаОтложенногоСтартаСтрокой); + КонецЕсли; + + Возврат ТекстСостояния; + +КонецФункции + +&НаСервере +Процедура ПроверитьДатуЗавершенияОтложенногоПроцесса(ПроверяемыйОбъект, Отказ) + + Если Не ЗначениеЗаполнено(ПроверяемыйОбъект.СрокИсполнения) Тогда + Возврат; + КонецЕсли; + + ДатаОтложенногоСтарта = БизнесПроцессыИЗадачиСервер.ДатаОтложенногоСтартаПроцесса(ПроверяемыйОбъект.Ссылка); + + Если ПроверяемыйОбъект.СрокИсполнения < ДатаОтложенногоСтарта Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Срок исполнения задания не может быть меньше даты отложенного старта.'"),, + "СрокИсполнения", "Объект.СрокИсполнения"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьНастройкуОтложенногоСтарта() + + Если КлючевыеРеквизитыФормыЗаполнены() Тогда + БизнесПроцессыИЗадачиКлиент.НастроитьОтложенныйСтарт(Объект.Ссылка, Объект.СрокИсполнения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция КлючевыеРеквизитыФормыЗаполнены() + + Если Объект.Стартован Тогда + Возврат Истина; + КонецЕсли; + + ОчиститьСообщения(); + + РеквизитыФормыЗаполнены = Истина; + Если НЕ ЗначениеЗаполнено(Объект.Исполнитель) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Исполнитель"" не заполнено.'"),, + "Исполнитель", "Объект.Исполнитель"); + РеквизитыФормыЗаполнены = Ложь; + КонецЕсли; + Если НЕ ЗначениеЗаполнено(Объект.Наименование) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Задание"" не заполнено.'"),, + "Исполнитель", "Объект.Наименование"); + РеквизитыФормыЗаполнены = Ложь; + КонецЕсли; + Если НЕ ЗначениеЗаполнено(Объект.СрокИсполнения) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Срок"" исполнения не заполнено.'"),, + "СрокИсполнения", "Объект.СрокИсполнения"); + РеквизитыФормыЗаполнены = Ложь; + КонецЕсли; + + Возврат РеквизитыФормыЗаполнены; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ОбъектСтартован(Форма) + Возврат Форма.Объект.Стартован ИЛИ Форма.Отложен; +КонецФункции + +&НаСервере +Процедура УстановитьРеквизитыОтложенногоСтарта() + + ДатаОтложенногоСтарта = БизнесПроцессыИЗадачиСервер.ДатаОтложенногоСтартаПроцесса(Объект.Ссылка); + Отложен = (ДатаОтложенногоСтарта <> '00010101'); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..83b2532c --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,22 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + false + Дата + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..330c2309 --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1846 @@ + + + + ГруппаПоРеквизитам + 21 + + ПоАвтору + 14 + true + true + + true + + + + ПоАвтору + + + + OnChange + ПоАвторуПриИзменении + + + ПоАвторуExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + + ПоАвторуКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 35 + true + true + true + true + false + true + true + true + + + + ПоИсполнителю + 17 + true + true + + true + + + + ПоИсполнителю + + + + OnChange + ПоИсполнителюПриИзменении + + + ПоИсполнителюExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + + ПоИсполнителюКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 35 + true + true + true + true + false + true + true + true + + + + ПоПроверяющему + 19 + true + + + + ПоПроверяющему + + + + OnChange + ПоПроверяющемуПриИзменении + + + ПоПроверяющемуExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + + ПоПроверяющемуКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 35 + true + true + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Отборы</value> + + + ГруппаПоРеквизитамExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Флажки + 50 + + ПоказыватьЗавершенныеЗадания + 22 + true + true + + true + + + + ПоказыватьЗавершенныеЗадания + + + Right + + OnChange + ПоказыватьЗавершенныеЗаданияПриИзменении + + + ПоказыватьЗавершенныеЗаданияExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьЗавершенныеЗаданияКонтекстноеМеню + 23 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПоказыватьОстановленные + 48 + true + true + + true + + + + ПоказыватьОстановленные + + + Right + + OnChange + ПоказыватьОстановленныеПриИзменении + + + ПоказыватьОстановленныеExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьОстановленныеКонтекстноеМеню + 49 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Флажки</value> + + + ФлажкиExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПользовательскихНастроек + 92 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 53 + + ФормаОбщаяКомандаКартаМаршрутаБизнесПроцесса + 94 + true + true + + true + + + Items.Список.CurrentData.Ref + + + ФормаОбщаяКомандаКартаМаршрутаБизнесПроцессаРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + CommonCommand.КартаМаршрутаБизнесПроцесса + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОстановить + 51 + true + true + + true + + + ФормаОстановитьExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Остановить + Auto + true + true + UserCmds + Auto + + + ФормаПродолжитьБизнесПроцесс + 52 + true + true + + true + + + ФормаПродолжитьБизнесПроцессExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПродолжитьБизнесПроцесс + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельExtendedTooltip + 66 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + ВажностьКартинка + 24 + + <key>ru</key> + <value>Важность</value> + + true + true + + true + + + + Список.ВажностьКартинка + + + None + + ru + Важность + + + ВажностьКартинкаExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + + ВажностьКартинкаКонтекстноеМеню + 25 + true + true + + true + + true + + PictureField + Enter + true + + CommonPicture.ВосклицательныйЗнакСерый + + Left + true + + 2 + true + true + true + + CommonPicture.КоллекцияВариантыВажности + + + + + Номер + 4 + true + true + + true + + + + Список.Number + + + true + + НомерExtendedTooltip + 72 + true + true + + true + + Label + true + true + + Left + + + + НомерКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Дата + 6 + true + true + + true + + + + Список.Date + + + + ДатаExtendedTooltip + 73 + true + true + + true + + Label + true + true + + Left + + + + ДатаКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 10 + true + true + false + + + + ГруппаСодержание + 54 + + Наименование + 26 + true + true + + true + + + + Список.Наименование + + + + НаименованиеExtendedTooltip + 75 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 27 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Предмет + 32 + true + true + + true + + + + Список.Предмет + + + + ПредметExtendedTooltip + 77 + true + true + + true + + Label + true + true + + Left + + + + ПредметКонтекстноеМеню + 33 + true + true + + true + + true + + LabelField + Enter + Left + true + + true + true + + + + Содержание + 28 + true + true + + + + Список.Содержание + + + + СодержаниеExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + + СодержаниеКонтекстноеМеню + 29 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Содержание</value> + + + ГруппаСодержаниеExtendedTooltip + 74 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + СрокИсполнения + 42 + true + true + + true + + + + Список.СрокИсполнения + + + + СрокИсполненияExtendedTooltip + 78 + true + true + + true + + Label + true + true + + Left + + + + СрокИсполненияКонтекстноеМеню + 43 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + false + + + + СрокПроверки + 44 + true + true + + + + Список.СрокПроверки + + + + СрокПроверкиExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + + СрокПроверкиКонтекстноеМеню + 45 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + false + + + + ДатаЗавершения + 38 + + <key>ru</key> + <value>Завершено</value> + + true + true + + true + + + + Список.ДатаЗавершения + + + + ДатаЗавершенияExtendedTooltip + 81 + true + true + + true + + Label + true + true + + Left + + + + ДатаЗавершенияКонтекстноеМеню + 39 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + false + + + + ВедущаяЗадача + 10 + true + true + + + + Список.HeadTask + + + + ВедущаяЗадачаExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + + ВедущаяЗадачаКонтекстноеМеню + 11 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + НомерИтерации + 30 + true + true + + + + Список.НомерИтерации + + + + НомерИтерацииExtendedTooltip + 83 + true + true + + true + + Label + true + true + + Left + + + + НомерИтерацииКонтекстноеМеню + 31 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Автор + 34 + true + true + + + + Список.Автор + + + + АвторExtendedTooltip + 84 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 35 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Исполнитель + 36 + true + true + + + + Список.Исполнитель + + + + ИсполнительExtendedTooltip + 85 + true + true + + true + + Label + true + true + + Left + + + + ИсполнительКонтекстноеМеню + 37 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ГруппаПроверка + 57 + + НаПроверке + 55 + true + true + + + + Список.НаПроверке + + + None + + НаПроверкеExtendedTooltip + 87 + true + true + + true + + Label + true + true + + Left + + + + НаПроверкеКонтекстноеМеню + 56 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Проверяющий + 40 + true + true + + + + Список.Проверяющий + + + + ПроверяющийExtendedTooltip + 88 + true + true + + true + + Label + true + true + + Left + + + + ПроверяющийКонтекстноеМеню + 41 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>На проверке</value> + + + ГруппаПроверкаExtendedTooltip + 86 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + Ссылка + 89 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 90 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 98 + + СписокСтрокаПоискаРасширеннаяПодсказка + 100 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 99 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 101 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 102 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 104 + + СписокУправлениеПоискомРасширеннаяПодсказка + 106 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 105 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокОбщаяКомандаКартаМаршрутаБизнесПроцесса + 96 + true + true + + true + + + Items.Список.CurrentData.Ref + + + СписокОбщаяКомандаКартаМаршрутаБизнесПроцессаРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + CommonCommand.КартаМаршрутаБизнесПроцесса + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.КартинкаСтроки + + + CommonPicture.СостоянияПроцессов + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Completed + + + Список.Ref + + + Список.Остановлен + +
true
+ + ВЫБРАТЬ + БизнесПроцессЗадание.Ссылка, + БизнесПроцессЗадание.ПометкаУдаления, + БизнесПроцессЗадание.Номер, + БизнесПроцессЗадание.Дата, + БизнесПроцессЗадание.Завершен, + БизнесПроцессЗадание.ВедущаяЗадача, + БизнесПроцессЗадание.Стартован, + БизнесПроцессЗадание.Автор, + БизнесПроцессЗадание.Важность, + БизнесПроцессЗадание.Выполнено, + БизнесПроцессЗадание.ДатаЗавершения, + БизнесПроцессЗадание.Исполнитель, + БизнесПроцессЗадание.Наименование, + БизнесПроцессЗадание.НаПроверке, + БизнесПроцессЗадание.НомерИтерации, + БизнесПроцессЗадание.Содержание, + БизнесПроцессЗадание.Подтверждено, + БизнесПроцессЗадание.Предмет, + БизнесПроцессЗадание.Проверяющий, + БизнесПроцессЗадание.РезультатВыполнения, + БизнесПроцессЗадание.СрокИсполнения, + БизнесПроцессЗадание.СрокПроверки, + ВЫБОР + КОГДА БизнесПроцессЗадание.ПометкаУдаления + ТОГДА 6 + КОГДА БизнесПроцессЗадание.Завершен = ИСТИНА + ТОГДА 5 + КОГДА БизнесПроцессЗадание.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Остановлен) + ТОГДА 4 + КОГДА БизнесПроцессЗадание.Стартован = ИСТИНА + ТОГДА 3 + КОГДА ПроцессыДляЗапуска.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияПроцессовДляЗапуска.ГотовКСтарту) + И ПроцессыДляЗапуска.ДатаОтложенногоСтарта <> ДАТАВРЕМЯ(1, 1, 1) + ТОГДА 1 + КОГДА ПроцессыДляЗапуска.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияПроцессовДляЗапуска.СтартОтменен) + ТОГДА 2 + ИНАЧЕ 0 + КОНЕЦ КАК КартинкаСтроки, + ВЫБОР + КОГДА БизнесПроцессЗадание.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиЗадачи.Низкая) + ТОГДА 0 + КОГДА БизнесПроцессЗадание.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиЗадачи.Высокая) + ТОГДА 2 + ИНАЧЕ 1 + КОНЕЦ КАК ВажностьКартинка, + ВЫБОР + КОГДА БизнесПроцессЗадание.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Остановлен) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК Остановлен, + БизнесПроцессЗадание.ЗадачаИсточник, + ВЫБОР + КОГДА ПроцессыДляЗапуска.Состояние ЕСТЬ NULL + ТОГДА ЛОЖЬ + ИНАЧЕ ИСТИНА + КОНЕЦ КАК Отложен +ИЗ + БизнесПроцесс.Задание КАК БизнесПроцессЗадание + ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПроцессыДляЗапуска КАК ПроцессыДляЗапуска + ПО БизнесПроцессЗадание.Ссылка = ПроцессыДляЗапуска.Владелец + BusinessProcess.Задание + true + true + true + true + true + +
+ + ПоАвтору + + <key>ru</key> + <value>Автор</value> + + 2 + + CatalogRef.Пользователи + + + true + + + true + + + + ПоИсполнителю + + <key>ru</key> + <value>Исполнитель</value> + + 3 + + CatalogRef.Пользователи + + + true + + + true + + + + ПоПроверяющему + + <key>ru</key> + <value>Проверяющий</value> + + 4 + + CatalogRef.Пользователи + + + true + + + true + + + + ПоказыватьЗавершенныеЗадания + + <key>ru</key> + <value>Показывать завершенные задания</value> + + 5 + + Boolean + + + true + + + true + + + + ПоказыватьОстановленные + + <key>ru</key> + <value>Показывать остановленные</value> + + 6 + + Boolean + + + true + + + true + + + + Остановить + + <key>ru</key> + <value>Остановить</value> + + 1 + + ru + Остановить бизнес-процесс + + + true + + + + Остановить + + + DontUse + + + ПродолжитьБизнесПроцесс + + <key>ru</key> + <value>Продолжить</value> + + 2 + + ru + Продолжить бизнес-процесс + + + true + + + + ПродолжитьБизнесПроцесс + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..23bae932 --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,117 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ПоАвтору = Пользователи.ТекущийПользователь(); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ЗадачаИсточник", Задачи.ЗадачаИсполнителя.ПустаяСсылка()); + + УстановитьОтбор(); + ИспользоватьДатуИВремяВСрокахЗадач = ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"); + Элементы.СрокИсполнения.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); + Элементы.СрокПроверки.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеБизнесПроцессов(Список.УсловноеОформление); + Элементы.ФормаОстановить.Видимость = ПравоДоступа("Изменение", Метаданные.БизнесПроцессы.Задание); + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + УстановитьОтборСписка(Настройки); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПоАвторуПриИзменении(Элемент) + УстановитьОтбор(); +КонецПроцедуры + +&НаКлиенте +Процедура ПоИсполнителюПриИзменении(Элемент) + УстановитьОтбор(); +КонецПроцедуры + +&НаКлиенте +Процедура ПоПроверяющемуПриИзменении(Элемент) + УстановитьОтбор(); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьЗавершенныеЗаданияПриИзменении(Элемент) + + УстановитьОтбор(); + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьОстановленныеПриИзменении(Элемент) + + УстановитьОтбор(); + Элементы.Список.Обновить(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Остановить(Команда) + + БизнесПроцессыИЗадачиКлиент.Остановить(Элементы.Список.ВыделенныеСтроки); + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьБизнесПроцесс(Команда) + + БизнесПроцессыИЗадачиКлиент.СделатьАктивным(Элементы.Список.ВыделенныеСтроки); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьОтбор() + ПараметрыОтбора = Новый Соответствие(); + ПараметрыОтбора.Вставить("ПоказыватьЗавершенныеЗадания", ПоказыватьЗавершенныеЗадания); + ПараметрыОтбора.Вставить("ПоказыватьОстановленные", ПоказыватьОстановленные); + ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору); + ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю); + ПараметрыОтбора.Вставить("ПоПроверяющему", ПоПроверяющему); + УстановитьОтборСписка(ПараметрыОтбора); +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтборСписка(ПараметрыОтбора) + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Завершен", Ложь,,, + Не ПараметрыОтбора["ПоказыватьЗавершенныеЗадания"]); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Остановлен", Ложь,,, + Не ПараметрыОтбора["ПоказыватьОстановленные"]); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Автор", ПараметрыОтбора["ПоАвтору"],,, + Не ПараметрыОтбора["ПоАвтору"].Пустая()); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Исполнитель", ПараметрыОтбора["ПоИсполнителю"],,, + Не ПараметрыОтбора["ПоИсполнителю"].Пустая()); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Проверяющий", ПараметрыОтбора["ПоПроверяющему"],,, + Не ПараметрыОтбора["ПоПроверяющему"].Пустая()); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" new file mode 100644 index 00000000..85762523 --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" @@ -0,0 +1,20 @@ + +

Предназначен для управления бизнес-процессами Задание.

+

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

+

Формируемые программой по бизнес-процессу Задание задачи на исполнение и на проверку адресуются исполнителю не только явно, с использованием персональной адресации, но и с помощью ролевой адресации.

+

Открывается по команде Задания в разделе Бизнес-процессы и задачи.

+

В списке выводится:

+
  •  - важность, принимает значения Обычная (по умолчанию), Низкая, Высокая. Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выбираются соответствующие значения этого поля. +
  • Номер - номер проставляется программой автоматически, рядом с номером проставляется один из значков , обозначающий состояние бизнес-процесса Задание. +
  • Дата - дата и время создания бизнес-процесса Задание. +
  • Задание - полное наименование. +
  • Срок исполнения - дата и время, к которому Задание должно быть выполнено. +
  • Завершено - дата и время выполнения.

Отборы

+

Просмотр всех заданий

+
  • Установите соответствующие флажки, для того чтобы Показывать завершенные и остановленные задания. По умолчанию флажки сняты.

Ввод нового задания

+
  • Нажмите Создать, заполните необходимые поля.

Управление движением бизнес-процесса

+
  • С помощью кнопки можно Остановить начатый бизнес-процесс. +
  • С помощью кнопки Продолжить в любой момент можно возобновить выполнение остановленного бизнес-процесса.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/ManagerModule.bsl" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/ManagerModule.bsl" new file mode 100644 index 00000000..0dec99de --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/ManagerModule.bsl" @@ -0,0 +1,248 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Автор"); + Результат.Добавить("Важность"); + Результат.Добавить("Исполнитель"); + Результат.Добавить("ПроверитьВыполнение"); + Результат.Добавить("Проверяющий"); + Результат.Добавить("СрокИсполнения"); + Результат.Добавить("СрокПроверки"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.БизнесПроцессыИЗадачи + +// Получить структуру с описанием формы выполнения задачи. +// Вызывается при открытии формы выполнения задачи. +// +// Параметры: +// ЗадачаСсылка - ЗадачаСсылка.ЗадачаИсполнителя - задача. +// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание - точка маршрута. +// +// Возвращаемое значение: +// Структура - структуру с описанием формы выполнения задачи. +// Ключ "ИмяФормы" содержит имя формы, передаваемое в метод контекста ОткрытьФорму(). +// Ключ "ПараметрыФормы" содержит параметры формы. +// +Функция ФормаВыполненияЗадачи(ЗадачаСсылка, ТочкаМаршрутаБизнесПроцесса) Экспорт + + Результат = Новый Структура; + Результат.Вставить("ПараметрыФормы", Новый Структура("Ключ", ЗадачаСсылка)); + Результат.Вставить("ИмяФормы", "БизнесПроцесс.Задание.Форма.Действие" + ТочкаМаршрутаБизнесПроцесса.Имя); + Возврат Результат; + +КонецФункции + +// Вызывается при перенаправлении задачи. +// +// Параметры: +// ЗадачаСсылка - ЗадачаСсылка.ЗадачаИсполнителя - перенаправляемая задача. +// НоваяЗадачаСсылка - ЗадачаСсылка.ЗадачаИсполнителя - задача для нового исполнителя. +// +Процедура ПриПеренаправленииЗадачи(ЗадачаСсылка, НоваяЗадачаСсылка) Экспорт + + // АПК:1327-выкл Блокировка бизнес-процесса установлена ранее + // в вызывающей функции БизнесПроцессыИЗадачиВызовСервера.ПеренаправитьЗадачи. + БизнесПроцессОбъект = ЗадачаСсылка.БизнесПроцесс.ПолучитьОбъект(); + ЗаблокироватьДанныеДляРедактирования(БизнесПроцессОбъект.Ссылка); + БизнесПроцессОбъект.РезультатВыполнения = РезультатВыполненияПриПеренаправлении(ЗадачаСсылка) + + БизнесПроцессОбъект.РезультатВыполнения; + УстановитьПривилегированныйРежим(Истина); + БизнесПроцессОбъект.Записать(); + // АПК:1327-вкл + +КонецПроцедуры + +// Вызывается при выполнении задачи из формы списка. +// +// Параметры: +// ЗадачаСсылка - ЗадачаСсылка.ЗадачаИсполнителя - задача. +// БизнесПроцессСсылка - БизнесПроцессСсылка - бизнес-процесс, по которому сформирована задача ЗадачаСсылка. +// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка - точка маршрута. +// +Процедура ОбработкаВыполненияПоУмолчанию(ЗадачаСсылка, БизнесПроцессСсылка, ТочкаМаршрутаБизнесПроцесса) Экспорт + + ЭтоТочкаМаршрутаВыполнить = (ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.Задание.ТочкиМаршрута.Выполнить); + ЭтоТочкаМаршрутаПроверить = (ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.Задание.ТочкиМаршрута.Проверить); + Если Не ЭтоТочкаМаршрутаВыполнить И Не ЭтоТочкаМаршрутаПроверить Тогда + Возврат; + КонецЕсли; + + // Устанавливаем значения по умолчанию для пакетного выполнения задач. + НачатьТранзакцию(); + Попытка + БизнесПроцессыИЗадачиСервер.ЗаблокироватьБизнесПроцессы(БизнесПроцессСсылка); + + УстановитьПривилегированныйРежим(Истина); + ЗаданиеОбъект = БизнесПроцессСсылка.ПолучитьОбъект(); + ЗаблокироватьДанныеДляРедактирования(ЗаданиеОбъект.Ссылка); + + Если ЭтоТочкаМаршрутаВыполнить Тогда + ЗаданиеОбъект.Выполнено = Истина; + ИначеЕсли ЭтоТочкаМаршрутаПроверить Тогда + ЗаданиеОбъект.Выполнено = Истина; + ЗаданиеОбъект.Подтверждено = Истина; + КонецЕсли; + ЗаданиеОбъект.Записать(); // АПК:1327 Блокировка в БизнесПроцессыИЗадачиСервер.ЗаблокироватьБизнесПроцессы. + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.БизнесПроцессыИЗадачи + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "ПрисоединитьДополнительныеТаблицы + |ЭтотСписок КАК Задание + | + |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадач + |ПО + | ИсполнителиЗадач.РольИсполнителя = Задание.Исполнитель + | И ИсполнителиЗадач.ОсновнойОбъектАдресации = Задание.ОсновнойОбъектАдресации + | И ИсполнителиЗадач.ДополнительныйОбъектАдресации = Задание.ДополнительныйОбъектАдресации + | + |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсполнителиЗадач КАК ПроверяющиеЗадач + |ПО + | ПроверяющиеЗадач.РольИсполнителя = Задание.Проверяющий + | И ПроверяющиеЗадач.ОсновнойОбъектАдресации = Задание.ОсновнойОбъектАдресацииПроверяющий + | И ПроверяющиеЗадач.ДополнительныйОбъектАдресации = Задание.ДополнительныйОбъектАдресацииПроверяющий + |; + |РазрешитьЧтение + |ГДЕ + | ЗначениеРазрешено(Автор) + | ИЛИ ЗначениеРазрешено(Исполнитель КРОМЕ Справочник.РолиИсполнителей) + | ИЛИ ЗначениеРазрешено(ИсполнителиЗадач.Исполнитель) + | ИЛИ ЗначениеРазрешено(Проверяющий КРОМЕ Справочник.РолиИсполнителей) + | ИЛИ ЗначениеРазрешено(ПроверяющиеЗадач.Исполнитель) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ЗначениеРазрешено(Автор)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +// СтандартныеПодсистемы.ПодключаемыеКоманды + +// Определяет список команд создания на основании. +// +// Параметры: +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры +// +Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт + +КонецПроцедуры + +// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов. +// Добавляет в список команд создания на основании этот объект. +// +// Параметры: +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений, Неопределено - описание добавленной команды. +// +Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульСозданиеНаОсновании = ОбщегоНазначения.ОбщийМодуль("СозданиеНаОсновании"); + Команда = МодульСозданиеНаОсновании.ДобавитьКомандуСозданияНаОсновании(КомандыСозданияНаОсновании, Метаданные.БизнесПроцессы.Задание); + Если Команда <> Неопределено Тогда + Команда.ФункциональныеОпции = "ИспользоватьБизнесПроцессыИЗадачи"; + КонецЕсли; + Возврат Команда; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Прочие + +// Устанавливает состояние элементов формы задачи. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения: +// * Элементы - ВсеЭлементыФормы: +// ** Предмет - РасширениеПоляФормыДляПоляНадписи +// +Процедура УстановитьСостояниеЭлементовФормыЗадачи(Форма) Экспорт + + Если Форма.Элементы.Найти("РезультатВыполнения") <> Неопределено + И Форма.Элементы.Найти("ИсторияВыполнения") <> Неопределено Тогда + Форма.Элементы.ИсторияВыполнения.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Форма.ЗаданиеРезультатВыполнения); + КонецЕсли; + + Форма.Элементы.Предмет.Гиперссылка = Форма.Объект.Предмет <> Неопределено И НЕ Форма.Объект.Предмет.Пустая(); + Форма.ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(Форма.Объект.Предмет); + +КонецПроцедуры + +Функция РезультатВыполненияПриПеренаправлении(Знач ЗадачаСсылка) + + СтрокаФормат = "%1, %2 " + НСтр("ru = 'перенаправил(а) задачу'") + ": + |%3 + |"; + + Комментарий = СокрЛП(ЗадачаСсылка.РезультатВыполнения); + Комментарий = ?(ПустаяСтрока(Комментарий), "", Комментарий + Символы.ПС); + Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаФормат, ЗадачаСсылка.ДатаИсполнения, ЗадачаСсылка.Исполнитель, Комментарий); + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/ObjectModule.bsl" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/ObjectModule.bsl" new file mode 100644 index 00000000..ff7ee57f --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/ObjectModule.bsl" @@ -0,0 +1,423 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Таблица - см. УправлениеДоступом.ТаблицаНаборыЗначенийДоступа +// +Процедура ЗаполнитьНаборыЗначенийДоступа(Таблица) Экспорт + + БизнесПроцессыИЗадачиПереопределяемый.ПриЗаполненииНаборовЗначенийДоступа(ЭтотОбъект, Таблица); + + Если Таблица.Количество() > 0 Тогда + Возврат; + КонецЕсли; + + ЗаполнитьНаборыЗначенийДоступаПоУмолчанию(Таблица); + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий бизнес-процесса. + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Автор <> Неопределено И Не Автор.Пустая() Тогда + АвторСтрокой = Строка(Автор); + КонецЕсли; + + БизнесПроцессыИЗадачиСервер.ПроверитьПраваНаИзменениеСостоянияБизнесПроцесса(ЭтотОбъект); + + Если ЗначениеЗаполнено(ГлавнаяЗадача) + И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГлавнаяЗадача, "БизнесПроцесс") = Ссылка Тогда + + ВызватьИсключение НСтр("ru = 'Собственная задача бизнес-процесса не может быть указана как главная задача.'"); + + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + ГруппаИсполнителейЗадач = ?(ТипЗнч(Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей"), + БизнесПроцессыИЗадачиСервер.ГруппаИсполнителейЗадач(Исполнитель, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации), + Исполнитель); + ГруппаИсполнителейЗадачПроверяющий = ?(ТипЗнч(Проверяющий) = Тип("СправочникСсылка.РолиИсполнителей"), + БизнесПроцессыИЗадачиСервер.ГруппаИсполнителейЗадач(Проверяющий, ОсновнойОбъектАдресацииПроверяющий, ДополнительныйОбъектАдресацииПроверяющий), + Проверяющий); + УстановитьПривилегированныйРежим(Ложь); + + Если НЕ ЭтоНовый() И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Предмет") <> Предмет Тогда + ИзменитьПредметЗадач(); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) + + Если ЭтоНовый() Тогда + Автор = Пользователи.АвторизованныйПользователь(); + Проверяющий = Пользователи.АвторизованныйПользователь(); + Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Пользователи") Тогда + Исполнитель = ДанныеЗаполнения; + Иначе + // Для возможности автоподбора в незаполненном поле Исполнитель. + Исполнитель = Справочники.Пользователи.ПустаяСсылка(); + КонецЕсли; + КонецЕсли; + + Если ДанныеЗаполнения <> Неопределено И ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") + И ДанныеЗаполнения <> Задачи.ЗадачаИсполнителя.ПустаяСсылка() Тогда + + Если ТипЗнч(ДанныеЗаполнения) <> Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда + Предмет = ДанныеЗаполнения; + Иначе + Предмет = ДанныеЗаполнения.Предмет; + КонецЕсли; + + КонецЕсли; + + БизнесПроцессыИЗадачиСервер.ЗаполнитьГлавнуюЗадачу(ЭтотОбъект, ДанныеЗаполнения); + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + МассивНепроверяемыхРеквизитов = Новый Массив(); + Если Не НаПроверке Тогда + МассивНепроверяемыхРеквизитов.Добавить("Проверяющий"); + КонецЕсли; + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов); +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + + НомерИтерации = 0; + Выполнено = Ложь; + Подтверждено = Ложь; + РезультатВыполнения = ""; + ДатаЗавершения = '00010101000000'; + Состояние = Перечисления.СостоянияБизнесПроцессов.Активен; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий элементов карты маршрута. + +// Параметры: +// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание +// ФормируемыеЗадачи - Массив из ЗадачаОбъект +// Отказ - Булево +// +Процедура ВыполнитьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) + + НомерИтерации = НомерИтерации + 1; + Записать(); + + // Устанавливаем реквизиты адресации и доп. реквизиты для каждой задачи. + Для каждого Задача Из ФормируемыеЗадачи Цикл + + Задача.Автор = Автор; + Задача.АвторСтрокой = Строка(Автор); + Если ТипЗнч(Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей") Тогда + Задача.РольИсполнителя = Исполнитель; + Задача.ОсновнойОбъектАдресации = ОсновнойОбъектАдресации; + Задача.ДополнительныйОбъектАдресации = ДополнительныйОбъектАдресации; + Задача.Исполнитель = Неопределено; + Иначе + Задача.Исполнитель = Исполнитель; + КонецЕсли; + Задача.Наименование = НаименованиеЗадачиДляВыполнения(); + Задача.СрокИсполнения = СрокИсполненияЗадачиДляВыполнения(); + Задача.Важность = Важность; + Задача.Предмет = Предмет; + + КонецЦикла; + +КонецПроцедуры + +Процедура ВыполнитьПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка) + + Если Предмет = Неопределено Или Предмет.Пустая() Тогда + Возврат; + КонецЕсли; + +КонецПроцедуры + +Процедура ВыполнитьПриВыполнении(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ) + + РезультатВыполнения = РезультатВыполненияТочкиВыполнить(Задача) + РезультатВыполнения; + Записать(); + +КонецПроцедуры +// Параметры: +// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание +// ФормируемыеЗадачи - Массив из ЗадачаОбъект +// Отказ - Булево +// +Процедура ПроверитьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) + + Если Проверяющий.Пустая() Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + // Устанавливаем реквизиты адресации и доп. реквизиты для каждой задачи. + Для каждого Задача Из ФормируемыеЗадачи Цикл + + Задача.Автор = Автор; + Если ТипЗнч(Проверяющий) = Тип("СправочникСсылка.РолиИсполнителей") Тогда + Задача.РольИсполнителя = Проверяющий; + Задача.ОсновнойОбъектАдресации = ОсновнойОбъектАдресацииПроверяющий; + Задача.ДополнительныйОбъектАдресации = ДополнительныйОбъектАдресацииПроверяющий; + Иначе + Задача.Исполнитель = Проверяющий; + КонецЕсли; + + Задача.Наименование = НаименованиеЗадачиДляПроверки(); + Задача.СрокИсполнения = СрокИсполненияЗадачиДляПроверки(); + Задача.Важность = Важность; + Задача.Предмет = Предмет; + + КонецЦикла; + +КонецПроцедуры + +Процедура ПроверитьПриВыполнении(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ) + + РезультатВыполнения = РезультатВыполненияТочкиПроверить(Задача) + РезультатВыполнения; + Записать(); + +КонецПроцедуры + +Процедура НужнаПроверкаПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) + + Результат = НаПроверке; + +КонецПроцедуры + +Процедура ВернутьИсполнителюПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) + + Результат = НЕ Подтверждено; + +КонецПроцедуры + +Процедура ЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ) + + ДатаЗавершения = БизнесПроцессыИЗадачиСервер.ДатаЗавершенияБизнесПроцесса(Ссылка); + Записать(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Актуализирует значения реквизит невыполненных задач +// согласно реквизитам бизнес-процесса Задание: +// Важность, СрокИсполнения, Наименование и Автор. +// +Процедура ИзменитьРеквизитыНевыполненныхЗадач() Экспорт + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Задача.ЗадачаИсполнителя"); + ЭлементБлокировки.УстановитьЗначение("БизнесПроцесс", Ссылка); + Блокировка.Заблокировать(); + + Запрос = Новый Запрос( + "ВЫБРАТЬ + | Задачи.Ссылка КАК Ссылка + |ИЗ + | Задача.ЗадачаИсполнителя КАК Задачи + |ГДЕ + | Задачи.БизнесПроцесс = &БизнесПроцесс + | И Задачи.ПометкаУдаления = ЛОЖЬ + | И Задачи.Выполнена = ЛОЖЬ"); + Запрос.УстановитьПараметр("БизнесПроцесс", Ссылка); + ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + ЗадачаОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); // ЗадачаОбъект + ЗадачаОбъект.Важность = Важность; + ЗадачаОбъект.СрокИсполнения = + ?(ЗадачаОбъект.ТочкаМаршрута = БизнесПроцессы.Задание.ТочкиМаршрута.Выполнить, + СрокИсполненияЗадачиДляВыполнения(), СрокИсполненияЗадачиДляПроверки()); + ЗадачаОбъект.Наименование = + ?(ЗадачаОбъект.ТочкаМаршрута = БизнесПроцессы.Задание.ТочкиМаршрута.Выполнить, + НаименованиеЗадачиДляВыполнения(), НаименованиеЗадачиДляПроверки()); + ЗадачаОбъект.Автор = Автор; + // Не выполняем предварительную блокировку данных для редактирования, т.к. + // Это изменение имеет более высокий приоритет над открытыми формами задач. + ЗадачаОбъект.Записать(); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Процедура ИзменитьПредметЗадач() + + УстановитьПривилегированныйРежим(Истина); + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Задача.ЗадачаИсполнителя"); + ЭлементБлокировки.УстановитьЗначение("БизнесПроцесс", Ссылка); + Блокировка.Заблокировать(); + + Запрос = Новый Запрос( + "ВЫБРАТЬ + | Задачи.Ссылка КАК Ссылка + |ИЗ + | Задача.ЗадачаИсполнителя КАК Задачи + |ГДЕ + | Задачи.БизнесПроцесс = &БизнесПроцесс"); + + Запрос.УстановитьПараметр("БизнесПроцесс", Ссылка); + ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + ЗадачаОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); // ЗадачаОбъект + ЗадачаОбъект.Предмет = Предмет; + // Не выполняем предварительную блокировку данных для редактирования, т.к. + // Это изменение имеет более высокий приоритет над открытыми формами задач. + ЗадачаОбъект.Записать(); + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Функция НаименованиеЗадачиДляВыполнения() + + Возврат Наименование; + +КонецФункции + +Функция СрокИсполненияЗадачиДляВыполнения() + + Возврат СрокИсполнения; + +КонецФункции + +Функция НаименованиеЗадачиДляПроверки() + + Возврат БизнесПроцессы.Задание.ТочкиМаршрута.Проверить.НаименованиеЗадачи + ": " + Наименование; + +КонецФункции + +Функция СрокИсполненияЗадачиДляПроверки() + + Возврат СрокПроверки; + +КонецФункции + +Функция РезультатВыполненияТочкиВыполнить(Знач ЗадачаСсылка) + + ЗадачаДанные = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗадачаСсылка, + "РезультатВыполнения,ДатаИсполнения,Исполнитель,Выполнена"); + + СтрокаФормат = ?(ЗадачаДанные.Выполнена, + "%1, %2 " + НСтр("ru = 'выполнил(а) задачу'") + ": + |%3 + |", + "%1, %2 " + НСтр("ru = 'отклонил(а) задачу'") + ": + |%3 + |"); + + Комментарий = СокрЛП(ЗадачаДанные.РезультатВыполнения); + Комментарий = ?(ПустаяСтрока(Комментарий), "", Комментарий + Символы.ПС); + + Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаФормат, ЗадачаДанные.ДатаИсполнения, ЗадачаДанные.Исполнитель, Комментарий); + Возврат Результат; + +КонецФункции + +Функция РезультатВыполненияТочкиПроверить(Знач ЗадачаСсылка) + + Если НЕ Подтверждено Тогда + СтрокаФормат = "%1, %2 " + НСтр("ru = 'вернул(а) задачу на доработку'") + ": + |%3 + |"; + Иначе + СтрокаФормат = ?(Выполнено, + "%1, %2 " + НСтр("ru = 'подтвердил(а) выполнение задачи'") + ": + |%3 + |", + "%1, %2 " + НСтр("ru = 'подтвердил(а) отмену задачи'") + ": + |%3 + |"); + КонецЕсли; + + ЗадачаДанные = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗадачаСсылка, + "РезультатВыполнения,ДатаИсполнения,Исполнитель"); + Комментарий = СокрЛП(ЗадачаДанные.РезультатВыполнения); + Комментарий = ?(ПустаяСтрока(Комментарий), "", Комментарий + Символы.ПС); + Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаФормат, ЗадачаДанные.ДатаИсполнения, ЗадачаДанные.Исполнитель, Комментарий); + Возврат Результат; + +КонецФункции + +Процедура ЗаполнитьНаборыЗначенийДоступаПоУмолчанию(Таблица) + + // Логика ограничения по умолчанию для + // - чтения: Автор ИЛИ Исполнитель (с учетом адресации) ИЛИ Проверяющий (с учетом адресации) + // - изменения: Автор. + + // Если предмет не задан (т.е. бизнес-процесс без основания), тогда предмет не участвует в логике ограничения. + + // Чтение, Изменение: набор № 1. + Строка = Таблица.Добавить(); + Строка.НомерНабора = 1; + Строка.Чтение = Истина; + Строка.Изменение = Истина; + Строка.ЗначениеДоступа = Автор; + + // Чтение: набор № 2. + Строка = Таблица.Добавить(); + Строка.НомерНабора = 2; + Строка.Чтение = Истина; + Строка.ЗначениеДоступа = ГруппаИсполнителейЗадач; + + // Чтение: набор № 3. + Строка = Таблица.Добавить(); + Строка.НомерНабора = 3; + Строка.Чтение = Истина; + Строка.ЗначениеДоступа = ГруппаИсполнителейЗадачПроверяющий; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/\320\227\320\260\320\264\320\260\320\275\320\270\320\265.mdo" "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/\320\227\320\260\320\264\320\260\320\275\320\270\320\265.mdo" new file mode 100644 index 00000000..259dfd10 --- /dev/null +++ "b/tests/metadata/ssl/src/BusinessProcesses/\320\227\320\260\320\264\320\260\320\275\320\270\320\265/\320\227\320\260\320\264\320\260\320\275\320\270\320\265.mdo" @@ -0,0 +1,784 @@ + + + + + + + + + + + Задание + + ru + Задание + + true + BusinessProcess.Задание.StandardAttribute.Number + DontUse + + Use + Started + + Use + + + + + Use + HeadTask + + Task.ЗадачаИсполнителя.EmptyRef + + Use + + + + + Use + Completed + + ru + Завершено + + + ru + Задание завершено + + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + Date + + ru + Дата выдачи задания + + + 0001-01-01T00:00:00 + + ShowError + Use + + + + + Use + Number + + ru + Номер задания + + + + + Use + + + + Catalog.Файлы + Catalog.Пользователи + Task.ЗадачаИсполнителя + DontUse + true + + + ru + + + BusinessProcess.Задание.Attribute.ГлавнаяЗадача + BusinessProcess.Задание.StandardAttribute.HeadTask + Managed + Use + + ru + Задания + + + ru + Задание для исполнителя + + InDialog + BusinessProcess.Задание.Form.ФормаБизнесПроцесса + BusinessProcess.Задание.Form.ФормаСписка + String + 11 + Variable + true + true + Task.ЗадачаИсполнителя + true + + Автор + + ru + Автор + + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + ru + Пользователь, выдавший задание + + + + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + Важность + + ru + Важность + + Важность задач точки действия Выполнить для исполнителя + + EnumRef.ВариантыВажностиЗадачи + + + ru + Важность задания для его исполнителей + + + + Use + DontUse + true + + Enum.ВариантыВажностиЗадачи.EnumValue.Обычная + + Index + Use + Use + + + Выполнено + + ru + Выполнено + + Результат выполнения задания после завершения бизнес-процесса. + + Boolean + + + ru + Результат выполнения задания + + + + + Use + Use + + + ГлавнаяЗадача + + ru + Главная задача + + + TaskRef.ЗадачаИсполнителя + + + ru + Главная задача для данного задания + + + + + Index + Use + Use + + + ДатаЗавершения + + ru + Дата завершения + + Фактическая дата завершения бизнес-процесса + + Date + + + + ru + Фактическая дата завершения выполнения задания + + + + + 0001-01-01T00:00:00 + + Index + Use + Use + + + Исполнитель + + ru + Исполнитель + + + CatalogRef.ВнешниеПользователи + CatalogRef.РолиИсполнителей + CatalogRef.Пользователи + + + ru + Пользователь, которому поручено выполнять задание + + + + ShowError + + Index + Use + Use + + + Наименование + + ru + Задание + + Описание задания + + String + + 250 + + + + ru + Краткое описание задания + + + + ShowError + + + + Use + Use + + + НаПроверке + + ru + На проверке + + Признак того, что указан проверяющий по задаче + + Boolean + + + ru + Требуется этап проверки данного задания + + + + + Use + Use + + + НомерИтерации + + ru + Номер итерации + + Количество циклов бизнес-процесса между исполнителем и проверяющим + + Number + + 10 + true + + + + ru + Количество итераций задания между исполнителем и проверяющим + + + + + 0 + + Index + Use + Use + + + Подтверждено + + ru + Подтверждено + + Внутреннее состояние бизнес-процесса + + Boolean + + + ru + Признак того, что проверяющий подтвердил результат выполнения задачи ее исполнителей (служебный реквизит) + + + + + Use + Use + + + Предмет + + ru + Предмет + + Объект системы, "по поводу" которого был создан бизнес-процесс. + + DefinedType.ПредметЗадачи + + + ru + Объект программы, по поводу которого введено задание + + + + + Index + Use + Use + + + Проверяющий + + ru + Проверяющий + + + CatalogRef.ВнешниеПользователи + CatalogRef.РолиИсполнителей + CatalogRef.Пользователи + + + ru + Пользователь, выполняющий проверку задания + + + + ShowError + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + РезультатВыполнения + + ru + Результат выполнения + + История переписки исполнителя и проверяющего + + String + + + + ru + История переписки по заданию + + true + true + + + + + + Use + Use + + + Содержание + + ru + Содержание + + + String + + + + ru + Содержание задания + + true + true + + + + + + Use + Use + + + Состояние + + ru + Состояние + + + EnumRef.СостоянияБизнесПроцессов + + + ru + Текущее состояние бизнес-процесса (служебный реквизит) + + + + true + + Enum.СостоянияБизнесПроцессов.EnumValue.Активен + + Use + Use + + + СрокИсполнения + + ru + Срок исполнения + + + Date + + + + ru + Плановый срок выполнения задания + + + + ShowError + + 0001-01-01T00:00:00 + + Index + Use + Use + + + СрокПроверки + + ru + Срок проверки + + + Date + + + + ru + Плановый срок проверки задания + + + + + 0001-01-01T00:00:00 + + Index + Use + Use + + + АвторСтрокой + + ru + Автор строкой + + + String + + 150 + + + + ru + Имя пользователя, выдавшего задание + + + + + + + Use + Use + + + ВнешнееЗадание + + ru + Внешнее задание + + + Boolean + + + ru + Признак того, что задание внешнее (направлено пользователю другой программы) + + + + + Use + Use + + + ЗадачаИсточник + + ru + Задача источник + + + TaskRef.ЗадачаИсполнителя + + + ru + Исходная задача, для которой в другой программе запущено внешнее задание + + + + + Use + Use + + + СодержаниеПредмета + + ru + Содержание предмета + + + ValueStorage + + + ru + Содержание предмета в формате HTML или MXL + + + + + Use + Use + + + ОсновнойОбъектАдресации + + ru + Основной объект адресации + + + Characteristic.ОбъектыАдресацииЗадач + + + ru + Уточняет роль, которой поручено выполнять задание + + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.EmptyRef + + Use + Use + + + ОсновнойОбъектАдресацииПроверяющий + + ru + Основной объект адресации (проверяющий) + + + Characteristic.ОбъектыАдресацииЗадач + + + ru + Уточняет роль, которой поручено проверять задание + + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.EmptyRef + + Use + Use + + + ДополнительныйОбъектАдресации + + ru + Дополнительный объект адресации + + + Characteristic.ОбъектыАдресацииЗадач + + + ru + Уточняет роль, которой поручено выполнять задание + + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.EmptyRef + + Use + Use + + + ДополнительныйОбъектАдресацииПроверяющий + + ru + Дополнительный объект адресации (проверяющий) + + + Characteristic.ОбъектыАдресацииЗадач + + + ru + Уточняет роль, которой поручено проверять задание + + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.EmptyRef + + Use + Use + + + ГруппаИсполнителейЗадач + + ru + Группа исполнителей задач + + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + CatalogRef.ГруппыИсполнителейЗадач + + + ru + Сведения для ограничения прав доступа (служебный реквизит) + + + + + Index + Use + Use + + + ГруппаИсполнителейЗадачПроверяющий + + ru + Группа исполнителей задач (проверяющий) + + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + CatalogRef.ГруппыИсполнителейЗадач + + + ru + Сведения для ограничения прав доступа (служебный реквизит) + + + + + Index + Use + Use + + + ДействиеВыполнить + + ru + Действие выполнить + + + + ru + + + PersonalComputer + MobileDevice + + + ДействиеПроверить + + ru + Действие проверить + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаБизнесПроцесса + + ru + Форма бизнес-процесса + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Form.form" new file mode 100644 index 00000000..2a13eddc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Form.form" @@ -0,0 +1,900 @@ + + + + ЦелаяЧасть + 100 + + ЦелаяЧастьЕдинственноеЧисло + 104 + + <key>ru</key> + <value>Один</value> + + true + true + + true + + + + ЦелаяЧастьЕдинственноеЧисло + + + + OnChange + ПолеВводаПриИзменении + + + ЦелаяЧастьЕдинственноеЧислоРасширеннаяПодсказка + 106 + true + true + + true + + Label + true + true + + Left + + + + ЦелаяЧастьЕдинственноеЧислоКонтекстноеМеню + 105 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + EditTextChange + ПолеВводаИзменениеТекстаРедактирования + + true + true + false + true + true + true + true + + + + ЦелаяЧастьМножественноеЧисло + 107 + + <key>ru</key> + <value>Два</value> + + true + true + + true + + + + ЦелаяЧастьМножественноеЧисло + + + + OnChange + ПолеВводаПриИзменении + + + ЦелаяЧастьМножественноеЧислоРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + + ЦелаяЧастьМножественноеЧислоКонтекстноеМеню + 108 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + EditTextChange + ПолеВводаИзменениеТекстаРедактирования + + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Целая часть</value> + + + ЦелаяЧастьРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + + ДробнаяЧасть + 102 + + ДробнаяЧастьЕдинственноеЧисло + 110 + + <key>ru</key> + <value>Один</value> + + true + true + + true + + + + ДробнаяЧастьЕдинственноеЧисло + + + + OnChange + ПолеВводаПриИзменении + + + ДробнаяЧастьЕдинственноеЧислоРасширеннаяПодсказка + 112 + true + true + + true + + Label + true + true + + Left + + + + ДробнаяЧастьЕдинственноеЧислоКонтекстноеМеню + 111 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + EditTextChange + ПолеВводаИзменениеТекстаРедактирования + + true + true + false + true + true + true + true + + + + ДробнаяЧастьМножественноеЧисло + 113 + + <key>ru</key> + <value>Два</value> + + true + true + + true + + + + ДробнаяЧастьМножественноеЧисло + + + + OnChange + ПолеВводаПриИзменении + + + ДробнаяЧастьМножественноеЧислоРасширеннаяПодсказка + 115 + true + true + + true + + Label + true + true + + Left + + + + ДробнаяЧастьМножественноеЧислоКонтекстноеМеню + 114 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + EditTextChange + ПолеВводаИзменениеТекстаРедактирования + + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Дробная часть</value> + + + ДробнаяЧастьРасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + + ГруппаЧислоРазрядовДробнойЧасти + 56 + + ДлинаДробнойЧасти + 20 + true + true + + true + + + + ДлинаДробнойЧасти + + + + OnChange + ПолеВводаПриИзменении + + + ДлинаДробнойЧастиExtendedTooltip + 96 + true + true + + true + + Label + true + true + + Left + + + + ДлинаДробнойЧастиКонтекстноеМеню + 33 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 15 + true + true + false + true + + + ru + 2 знака + + + 2 + + + + + ru + 1 знак + + + 1 + + + + + ru + 3 знака + + + 3 + + + + Style.BorderColor + + + + true + true + + true + + + ГруппаЧислоРазрядовДробнойЧастиExtendedTooltip + 95 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ГруппаПримерПрописи + 61 + + СуммаЧисло + 59 + + <key>ru</key> + <value>Сумма</value> + + true + true + + true + + + + СуммаЧисло + + + + OnChange + ПолеВводаПриИзменении + + + СуммаЧислоExtendedTooltip + 98 + true + true + + true + + Label + true + true + + Left + + + + СуммаЧислоКонтекстноеМеню + 60 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + СуммаПрописью + 62 + true + true + + true + + + + СуммаПрописью + + + + СуммаПрописьюExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + + СуммаПрописьюКонтекстноеМеню + 63 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пример прописи суммы</value> + + + ГруппаПримерПрописиExtendedTooltip + 97 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 116 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 117 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 118 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 119 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Записать + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Close + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + ДлинаДробнойЧасти + + <key>ru</key> + <value>Число разрядов дробной части</value> + + 11 + + String + + + + true + + + true + + true + + + СуммаЧисло + + <key>ru</key> + <value>Сумма число</value> + + 12 + + Number + + 10 + 2 + true + + + + true + + + true + + + + СуммаПрописью + + <key>ru</key> + <value>Сумма прописью</value> + + 13 + + String + + + + true + + + true + + + + ЦелаяЧастьЕдинственноеЧисло + + <key>ru</key> + <value>Целая часть единственное число</value> + + 1 + + String + + + + true + + + true + + + + ЦелаяЧастьМножественноеЧисло + + <key>ru</key> + <value>Целая часть единственное число</value> + + 2 + + String + + + + true + + + true + + + + ДробнаяЧастьЕдинственноеЧисло + + <key>ru</key> + <value>Дробная часть единственное число</value> + + 3 + + String + + + + true + + + true + + + + ДробнаяЧастьМножественноеЧисло + + <key>ru</key> + <value>Дробная часть множественное число</value> + + 4 + + String + + + + true + + + true + + + + Записать + + <key>ru</key> + <value>Записать</value> + + 1 + + ru + Записать + + + true + + + + Записать + + + Auto + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 2 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + Auto + + + ПараметрыПрописи + + String + + + + + КодЯзыка + + String + + + true + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Help/ru.html" new file mode 100644 index 00000000..5238a7ac --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Help/ru.html" @@ -0,0 +1,10 @@ + +

Параметры прописи валюты

+

Для того чтобы в печатных формах правильно указывалось наименование валюты прописью, необходимо задать параметры прописи целой и дробной части валюты.

+
  • Целая часть - укажите параметры склонения целой части валюты: Род и соответствующие шаблоны склонения в единственном и множественном числе. +
  • Дробная часть - укажите параметры склонения дробной части валюты: Род и соответствующие шаблоны склонения в единственном и множественном числе. +
  • Число разрядов дробной части - в случае если дробная часть в печатных формах отображается числом, то можно установить нужное количество разрядов при выводе печатных форм документов. Например, если установлено количество разрядов 1 знак, то сумма по документу будет отображена, как 150,2 евро, а если 2 знака, то – 150,20 евро. +
  • Пример прописи суммы - число, введенное в поле Сумма, будет написано по указанным параметрам прописи валюты. Используйте эту возможность для проверки параметров прописи валюты.

Параметры прописи валюты заполнены по умолчанию для основных валют: рубль, Евро, доллар. Для остальных валют их необходимо заполнить самостоятельно.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Module.bsl" new file mode 100644 index 00000000..16719d11 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213_en/Module.bsl" @@ -0,0 +1,138 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ПрочитатьПараметрыПрописи(); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ГруппаПримерПрописи.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + Элементы.СуммаПрописью.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.СуммаПрописью.Высота = 2; + Элементы.СуммаПрописью.МногострочныйРежим = Истина; + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + СуммаЧисло = 123.45; + УстановитьСуммуПрописью(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПолеВводаПриИзменении(Элемент) + + Модифицированность = Истина; + УстановитьСуммуПрописью(); + ОповеститьВладельца(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПолеВводаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + + Модифицированность = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + ОповеститьВладельца(Истина, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Записать(Команда) + + ОповеститьВладельца(Истина); + Модифицированность = ВладелецФормы.Модифицированность; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПараметрыПрописи(Форма) + + ПараметрыПрописи = Новый Массив; + ПараметрыПрописи.Добавить(Форма.ЦелаяЧастьЕдинственноеЧисло); + ПараметрыПрописи.Добавить(Форма.ЦелаяЧастьМножественноеЧисло); + ПараметрыПрописи.Добавить(Форма.ДробнаяЧастьЕдинственноеЧисло); + ПараметрыПрописи.Добавить(Форма.ДробнаяЧастьМножественноеЧисло); + ПараметрыПрописи.Добавить(Форма.ДлинаДробнойЧасти); + + Возврат СтрСоединить(ПараметрыПрописи, ", ");; + +КонецФункции + +&НаКлиенте +Процедура УстановитьСуммуПрописью() + + Если ЗначениеЗаполнено(Параметры.КодЯзыка) Тогда + СуммаПрописью = ЧислоПрописью(СуммаЧисло, "L=" + Параметры.КодЯзыка + ";ДП=Ложь", ПараметрыПрописи(ЭтотОбъект)); // АПК:1357 + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьПараметрыПрописи() + + ПараметрыПрописи = СтрРазделить(Параметры.ПараметрыПрописи, ",", Истина); + Если ПараметрыПрописи.Количество() <> 5 Тогда + Возврат; + КонецЕсли; + + ЦелаяЧастьЕдинственноеЧисло = СокрЛП(ПараметрыПрописи[0]); + ЦелаяЧастьМножественноеЧисло = СокрЛП(ПараметрыПрописи[1]); + ДробнаяЧастьЕдинственноеЧисло = СокрЛП(ПараметрыПрописи[2]); + ДробнаяЧастьМножественноеЧисло = СокрЛП(ПараметрыПрописи[3]); + ДлинаДробнойЧасти = ОчиститьСтрокуСЧисломОтПостороннихСимволов(ПараметрыПрописи[4]); + +КонецПроцедуры + +&НаСервере +Функция ОчиститьСтрокуСЧисломОтПостороннихСимволов(СтрокаСЧислом) + + ПосторонниеСимволы = СтрСоединить(СтрРазделить(СтрокаСЧислом, "0123456789", Ложь), ""); + Возврат СтрСоединить(СтрРазделить(СтрокаСЧислом, ПосторонниеСимволы, Ложь), ""); + +КонецФункции + +&НаКлиенте +Процедура ОповеститьВладельца(Записать = Ложь, Закрыть = Ложь) + + ПараметрыПрописи = Новый Структура; + ПараметрыПрописи.Вставить("КодЯзыка", Параметры.КодЯзыка); + ПараметрыПрописи.Вставить("ПараметрыПрописи", ПараметрыПрописи(ЭтотОбъект)); + ПараметрыПрописи.Вставить("Записать", Записать); + ПараметрыПрописи.Вставить("Закрыть", Закрыть); + + Оповестить("ПараметрыПрописиВалюты", ПараметрыПрописи, ВладелецФормы); + +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Form.form" new file mode 100644 index 00000000..404ea26a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Form.form" @@ -0,0 +1,557 @@ + + + + <key>ru</key> + <value>Параметры прописи</value> + + + ГруппаЯзыки + 5 + true + true + + true + + + <key>ru</key> + <value>Языки</value> + + + ГруппаЯзыкиРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Страницы + 17 + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + СтраницыПриСменеСтраницы + + TabsOnLeftHorizontal + Auto + + + + ГруппаПримерПрописи + 19 + + СуммаЧисло + 21 + + <key>ru</key> + <value>Сумма</value> + + true + true + + true + + + + СуммаЧисло + + + + OnChange + СуммаЧислоПриИзменении + + + СуммаЧислоExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + СуммаЧислоКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + СуммаПрописью + 24 + true + true + + true + + + + СуммаПрописью + + + Left + + СуммаПрописьюExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + СуммаПрописьюКонтекстноеМеню + 25 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пример прописи суммы</value> + + + ГруппаПримерПрописиExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 27 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 29 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Записать + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + 15 + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ОсновнойЯзык + 1 + + + true + + + true + + + + Языки + 3 + + ValueTable + + + true + + + true + + + КодЯзыка + 1 + + String + + 10 + + + + true + + + true + + + + Представление + 2 + + String + + + + true + + + true + + + + Имя + 3 + + String + + 32 + + + + true + + + true + + + + Суффикс + 4 + + String + + 10 + + + + true + + + true + + + + ФормаРедактирования + 5 + + String + + + + true + + + true + + + + Страница + 6 + + String + + + + true + + + true + + + + + МультиязычныеСтрокиВРеквизитах + 2 + + Boolean + + + true + + + true + + + + СуммаПрописью + + <key>ru</key> + <value>Сумма прописью</value> + + 4 + + String + + + + true + + + true + + + + СуммаЧисло + + <key>ru</key> + <value>Сумма число</value> + + 5 + + Number + + 10 + 2 + true + + + + true + + + true + + + + Записать + + <key>ru</key> + <value>Записать</value> + + 2 + + ru + Записать + + + true + + + + Записать + + + Auto + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 3 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + Auto + + + ИмяРеквизита + + String + + + + + Представления + + + + ТекущееЗначение + + String + + + + + ТолькоПросмотр + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Help/ru.html" new file mode 100644 index 00000000..267c2e73 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Help/ru.html" @@ -0,0 +1,4 @@ +Если в программе ведется работа на нескольких языках, то параметры прописи валюты можно вводить на всех используемых языках. +
После перевода параметров прописи появляется возможность формировать на нужных языках печатные формы, содержащие суммы, записанные прописью, например, "One hundred twenty three dollars 45 cents".
+
Для перехода к редактированию параметров прописей на нужном языке необходимо выбрать соответствующий пункт в подменю Параметры прописи в карточке валюты.
+

\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Module.bsl" new file mode 100644 index 00000000..86ce085f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\277\320\270\321\201\320\270\320\222\320\260\320\273\321\216\321\202\321\213\320\235\320\260\320\224\321\200\321\203\320\263\320\270\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Module.bsl" @@ -0,0 +1,530 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + НаборЯзыков = Новый ТаблицаЗначений; + НаборЯзыков.Колонки.Добавить("КодЯзыка", ОбщегоНазначения.ОписаниеТипаСтрока(10)); + НаборЯзыков.Колонки.Добавить("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(150)); + + ДоступныеЯзыки = Новый Массив; + Для Каждого Язык Из Метаданные.Языки Цикл + ДоступныеЯзыки.Добавить(Язык.КодЯзыка); + КонецЦикла; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + ДоступныеЯзыки = МодульУправлениеПечатьюМультиязычность.ДоступныеЯзыки(); + КонецЕсли; + + Для Каждого КодЯзыка Из ДоступныеЯзыки Цикл + НовыйЯзык = НаборЯзыков.Добавить(); + НовыйЯзык.КодЯзыка = КодЯзыка; + НовыйЯзык.Представление = РаботаСКурсамиВалютСлужебный.ПредставлениеЯзыка(КодЯзыка); + КонецЦикла; + + ИмеющиесяЯзыкиВводаПрописей = ИмеющиесяЯзыкиВводаПрописей(); + + Для Каждого ЯзыкКонфигурации Из НаборЯзыков Цикл + Если ИмеющиесяЯзыкиВводаПрописей.Найти(ЯзыкКонфигурации.КодЯзыка) <> Неопределено Тогда + Продолжить; + КонецЕсли; + НоваяСтрока = Языки.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ЯзыкКонфигурации); + НоваяСтрока.Имя = "_" + СтрЗаменить(Новый УникальныйИдентификатор, "-", ""); + КонецЦикла; + + СформироватьПоляВводаНаРазныхЯзыках(Ложь, Параметры.ТолькоПросмотр); + + ОписаниеЯзыка = ОписаниеЯзыка(ТекущийЯзык().КодЯзыка); + Если ОписаниеЯзыка <> Неопределено Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущееЗначение; + КонецЕсли; + + ОсновнойЯзык = Метаданные.ОсновнойЯзык.КодЯзыка; + + Для каждого Представление Из Параметры.Представления Цикл + + ОписаниеЯзыка = ОписаниеЯзыка(Представление.КодЯзыка); + Если ОписаниеЯзыка <> Неопределено Тогда + Если СтрСравнить(ОписаниеЯзыка.КодЯзыка, ТекущийЯзык().КодЯзыка) = 0 Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = ?(ЗначениеЗаполнено(Параметры.ТекущееЗначение), Параметры.ТекущееЗначение, Представление[Параметры.ИмяРеквизита]); + Иначе + ЭтотОбъект[ОписаниеЯзыка.Имя] = Представление[Параметры.ИмяРеквизита]; + КонецЕсли; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + СуммаЧисло = 123.45; + УстановитьСуммуПрописью(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиЭлементовШапкиФормы + +&НаКлиенте +Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница) + + УстановитьСуммуПрописью(); + +КонецПроцедуры + +&НаКлиенте +Процедура СуммаЧислоПриИзменении(Элемент) + + УстановитьСуммуПрописью(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолеВводаПриИзменении(Элемент) + + Модифицированность = Истина; + УстановитьСуммуПрописью(); + ОповеститьВладельца(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолеВводаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + + Модифицированность = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + ОповеститьВладельца(Истина, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Записать(Команда) + + ОповеститьВладельца(Истина); + Модифицированность = ВладелецФормы.Модифицированность; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура СформироватьПоляВводаНаРазныхЯзыках(МногострочныйРежим, ТолькоПросмотр) + + Добавлять = Новый Массив; + ТипСтрока = Новый ОписаниеТипов("Строка"); + Для Каждого ЯзыкКонфигурации Из Языки Цикл + Добавлять.Добавить(Новый РеквизитФормы(ЯзыкКонфигурации.Имя, ТипСтрока,, ЯзыкКонфигурации.Представление)); + Добавлять.Добавить(Новый РеквизитФормы("ПодсказкаВвода" + ЯзыкКонфигурации.Имя, ТипСтрока,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Подсказка ввода для языка %1'"), ЯзыкКонфигурации.Представление))); + КонецЦикла; + + ИзменитьРеквизиты(Добавлять); + РодительЭлементов = Элементы.Страницы; + + Для Каждого ЯзыкКонфигурации Из Языки Цикл + + Если СтрСравнить(ЯзыкКонфигурации.КодЯзыка, ТекущийЯзык().КодЯзыка) = 0 И РодительЭлементов.ПодчиненныеЭлементы.Количество() > 0 Тогда + Страница = Элементы.Вставить("Страница" + ЯзыкКонфигурации.Имя, Тип("ГруппаФормы"), РодительЭлементов, + РодительЭлементов.ПодчиненныеЭлементы.Получить(0)); + Иначе + Страница = Элементы.Добавить("Страница" + ЯзыкКонфигурации.Имя, Тип("ГруппаФормы"), РодительЭлементов); + КонецЕсли; + + ЯзыкКонфигурации.Страница = Страница.Имя; + + Страница.Вид = ВидГруппыФормы.Страница; + Страница.Заголовок = ЯзыкКонфигурации.Представление; + + ПолеВвода = Элементы.Добавить(ЯзыкКонфигурации.Имя, Тип("ПолеФормы"), Страница); + ПолеВвода.ПутьКДанным = ЯзыкКонфигурации.Имя; + + Если ЗначениеЗаполнено(ЯзыкКонфигурации.ФормаРедактирования) Тогда + ПолеВвода.Вид = ВидПоляФормы.ПолеНадписи; + ПолеВвода.Гиперссылка = Истина; + ПолеВвода.УстановитьДействие("Нажатие", "Подключаемый_Нажатие"); + Иначе + ПолеВвода.Вид = ВидПоляФормы.ПолеВвода; + ПолеВвода.Ширина = 40; + ПолеВвода.МногострочныйРежим = МногострочныйРежим; + ПолеВвода.ТолькоПросмотр = ТолькоПросмотр; + ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + ПолеВвода.УстановитьДействие("ПриИзменении", "Подключаемый_ПолеВводаПриИзменении"); + ПолеВвода.УстановитьДействие("ИзменениеТекстаРедактирования", "Подключаемый_ПолеВводаИзменениеТекстаРедактирования"); + + Подсказка = ПодсказкаЗаполненияПараметровПрописей(ЯзыкКонфигурации.КодЯзыка); + ПолеВвода.ПодсказкаВвода = Подсказка.ПодсказкаВвода; + + ПодсказкаВвода = Элементы.Добавить("ПодсказкаВвода" + ЯзыкКонфигурации.Имя, Тип("ПолеФормы"), Страница); + ПодсказкаВвода.ПутьКДанным = "ПодсказкаВвода" + ЯзыкКонфигурации.Имя; + ПодсказкаВвода.Вид = ВидПоляФормы.ПолеВвода; + ПодсказкаВвода.ТолькоПросмотр = Истина; + ПодсказкаВвода.ЦветТекста = ЦветаСтиля.ПоясняющийТекст; + ПодсказкаВвода.РастягиватьПоВертикали = Истина; + ПодсказкаВвода.АвтоМаксимальнаяВысота = Ложь; + ПодсказкаВвода.МногострочныйРежим = Истина; + ПодсказкаВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + ПодсказкаВвода.ЦветРамки = ЦветаСтиля.ЦветФонаФормы; + + Если Не ЗначениеЗаполнено(Подсказка.Инструкция) Тогда + Подсказка.Инструкция = НСтр("ru = 'Для данного языка настройка прописи не предусмотрена.'") + КонецЕсли; + ЭтотОбъект["ПодсказкаВвода" + ЯзыкКонфигурации.Имя] = Подсказка.Инструкция; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ОписаниеЯзыка(КодЯзыка) + + Отбор = Новый Структура("КодЯзыка", КодЯзыка); + НайденныеЭлементы = Языки.НайтиСтроки(Отбор); + Если НайденныеЭлементы.Количество() > 0 Тогда + Возврат НайденныеЭлементы[0]; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +&НаКлиенте +Процедура УстановитьСуммуПрописью() + + ТекущийЯзык = ОписаниеТекущегоЯзыка(); + Если ТекущийЯзык = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыПрописи = ЭтотОбъект[ТекущийЯзык.Имя]; + СуммаПрописью = ЧислоПрописью(СуммаЧисло, "L=" + ТекущийЯзык.КодЯзыка + ";ДП=Ложь", ПараметрыПрописи); // АПК:1357 + +КонецПроцедуры + +&НаКлиенте +Функция ОписаниеТекущегоЯзыка() + + ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; + Если ТекущаяСтраница = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат Языки.НайтиСтроки(Новый Структура("Страница", ТекущаяСтраница.Имя))[0]; + +КонецФункции + +&НаКлиенте +Процедура ОповеститьВладельца(Записать = Ложь, Закрыть = Ложь) + + ТекущийЯзык = ОписаниеТекущегоЯзыка(); + + ПараметрыПрописи = Новый Структура; + ПараметрыПрописи.Вставить("КодЯзыка", ТекущийЯзык.КодЯзыка); + ПараметрыПрописи.Вставить("ПараметрыПрописи", ЭтотОбъект[ТекущийЯзык.Имя]); + ПараметрыПрописи.Вставить("Записать", Записать); + ПараметрыПрописи.Вставить("Закрыть", Закрыть); + + Оповестить("ПараметрыПрописиВалюты", ПараметрыПрописи, ВладелецФормы); + +КонецПроцедуры + +&НаСервере +Функция ИмеющиесяЯзыкиВводаПрописей() + + Возврат РаботаСКурсамиВалютСлужебный.ФормыВводаПрописей().ВыгрузитьЗначения(); + +КонецФункции + +&НаСервере +Функция ПодсказкаЗаполненияПараметровПрописей(Знач КодЯзыка) + + Результат = Новый Структура; + Результат.Вставить("Инструкция", ""); + Результат.Вставить("ПодсказкаВвода", ""); + + Если Не ЗначениеЗаполнено(КодЯзыка) Тогда + Возврат Результат; + КонецЕсли; + + КодЯзыка = СтрРазделить(КодЯзыка, "_", Истина)[0]; + + Если КодЯзыка = "ru" Или КодЯзыка = "be" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для русского и белорусского языков (ru_RU, be_BY): + | + |рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2 + | + |""рубль, рубля, рублей, м"" – предмет исчисления: + |рубль – единственное число именительный падеж; + |рубля – единственное число родительный падеж; + |рублей – множественное число родительный падеж; + |м – мужской род (ж – женский род, с - средний род); + |""копейка, копейки, копеек, ж"" – дробная часть, аналогично предмету исчисления (может отсутствовать); + |""2"" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2'"); + + ИначеЕсли КодЯзыка = "uk" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для украинского языка (uk_UA): + | + |гривна, гривны, гривен, м, копейка, копейки, копеек, ж, 2 + | + |""гривна, гривны, гривен, м"" – предмет исчисления: + |""гривна – единственное число именительный падеж; + |гривны – единственное число родительный падеж; + |гривен – множественное число родительный падеж; + |м – мужской род (ж – женский род, с - средний род); + |""копейка, копейки, копеек, ж"" – дробная часть, аналогично предмету исчисления (может отсутствовать); + |""2"" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'гривна, гривны, гривен, м, копейка, копейки, копеек, ж, 2'"); + + ИначеЕсли КодЯзыка = "pl" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для польского языка (pl_PL): + | + |złoty, złote, złotych, m, grosz, grosze, groszy, m, 2 + | + |""złoty, złote, złotych, m "" - предмет исчисления (m - мужской род, ż - женский род, ń - средний род, mo – личностный мужской род). + |złoty - единственное число именительный падеж; + |złote - единственное число винительный падеж; + |złotych - множественное число винительный падеж; + |m - мужской род (ż - женский род, ń - средний род, mo – личностный мужской род); + |""grosz, grosze, groszy, m "" - дробная часть (может отсутствовать) (аналогично целой части); + |2 - количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'złoty, złote, złotych, m, grosz, grosze, groszy, m, 2'"); + + ИначеЕсли КодЯзыка = "en" Или КодЯзыка = "fr" Или КодЯзыка = "fi" Или КодЯзыка = "kk" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для английского, французского, финского и казахского языков (en_US, fr_CA,fi_FI, kk_KZ): + | + |dollar, dollars, cent, cents, 2 + | + |""dollar, dollars"" – предмет исчисления в единственном и множественном числе; + |""cent, cents"" – дробная часть в единственном и множественном числе (может отсутствовать); + |""2"" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'dollar, dollars, cent, cents, 2'"); + + ИначеЕсли КодЯзыка = "de" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для немецкого языка (de_DE): + | + |EURO, EURO, М, Cent, Cent, M, 2 + | + |""EURO, EURO, М"" – предмет исчисления: + |EURO, EURO – предмет исчисления в единственном и множественном числе; + |М – мужской род (F – женский род, N - средний род); + |""Cent, Cent, M"" – дробная часть, аналогично предмету исчисления (может отсутствовать); + |""2"" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'EURO, EURO, М, Cent, Cent, M, 2'"); + + ИначеЕсли КодЯзыка = "lv" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для латышского языка (lv_LV): + | + |lats, lati, latu, V, santīms, santīmi, santīmu, V, 2, J, J + | + |""lats, lati, latu, v"" – предмет исчисления: + |lats – для чисел заканчивающихся на 1, кроме 11; + |lati – для чисел заканчивающихся на 2-9 и 11; + |latu – множественное число (родительный падеж) используется после числительных 0, 10, 20,..., 90, 100, 200, ..., 1000, ..., 100000; + |v – мужской род (s – женский род); + |""santīms, santīmi, santīmu, V"" – дробная часть, аналогично предмету исчисления (может отсутствовать); + |""2"" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2); + |""J"" - число 100 выводится как ""Одна сотня"" для предмета исчисления (N - как ""Сто""); + |может отсутствовать, по умолчанию равно ""J""; + |""J"" - число 100 выводится как ""Одна сотня"" для дробной части (N - как ""Сто""); + |может отсутствовать, по умолчанию равно ""J"".'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'lats, lati, latu, V, santīms, santīmi, santīmu, V, 2, J, J'"); + + ИначеЕсли КодЯзыка = "lt" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для литовского языка (lt_LT): + | + |litas, litai, litų, М, centas, centai, centų, М, 2 + | + |""litas, litai, litų, М"" – предмет исчисления: + |litas - единственное число целой части; + |litai - множественное число целой части от 2 до 9; + |litų - множественное число целой части прочие; + |m - род целой части (f - женский род), + |""centas, centai, centų, М"" – дробная часть, аналогично предмету исчисления (может отсутствовать); + |""2"" - количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'litas, litai, litų, М, centas, centai, centų, М, 2'"); + + ИначеЕсли КодЯзыка = "et" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для эстонского языка (et_EE): + | + |kroon, krooni, sent, senti, 2 + | + |""kroon, krooni"" – – предмет исчисления в единственном и множественном числе; + |""sent, senti"" – дробная часть в единственном и множественном числе (может отсутствовать); + |2 – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'kroon, krooni, sent, senti, 2'"); + + ИначеЕсли КодЯзыка = "bg" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для болгарского языка (bg_BG): + | + |лев, лева, м, стотинка, стотинки, ж, 2 + | + |""лев, лева, м"" – предмет исчисления: + |лев - единственное число целой части; + |лева - множественное число целой части; + |м - род целой части, + |""стотинка, стотинки, ж"" - дробная часть: + |стотинка - единственное число дробной части; + |стотинки - множественное число дробной части; + |ж - род дробной части, + |""2"" - количество разрядов дробной части.'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'лев, лева, м, стотинка, стотинки, ж, 2'"); + + ИначеЕсли КодЯзыка = "ro" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для румынского языка (ro_RO): + | + |leu, lei, M, ban, bani, W, 2 + | + |""leu, lei, M"" – предмет исчисления: + |leu - единственное число целой части; + |lei - множественное число целой части; + |M - род целой части; + |""ban, bani, W"" - дробная часть: + |ban - единственное число дробной части; + |bani - множественное число дробной части; + |W - род дробной части; + |""2"" - количество разрядов дробной части.'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'leu, lei, M, ban, bani, W, 2'"); + + ИначеЕсли КодЯзыка = "ka" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для грузинского языка (ka_GE): + | + |ლარი, თეთრი, 2 + | + |ლარი - целая часть; + |თეთრი - дробная часть; + |""2"" - количество разрядов дробной части.'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'ლარი, თეთრი, 2'"); + + ИначеЕсли КодЯзыка = "az" Или КодЯзыка = "tk" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для азербайджанского(az) и туркменского языков(tk): + | + |TL,Kr,2 + | + |""TL"" - предмет исчисления; + |""Kr"" - дробная часть (может отсутствовать); + |2 - количество разрядов дробной части (может отсутствовать, по умолчанию - 2)'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'TL,Kr,2'"); + + ИначеЕсли КодЯзыка = "vi" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для вьетнамского языка (vi_VN): + | + |dong, xu, 2 + | + |dong, - целая часть; + |xu, - дробная часть; + |2 - количество разрядов дробной части.'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'dong, xu, 2'"); + + ИначеЕсли КодЯзыка = "tr" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для турецкого языка (tr_TR): + | + |TL,Kr,2,Separate + | + |TL - целая часть; + |Kr - дробная часть (может отсутствовать); + |2 - количество разрядов дробной части (может отсутствовать, значение по умолчанию - 2); + |""Separate"" - признак написания прописи раздельно, ""Solid"" - слитно (может отсутствовать, по умолчанию слитно).'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'TL,Kr,2,Separate'"); + + ИначеЕсли КодЯзыка = "hu" Тогда + + Результат.Инструкция = СтроковыеФункции.ФорматированнаяСтрока(НСтр( + "ru = 'Параметры прописи необходимо перечислить через запятую. + |Образец заполнения для венгерского языка (hu): + | + |Forint, fillér, 2 + | + |Forint - целая часть; + |fillér - дробная часть; + |""2"" - количество разрядов дробной части.'")); + + Результат.ПодсказкаВвода = НСтр("ru = 'Forint, fillér, 2'"); + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..58e58fc5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + НаименованиеПолное + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..02ed9658 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,941 @@ + + + + ГруппаПользовательскихНастроек + 66 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 64 + + Создать + 77 + + ФормаПодборИзКлассификатора + 44 + true + true + + true + + + ФормаПодборИзКлассификатораРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодборИзКлассификатора + Auto + true + true + UserCmds + Auto + + + СоздатьВалюту + 85 + + <key>ru</key> + <value>Новую</value> + + true + true + + true + + + СоздатьВалютуРасширеннаяПодсказка + 86 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Создать</value> + + + СоздатьРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + КомандыФормы + 79 + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ГруппаЗагрузитьКурсыВалют + 87 + + ФормаЗагрузитьКурсыВалют + 43 + true + true + + true + + + ФормаЗагрузитьКурсыВалютExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗагрузитьКурсыВалют + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Загрузить курсы валют</value> + + + ГруппаЗагрузитьКурсыВалютРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + + + + Справка + 81 + true + true + + true + + + СправкаРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Валюты + 25 + + <key>ru</key> + <value>Валюты</value> + + true + true + + true + + + Список + + false + None + + НаименованиеПолное + 40 + VeryHigh + true + true + + true + + + + Список.НаименованиеПолное + + + + НаименованиеПолноеExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеПолноеКонтекстноеМеню + 41 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + + + + Код + 28 + + <key>ru</key> + <value>Цифр. код</value> + + true + true + + true + + + + Список.Код + + + + КодExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 29 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 9 + true + true + true + true + true + + + + Наименование + 32 + + <key>ru</key> + <value>Симв. код</value> + + true + true + + true + + + + Список.Наименование + + + + НаименованиеExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 33 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 9 + true + true + true + true + true + + + + Курс + 38 + VeryHigh + + <key>ru</key> + <value>Курс</value> + + true + true + + true + + + + Список.Курс + + + + КурсExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + КурсКонтекстноеМеню + 39 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 7 + true + true + + + + Кратность + 36 + + <key>ru</key> + <value>Кратность</value> + + true + true + + true + + + + Список.Кратность + + + + ru + Кратность равная единице не отображается + + + КратностьРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + КратностьКонтекстноеМеню + 37 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 7 + true + true + + + + Ссылка + 61 + true + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 62 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 3 + true + true + + + None + + ВалютыКоманднаяПанель + 27 + true + true + + true + + Left + true + + + true + true + + true + + ВалютыСтрокаПоиска + 68 + + ВалютыСтрокаПоискаРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + + ВалютыСтрокаПоискаКонтекстноеМеню + 69 + true + true + + true + + true + + + true + + + + true + true + + true + + ВалютыСостояниеПросмотра + 71 + + ВалютыСостояниеПросмотраРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + + ВалютыСостояниеПросмотраКонтекстноеМеню + 72 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВалютыУправлениеПоиском + 74 + + ВалютыУправлениеПоискомРасширеннаяПодсказка + 76 + true + true + + true + + Label + true + true + + Left + + + + ВалютыУправлениеПоискомКонтекстноеМеню + 75 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВалютыExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + + ВалютыКонтекстноеМеню + 26 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + Список.DefaultPicture + + + + OnGetDataAtServer + ВалютыПриПолученииДанныхНаСервере + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + ChoiceProcessing + ОбработкаВыбора + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Кратность + + + Список.Курс + + + Список.Наименование + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + Валюты.ПометкаУдаления КАК ПометкаУдаления, + Валюты.Код КАК Код, + Валюты.Наименование КАК Наименование, + Валюты.НаименованиеПолное КАК НаименованиеПолное, + ВЫРАЗИТЬ(NULL КАК ЧИСЛО(10, 2)) КАК Курс, + ВЫРАЗИТЬ(NULL КАК СТРОКА(50)) КАК Кратность, + Валюты.Ссылка КАК Ссылка +ИЗ + Справочник.Валюты КАК Валюты + Catalog.Валюты + true + true + true + true + true + +
+ + ПодборИзКлассификатора + + <key>ru</key> + <value>По классификатору...</value> + + 1 + + ru + Подобрать валюты из Общероссийского классификатора валют + + + true + + + + ПодборИзКлассификатора + + + DontUse + + + ЗагрузитьКурсыВалют + + <key>ru</key> + <value>Загрузить курсы валют...</value> + + 2 + + ru + Загрузить курсы валют из Интернета + + + true + + + + ЗагрузитьКурсыВалют + + + FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..b2c29c8e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,116 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.Валюты.РежимВыбора = Параметры.РежимВыбора; + + ДатаКурса = НачалоДня(ТекущаяДатаСеанса()); + Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ДатаКурса", ДатаКурса); + + ИзменяемыеПоля = Новый Массив; + ИзменяемыеПоля.Добавить("Курс"); + ИзменяемыеПоля.Добавить("Кратность"); + Список.УстановитьОграниченияИспользованияВГруппировке(ИзменяемыеПоля); + Список.УстановитьОграниченияИспользованияВПорядке(ИзменяемыеПоля); + Список.УстановитьОграниченияИспользованияВОтборе(ИзменяемыеПоля); + + ДоступноИзменениеВалют = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.КурсыВалют); + ДоступнаЗагрузкаКурсов = Метаданные.Обработки.Найти("ЗагрузкаКурсовВалют") <> Неопределено И ДоступноИзменениеВалют; + + Элементы.ФормаПодборИзКлассификатора.Видимость = ДоступнаЗагрузкаКурсов; + Элементы.ФормаЗагрузитьКурсыВалют.Видимость = ДоступнаЗагрузкаКурсов; + Если Не ДоступнаЗагрузкаКурсов Тогда + Если ДоступноИзменениеВалют Тогда + Элементы.СоздатьВалюту.Заголовок = НСтр("ru = 'Создать'"); + КонецЕсли; + Элементы.Создать.Вид = ВидГруппыФормы.ГруппаКнопок; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора) + + Элементы.Валюты.Обновить(); + Элементы.Валюты.ТекущаяСтрока = РезультатВыбора; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_КурсыВалют" + Или ИмяСобытия = "Запись_ЗагрузкаКурсовВалют" Тогда + Элементы.Валюты.Обновить(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыВалюты + +&НаСервереБезКонтекста +Процедура ВалютыПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + Перем ДатаКурса; + + Если Не Настройки.ДополнительныеСвойства.Свойство("ДатаКурса", ДатаКурса) Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | КурсыВалют.Валюта КАК Валюта, + | КурсыВалют.Курс КАК Курс, + | КурсыВалют.Кратность КАК Кратность + |ИЗ + | РегистрСведений.КурсыВалют.СрезПоследних(&КонецПериода, Валюта В (&Валюты)) КАК КурсыВалют"; + Запрос.УстановитьПараметр("Валюты", Строки.ПолучитьКлючи()); + Запрос.УстановитьПараметр("КонецПериода", ДатаКурса); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + СтрокаСписка = Строки[Выборка.Валюта]; + СтрокаСписка.Данные["Курс"] = Выборка.Курс; + Если Выборка.Кратность <> 1 Тогда + Пояснение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'за %1 %2'"), + Выборка.Кратность, СтрокаСписка.Данные["Наименование"]); + СтрокаСписка.Данные["Кратность"] = Пояснение; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПодборИзКлассификатора(Команда) + + ИмяФормыПодбора = "Обработка.ЗагрузкаКурсовВалют.Форма.ПодборВалютИзКлассификатора"; + ОткрытьФорму(ИмяФормыПодбора, , ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьКурсыВалют(Команда) + + ИмяФормыЗагрузки = "Обработка.ЗагрузкаКурсовВалют.Форма"; + ПараметрыФормы = Новый Структура("ОткрытиеИзСписка"); + ОткрытьФорму(ИмяФормыЗагрузки, ПараметрыФормы); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..2f6fab12 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1143 @@ + + + + ГруппаШапка + 150 + + НаименованиеПолное + 4 + true + true + + true + + + + Объект.НаименованиеПолное + + + + НаименованиеПолноеExtendedTooltip + 72 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеПолноеКонтекстноеМеню + 23 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + true + + Style.BorderColor + + + + + ГруппаКодНаименование + 148 + + Код + 2 + true + true + + true + + + + Объект.Code + + + + OnChange + КодПриИзменении + + + КодExtendedTooltip + 75 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 3 + true + true + true + true + true + + Style.BorderColor + + + + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 5 + true + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Группа код и наименование</value> + + + ГруппаКодНаименованиеРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 151 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаСпособУстановкиКурса + 106 + + НадписьКурсВалюты + 142 + + <key>ru</key> + <value>Курс валюты:</value> + + true + true + + true + + + НадписьКурсВалютыРасширеннаяПодсказка + 144 + true + true + + true + + Label + true + true + + Left + + + + НадписьКурсВалютыКонтекстноеМеню + 143 + true + true + + true + + true + + Label + true + + Left + + + + КурсВалютыВводитсяВручную + 101 + true + true + + true + + + + Объект.СпособУстановкиКурса + + + None + + OnChange + КурсВалютыПриИзменении + + + КурсВалютыВводитсяВручнуюРасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + + КурсВалютыВводитсяВручнуюКонтекстноеМеню + 102 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + вводится вручную + + + Enum.СпособыУстановкиКурсаВалюты.EnumValue.РучнойВвод + + + + + + КурсВалютыЗагружаетсяИзИнтернета + 129 + true + true + + true + + + + Объект.СпособУстановкиКурса + + + None + + OnChange + КурсВалютыПриИзменении + + + КурсВалютыЗагружаетсяИзИнтернетаРасширеннаяПодсказка + 131 + true + true + + true + + Label + true + true + + Left + + + + КурсВалютыЗагружаетсяИзИнтернетаКонтекстноеМеню + 130 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + загружается из Интернета + + + Enum.СпособыУстановкиКурсаВалюты.EnumValue.ЗагрузкаИзИнтернета + + + + + + ГруппаКурсСвязанСДругойВалютой + 138 + + КурсВалютыСвязанСКурсомДругойВалюты + 132 + true + true + + true + + + + Объект.СпособУстановкиКурса + + + None + + OnChange + КурсВалютыПриИзменении + + + КурсВалютыСвязанСКурсомДругойВалютыРасширеннаяПодсказка + 134 + true + true + + true + + Label + true + true + + Left + + + + КурсВалютыСвязанСКурсомДругойВалютыКонтекстноеМеню + 133 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + связан с курсом другой валюты: + + + Enum.СпособыУстановкиКурсаВалюты.EnumValue.НаценкаНаКурсДругойВалюты + + + + + + ГруппаНаценкаНаКурсДругойВалюты + 119 + + ОсновнаяВалюта + 5 + true + true + + true + + + + Объект.ОсновнаяВалюта + + + None + + ОсновнаяВалютаExtendedTooltip + 81 + true + true + + true + + Label + true + true + + Left + + + + ОсновнаяВалютаКонтекстноеМеню + 35 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + + StartChoice + ОсновнаяВалютаНачалоВыбора + + 15 + true + true + false + true + + CatalogRef.Валюты + + + Style.BorderColor + + DontUse + + + + ГруппаНаценка + 152 + + Наценка + 6 + true + true + + true + + + + Объект.Наценка + + + + ru + Коэффициент, применяемый к курсу выбранной валюты для вычисления курса текущей валюты + + + НаценкаExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + + НаценкаКонтекстноеМеню + 36 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 7 + true + true + false + true + true + true + true + + -99 + + + 100 + + + Style.BorderColor + + + + + ТекстПроцент + 126 + + <key>ru</key> + <value>%</value> + + true + true + + true + + + ТекстПроцентРасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + + ТекстПроцентКонтекстноеМеню + 127 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Наценка</value> + + + ru + Коэффициент, который применяется к курсу основной валюты для вычисления курса текущей валюты. + + Button + + ГруппаНаценкаРасширеннаяПодсказка + 153 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наценка на курс другой валюты</value> + + None + + ГруппаНаценкаНаКурсДругойВалютыРасширеннаяПодсказка + 120 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Курс связан с другой валютой</value> + + + ГруппаКурсСвязанСДругойВалютойРасширеннаяПодсказка + 139 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + + ГруппаКурсРассчитываетсяПоФормуле + 140 + + КурсВалютыРассчитываетсяПоФормуле + 135 + true + true + + true + + + + Объект.СпособУстановкиКурса + + + None + + OnChange + КурсВалютыПриИзменении + + + КурсВалютыРассчитываетсяПоФормулеРасширеннаяПодсказка + 137 + true + true + + true + + Label + true + true + + Left + + + + КурсВалютыРассчитываетсяПоФормулеКонтекстноеМеню + 136 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + рассчитывается по формуле: + + + Enum.СпособыУстановкиКурсаВалюты.EnumValue.РасчетПоФормуле + + + + + + ФормулаРасчетаКурса + 121 + true + true + + true + + + + Объект.ФормулаРасчетаКурса + + + None + Button + + ФормулаРасчетаКурсаРасширеннаяПодсказка + 123 + true + true + + true + + Label + true + true + + Left + + + + ФормулаРасчетаКурсаКонтекстноеМеню + 122 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 35 + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Курс рассчитывается по формуле</value> + + + ГруппаКурсРассчитываетсяПоФормулеРасширеннаяПодсказка + 141 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Способ установки курса</value> + + + ГруппаСпособУстановкиКурсаРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГиперссылкаПараметрыПрописиВалюты + 145 + + <key>ru</key> + <value>Параметры прописи валюты</value> + + true + true + + true + + + ГиперссылкаПараметрыПрописиВалютыРасширеннаяПодсказка + 147 + true + true + + true + + Label + true + true + + Left + + + + ГиперссылкаПараметрыПрописиВалютыКонтекстноеМеню + 146 + true + true + + true + + true + + Label + true + true + + + Click + ПараметрыПрописиВалютыНажатие + + true + Left + + + + ФормаКоманднаяПанель + -1 + + ГруппаПараметрыПрописиВалюты + 154 + true + true + + true + + + <key>ru</key> + <value>Параметры прописи</value> + + + ГруппаПараметрыПрописиВалютыРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.Валюты + + + true + + + true + +
true
+ true +
+ + ФормыВводаПрописей + 14 + + ValueList + + + true + + + true + + + + + + + КодыВалютЗагружаемыхИзИнтернета + 2 + + ValueList + + + true + + + true + + + + + + + ПараметрыПрописиВалютыНаДругихЯзыках + + <key>ru</key> + <value>На других языках...</value> + + 1 + + ru + Параметры прописи валюты на других языках + + + true + + + + ПараметрыПрописиВалютыНаДругихЯзыках + + + Auto + + + + + 0:ed6dca4d-2fba-438b-808b-da1bb875ddb7 + + + + 0:57a9b6e8-2802-4064-a16b-7f933a2858a2 + + + + 0:3c330050-888c-4cdf-b3fa-a9df29e63ad8 + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..440b59a4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,60 @@ + +

Описание свойств используемой валюты.

+

Валюта широко используется в деятельности любого предприятия: во всех документах, которые имеют дело с денежными суммами (счета, платежные поручения, договоры, накладные) присутствует поле Валюта, явно или по умолчанию. Значение поля Валюта заполняется в зависимости от направления деятельности предприятия: рубль, иностранная валюта или у.е.

+

Основные сведения о валюте

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

Особенности использования переключателя Курс валюты

+
  • +
    Положение переключателя Курс валюты загружается из интернета можно изменить в исключительных случаях:
    +
    • +
      при добавлении валюты из классификатора (валюты, имеющую возможность загрузки курсов), которую в программе предполагается использовать как у.е. с установкой курса вручную;
      +
    • +
    • +
      по техническим причинам, так как проверка актуальности валют выполняется только для валют с этим флажком.
  • +
  • +
    Для отечественной валюты переключатель Курс валюты необходимо установить в положение вводится вручную, так как курс "относительно себя" всегда равен 1. Например, на Российском предприятии переключатель Курс валюты следует установить в положение вводится вручную для рубля.

Зависимость курса валюты от курса другой валюты

+
  • Эта возможность может применяться, например, на предприятии для расчета внутреннего курса какой-либо валюты. +
  • +
  • +
    Переключатель Курс валюты установите в положение связан с курсом другой валюты.
    +
  • +
  • +
    Выберите из списка или введите валюту, на основании курса которой рассчитывается курс текущей валюты.
    +
  • +
  • +
    Укажите Наценку, % - коэффициент, который применяется к курсу основной валюты для вычисления курса текущей валюты.

Расчет по формуле

+
  • Предусмотрена возможность ввести валюту, курс которой зависит от нескольких валют одновременно. +
  • +
  • Для этого переключатель Курс валюты установите в положение рассчитывается по формуле. +
  • +
  • Задайте способ расчета курса валюты в соответствующем поле, например, (USD+EUR)/2. +
  • +
  • Допустимыми разделителями дробной части чисел в формуле являются знаки точки и запятой, т.е. правильно: +
    • EUR*1.025 +
    • +
    • EUR*1,025
  • +
  • Но если возникает необходимость использовать функции с двумя и более параметрами, то параметры следует разделять запятыми, а дробные части чисел - точками, например: +
    • Окр(EUR*1.025,2)
  • +
  • Подробнее о правилах построения подобных выражений см. раздел справки Язык выражений системы компоновки данных.

Просмотр курса валюты

+
  • Для перевода валютных сумм в рубли используется курс валюты. +
  • +
  • Нажмите Курсы валют на панели навигации валюты. Можно установить интервал дат для удобства просмотра курсов.

Ввод курса валюты вручную

+
  • Курсы основных валют можно загрузить с портала 1С:ИТС. Если для валюты загрузка невозможна, то переключатель Курс валюты автоматически устанавливается в положение вводится вручную. +
  • +
  • Для того чтобы заполнить курс вручную: +
    • Нажмите Курсы валют на панели навигации валюты. +
    • +
    • Нажмите Создать, заполните курс валюты на нужную дату (по умолчанию установлена текущая дата).

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..2d72b9f5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,296 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Ссылка.Пустая() Тогда + + Если Параметры.Свойство("КодВалюты") Тогда + Объект.Код = Параметры.КодВалюты; + КонецЕсли; + + Если Параметры.Свойство("НаименованиеКраткое") Тогда + Объект.Наименование = Параметры.НаименованиеКраткое; + КонецЕсли; + + Если Параметры.Свойство("НаименованиеПолное") Тогда + Объект.НаименованиеПолное = Параметры.НаименованиеПолное; + КонецЕсли; + + Если Параметры.Свойство("Загружается") И Параметры.Загружается Тогда + Объект.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета; + Иначе + Объект.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РучнойВвод; + КонецЕсли; + + Если Параметры.Свойство("ПараметрыПрописи") Тогда + Объект.ПараметрыПрописи = Параметры.ПараметрыПрописи; + КонецЕсли; + + КонецЕсли; + + ОбработкаЗагрузкаКурсовВалют = Метаданные.Обработки.Найти("ЗагрузкаКурсовВалют"); + Элементы.КурсВалютыЗагружаетсяИзИнтернета.Видимость = ОбработкаЗагрузкаКурсовВалют <> Неопределено; + УстановитьДоступностьЭлементов(ЭтотОбъект); + + ЗаполнитьПодменюПараметрыПрописиВалюты(); + Элементы.ГиперссылкаПараметрыПрописиВалюты.Видимость = ФормыВводаПрописей.Количество() = 1; + Элементы.ГруппаПараметрыПрописиВалюты.Видимость = ФормыВводаПрописей.Количество() > 1; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ФормулаРасчетаКурса.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу; + Элементы.ОсновнаяВалюта.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто; + Элементы.ГруппаШапка.ВыравниваниеЭлементовИЗаголовков = + ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + КонецЕсли; + + Если Метаданные.Обработки.Найти("ЗагрузкаКурсовВалют") <> Неопределено Тогда + КодыВалютЗагружаемыхИзИнтернета.ЗагрузитьЗначения(Обработки["ЗагрузкаКурсовВалют"].КодыВалютЗагружаемыхИзИнтернета()); + КонецЕсли; + + ДоступнаЗагрузкаИзИнтернета = ЗначениеЗаполнено(Объект.Код) И ЗначениеЗаполнено(КодыВалютЗагружаемыхИзИнтернета) + И КодыВалютЗагружаемыхИзИнтернета.НайтиПоЗначению(Объект.Код) <> Неопределено; + Элементы.КурсВалютыЗагружаетсяИзИнтернета.Доступность = ДоступнаЗагрузкаИзИнтернета; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если Источник = ЭтотОбъект И ИмяСобытия = "ПараметрыПрописиВалюты" Тогда + УстановитьПрописиНаЯзыке(Параметр.ПараметрыПрописи, Параметр.КодЯзыка); + Если Параметр.Записать Тогда + Записать(); + Иначе + Модифицированность = Истина; + КонецЕсли; + Если Параметр.Закрыть Тогда + Закрыть(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +//////////////////////////////////////////////////////////////////////////////// +// Страница "Основные сведения". + +&НаКлиенте +Процедура ОсновнаяВалютаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПодготовитьДанныеВыбораПодчиненнойВалюты(ДанныеВыбора, Объект.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура КурсВалютыПриИзменении(Элемент) + УстановитьДоступностьЭлементов(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ПараметрыПрописиВалютыНажатие(Элемент) + + ОткрытьПараметрыПрописиВалюты(0); + +КонецПроцедуры + +&НаКлиенте +Процедура КодПриИзменении(Элемент) + + ДоступнаЗагрузкаИзИнтернета = ЗначениеЗаполнено(Объект.Код) И ЗначениеЗаполнено(КодыВалютЗагружаемыхИзИнтернета) + И КодыВалютЗагружаемыхИзИнтернета.НайтиПоЗначению(Объект.Код) <> Неопределено; + Элементы.КурсВалютыЗагружаетсяИзИнтернета.Доступность = ДоступнаЗагрузкаИзИнтернета; + Если ДоступнаЗагрузкаИзИнтернета Тогда + Объект.СпособУстановкиКурса = ПредопределенноеЗначение("Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета"); + Иначе + Если Объект.СпособУстановкиКурса = ПредопределенноеЗначение("Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета") Тогда + Объект.СпособУстановкиКурса = ПредопределенноеЗначение("Перечисление.СпособыУстановкиКурсаВалюты.РучнойВвод"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Процедура ПодготовитьДанныеВыбораПодчиненнойВалюты(ДанныеВыбора, Ссылка) + + // Подготавливает список выбора для подчиненной валюты таким образом, + // чтобы в список не попала сама подчиненная валюта. + + ДанныеВыбора = Новый СписокЗначений; + + Запрос = Новый Запрос; + + Запрос.Текст = + "ВЫБРАТЬ + | Валюты.Ссылка КАК Ссылка, + | Валюты.НаименованиеПолное КАК НаименованиеПолное, + | Валюты.Наименование КАК Наименование + |ИЗ + | Справочник.Валюты КАК Валюты + |ГДЕ + | Валюты.Ссылка <> &Ссылка + | И Валюты.ОсновнаяВалюта = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) + | + |УПОРЯДОЧИТЬ ПО + | Валюты.НаименованиеПолное"; + + Запрос.Параметры.Вставить("Ссылка", Ссылка); + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + ДанныеВыбора.Добавить(Выборка.Ссылка, Выборка.НаименованиеПолное + " (" + Выборка.Наименование + ")"); + КонецЦикла; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьЭлементов(Форма) + Элементы = Форма.Элементы; + Объект = Форма.Объект; + Элементы.ГруппаНаценкаНаКурсДругойВалюты.Доступность = Объект.СпособУстановкиКурса = ПредопределенноеЗначение("Перечисление.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты"); + Элементы.ФормулаРасчетаКурса.Доступность = Объект.СпособУстановкиКурса = ПредопределенноеЗначение("Перечисление.СпособыУстановкиКурсаВалюты.РасчетПоФормуле"); +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПрописиНаЯзыке(ПараметрыПрописи, КодЯзыка) + + Если КодЯзыка = ОбщегоНазначенияКлиент.КодОсновногоЯзыка() Тогда + Объект.ПараметрыПрописи = ПараметрыПрописи; + Возврат; + КонецЕсли; + + НайденнаяСтрока = Неопределено; + Для Каждого СтрокаТаблицы Из Объект.Представления Цикл + Если СтрокаТаблицы.КодЯзыка = КодЯзыка Тогда + НайденнаяСтрока = СтрокаТаблицы; + Прервать; + КонецЕсли; + КонецЦикла; + + Если НайденнаяСтрока = Неопределено Тогда + НайденнаяСтрока = Объект.Представления.Добавить(); + НайденнаяСтрока.КодЯзыка = КодЯзыка; + КонецЕсли; + + НайденнаяСтрока.ПараметрыПрописи = ПараметрыПрописи; + +КонецПроцедуры + +&НаКлиенте +Функция ПараметрыПрописиВалютыНаЯзыке(КодЯзыка) + + Если КодЯзыка = ОбщегоНазначенияКлиент.КодОсновногоЯзыка() Тогда + Возврат Объект.ПараметрыПрописи; + КонецЕсли; + + НайденнаяСтрока = Неопределено; + Для Каждого СтрокаТаблицы Из Объект.Представления Цикл + Если СтрокаТаблицы.КодЯзыка = КодЯзыка Тогда + НайденнаяСтрока = СтрокаТаблицы; + КонецЕсли; + КонецЦикла; + + Если НайденнаяСтрока = Неопределено Тогда + Возврат ""; + КонецЕсли; + + Возврат НайденнаяСтрока.ПараметрыПрописи; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьПодменюПараметрыПрописиВалюты() + + Кнопка = Неопределено; + ФормыВводаПрописей = РаботаСКурсамиВалютСлужебный.ФормыВводаПрописей(); + Для Индекс = 0 По ФормыВводаПрописей.Количество() - 1 Цикл + ИмяКоманды = "ПараметрыПрописиВалюты_" + XMLСтрока(Индекс); + + КодЯзыка = ФормыВводаПрописей[Индекс].Значение; + Команда = Команды.Добавить(ИмяКоманды); + Если ЗначениеЗаполнено(КодЯзыка) Тогда + Команда.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1...'"), + РаботаСКурсамиВалютСлужебный.ПредставлениеЯзыка(КодЯзыка));; + Иначе + Команда.Заголовок = НСтр("ru = 'На других языках...'"); + КонецЕсли; + + Команда.Действие = "Подключаемый_ОткрытьФормуПараметрыПрописиВалюты"; + + Кнопка = Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), Элементы.ГруппаПараметрыПрописиВалюты); + Кнопка.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели; + Кнопка.ИмяКоманды = ИмяКоманды; + КонецЦикла; + +КонецПроцедуры + +// Параметры: +// Команда - КомандаФормы +// +&НаКлиенте +Процедура Подключаемый_ОткрытьФормуПараметрыПрописиВалюты(Команда) + + Индекс = Число(Сред(Команда.Имя, СтрДлина("ПараметрыПрописиВалюты_") + 1)); + ОткрытьПараметрыПрописиВалюты(Индекс); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьПараметрыПрописиВалюты(Индекс) + + ИмяФормыПрописей = ФормыВводаПрописей[Индекс].Представление; + КодЯзыка = ФормыВводаПрописей[Индекс].Значение; + + Если ИмяФормыПрописей = "ПараметрыПрописиВалютыНаДругихЯзыках" Тогда + ПараметрыПрописиВалютыНаДругихЯзыках(); + Иначе + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПараметрыПрописи", ПараметрыПрописиВалютыНаЯзыке(КодЯзыка)); + ПараметрыФормы.Вставить("КодЯзыка", КодЯзыка); + + ОткрытьФорму(ИмяФормыПрописей, ПараметрыФормы, ЭтотОбъект, , , НавигационнаяСсылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПараметрыПрописиВалютыНаДругихЯзыках(Команда) + + ПараметрыПрописиВалютыНаДругихЯзыках(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПараметрыПрописиВалютыНаДругихЯзыках() + + ИмяРеквизита = "ПараметрыПрописи"; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ИмяРеквизита", ИмяРеквизита); + ПараметрыФормы.Вставить("ТекущееЗначение", Объект.ПараметрыПрописи); + ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); + ПараметрыФормы.Вставить("Представления", Объект.Представления); + + ОткрытьФорму("Справочник.Валюты.Форма.ПараметрыПрописиВалютыНаДругихЯзыках", ПараметрыФормы, ЭтотОбъект, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Help/ru.html" new file mode 100644 index 00000000..403922f3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/Help/ru.html" @@ -0,0 +1,37 @@ + +

Список предназначен для ведения валют, используемых в программе. Необходимые для работы валюты можно подобрать из Общероссийского классификатора валют - ОКВ (рекомендуется) или добавить вручную.

+

Открыть список валют можно из раздела Справочники.

+

В списке выводится:

+
  • +
    +
    Наименование валюты - полное наименование валюты.
    +
  • +
  • +
    +
    Цифр. код - уникальный цифровой код, служит для идентификации валюты при загрузке курсов из сети Интернет. Например, 840 для доллара США.
    +
  • +
  • +
    Симв. код - символьный код валюты, используется в качестве представления в полях ввода. Например, EUR (Евро).
    +
  • +
  • Курс - значение курса на текущую дату. +
  • +
  • +
    Кратность - по умолчанию заполнено единицей и не выводится. Если курс какой-либо валюты очень низкий (точность составляет меньше четырех знаков дробной части), то в этом поле указывается количество котировочных единиц. Например, курс вьетнамского донга (VND) составляет 16,1574 руб. за 10000 VND. Состоит из трех вспомогательных колонок, в которых размещается данное выражение:
    +
    • +
      Кратность - проставляется количество котировочных единиц.
    • +
    • +
      Краткое наименование - указывается символьный код валюты

Добавление валюты из Общероссийского классификатора валют (ОКВ)

+
  • +
    Нажмите Создать - По классификатору (рекомендуется для корректного ввода валюты).
    +
  • +
  • +
    Следующие поля новой валюты будут заполнены из классификатора автоматически: Наименование, Символьный код, Цифровой код, положение переключателя Курс валюты (будет установлено положение загружается из интернета, если имеется возможность загружать курс этой валюты с портала 1С:ИТС).

Ввод валюты не из классификатора (вручную)

+

Загрузка курсов валют

+
  • Нажмите Загрузить курсы валют для перехода к загрузке курсов валют с портала 1С:ИТС. 
  • +
  • Также в программе предусмотрено регламентное задание Загрузка курсов валют для автоматической загрузки курсов валют с портала 1С:ИТС.
  • +
  • В приложении в Интернете курсы валют загружаются автоматически.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..c01dd840 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/ManagerModule.bsl" @@ -0,0 +1,61 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("СпособУстановкиКурса"); + Результат.Добавить("Наценка"); + Результат.Добавить("ОсновнаяВалюта"); + Результат.Добавить("ФормулаРасчетаКурса"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция КодыВалют() Экспорт + + ТекстЗапроса = + "ВЫБРАТЬ + | Валюты.Ссылка КАК Ссылка, + | Валюты.Наименование КАК СимвольныйКод + |ИЗ + | Справочник.Валюты КАК Валюты + |ГДЕ + | Валюты.СпособУстановкиКурса <> ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты) + | И Валюты.СпособУстановкиКурса <> ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.РасчетПоФормуле)"; + + Запрос = Новый Запрос(ТекстЗапроса); + Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить()); + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..28233bbd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/ObjectModule.bsl" @@ -0,0 +1,233 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда + ТекстЗапроса = + "ВЫБРАТЬ + | Валюты.Наименование КАК СимвольныйКод + |ИЗ + | Справочник.Валюты КАК Валюты + |ГДЕ + | Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | Валюты.Наименование + |ИЗ + | Справочник.Валюты КАК Валюты + |ГДЕ + | Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.РасчетПоФормуле)"; + + Запрос = Новый Запрос(ТекстЗапроса); + ЗависимыеВалюты = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("СимвольныйКод"); + + Для Каждого Валюта Из ЗависимыеВалюты Цикл + Если СтрНайти(ФормулаРасчетаКурса, Валюта) > 0 Тогда + Отказ = Истина; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если ЗначениеЗаполнено(ОсновнаяВалюта.ОсновнаяВалюта) Тогда + Отказ = Истина; + КонецЕсли; + + Если Отказ Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Курс валюты можно связать только с курсом независимой валюты.'")); + КонецЕсли; + + Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда + ИсключаемыеРеквизиты = Новый Массив; + ИсключаемыеРеквизиты.Добавить("ОсновнаяВалюта"); + ИсключаемыеРеквизиты.Добавить("Наценка"); + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, ИсключаемыеРеквизиты); + КонецЕсли; + + Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда + ИсключаемыеРеквизиты = Новый Массив; + ИсключаемыеРеквизиты.Добавить("ФормулаРасчетаКурса"); + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, ИсключаемыеРеквизиты); + КонецЕсли; + + Если Не ЭтоНовый() + И СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты + И РаботаСКурсамиВалют.СписокЗависимыхВалют(Ссылка).Количество() > 0 Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Валюта не может быть подчиненной, так как она является основной для других валют.'")); + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + КурсЗагружаетсяИзИнтернета = СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета; + КурсЗависитОтДругойВалюты = СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты; + КурсРассчитываетсяПоФормуле = СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле; + + Если ЭтоНовый() Тогда + Если КурсЗависитОтДругойВалюты Или КурсРассчитываетсяПоФормуле Тогда + ДополнительныеСвойства.Вставить("ОбновитьКурсы"); + КонецЕсли; + ДополнительныеСвойства.Вставить("ЭтоНовый"); + ДополнительныеСвойства.Вставить("ЗапланироватьКопированиеКурсовВалюты"); + Иначе + ПредыдущиеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Код,СпособУстановкиКурса,ОсновнаяВалюта,Наценка,ФормулаРасчетаКурса"); + + ПоменялсяСпособУстановкиКурса = ПредыдущиеЗначения.СпособУстановкиКурса <> СпособУстановкиКурса; + ПоменялсяКодВалюты = ПредыдущиеЗначения.Код <> Код; + ПоменяласьОсновнаяВалюта = ПредыдущиеЗначения.ОсновнаяВалюта <> ОсновнаяВалюта; + ПоменяласьНаценка = ПредыдущиеЗначения.Наценка <> Наценка; + ПоменяласьФормула = ПредыдущиеЗначения.ФормулаРасчетаКурса <> ФормулаРасчетаКурса; + + Если (КурсЗависитОтДругойВалюты И (ПоменяласьОсновнаяВалюта Или ПоменяласьНаценка Или ПоменялсяСпособУстановкиКурса)) + Или (КурсРассчитываетсяПоФормуле И (ПоменяласьФормула Или ПоменялсяСпособУстановкиКурса)) Тогда + ДополнительныеСвойства.Вставить("ОбновитьКурсы"); + КонецЕсли; + + Если КурсЗагружаетсяИзИнтернета И (ПоменялсяСпособУстановкиКурса Или ПоменялсяКодВалюты) Тогда + ДополнительныеСвойства.Вставить("ЗапланироватьКопированиеКурсовВалюты"); + КонецЕсли; + КонецЕсли; + + Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда + ОсновнаяВалюта = Справочники.Валюты.ПустаяСсылка(); + Наценка = 0; + КонецЕсли; + + Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда + ФормулаРасчетаКурса = ""; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ДополнительныеСвойства.Свойство("ОбновитьКурсы") И ВыполняетсяФоновыйПересчетКурсов() Тогда + ВызватьИсключение НСтр("ru = 'Не удалось записать валюту, так как еще не завершился фоновый пересчет курсов. + |Попробуйте записать валюту позже.'"); + КонецЕсли; + + Если ДополнительныеСвойства.Свойство("ОбновитьКурсы") Тогда + НачатьФоновоеОбновлениеКурсовВалюты(); + Иначе + РаботаСКурсамиВалют.ПроверитьКорректностьКурсаНа01_01_1980(Ссылка); + КонецЕсли; + + Если ДополнительныеСвойства.Свойство("ЗапланироватьКопированиеКурсовВалюты") Тогда + ЗапланироватьКопированиеКурсовВалюты(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ВыполняетсяФоновыйПересчетКурсов() + + ПараметрыЗадания = Новый Структура; + ПараметрыЗадания.Вставить("Наименование", "РаботаСКурсамиВалют.ОбновитьКурсВалюты"); + ПараметрыЗадания.Вставить("Состояние", СостояниеФоновогоЗадания.Активно); + + Возврат ОбщегоНазначения.ИнформационнаяБазаФайловая() + И ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыЗадания).Количество() > 0; + +КонецФункции + +Процедура НачатьФоновоеОбновлениеКурсовВалюты() + + ПараметрыВалюты = Новый Структура; + ПараметрыВалюты.Вставить("ОсновнаяВалюта"); + ПараметрыВалюты.Вставить("Ссылка"); + ПараметрыВалюты.Вставить("Наценка"); + ПараметрыВалюты.Вставить("ДополнительныеСвойства"); + ПараметрыВалюты.Вставить("ФормулаРасчетаКурса"); + ПараметрыВалюты.Вставить("СпособУстановкиКурса"); + ПараметрыВалюты.Вставить("ИспользуемыеВалютыПриРасчетеКурса", ИспользуемыеВалютыПриРасчетеКурса()); + ЗаполнитьЗначенияСвойств(ПараметрыВалюты, ЭтотОбъект); + + ПараметрыЗадания = Новый Структура; + ПараметрыЗадания.Вставить("Валюта", ПараметрыВалюты); + ПараметрыЗадания.Вставить("КодыВалют", Справочники.Валюты.КодыВалют()); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(Новый УникальныйИдентификатор()); + ПараметрыВыполнения.ОжидатьЗавершение = 0; + ПараметрыВыполнения.ЗапуститьНеВФоне = ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы(); + + Результат = ДлительныеОперации.ВыполнитьВФоне("РаботаСКурсамиВалют.ОбновитьКурсВалюты", ПараметрыЗадания, ПараметрыВыполнения); + Если Результат.Статус = "Ошибка" Тогда + ВызватьИсключение Результат.КраткоеПредставлениеОшибки; + КонецЕсли; + +КонецПроцедуры + +Процедура ЗапланироватьКопированиеКурсовВалюты() + + Если ОбщегоНазначения.РазделениеВключено() + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Валюты") Тогда + МодульРаботаСКурсамиВалютСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСКурсамиВалютСлужебный"); + МодульРаботаСКурсамиВалютСлужебный.ЗапланироватьКопированиеКурсовВалюты(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +Функция ИспользуемыеВалютыПриРасчетеКурса() + + Если СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда + Возврат ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОсновнаяВалюта); + КонецЕсли; + + Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда + Возврат Новый Массив; + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ + | Валюты.Ссылка КАК Ссылка + |ИЗ + | Справочник.Валюты КАК Валюты + |ГДЕ + | &ФормулаРасчетаКурса ПОДОБНО ""%"" + Валюты.Наименование + ""%"" + | И Валюты.Наименование <> """""; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("ФормулаРасчетаКурса", ФормулаРасчетаКурса); + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + ТекстОшибки = НСтр("ru = 'В формуле должна быть использована хотя бы одна основная валюта.'"); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "Объект.ФормулаРасчетаКурса"); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка"); + +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/\320\222\320\260\320\273\321\216\321\202\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/\320\222\320\260\320\273\321\216\321\202\321\213.mdo" new file mode 100644 index 00000000..2dd84215 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\320\273\321\216\321\202\321\213/\320\222\320\260\320\273\321\216\321\202\321\213.mdo" @@ -0,0 +1,423 @@ + + + + + + + + + + Валюты + + ru + Валюты + + true + Catalog.Валюты.StandardAttribute.Description + Catalog.Валюты.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Символьный код + + + ru + Символьный код валюты по общероссийскому классификатору валют + + + + + ShowError + Use + + + + + Use + Code + + ru + Цифровой код + + + ru + Цифровой код валюты по общероссийскому классификатору валют + + + + + ShowError + Use + + + + DontUse + true + + + ru + + + Managed + Use + + ru + Валюта + + + ru + Валюты, используемые при расчетах + + 2 + true + 3 + 10 + String + Variable + true + AsDescription + InDialog + true + BothWays + Catalog.Валюты.Form.ФормаЭлемента + Catalog.Валюты.Form.ФормаСписка + Catalog.Валюты.Form.ФормаСписка + + ЗагружаетсяИзИнтернета + + ru + Загружается из Интернета + + + Boolean + + + ru + Курс валюты загружается из сети Интернет + + + + + Use + Use + + + НаименованиеПолное + + ru + Наименование валюты + + + String + + 50 + + + + ru + Полное наименование валюты + + + + ShowError + + + + Use + Use + + + Наценка + + ru + Наценка + + + Number + + 10 + 2 + + + + ru + Коэффициент, который применяется к курсу основной валюты для вычисления курса текущей валюты. + + + + Use + DontUse + + 0 + + Use + Use + + + ОсновнаяВалюта + + ru + Основная валюта + + + CatalogRef.Валюты + + + ru + Валюта, на основании курса которой рассчитывается курс текущей валюты + + + + ShowError + DontUse + Use + + Catalog.Валюты.EmptyRef + + Index + Use + Use + + + ПараметрыПрописи + + ru + Параметры прописи + + + String + + 200 + + + + ru + Настройки представления суммы прописью + + + + + + + Use + Use + + + ФормулаРасчетаКурса + + ru + Формула расчета курса + + + String + + 100 + + + + ru + Курсы других валют в формуле обозначаются их символьными кодами. Пример: +(0,55 * USD + 0,45 * EUR) / 2 + + + + ShowError + + + + Use + Use + + + СпособУстановкиКурса + + ru + Способ установки курса + + + EnumRef.СпособыУстановкиКурсаВалюты + + + ru + Определяет используемый способ установки курса валюты. + + + + ShowError + + Use + Use + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + + Use + Index + Use + + + ПараметрыПрописи + + ru + Параметры прописи + + + String + + 200 + + + + ru + Настройки представления суммы прописью + + + + Use + Use + + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ПараметрыПрописиВалюты_en + + ru + Параметры прописи валюты на английском языке + + АПК:58 + + + ru + + + PersonalComputer + MobileDevice + + + ПараметрыПрописиВалютыНаДругихЯзыках + + ru + Параметры прописи + + + + ru + + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..bac4ba14 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,431 @@ + + + + ГруппаПользовательскихНастроек + 14 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Код + 6 + true + true + + true + + + + Список.Code + + + + КодExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 11 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 12 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокSearchString + 16 + + СписокSearchStringExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 17 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 19 + + СписокViewStatusExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 20 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 22 + + СписокSearchControlExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 23 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ВариантыОтветовАнкет + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..e15ee9c8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,482 @@ + + + + ГруппаПользовательскихНастроек + 17 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Код + 6 + true + true + + true + + + + Список.Code + + + + КодExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Владелец + 8 + true + true + + true + + + + Список.Owner + + + + ВладелецExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 14 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 15 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокSearchString + 19 + + СписокSearchStringExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 20 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 22 + + СписокViewStatusExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 23 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 25 + + СписокSearchControlExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 26 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ВариантыОтветовАнкет + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..45cfeaea --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если НЕ Пользователи.ЭтоСеансВнешнегоПользователя() Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Варианты ответов анкет используются только внешними пользователями.'"),,,,Отказ); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..53715a32 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,232 @@ + + + + КодОткрытыйОтвет + 7 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + true + + НаименованиеExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Код + 1 + true + true + + + + Объект.Code + + + + КодExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Код открытый ответ</value> + + + КодОткрытыйОтветExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ТребуетОткрытогоОтвета + 5 + true + true + + true + + + + Объект.ТребуетОткрытогоОтвета + + + Right + + ТребуетОткрытогоОтветаExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + ТребуетОткрытогоОтветаКонтекстноеМеню + 6 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ВариантыОтветовАнкет + + + true + + + true + +
true
+ true +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..d3f0a996 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,41 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("Владелец") + И ТипЗнч(Параметры.Владелец) = Тип("ПланВидовХарактеристикСсылка.ВопросыДляАнкетирования") + И НЕ Параметры.Владелец.Пустая() Тогда + + Объект.Владелец = Параметры.Владелец; + + Иначе + + ТекстСообщения = НСтр("ru = 'Данная форма предназначена для открытия только из формы элемента плана вида характеристик ""Вопросы для анкетирования""'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); + Отказ = Истина; + Возврат; + + КонецЕсли; + + Если Параметры.Свойство("ТипОтвета") Тогда + Элементы.ТребуетОткрытогоОтвета.Видимость = (Параметры.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз); + Иначе + Элементы.ТребуетОткрытогоОтвета.Видимость = (Объект.Владелец.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз); + КонецЕсли; + + Если Параметры.Свойство("Наименование") Тогда + Объект.Наименование = Параметры.Наименование; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Help/ru.html" new file mode 100644 index 00000000..e2e41297 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/Help/ru.html" @@ -0,0 +1,9 @@ + +

Ведение списка вариантов ответов на вопросы типов Выбор одного или нескольких вариантов ответа из предложенных.

+

Существуют вопросы анкеты типа Выбор одного варианта ответа из предложенных или Выбор нескольких вариантов ответа из предложенных. В этих случаях ответ респондента сводится к выбору одного или нескольких вариантов ответа из списка с помощью переключателей.

+

Задайте возможные варианты ответов на вопрос.

+

Ввод варианта ответа на вопрос

+
  • Введите один из вариантов ответа в поле Наименование. Поле является обязательным. +
  • Если у варианта ответа на вопрос типа Выбор нескольких вариантов ответа из предложенных установить флажок Требует открытого ответа, то респонденту будет предложено дать развернутый ответ в текстовом поле рядом с вариантом ответа, прокомментировав таким образом свой выбор.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/ManagerModule.bsl" new file mode 100644 index 00000000..7fe0b67b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/ManagerModule.bsl" @@ -0,0 +1,37 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("ТребуетОткрытогоОтвета"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202.mdo" new file mode 100644 index 00000000..ed6cd36d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262\320\220\320\275\320\272\320\265\321\202.mdo" @@ -0,0 +1,211 @@ + + + + + + + + + + ВариантыОтветовАнкет + + ru + Варианты ответов анкет + + true + Catalog.ВариантыОтветовАнкет.StandardAttribute.Description + Catalog.ВариантыОтветовАнкет.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + + ru + Вопрос + + + ru + Вопрос-владелец варианта + + true + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.EmptyRef + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование варианта ответа + + + ShowError + Use + + + + + Use + Code + + ru + Код варианта ответа + + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Вариант ответа анкеты + + 2 + true + ChartOfCharacteristicTypes.ВопросыДляАнкетирования + 9 + 150 + String + Variable + WithinOwnerSubordination + true + true + AsDescription + InDialog + BothWays + Catalog.ВариантыОтветовАнкет.Form.ФормаЭлемента + Catalog.ВариантыОтветовАнкет.Form.ФормаСписка + Catalog.ВариантыОтветовАнкет.Form.ФормаВыбора + + ТребуетОткрытогоОтвета + + ru + Требует открытого ответа + + + Boolean + + + ru + Признак того, что респондент будет иметь возможность прокомментировать данный вариант ответа + + + + + Use + Use + + + РеквизитДопУпорядочивания + + ru + Порядок + + + Number + + 5 + + + + ru + Используется для упорядочивания (служебный) + + + + + 0 + + IndexWithAdditionalOrder + Use + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\230\320\267\320\274\320\265\320\275\320\270\321\202\321\214/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\230\320\267\320\274\320\265\320\275\320\270\321\202\321\214/CommandModule.bsl" new file mode 100644 index 00000000..4ed9c35b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\230\320\267\320\274\320\265\320\275\320\270\321\202\321\214/CommandModule.bsl" @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(Вариант, ПараметрыВыполненияКоманды) + ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Вариант); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\236\321\202\320\272\321\200\321\213\321\202\321\214/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\236\321\202\320\272\321\200\321\213\321\202\321\214/CommandModule.bsl" new file mode 100644 index 00000000..082664fe --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\236\321\202\320\272\321\200\321\213\321\202\321\214/CommandModule.bsl" @@ -0,0 +1,28 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(СсылкаВарианта, ПараметрыВыполненияКоманды) + Вариант = СсылкаВарианта; + Форма = ПараметрыВыполненияКоманды.Источник; + Если ТипЗнч(Форма) = Тип("ФормаКлиентскогоПриложения") Тогда + Если Форма.ИмяФормы = "Справочник.ВариантыОтчетов.Форма.ФормаСписка" Тогда + Вариант = Форма.Элементы.Список.ТекущиеДанные; + ИначеЕсли Форма.ИмяФормы = "Справочник.ВариантыОтчетов.Форма.ФормаЭлемента" Тогда + Вариант = Форма.Объект; + КонецЕсли; + Иначе + Форма = Неопределено; + КонецЕсли; + + ВариантыОтчетовКлиент.ОткрытьФормуОтчета(Форма, Вариант); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/CommandModule.bsl" new file mode 100644 index 00000000..8483e907 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/CommandModule.bsl" @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(Варианты, ПараметрыВыполненияКоманды) + ВариантыОтчетовКлиент.ОткрытьДиалогРазмещенияВариантовВРазделах(Варианты, ПараметрыВыполненияКоманды.Источник); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\261\321\200\320\276\321\201\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\261\321\200\320\276\321\201\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/CommandModule.bsl" new file mode 100644 index 00000000..719cc8ca --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\261\321\200\320\276\321\201\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/CommandModule.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(Варианты, ПараметрыВыполненияКоманды) + Если ТипЗнч(Варианты) <> Тип("Массив") Или Варианты.Количество() = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите варианты отчетов, для которых необходимо сбросить пользовательские настройки.'")); + Возврат; + КонецЕсли; + + ОткрытьФорму("Справочник.ВариантыОтчетов.Форма.СбросПользовательскихНастроек", + Новый Структура("Варианты", Варианты), ПараметрыВыполненияКоманды.Источник); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\261\321\200\320\276\321\201\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\261\321\200\320\276\321\201\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/CommandModule.bsl" new file mode 100644 index 00000000..9aeb12a7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\261\321\200\320\276\321\201\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/CommandModule.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(Варианты, ПараметрыВыполненияКоманды) + Если ТипЗнч(Варианты) <> Тип("Массив") Или Варианты.Количество() = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите варианты отчетов программы, для которых необходимо сбросить настройки размещения.'")); + Возврат; + КонецЕсли; + + ОткрытьФорму("Справочник.ВариантыОтчетов.Форма.СбросНастроекРазмещения", + Новый Структура("Варианты", Варианты), ПараметрыВыполненияКоманды.Источник); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Form.form" new file mode 100644 index 00000000..739a03a3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Form.form" @@ -0,0 +1,787 @@ + + + + ДеревоПодсистем + 7 + + <key>ru</key> + <value>Дерево подсистем</value> + + true + true + + true + + + ДеревоПодсистем + + true + None + Add + Copy + Delete + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + ГруппаКолонок + 73 + VeryHigh + + ДеревоПодсистемИспользование + 69 + VeryHigh + true + true + + true + + + + ДеревоПодсистем.Использование + + + None + + OnChange + ДеревоПодсистемИспользованиеПриИзменении + + + ДеревоПодсистемИспользованиеExtendedTooltip + 87 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемИспользованиеКонтекстноеМеню + 70 + true + true + + true + + true + + CheckBoxField + Left + EnterOnInput + true + Left + true + + true + + + + ДеревоПодсистемПредставление + 61 + VeryHigh + true + true + + true + + + + ДеревоПодсистем.Представление + + + + ДеревоПодсистемПредставлениеExtendedTooltip + 88 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемПредставлениеКонтекстноеМеню + 62 + true + true + + true + + true + + InputField + true + Left + EnterOnInput + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Колонок</value> + + + ГруппаКолонокExtendedTooltip + 86 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ДеревоПодсистемВажность + 71 + true + true + + true + + + + ДеревоПодсистем.Важность + + + + OnChange + ДеревоПодсистемВажностьПриИзменении + + + ДеревоПодсистемВажностьExtendedTooltip + 89 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемВажностьКонтекстноеМеню + 72 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 8 + true + true + true + false + true + true + false + false + true + true + true + true + + + + ДеревоПодсистемКоманднаяПанель + 9 + true + true + + true + + Left + + + true + true + + true + + ДеревоПодсистемСтрокаПоиска + 90 + + ДеревоПодсистемСтрокаПоискаРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемСтрокаПоискаКонтекстноеМеню + 91 + true + true + + true + + true + + + true + + + + true + true + + true + + ДеревоПодсистемСостояниеПросмотра + 93 + + ДеревоПодсистемСостояниеПросмотраРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемСостояниеПросмотраКонтекстноеМеню + 94 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДеревоПодсистемУправлениеПоиском + 96 + + ДеревоПодсистемУправлениеПоискомРасширеннаяПодсказка + 98 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемУправлениеПоискомКонтекстноеМеню + 97 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДеревоПодсистемExtendedTooltip + 85 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемКонтекстноеМеню + 8 + + ДеревоПодсистемКонтекстноеМенюСнятьФлажки + 78 + true + true + + true + + + ДеревоПодсистемКонтекстноеМенюСнятьФлажкиExtendedTooltip + 83 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + Tree + true + true + true + true +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true +
+ + ФормаКоманднаяПанель + -1 + + Разместить + 58 + true + true + + true + + + РазместитьExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Разместить + true + true + true + UserCmds + Auto + + + ДеревоПодсистемСнятьФлажки + 76 + true + true + + true + + + ДеревоПодсистемСнятьФлажкиExtendedTooltip + 80 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + ИзменяемыеВарианты + 1 + + ValueList + + + true + + + true + + + + CatalogRef.ВариантыОтчетов + + + + + КоличествоВариантов + 5 + + Number + + 10 + + + + true + + + true + + + + СмешаннаяВажность + 2 + + String + + + + true + + + true + + + + СообщенияОбОшибках + 4 + + + true + + + true + + + + ДеревоПодсистем + + <key>ru</key> + <value>Размещение в панелях отчетов</value> + + 3 + + ValueTree + + + true + + + true + + + Ссылка + 1 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Раздел, Группа</value> + + 2 + + String + + + + true + + + true + + + + Имя + 3 + + String + + 100 + + + + true + + + true + + + + ПолноеИмя + 4 + + String + + + + true + + + true + + + + Приоритет + 5 + + String + + 100 + + + + true + + + true + + + + Использование + + <key>ru</key> + <value>Использование</value> + + 6 + + Number + + 1 + + + + true + + + true + + + + Важность + + <key>ru</key> + <value>Важность</value> + + 9 + + String + + 15 + + + + true + + + true + + + + Модифицированность + 10 + + Boolean + + + true + + + true + + + + + Разместить + + <key>ru</key> + <value>Разместить</value> + + 1 + + ru + Разместить + + + true + + + StdPicture.WriteAndClose + + + + Разместить + + + DontUse + + + СнятьФлажки + + <key>ru</key> + <value>Снять флажки</value> + + 2 + + ru + Снять флажки + + + true + + + StdPicture.UncheckAll + + + + СнятьФлажки + + + TextPicture + DontUse + + + Варианты + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Help/ru.html" new file mode 100644 index 00000000..df9d74b1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Help/ru.html" @@ -0,0 +1,12 @@ + +

Позволяет настраивать размещение одного или нескольких вариантов отчетов в разделах программы.

+

Открывается по команде Разместить в разделах из списка Отчеты.

+
  • В поле Варианты отчетов перечисляются выбранные для размещения варианты. +
    • С помощью кнопки  Выбрать можно добавить варианты отчетов для размещения. +
    • В открывшемся Списке значений можно  Добавить по одному варианту отчета, с помощью кнопки Подбор можно открыть список вариантов отчетов и подобрать несколько вариантов отчетов из списка, затем нажмите Выбрать. +
    • Для подтверждения своего выбора и возврата к размещению вариантов отчетов нажмите ОК. Нажмите Отмена, если список не устраивает, для того чтобы вернуться к настройке размещения вариантов отчетов.
  • В колонке Раздел, группа показано дерево разделов и групп командного интерфейса программы. +
    • Включая и выключая флажки, можно добавлять варианты отчетов в раздела/группы командного интерфейса, удалять варианты из разделов/групп, +
    • С помощью команды Еще - Снять флажки можно отменить свой выбор и начать размещение заново.
  • Также можно определить Важность варианта отчета с помощью кнопки  Выбрать: +
    • определить как Важный и тем самым выделить вариант отчета жирным шрифтом в панели отчетов; +
    • разместить вариант отчета в панели отчетов в группу См. также.
  • Для подтверждения выбора нажмите Разместить.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Module.bsl" new file mode 100644 index 00000000..9167585a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Module.bsl" @@ -0,0 +1,411 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + СмешаннаяВажность = НСтр("ru = 'Различная'"); + + // Контроль количества вариантов осуществляется до открытия формы. + ИзменяемыеВарианты.ЗагрузитьЗначения(Параметры.Варианты); + КоличествоВариантов = ИзменяемыеВарианты.Количество(); + ЗаполнитьРазделы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если СообщенияОбОшибках <> Неопределено Тогда + Отказ = Истина; + ОчиститьСообщения(); + СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 + |Подробности: + |%2'"), СообщенияОбОшибках.Текст, СообщенияОбОшибках.Подробно), РежимДиалогаВопрос.ОК); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоПодсистем + +&НаКлиенте +Процедура ДеревоПодсистемИспользованиеПриИзменении(Элемент) + ВариантыОтчетовКлиент.ДеревоПодсистемИспользованиеПриИзменении(ЭтотОбъект, Элемент); +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоПодсистемВажностьПриИзменении(Элемент) + ВариантыОтчетовКлиент.ДеревоПодсистемВажностьПриИзменении(ЭтотОбъект, Элемент); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Разместить(Команда) + ЗаписатьНаСервере(); + ТекстОповещения = НСтр("ru = 'Изменены настройки вариантов отчетов (%1 шт.).'"); + ТекстОповещения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОповещения, Формат(ИзменяемыеВарианты.Количество(), "ЧН=0; ЧГ=0")); + ПоказатьОповещениеПользователя(, , ТекстОповещения); + ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(); + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура СнятьФлажки(Команда) + СнятьФлажкиРазделов(); + Элементы.ДеревоПодсистем.Развернуть(ДеревоПодсистем.ПолучитьЭлементы()[0].ПолучитьИдентификатор(), Истина); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоПодсистемВажность.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоПодсистем.Важность"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("СмешаннаяВажность"); + + ЦветЗаблокированногоРеквизита = Метаданные.ЭлементыСтиля.ЗаблокированныйРеквизитЦвет; + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветЗаблокированногоРеквизита.Значение); + + ВариантыОтчетов.УстановитьУсловноеОформлениеДереваПодсистем(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура СнятьФлажкиРазделов() + + ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений")); + Найденные = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 1), Истина); + Для Каждого СтрокаДерева Из Найденные Цикл + СтрокаДерева.Использование = 0; + СтрокаДерева.Модифицированность = Истина; + КонецЦикла; + + Найденные = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 2), Истина); + Для Каждого СтрокаДерева Из Найденные Цикл + СтрокаДерева.Использование = 0; + СтрокаДерева.Модифицированность = Истина; + КонецЦикла; + + ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем"); +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьРазделы() + + ДанныеЗаполнения = ДанныеЗаполненияРазделов(); + ОтфильтрованныеВарианты = ДанныеЗаполнения.ОтфильтрованныеВарианты; + + КоличествоОшибок = ОтфильтрованныеВарианты.Количество(); + + Если КоличествоОшибок > 0 Тогда + СообщенияОбОшибках = Новый Структура("Текст, Подробно"); + ТекущаяПричина = 0; + СообщенияОбОшибках.Подробно = ""; + Для Каждого СтрокаТаблицы Из ОтфильтрованныеВарианты Цикл + Если ТекущаяПричина <> СтрокаТаблицы.Причина Тогда + ТекущаяПричина = СтрокаТаблицы.Причина; + СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + Символы.ПС + Символы.ПС; + Если ТекущаяПричина = 1 Тогда + СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + НСтр("ru = 'Помеченные на удаление:'"); + ИначеЕсли ТекущаяПричина = 2 Тогда + СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + НСтр("ru = 'Недостаточно прав для изменения:'"); + ИначеЕсли ТекущаяПричина = 3 Тогда + СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + НСтр("ru = 'Отчет отключен или недоступен по правам:'"); + ИначеЕсли ТекущаяПричина = 4 Тогда + СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + НСтр("ru = 'Вариант отчета отключен по функциональной опции:'"); + КонецЕсли; + КонецЕсли; + + СообщенияОбОшибках.Подробно = СокрЛ(СообщенияОбОшибках.Подробно) + Символы.ПС + " - " + Строка(СтрокаТаблицы.Ссылка); + ИзменяемыеВарианты.Удалить(ИзменяемыеВарианты.НайтиПоЗначению(СтрокаТаблицы.Ссылка)); + КонецЦикла; + + КоличествоВариантов = ИзменяемыеВарианты.Количество(); + + Если КоличествоВариантов = 0 Тогда + СообщенияОбОшибках.Текст = НСтр("ru = 'Недостаточно прав для размещения в разделах выбранных вариантов отчетов.'"); + Иначе + СообщенияОбОшибках.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недостаточно прав для размещения в разделах некоторых вариантов отчетов (%1).'"), + Формат(КоличествоОшибок, "ЧГ=")); + КонецЕсли; + + СообщенияОбОшибках = Новый ФиксированнаяСтруктура(СообщенияОбОшибках); + КонецЕсли; + + ВхожденияПодсистем = ДанныеЗаполнения.ВхожденияПодсистем; + + ДеревоИсточник = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя(); + + ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений")); + ДеревоПриемник.Строки.Очистить(); + + ДобавитьПодсистемыВДерево(ДеревоПриемник, ДеревоИсточник, ВхожденияПодсистем); + + ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем"); +КонецПроцедуры + +// Возвращает данные для заполнения дерева разделов. +// +// Возвращаемое значение: +// Структура: +// * ОтфильтрованныеВарианты - ТаблицаЗначений: +// ** Ссылка - СправочникСсылка.ВариантыОтчетов +// ** Причина - Число +// * ВхожденияПодсистем - ТаблицаЗначений: +// ** Ссылка - СправочникСсылка.ВариантыОтчетов +// ** Количество - Число +// ** Важность - Строка +// +&НаСервере +Функция ДанныеЗаполненияРазделов() + + Запрос = Новый Запрос(ТекстЗапросаЗаполненияРазделов()); + Запрос.УстановитьПараметр("ПолныеПраваНаВарианты", ВариантыОтчетов.ПолныеПраваНаВарианты()); + Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь()); + Запрос.УстановитьПараметр("Ссылки", ИзменяемыеВарианты.ВыгрузитьЗначения()); + Запрос.УстановитьПараметр("ОтчетыПользователя", ВариантыОтчетов.ОтчетыТекущегоПользователя()); + Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы()); + Запрос.УстановитьПараметр("ПредставлениеВажный", ВариантыОтчетов.ПредставлениеВажный()); + Запрос.УстановитьПараметр("ПредставлениеСмТакже", ВариантыОтчетов.ПредставлениеСмТакже()); + + Пакет = Запрос.ВыполнитьПакет(); + Граница = Пакет.ВГраница(); + + ДанныеЗаполнения = Новый Структура; + ДанныеЗаполнения.Вставить("ОтфильтрованныеВарианты", Пакет[Граница - 1].Выгрузить()); + ДанныеЗаполнения.Вставить("ВхожденияПодсистем", Пакет[Граница].Выгрузить()); + + Возврат ДанныеЗаполнения; + +КонецФункции + +&НаСервере +Функция ТекстЗапросаЗаполненияРазделов() + + Возврат "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВариантыОтчетов.Ссылка, + | ВариантыОтчетов.ПредопределенныйВариант, + | ВЫБОР + | КОГДА ВариантыОтчетов.ПометкаУдаления + | ТОГДА 1 + | КОГДА &ПолныеПраваНаВарианты = ЛОЖЬ + | И ВариантыОтчетов.Автор <> &ТекущийПользователь + | ТОГДА 2 + | КОГДА НЕ ВариантыОтчетов.Отчет В (&ОтчетыПользователя) + | ТОГДА 3 + | КОГДА ВариантыОтчетов.Ссылка В (&ОтключенныеВариантыПрограммы) + | ТОГДА 4 + | ИНАЧЕ 0 + | КОНЕЦ КАК Причина + |ПОМЕСТИТЬ ВариантыОтчетов + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + |ГДЕ + | ВариантыОтчетов.Ссылка В(&Ссылки) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВариантыОтчетов.Ссылка КАК Ссылка, + | РазмещениеКонфигурации.Подсистема КАК Подсистема, + | РазмещениеКонфигурации.Важный КАК Важный, + | РазмещениеКонфигурации.СмТакже КАК СмТакже + |ПОМЕСТИТЬ НастройкиОбщих + |ИЗ + | ВариантыОтчетов КАК ВариантыОтчетов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК РазмещениеКонфигурации + | ПО ВариантыОтчетов.Причина = 0 + | И ВариантыОтчетов.ПредопределенныйВариант = РазмещениеКонфигурации.Ссылка + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ВариантыОтчетов.Ссылка, + | РазмещениеРасширений.Подсистема, + | РазмещениеРасширений.Важный, + | РазмещениеРасширений.СмТакже + |ИЗ + | ВариантыОтчетов КАК ВариантыОтчетов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Размещение КАК РазмещениеРасширений + | ПО ВариантыОтчетов.Причина = 0 + | И ВариантыОтчетов.ПредопределенныйВариант = РазмещениеРасширений.Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВариантыОтчетовРазмещение.Ссылка КАК Ссылка, + | ВариантыОтчетовРазмещение.Использование КАК Использование, + | ВариантыОтчетовРазмещение.Подсистема КАК Подсистема, + | ВариантыОтчетовРазмещение.Важный КАК Важный, + | ВариантыОтчетовРазмещение.СмТакже КАК СмТакже + |ПОМЕСТИТЬ НастройкиРазделенных + |ИЗ + | ВариантыОтчетов КАК ВариантыОтчетов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Размещение КАК ВариантыОтчетовРазмещение + | ПО ВариантыОтчетов.Причина = 0 + | И ВариантыОтчетов.Ссылка = ВариантыОтчетовРазмещение.Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ВариантыОтчетов.Ссылка, + | ВариантыОтчетов.Причина КАК Причина + |ИЗ + | ВариантыОтчетов КАК ВариантыОтчетов + |ГДЕ + | ВариантыОтчетов.Причина <> 0 + | + |УПОРЯДОЧИТЬ ПО + | Причина + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЕСТЬNULL(НастройкиРазделенных.Подсистема, НастройкиОбщих.Подсистема) КАК Ссылка, + | СУММА(1) КАК Количество, + | ВЫБОР + | КОГДА ЕСТЬNULL(НастройкиРазделенных.Важный, НастройкиОбщих.Важный) = ИСТИНА + | ТОГДА &ПредставлениеВажный + | КОГДА ЕСТЬNULL(НастройкиРазделенных.СмТакже, НастройкиОбщих.СмТакже) = ИСТИНА + | ТОГДА &ПредставлениеСмТакже + | ИНАЧЕ """" + | КОНЕЦ КАК Важность + |ИЗ + | НастройкиОбщих КАК НастройкиОбщих + | ПОЛНОЕ СОЕДИНЕНИЕ НастройкиРазделенных КАК НастройкиРазделенных + | ПО НастройкиОбщих.Ссылка = НастройкиРазделенных.Ссылка + | И НастройкиОбщих.Подсистема = НастройкиРазделенных.Подсистема + |ГДЕ + | НастройкиРазделенных.Использование = ИСТИНА + | ИЛИ НастройкиРазделенных.Использование ЕСТЬ NULL + | + |СГРУППИРОВАТЬ ПО + | ЕСТЬNULL(НастройкиРазделенных.Подсистема, НастройкиОбщих.Подсистема), + | ВЫБОР + | КОГДА ЕСТЬNULL(НастройкиРазделенных.Важный, НастройкиОбщих.Важный) = ИСТИНА + | ТОГДА &ПредставлениеВажный + | КОГДА ЕСТЬNULL(НастройкиРазделенных.СмТакже, НастройкиОбщих.СмТакже) = ИСТИНА + | ТОГДА &ПредставлениеСмТакже + | ИНАЧЕ """" + | КОНЕЦ"; + +КонецФункции + +&НаСервере +Процедура ЗаписатьНаСервере() + + ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений")); + ИзмененныеРазделы = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Модифицированность", Истина), Истина); + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + Для Каждого ВариантОтчета Из ИзменяемыеВарианты Цикл + ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя()); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ВариантОтчета.Значение); + КонецЦикла; + Блокировка.Заблокировать(); + + Для Каждого ВариантОтчета Из ИзменяемыеВарианты Цикл + ВариантОбъект = ВариантОтчета.Значение.ПолучитьОбъект(); // СправочникОбъект.ВариантыОтчетов + ВариантыОтчетов.ДеревоПодсистемЗаписать(ВариантОбъект, ИзмененныеРазделы); + ВариантОбъект.Записать(); + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Добавляет рекурсивно строку в дерево подсистем. +// +// Параметры: +// ПриемникРодитель - ДеревоЗначений: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * Имя - Строка +// * ПолноеИмя - Строка +// * Представление - Строка +// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * РазделПолноеИмя - Строка +// * Приоритет - Строка +// * ПолноеПредставление - Строка +// * Важность - Строка +// * Модифицированность - Булево +// ИсточникРодитель - СтрокаДереваЗначений +// - ДеревоЗначений: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * Имя - Строка +// * ПолноеИмя - Строка +// * Представление - Строка +// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * РазделПолноеИмя - Строка +// * Приоритет - Строка +// * ПолноеПредставление - Строка +// * Важность - Строка +// * Модифицированность - Булево +// ВхожденияПодсистем - ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ВариантыОтчетов +// * Количество - Число +// * Важность - Строка +// +&НаСервере +Процедура ДобавитьПодсистемыВДерево(ПриемникРодитель, ИсточникРодитель, ВхожденияПодсистем) + Для Каждого Источник Из ИсточникРодитель.Строки Цикл + + Приемник = ПриемникРодитель.Строки.Добавить(); + ЗаполнитьЗначенияСвойств(Приемник, Источник); + + ВхожденияЭтойПодсистемы = ВхожденияПодсистем.Скопировать(Новый Структура("Ссылка", Приемник.Ссылка)); + Если ВхожденияЭтойПодсистемы.Количество() = 1 Тогда + Приемник.Важность = ВхожденияЭтойПодсистемы[0].Важность; + ИначеЕсли ВхожденияЭтойПодсистемы.Количество() = 0 Тогда + Приемник.Важность = ""; + Иначе + Приемник.Важность = СмешаннаяВажность; // Так же используется для условного оформления. + КонецЕсли; + + ВхожденияВариантов = ВхожденияЭтойПодсистемы.Итог("Количество"); + Если ВхожденияВариантов = КоличествоВариантов Тогда + Приемник.Использование = 1; + ИначеЕсли ВхожденияВариантов = 0 Тогда + Приемник.Использование = 0; + Иначе + Приемник.Использование = 2; + КонецЕсли; + + ДобавитьПодсистемыВДерево(Приемник, Источник, ВхожденияПодсистем); + КонецЦикла; +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/Form.form" new file mode 100644 index 00000000..28abc563 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/Form.form" @@ -0,0 +1,238 @@ + + + + Надпись2 + 11 + + <key>ru</key> + <value>Сбросить настройки размещения, видимости и доступности +выбранных предопределенных вариантов отчетов программы?</value> + + true + true + + true + + + Надпись2РасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + Надпись2КонтекстноеМеню + 12 + true + true + + true + + true + + true + Label + true + + Left + + + + Надпись1 + 1 + + <key>ru</key> + <value>Внимание, операция "<b>Сбросить настройки размещения</>" необратима.</value> + + true + true + + true + + + Надпись1РасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + Надпись1КонтекстноеМеню + 2 + true + true + + true + + true + + true + Label + true + + Left + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаКомандаПродолжить + 6 + true + true + + true + + + ФормаКомандаПродолжитьРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаСбросить + Auto + true + true + UserCmds + Auto + + + ФормаОтмена + 4 + true + true + + true + + true + + ФормаОтменаРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + CustomizeForm + Help + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + ИзменяемыеВарианты + 1 + + ValueList + + + true + + + true + + + + CatalogRef.ВариантыОтчетов + + + + + ТекстОшибки + 2 + + String + + + + true + + + true + + + + КомандаСбросить + + <key>ru</key> + <value>Сбросить настройки размещения</value> + + 1 + + true + + + + КомандаСбросить + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..9d0b694b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,143 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Варианты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Варианты"); // Массив из СправочникСсылка.ВариантыОтчетов + Если ТипЗнч(Варианты) <> Тип("Массив") Тогда + ТекстОшибки = НСтр("ru = 'Не указаны варианты отчетов.'"); + Возврат; + КонецЕсли; + + ОпределитьПоведениеВМобильномКлиенте(); + ИзменяемыеВарианты.ЗагрузитьЗначения(Варианты); + Отфильтровать(); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если Не ПустаяСтрока(ТекстОшибки) Тогда + Отказ = Истина; + ПоказатьПредупреждение(, ТекстОшибки); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КомандаСбросить(Команда) + КоличествоВыбранныхВариантов = ИзменяемыеВарианты.Количество(); + Если КоличествоВыбранныхВариантов = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не указаны варианты отчетов.'")); + Возврат; + КонецЕсли; + + КоличествоВариантов = СброситьНастройкиРазмещенияСервер(ИзменяемыеВарианты); + Если КоличествоВариантов = 1 И КоличествоВыбранныхВариантов = 1 Тогда + СсылкаВарианта = ИзменяемыеВарианты[0].Значение; + ОповещениеЗаголовок = НСтр("ru = 'Сброшены настройки размещения варианта отчета'"); + ОповещениеСсылка = ПолучитьНавигационнуюСсылку(СсылкаВарианта); + ОповещениеТекст = Строка(СсылкаВарианта); + ПоказатьОповещениеПользователя(ОповещениеЗаголовок, ОповещениеСсылка, ОповещениеТекст); + Иначе + ОповещениеТекст = НСтр("ru = 'Сброшены настройки размещения + |вариантов отчетов (%1 шт.).'"); + ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОповещениеТекст, Формат(КоличествоВариантов, "ЧН=0; ЧГ=0")); + ПоказатьОповещениеПользователя(, , ОповещениеТекст); + КонецЕсли; + ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(); + Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вызов сервера + +&НаСервереБезКонтекста +Функция СброситьНастройкиРазмещенияСервер(Знач ИзменяемыеВарианты) + КоличествоВариантов = 0; + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл + ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя()); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ЭлементСписка.Значение); + КонецЦикла; + Блокировка.Заблокировать(); + + Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл + ВариантОбъект = ЭлементСписка.Значение.ПолучитьОбъект(); // СправочникОбъект.ВариантыОтчетов + Если ВариантыОтчетов.СброситьНастройкиВариантаОтчета(ВариантОбъект) Тогда + ВариантОбъект.Записать(); + КоличествоВариантов = КоличествоВариантов + 1; + КонецЕсли; + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + Возврат КоличествоВариантов; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Сервер + +&НаСервере +Процедура ОпределитьПоведениеВМобильномКлиенте() + Если Не ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Возврат; + КонецЕсли; + + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; +КонецПроцедуры + +&НаСервере +Процедура Отфильтровать() + + КоличествоДоФильтрации = ИзменяемыеВарианты.Количество(); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("МассивВариантов", ИзменяемыеВарианты.ВыгрузитьЗначения()); + Запрос.УстановитьПараметр("ТипВнутренний", Перечисления.ТипыОтчетов.Внутренний); + Запрос.УстановитьПараметр("ТипРасширение", Перечисления.ТипыОтчетов.Расширение); + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | ВариантыОтчетовРазмещение.Ссылка + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетовРазмещение + |ГДЕ + | ВариантыОтчетовРазмещение.Ссылка В(&МассивВариантов) + | И ВариантыОтчетовРазмещение.Пользовательский = ЛОЖЬ + | И ВариантыОтчетовРазмещение.ТипОтчета В (&ТипВнутренний, &ТипРасширение) + | И ВариантыОтчетовРазмещение.ПометкаУдаления = ЛОЖЬ"; + + МассивВариантов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + ИзменяемыеВарианты.ЗагрузитьЗначения(МассивВариантов); + + КоличествоПослеФильтрации = ИзменяемыеВарианты.Количество(); + Если КоличествоДоФильтрации <> КоличествоПослеФильтрации Тогда + Если КоличествоПослеФильтрации = 0 Тогда + ТекстОшибки = НСтр("ru = 'Сброс настроек размещения выбранных вариантов отчетов не требуется по одной или нескольким причинам: + |- Выбраны пользовательские варианты отчетов. + |- Выбраны помеченные на удаление варианты отчетов. + |- Выбраны варианты дополнительных или внешних отчетов.'"); + Возврат; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Form.form" new file mode 100644 index 00000000..ffc2f1e6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Form.form" @@ -0,0 +1,238 @@ + + + + Надпись2 + 11 + + <key>ru</key> + <value>Сбросить пользовательские настройки быстрого доступа и видимости +выбранных вариантов отчетов?</value> + + true + true + + true + + + Надпись2РасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + Надпись2КонтекстноеМеню + 12 + true + true + + true + + true + + true + Label + true + + Left + + + + Надпись1 + 1 + + <key>ru</key> + <value>Внимание, операция "<b>Сбросить настройки пользователей</>" необратима.</value> + + true + true + + true + + + Надпись1РасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + Надпись1КонтекстноеМеню + 2 + true + true + + true + + true + + true + Label + true + + Left + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаКомандаСбросить + 6 + true + true + + true + + + ФормаКомандаСброситьРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаСбросить + Auto + true + true + UserCmds + Auto + + + ФормаОтмена + 4 + true + true + + true + + true + + ФормаОтменаРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + CustomizeForm + Help + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + ИзменяемыеВарианты + 1 + + ValueList + + + true + + + true + + + + CatalogRef.ВариантыОтчетов + + + + + ТекстОшибки + 2 + + String + + + + true + + + true + + + + КомандаСбросить + + <key>ru</key> + <value>Сбросить пользовательские настройки</value> + + 1 + + true + + + + КомандаСбросить + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Module.bsl" new file mode 100644 index 00000000..49e76de9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\241\320\261\321\200\320\276\321\201\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\321\205\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272/Module.bsl" @@ -0,0 +1,120 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Варианты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Варианты"); // Массив из СправочникСсылка.ВариантыОтчетов + Если ТипЗнч(Варианты) <> Тип("Массив") Тогда + ТекстОшибки = НСтр("ru = 'Не указаны варианты отчетов.'"); + Возврат; + КонецЕсли; + + Если Не ЕстьПользовательскиеНастройки(Варианты) Тогда + ТекстОшибки = НСтр("ru = 'Пользовательские настройки выбранных вариантов отчетов (%1 шт) не заданы или уже сброшены.'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Формат(Варианты.Количество(), "ЧН=0; ЧГ=0")); + Возврат; + КонецЕсли; + + ОпределитьПоведениеВМобильномКлиенте(); + ИзменяемыеВарианты.ЗагрузитьЗначения(Варианты); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если Не ПустаяСтрока(ТекстОшибки) Тогда + Отказ = Истина; + ПоказатьПредупреждение(, ТекстОшибки); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КомандаСбросить(Команда) + КоличествоВариантов = ИзменяемыеВарианты.Количество(); + Если КоличествоВариантов = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не указаны варианты отчетов.'")); + Возврат; + КонецЕсли; + + СброситьНастройкиПользователейСервер(ИзменяемыеВарианты); + Если КоличествоВариантов = 1 Тогда + СсылкаВарианта = ИзменяемыеВарианты[0].Значение; + ОповещениеЗаголовок = НСтр("ru = 'Сброшены пользовательские настройки варианта отчета'"); + ОповещениеСсылка = ПолучитьНавигационнуюСсылку(СсылкаВарианта); + ОповещениеТекст = Строка(СсылкаВарианта); + ПоказатьОповещениеПользователя(ОповещениеЗаголовок, ОповещениеСсылка, ОповещениеТекст); + Иначе + ОповещениеТекст = НСтр("ru = 'Сброшены пользовательские настройки + |вариантов отчетов (%1 шт.).'"); + ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОповещениеТекст, Формат(КоличествоВариантов, "ЧН=0; ЧГ=0")); + ПоказатьОповещениеПользователя(, , ОповещениеТекст); + КонецЕсли; + Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вызов сервера + +&НаСервереБезКонтекста +Процедура СброситьНастройкиПользователейСервер(Знач ИзменяемыеВарианты) + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл + ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя()); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ЭлементСписка.Значение); + КонецЦикла; + Блокировка.Заблокировать(); + + РегистрыСведений.НастройкиВариантовОтчетов.СброситьНастройки(ИзменяемыеВарианты.ВыгрузитьЗначения()); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Сервер + +&НаСервере +Процедура ОпределитьПоведениеВМобильномКлиенте() + Если Не ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Возврат; + КонецЕсли; + + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; +КонецПроцедуры + +&НаСервере +Функция ЕстьПользовательскиеНастройки(МассивВариантов) + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("МассивВариантов", МассивВариантов); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЕстьПользовательскиеНастройки + |ИЗ + | РегистрСведений.НастройкиВариантовОтчетов КАК Настройки + |ГДЕ + | Настройки.Вариант В(&МассивВариантов)"; + + ЕстьПользовательскиеНастройки = НЕ Запрос.Выполнить().Пустой(); + Возврат ЕстьПользовательскиеНастройки; +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..ef22a382 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,2748 @@ + + + + БыстрыеОтборы + 44 + + СтрокаПоиска + 60 + true + true + + true + + + + СтрокаПоиска + + + + ru + Поиск слов в наименовании и описании отчета а также в наименованиях настроек отчета. + + + OnChange + СтрокаПоискаПриИзменении + + + СтрокаПоискаРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + + СтрокаПоискаКонтекстноеМеню + 61 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + false + true + true + false + true + false + false + true + true + true + + + + ВыполнитьПоиск + 132 + true + true + + true + + + ВыполнитьПоискРасширеннаяПодсказка + 133 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыполнитьПоиск + Auto + true + true + UserCmds + Auto + + + ОтборТипОтчета + 45 + true + true + + + + ОтборТипОтчета + + + + ru + Отбор по типу отчетов: Внутренние / Дополнительные / Внешние. + + + OnChange + ОтборТипОтчетаПриИзменении + + + ОтборТипОтчетаExtendedTooltip + 101 + true + true + + true + + Label + true + true + + Left + + + + ОтборТипОтчетаКонтекстноеМеню + 46 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + ОтборТипОтчетаОчистка + + true + true + false + false + true + false + true + false + true + false + false + false + false + true + true + + ru + Все + + DontUse + + + true + true + + true + + + <key>ru</key> + <value>Быстрые отборы</value> + + + БыстрыеОтборыExtendedTooltip + 98 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПользовательскихНастроек + 168 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 169 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 35 + + Выбрать + 84 + true + true + + true + + + ВыбратьExtendedTooltip + 103 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Choose + Auto + true + true + UserCmds + Auto + + + Просмотр + 22 + true + true + + true + + + Items.Список.CurrentData.Ref + + + ПросмотрExtendedTooltip + 104 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.Открыть + Auto + true + true + UserCmds + Auto + + + Изменить + 164 + true + true + + true + + + Items.Список.CurrentData.Ref + + + ИзменитьРасширеннаяПодсказка + 165 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.Изменить + Auto + true + true + UserCmds + Auto + + + РазместитьВРазделах + 36 + true + true + + true + + + Items.Список.CurrentData.Ref + + + РазместитьВРазделахExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.РазместитьВРазделах + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ИзменитьФорму + 15 + true + true + + true + + + ИзменитьФормуExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + Справка + 14 + true + true + + true + + + СправкаExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + + СписокГруппа1 + 188 + + СписокНайти + 190 + true + true + + true + + + СписокНайтиРасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Find + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокПоискПоТекущемуЗначению + 194 + true + true + + true + + + СписокПоискПоТекущемуЗначениюРасширеннаяПодсказка + 195 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.FindByCurrentValue + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокОтменитьПоиск + 192 + true + true + + true + + + СписокОтменитьПоискРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Группа 1</value> + + + СписокГруппа1РасширеннаяПодсказка + 189 + true + true + + true + + Label + true + true + + Left + + + + + + КомандыСписка + 64 + true + true + + true + + + <key>ru</key> + <value>Команды списка</value> + + + КомандыСпискаExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + + СброситьНастройкиРазмещения + 95 + true + true + + true + + + Items.Список.CurrentData.Ref + + + СброситьНастройкиРазмещенияРасширеннаяПодсказка + 110 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.СброситьНастройкиРазмещения + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СброситьНастройкиПользователей + 70 + true + true + + true + + + Items.Список.CurrentData.Ref + + + СброситьНастройкиПользователейExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.СброситьНастройкиПользователей + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + УстановитьПометкуУдаления + 83 + true + true + + true + + + УстановитьПометкуУдаленияExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ГруппаОбменВариантамиОтчетов + 200 + + ОбновитьВариантОтчетаИзФайла + 196 + true + true + + true + + + ОбновитьВариантОтчетаИзФайлаРасширеннаяПодсказка + 197 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьВариантОтчетаИзФайла + Auto + true + true + UserCmds + Auto + + + СохранитьВариантОтчетаВФайл + 198 + true + true + + true + + + СохранитьВариантОтчетаВФайлРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьВариантОтчетаВФайл + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Обмен вариантами отчетов</value> + + + ГруппаОбменВариантамиОтчетовРасширеннаяПодсказка + 201 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельExtendedTooltip + 102 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ГруппаГоризонтальная + 23 + + ГруппаРазделы + 92 + + ДеревоПодсистем + 65 + + <key>ru</key> + <value>Разделы</value> + + true + true + + true + + + ДеревоПодсистем + + None + Add + Change + Copy + Delete + EndEdit + List + MoveDown + MoveUp + + ДеревоПодсистемПредставление + 68 + true + true + + true + + + + ДеревоПодсистем.Представление + + + + ДеревоПодсистемПредставлениеExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемПредставлениеКонтекстноеМеню + 69 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + + + + ДеревоПодсистемКоманднаяПанель + 67 + true + true + + true + + Left + + + BeforeAddRow + ДеревоПодсистемПередНачаломДобавления + + + BeforeDeleteRow + ДеревоПодсистемПередУдалением + + + OnActivateRow + ДеревоПодсистемПриАктивизацииСтроки + + + Drag + ДеревоПодсистемПеретаскивание + + + BeforeRowChange + ДеревоПодсистемПередНачаломИзменения + + + true + true + + true + + ДеревоПодсистемСтрокаПоиска + 170 + + ДеревоПодсистемСтрокаПоискаРасширеннаяПодсказка + 172 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемСтрокаПоискаКонтекстноеМеню + 171 + true + true + + true + + true + + + true + + + + true + true + + true + + ДеревоПодсистемСостояниеПросмотра + 173 + + ДеревоПодсистемСостояниеПросмотраРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемСостояниеПросмотраКонтекстноеМеню + 174 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДеревоПодсистемУправлениеПоиском + 176 + + ДеревоПодсистемУправлениеПоискомРасширеннаяПодсказка + 178 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемУправлениеПоискомКонтекстноеМеню + 177 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДеревоПодсистемExtendedTooltip + 115 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемКонтекстноеМеню + 66 + true + true + + true + + true + + Tree + true + true + 30 + true + true + true + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + ExpandTopLevel + true + true + true + + + ВключаяПодчиненные + 93 + true + true + + true + + + + ВключаяПодчиненные + + + Right + + OnChange + ВключаяПодчиненныеПриИзменении + + + ВключаяПодчиненныеExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + + ВключаяПодчиненныеКонтекстноеМеню + 94 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Все разделы</value> + + + ГруппаРазделыРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Варианты отчетов</value> + + true + true + + true + + + Список + + None + Change + Copy + Create + LevelDown + LevelUp + MoveItem + + Строки + 137 + + КолонкиПервойСтроки + 139 + + Наименование + 4 + VeryHigh + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Наименование + + + + НаименованиеExtendedTooltip + 124 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 40 + true + true + + + + Автор + 12 + Low + true + true + + true + + + + Список.Автор + + + + АвторExtendedTooltip + 125 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 13 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ДоступенВсемПользователям + 96 + + <key>ru</key> + <value>Доступен всем пользователям</value> + + true + true + + + + Список.ДоступенВсемПользователям + + + None + + ru + Доступен всем пользователям + + + ДоступенВсемПользователямExtendedTooltip + 126 + true + true + + true + + Label + true + true + + Left + + + + ДоступенВсемПользователямКонтекстноеМеню + 97 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + true + true + true + true + + CommonPicture.ВариантыОтчетовДоступныеВсемПользователям + + + + + ВидимостьПоУмолчанию + 71 + true + true + + None + + ru + Видимость по умолчанию в панели отчетов + + + ВидимостьПоУмолчаниюExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + + ВидимостьПоУмолчаниюКонтекстноеМеню + 72 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Колонки первой строки</value> + + + КолонкиПервойСтрокиРасширеннаяПодсказка + 140 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + КолонкиВторойСтроки + 141 + + Описание + 143 + Low + + <key>ru</key> + <value>Описание</value> + + true + true + + true + + + + Список.Описание + + + + ОписаниеРасширеннаяПодсказка + 145 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 144 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Колонки второй строки</value> + + + КолонкиВторойСтрокиРасширеннаяПодсказка + 142 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + true + true + + true + + + <key>ru</key> + <value>Строки</value> + + + СтрокиРасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + ТехническаяИнформация + 148 + + ИмяОтчета + 73 + + <key>ru</key> + <value>Имя отчета</value> + + true + true + + + + Список.ИмяОтчета + + + + ИмяОтчетаExtendedTooltip + 128 + true + true + + true + + Label + true + true + + Left + + + + ИмяОтчетаКонтекстноеМеню + 74 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Отчет + 77 + true + true + + + + Список.Отчет + + + + ОтчетExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + + ОтчетКонтекстноеМеню + 78 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ТипОтчета + 81 + true + true + + + + Список.ТипОтчета + + + + ТипОтчетаExtendedTooltip + 130 + true + true + + true + + Label + true + true + + Left + + + + ТипОтчетаКонтекстноеМеню + 82 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + КлючВарианта + 75 + true + true + + + + Список.КлючВарианта + + + + КлючВариантаExtendedTooltip + 131 + true + true + + true + + Label + true + true + + Left + + + + КлючВариантаКонтекстноеМеню + 76 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + + <key>ru</key> + <value>Техническая информация</value> + + + ТехническаяИнформацияРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + true + + + + Ссылка + 134 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 135 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + Selection + СписокВыбор + + + BeforeRowChange + СписокПередНачаломИзменения + + + true + true + + true + + СписокСтрокаПоиска + 179 + + СписокСтрокаПоискаРасширеннаяПодсказка + 181 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 180 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 182 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 184 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 183 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 185 + + СписокУправлениеПоискомРасширеннаяПодсказка + 187 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 186 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + ПросмотрСписок + 43 + true + true + + true + + + Items.Список.CurrentData.Ref + + + ПросмотрСписокExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.Открыть + Auto + true + true + UserCmds + Auto + + + ИзменитьКонтекстноеМеню + 166 + true + true + + true + + + Items.Список.CurrentData.Ref + + + ИзменитьКонтекстноеМенюРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.Изменить + Auto + true + true + UserCmds + Auto + + + РазместитьВРазделахСписок + 62 + true + true + + true + + + Items.Список.CurrentData.Ref + + + РазместитьВРазделахСписокExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.РазместитьВРазделах + Auto + true + true + UserCmds + Auto + + + КомандыСпискаСписок + 89 + true + true + + true + + + <key>ru</key> + <value>Команды списка</value> + + + КомандыСпискаСписокExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + + УстановитьПометкуУдаленияСписок + 91 + true + true + + true + + + УстановитьПометкуУдаленияСписокExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + Tree + true + true + 60 + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + + Список.ИндексКартинки + + + CommonPicture.ПиктограммыЭлементов + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
+ true + true + + true + + + <key>ru</key> + <value>Горизонтальная</value> + + + ГруппаГоризонтальнаяExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + +
+ Top + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Create + true + true + Vertical + true + true + true + true + true + + + Выбрать + + + + + Просмотр + + + + + Изменить + + + + + РазместитьВРазделах + + + + + Справка + + + + + СписокГруппа1 + + + + + КомандыСписка + + + + + СброситьНастройкиРазмещения + + + + + СброситьНастройкиПользователей + + + + + УстановитьПометкуУдаления + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.Автор + + + Список.ИмяОтчета + + + Список.КлючВарианта + + + Список.КлючЗамеров + + + Список.Наименование + + + Список.Отчет + + + Список.ПолноеИмяОтчета + + + Список.ТипОтчета + +
true
+ + ВЫБРАТЬ РАЗРЕШЕННЫЕ + ВариантыОтчетов.Ссылка, + ВариантыОтчетов.ВерсияДанных, + ВариантыОтчетов.ПометкаУдаления, + ЕСТЬNULL(ВариантыКонфигурации.КлючЗамеров, ВариантыРасширений.КлючЗамеров) КАК КлючЗамеров, + ВариантыОтчетов.Пользовательский, + НЕ ВариантыОтчетов.Пользовательский КАК Предопределенный, + ВЫБОР + КОГДА &ЭтоОсновнойЯзык + И (ВариантыОтчетов.Пользовательский + ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( + НЕОПРЕДЕЛЕНО, + ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + ТОГДА ВариантыОтчетов.Наименование + КОГДА НЕ &ЭтоОсновнойЯзык + И (ВариантыОтчетов.Пользовательский + ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( + НЕОПРЕДЕЛЕНО, + ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) + КОГДА &ЭтоОсновнойЯзык + ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) + ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) + КОНЕЦ КАК Наименование, + НЕ ВариантыОтчетов.ТолькоДляАвтора КАК ДоступенВсемПользователям, + ВариантыОтчетов.Отчет, + ВариантыОтчетов.КлючВарианта, + ВариантыОтчетов.ТипОтчета, + ВариантыОтчетов.Автор, + ВЫБОР + КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> "" + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = "" + ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) + КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> "" + ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) + ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + КОНЕЦ КАК Описание, + ВЫБОР + КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных) + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя + КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений) + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя + КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ДополнительныеОтчетыИОбработки) + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ДополнительныеОтчетыИОбработки).ИмяОбъекта + ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150)), 14, 137) + КОНЕЦ КАК ИмяОтчета, + СведенияОРасширениях.ПолноеИмяОбъекта КАК ПолноеИмяОтчета, + ВЫБОР + КОГДА ВариантыОтчетов.ПометкаУдаления = ИСТИНА + ТОГДА 4 + КОГДА ВариантыОтчетов.Пользовательский = ЛОЖЬ + ТОГДА 5 + ИНАЧЕ 3 + КОНЕЦ КАК ИндексКартинки +ИЗ + Справочник.ВариантыОтчетов КАК ВариантыОтчетов + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации + ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений + ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов + ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка + И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации + ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка + И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка) + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений + ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка + И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка) + ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК СведенияОРасширениях + ПО СведенияОРасширениях.ВерсияРасширений = &ВерсияРасширений + И СведенияОРасширениях.Идентификатор = ВариантыОтчетов.Отчет +ГДЕ + ВариантыОтчетов.Отчет В(&ДоступныеОтчеты) + И ВЫБОР + КОГДА Не &ЕстьОтборПоВариантам + ТОГДА НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + ИНАЧЕ ВариантыОтчетов.Ссылка В (&ВариантыПользователя) + КОНЕЦ + Catalog.ВариантыОтчетов + true + true + true + true + +
+ + ОтборТипОтчета + + <key>ru</key> + <value>Тип</value> + + 4 + + Number + EnumRef.ТипыОтчетов + + 10 + + + + true + + + true + + + ОтборТипОтчета + + + + СтрокаПоиска + + <key>ru</key> + <value>Поиск</value> + + 3 + + String + + + + true + + + true + + + СтрокаПоиска + + + + ДеревоПодсистем + + <key>ru</key> + <value>Раздел, группа</value> + + 2 + + ValueTree + + + true + + + true + + + Ссылка + 1 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Раздел, Группа</value> + + 2 + + String + + + + true + + + true + + + + Имя + 3 + + String + + 100 + + + + true + + + true + + + + ПолноеИмя + 4 + + String + + + + true + + + true + + + + Приоритет + 5 + + String + + 100 + + + + true + + + true + + + + ПолноеПредставление + 6 + + String + + + + true + + + true + + + + + ДеревоПодсистемТекущаяСтрока + 6 + + Number + + 10 + + + + true + + + true + + + + РежимРаботыФормы + 9 + + String + + + + true + + + true + + + + ВключаяПодчиненные + + <key>ru</key> + <value>Включая подчиненные</value> + + 7 + + Boolean + + + true + + + true + + + ВключаяПодчиненные + + + + ПараметрыКлиента + 12 + + + true + + + true + + + + ВыполнитьПоиск + + <key>ru</key> + <value>Найти</value> + + 1 + + ru + Найти + + + true + + + StdPicture.Find + + + + ВыполнитьПоиск + + + DontUse + + + Изменить + + <key>ru</key> + <value>Изменить ...</value> + + 2 + + ru + Изменить настройки отчета... + + + true + + + StdPicture.Change + + + + Изменить + + + TextPicture + DontUse + + + СохранитьВариантОтчетаВФайл + + <key>ru</key> + <value>Сохранить в файл...</value> + + 3 + + ru + Сохранить вариант отчета в файл + + + true + + + CommonPicture.СохранитьФайлКак + + + + СохранитьВариантОтчетаВФайл + + + TextPicture + Auto + + + ОбновитьВариантОтчетаИзФайла + + <key>ru</key> + <value>Обновить из файла...</value> + + 4 + + ru + Обновить вариант отчета из файла + + + true + + + CommonPicture.ОбновитьФайлИзФайлаНаДиске + + + + ОбновитьВариантОтчетаИзФайла + + + TextPicture + Auto + + + ТолькоВарианты + + Boolean + + + + СтрокаПоиска + + String + + + + + РазделСсылка + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..f92e3739 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,840 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + ОпределитьПоведениеВМобильномКлиенте(); + ПараметрыКлиента = ВариантыОтчетов.ПараметрыКлиента(); + ВключаяПодчиненные = Истина; + + ДеревоЗначений = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя().Скопировать(); + ДеревоПодсистемЗаполнитьПолноеПредставление(ДеревоЗначений.Строки); + ЗначениеВРеквизитФормы(ДеревоЗначений, "ДеревоПодсистем"); + + ДеревоПодсистемТекущаяСтрока = -1; + Элементы.ДеревоПодсистем.ТекущаяСтрока = 0; + Если Параметры.РежимВыбора = Истина Тогда + РежимРаботыФормы = "Выбор"; + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + Элементы.Список.Отображение = ОтображениеТаблицы.Список; + ИначеЕсли Параметры.РазделСсылка <> Неопределено Тогда + РежимРаботыФормы = "ВсеОтчетыРаздела"; + РодительскиеЭлементы = Новый Массив; // Массив из ДанныеФормыЭлементДерева + РодительскиеЭлементы.Добавить(ДеревоПодсистем.ПолучитьЭлементы()[0]); + + Пока РодительскиеЭлементы.Количество() > 0 Цикл + РодительскийЭлемент = ЭлементДереваПодсистем(РодительскиеЭлементы); + ДочерниеЭлементы = РодительскийЭлемент.ПолучитьЭлементы(); + РодительскиеЭлементы.Удалить(0); + + Для Каждого ДочернийЭлемент Из ДочерниеЭлементы Цикл + Если ДочернийЭлемент.Ссылка = Параметры.РазделСсылка Тогда + Элементы.ДеревоПодсистем.ТекущаяСтрока = ДочернийЭлемент.ПолучитьИдентификатор(); + РодительскиеЭлементы.Очистить(); + Прервать; + КонецЕсли; + + РодительскиеЭлементы.Добавить(ДочернийЭлемент); + КонецЦикла; + КонецЦикла; + Иначе + РежимРаботыФормы = "Список"; + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Изменить", "Отображение", ОтображениеКнопки.КартинкаИТекст); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РазместитьВРазделах", "ТолькоВоВсехДействиях", Ложь); + КонецЕсли; + + ГлобальныеНастройки = ВариантыОтчетов.ГлобальныеНастройки(); + Элементы.СтрокаПоиска.ПодсказкаВвода = ГлобальныеНастройки.Поиск.ПодсказкаВвода; + + КлючСохраненияПоложенияОкна = РежимРаботыФормы; + КлючНазначенияИспользования = РежимРаботыФормы; + + УстановитьСвойствоСпискаПоПараметруФормы("РежимВыбора"); + УстановитьСвойствоСпискаПоПараметруФормы("ВыборГруппИЭлементов"); + УстановитьСвойствоСпискаПоПараметруФормы("МножественныйВыбор"); + УстановитьСвойствоСпискаПоПараметруФормы("ТекущаяСтрока"); + + Элементы.Выбрать.КнопкаПоУмолчанию = Параметры.РежимВыбора; + Элементы.Выбрать.Видимость = Параметры.РежимВыбора; + Элементы.ОтборТипОтчета.Видимость = ВариантыОтчетов.ПолныеПраваНаВарианты(); + + СписокВыбора = Элементы.ОтборТипОтчета.СписокВыбора; + СписокВыбора.Добавить(1, НСтр("ru = 'Все, кроме внешних'")); + СписокВыбора.Добавить(Перечисления.ТипыОтчетов.Внутренний, НСтр("ru = 'Внутренние'")); + СписокВыбора.Добавить(Перечисления.ТипыОтчетов.Расширение, НСтр("ru = 'Расширения'")); + СписокВыбора.Добавить(Перечисления.ТипыОтчетов.Дополнительный, НСтр("ru = 'Дополнительные'")); + СписокВыбора.Добавить(Перечисления.ТипыОтчетов.Внешний, НСтр("ru = 'Внешние'")); + + СтрокаПоиска = Параметры.СтрокаПоиска; + Если Параметры.Отбор.Свойство("ТипОтчета", ОтборТипОтчета) Тогда + Параметры.Отбор.Удалить("ТипОтчета"); + КонецЕсли; + Если Параметры.ТолькоВарианты Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "КлючВарианта", "", ВидСравненияКомпоновкиДанных.НеРавно,,, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + КонецЕсли; + + ПерсональныеНастройкиСписка = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( + ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(), + "Справочник.ВариантыОтчетов.ФормаСписка"); + Если ПерсональныеНастройкиСписка <> Неопределено Тогда + Элементы.СтрокаПоиска.СписокВыбора.ЗагрузитьЗначения(ПерсональныеНастройкиСписка.СтрокаПоискаСписокВыбора); + КонецЕсли; + + Список.Параметры.УстановитьЗначениеПараметра("ДоступныеОтчеты", ВариантыОтчетов.ОтчетыТекущегоПользователя()); + Список.Параметры.УстановитьЗначениеПараметра("ОтключенныеВариантыПрограммы", Новый Массив(ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы())); + Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык()); + Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка); + Список.Параметры.УстановитьЗначениеПараметра("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + + ТекущийЭлемент = Элементы.Список; + + ВариантыОтчетов.ДополнитьОтборыИзСтруктуры(Список.КомпоновщикНастроек.Настройки.Отбор, Параметры.Отбор); + Параметры.Отбор.Очистить(); + + ОбновитьСодержимоеСписка("ПриСозданииНаСервере"); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если РежимРаботыФормы = "ВсеОтчетыРаздела" ИЛИ РежимРаботыФормы = "Выбор" Тогда + Элементы.ДеревоПодсистем.Развернуть(ДеревоПодсистемТекущаяСтрока, Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеВарианта() + Или ИмяСобытия = "Запись_НаборКонстант" Тогда + ДеревоПодсистемТекущаяСтрока = -1; + ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ОтборТипОтчетаПриИзменении(Элемент) + ОбновитьСодержимоеСписка(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборТипОтчетаОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОтборТипОтчета = Неопределено; + ОбновитьСодержимоеСписка(); +КонецПроцедуры + +&НаКлиенте +Процедура СтрокаПоискаПриИзменении(Элемент) + ОбновитьСодержимоеСпискаКлиент("СтрокаПоискаПриИзменении"); +КонецПроцедуры + +&НаКлиенте +Процедура ВключаяПодчиненныеПриИзменении(Элемент) + ДеревоПодсистемТекущаяСтрока = -1; + ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоПодсистем + +&НаКлиенте +Процедура ДеревоПодсистемПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоПодсистемПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоПодсистемПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоПодсистемПриАктивизацииСтроки(Элемент) + ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина); + +#Если МобильныйКлиент Тогда + ПодключитьОбработчикОжидания("УстановитьЗаголовокДереваПодсистем", 0.1, Истина); + ТекущийЭлемент = Элементы.Список; +#КонецЕсли +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоПодсистемПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + СтандартнаяОбработка = Ложь; + + Если Строка = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыРазмещения = ПараметрыРазмещения(ПараметрыПеретаскивания, Строка); + Если ПараметрыРазмещения = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ПараметрыРазмещения.Варианты.Всего = 1 Тогда + Если ПараметрыРазмещения.Действие = "Копирование" Тогда + ШаблонВопроса = НСтр("ru = 'Разместить ""%1"" в ""%4""?'"); + Иначе + ШаблонВопроса = НСтр("ru = 'Переместить ""%1"" из ""%3"" в ""%4""?'"); + КонецЕсли; + Иначе + Если ПараметрыРазмещения.Действие = "Копирование" Тогда + ШаблонВопроса = НСтр("ru = 'Разместить варианты отчетов ""%1"" (%2 шт.) в ""%4""?'"); + Иначе + ШаблонВопроса = НСтр("ru = 'Переместить варианты отчетов ""%1"" (%2 шт.) из ""%3"" в ""%4""?'"); + КонецЕсли; + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонВопроса, + ПараметрыРазмещения.Варианты.Представление, + Формат(ПараметрыРазмещения.Варианты.Всего, "ЧГ=0"), + ПараметрыРазмещения.Источник.ПолноеПредставление, + ПараметрыРазмещения.Приемник.ПолноеПредставление); + + Обработчик = Новый ОписаниеОповещения("ДеревоПодсистемПеретаскиваниеЗавершение", ЭтотОбъект, ПараметрыРазмещения); + ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; + ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Элементы.Список.ТекущаяСтрока); +КонецПроцедуры + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + Если РежимРаботыФормы = "ВсеОтчетыРаздела" Тогда + СтандартнаяОбработка = Ложь; + ВариантыОтчетовКлиент.ОткрытьФормуОтчета(ЭтотОбъект, Элементы.Список.ТекущиеДанные); + ИначеЕсли РежимРаботыФормы = "Список" Тогда + СтандартнаяОбработка = Ложь; + ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(ВыбраннаяСтрока); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьПоиск(Команда) + ОбновитьСодержимоеСпискаКлиент("ВыполнитьПоиск"); +КонецПроцедуры + +&НаКлиенте +Процедура Изменить(Команда) + ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Элементы.Список.ТекущаяСтрока); +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьВариантОтчетаВФайл(Команда) + ВариантОтчета = Элементы.Список.ТекущаяСтрока; + Если Не ЗначениеЗаполнено(ВариантОтчета) Тогда + Возврат; + КонецЕсли; + + ПараметрыСохранения = Новый Структура(ВариантыОтчетовКлиентСервер.СвойстваСохраненияВариантаОтчета()); + ПараметрыСохранения.ВариантОтчета = ВариантОтчета; + + ОткрытьФорму( + "ХранилищеНастроек.ХранилищеВариантовОтчетов.Форма.СохранениеВариантаОтчетаВФайл", + ПараметрыСохранения, + ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьВариантОтчетаИзФайла(Команда) + Ссылка = Элементы.Список.ТекущаяСтрока; + + Если ТипЗнч(Ссылка) <> Тип("СправочникСсылка.ВариантыОтчетов") Тогда + Возврат; + КонецЕсли; + + СвойстваВариантаОтчета = ВариантыОтчетовКлиент.СвойстваВариантаОтчетаОснования(); + СвойстваВариантаОтчета.Ссылка = Ссылка; + СвойстваВариантаОтчета.ПредставлениеВарианта = Строка(Ссылка); + + Обработчик = Новый ОписаниеОповещения( + "ОбновитьВариантОтчетаИзФайла", ВариантыОтчетовКлиент, СвойстваВариантаОтчета); + + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.Диалог.Фильтр = НСтр("ru = 'Архив ZIP (*.zip)|*.zip'"); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + + ФайловаяСистемаКлиент.ЗагрузитьФайл(Обработчик, ПараметрыЗагрузки); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОпределитьПоведениеВМобильномКлиенте() + Если Не ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Возврат; + КонецЕсли; + + Элементы.СтрокаПоиска.Ширина = 0; + Элементы.СтрокаПоиска.РастягиватьПоГоризонтали = Неопределено; + Элементы.СтрокаПоиска.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + Элементы.СтрокаПоиска.КнопкаВыпадающегоСписка = Ложь; + Элементы.ВыполнитьПоиск.Отображение = ОтображениеКнопки.Картинка; +КонецПроцедуры + +&НаСервере +Процедура ДеревоПодсистемЗаполнитьПолноеПредставление(НаборСтрок, ПредставлениеРодителя = "") + Для Каждого СтрокаДерева Из НаборСтрок Цикл + Если ПустаяСтрока(СтрокаДерева.Имя) Тогда + СтрокаДерева.ПолноеПредставление = ""; + ИначеЕсли ПустаяСтрока(ПредставлениеРодителя) Тогда + СтрокаДерева.ПолноеПредставление = СтрокаДерева.Представление; + Иначе + СтрокаДерева.ПолноеПредставление = ПредставлениеРодителя + "." + СтрокаДерева.Представление; + КонецЕсли; + ДеревоПодсистемЗаполнитьПолноеПредставление(СтрокаДерева.Строки, СтрокаДерева.ПолноеПредставление); + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Описание.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Описание"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; + + ЦветПоясняющегоТекста = Метаданные.ЭлементыСтиля.ПоясняющийТекст; + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветПоясняющегоТекста.Значение); + +КонецПроцедуры + +// Возвращает параметры перетаскивания. +// +// Параметры: +// ПараметрыПеретаскивания - ПараметрыПеретаскивания +// Строка - Число +// +// Возвращаемое значение: +// Неопределено +// Структура: +// * Варианты - Структура: +// ** Массив - Массив из ДанныеФормыЭлементДерева +// ** Всего - Число +// ** Представление - Строка +// * Действие - Строка +// * Приемник - см. СвойстваДанныхСтроки +// * Источник - см. СвойстваДанныхСтроки +// +&НаКлиенте +Функция ПараметрыРазмещения(ПараметрыПеретаскивания, Строка) + + КоличествоСтрок = ПараметрыПеретаскивания.Значение.Количество(); + Если КоличествоСтрок = 0 Тогда + Возврат Неопределено; + КонецЕсли; + + СтрокаПриемник = ДеревоПодсистем.НайтиПоИдентификатору(Строка); + Если СтрокаПриемник = Неопределено ИЛИ СтрокаПриемник.Приоритет = "" Тогда + Возврат Неопределено; + КонецЕсли; + + ПараметрыРазмещения = Новый Структура("Варианты, Действие, Приемник, Источник"); + ПараметрыРазмещения.Варианты = Новый Структура("Массив, Всего, Представление"); + ПараметрыРазмещения.Варианты.Массив = ПараметрыПеретаскивания.Значение; + ПараметрыРазмещения.Варианты.Всего = КоличествоСтрок; + + Приемник = СвойстваДанныхСтроки(); + ЗаполнитьЗначенияСвойств(Приемник, СтрокаПриемник); + Приемник.Идентификатор = СтрокаПриемник.ПолучитьИдентификатор(); + + ПараметрыРазмещения.Приемник = Приемник; + + СтрокаИсточник = Элементы.ДеревоПодсистем.ТекущиеДанные; + Источник = СвойстваДанныхСтроки(); + Если СтрокаИсточник = Неопределено ИЛИ СтрокаИсточник.Приоритет = "" Тогда + ПараметрыРазмещения.Действие = "Копирование"; + Иначе + ЗаполнитьЗначенияСвойств(Источник, СтрокаИсточник); + Источник.Идентификатор = СтрокаИсточник.ПолучитьИдентификатор(); + Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Копирование Тогда + ПараметрыРазмещения.Действие = "Копирование"; + Иначе + ПараметрыРазмещения.Действие = "Перемещение"; + КонецЕсли; + КонецЕсли; + + ПараметрыРазмещения.Источник = Источник; + + Если Источник.Ссылка = Приемник.Ссылка Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выбранные варианты отчетов уже в данном разделе.'")); + Возврат Неопределено; + КонецЕсли; + + Если ПараметрыРазмещения.Варианты.Всего = 1 Тогда + ПараметрыРазмещения.Варианты.Представление = Строка(ПараметрыРазмещения.Варианты.Массив[0]); + Иначе + ПараметрыРазмещения.Варианты.Представление = ""; + Для Каждого ВариантСсылка Из ПараметрыРазмещения.Варианты.Массив Цикл + ПараметрыРазмещения.Варианты.Представление = ПараметрыРазмещения.Варианты.Представление + + ?(ПараметрыРазмещения.Варианты.Представление = "", "", ", ") + + Строка(ВариантСсылка); + + Если СтрДлина(ПараметрыРазмещения.Варианты.Представление) > 23 Тогда + ПараметрыРазмещения.Варианты.Представление = Лев(ПараметрыРазмещения.Варианты.Представление, 20) + "..."; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Возврат ПараметрыРазмещения; + +КонецФункции + +// Конструктор свойств данных строки. +// +// Возвращаемое значение: +// Структура: +// * Ссылка - Неопределено +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * ПолноеПредставление - Строка +// * Идентификатор - Число +// +&НаКлиенте +Функция СвойстваДанныхСтроки() + + Свойства = Новый Структура; + Свойства.Вставить("Ссылка", Неопределено); + Свойства.Вставить("ПолноеПредставление", ""); + Свойства.Вставить("Идентификатор", 0); + + Возврат Свойства; + +КонецФункции + +// Обработчик завершения перетаскивания. +// +// Параметры: +// Ответ - КодВозвратаДиалога +// ПараметрыРазмещения - Структура: +// * Варианты - Структура: +// ** Массив - Массив из ДанныеФормыЭлементДерева +// ** Всего - Число +// ** Представление - Строка +// * Действие - Строка +// * Приемник - ДанныеФормыЭлементДерева +// * Источник - ДанныеФормыЭлементДерева +// +&НаКлиенте +Процедура ДеревоПодсистемПеретаскиваниеЗавершение(Ответ, ПараметрыРазмещения) Экспорт + Если Ответ <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + РезультатВыполнения = РазместитьВариантыВПодсистеме(ПараметрыРазмещения); + ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(); + + Если ПараметрыРазмещения.Варианты.Всего = РезультатВыполнения.Размещено Тогда + Если ПараметрыРазмещения.Варианты.Всего = 1 Тогда + Если ПараметрыРазмещения.Действие = "Перемещение" Тогда + Шаблон = НСтр("ru = 'Успешно перемещен в ""%1"".'"); + Иначе + Шаблон = НСтр("ru = 'Успешно размещен в ""%1"".'"); + КонецЕсли; + Текст = ПараметрыРазмещения.Варианты.Представление; + Ссылка = ПолучитьНавигационнуюСсылку(ПараметрыРазмещения.Варианты.Массив[0]); + Иначе + Если ПараметрыРазмещения.Действие = "Перемещение" Тогда + Шаблон = НСтр("ru = 'Успешно перемещены в ""%1"".'"); + Иначе + Шаблон = НСтр("ru = 'Успешно размещены в ""%1"".'"); + КонецЕсли; + Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Варианты отчетов (%1).'"), Формат(ПараметрыРазмещения.Варианты.Всего, "ЧН=0; ЧГ=0")); + Ссылка = Неопределено; + КонецЕсли; + Шаблон = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ПараметрыРазмещения.Приемник.ПолноеПредставление); + ПоказатьОповещениеПользователя(Шаблон, Ссылка, Текст); + Иначе + ТекстОшибок = ""; + Если Не ПустаяСтрока(РезультатВыполнения.НеМогутРазмещаться) Тогда + ТекстОшибок = ?(ТекстОшибок = "", "", ТекстОшибок + Символы.ПС + Символы.ПС) + + НСтр("ru = 'Не могут размещаться в командном интерфейсе:'") + + Символы.ПС + + РезультатВыполнения.НеМогутРазмещаться; + КонецЕсли; + Если Не ПустаяСтрока(РезультатВыполнения.УжеРазмещены) Тогда + ТекстОшибок = ?(ТекстОшибок = "", "", ТекстОшибок + Символы.ПС + Символы.ПС) + + НСтр("ru = 'Уже размещены в этом разделе:'") + + Символы.ПС + + РезультатВыполнения.УжеРазмещены; + КонецЕсли; + + Если ПараметрыРазмещения.Действие = "Перемещение" Тогда + Шаблон = НСтр("ru = 'Перемещено вариантов отчетов: %1 из %2. + |Подробности: + |%3'"); + Иначе + Шаблон = НСтр("ru = 'Размещено вариантов отчетов: %1 из %2. + |Подробности: + |%3'"); + КонецЕсли; + + СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, РезультатВыполнения.Размещено, + ПараметрыРазмещения.Варианты.Всего, ТекстОшибок), РежимДиалогаВопрос.ОК); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьСвойствоСпискаПоПараметруФормы(Ключ) + + Если Параметры.Свойство(Ключ) И ЗначениеЗаполнено(Параметры[Ключ]) Тогда + Элементы.Список[Ключ] = Параметры[Ключ]; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСодержимоеСписка(Знач Событие = "") + ИзменилисьПерсональныеНастройки = Ложь; + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + СписокВыбора = Элементы.СтрокаПоиска.СписокВыбора; + ЭлементСписка = СписокВыбора.НайтиПоЗначению(СтрокаПоиска); + Если ЭлементСписка = Неопределено Тогда + СписокВыбора.Вставить(0, СтрокаПоиска); + ИзменилисьПерсональныеНастройки = Истина; + Если СписокВыбора.Количество() > 10 Тогда + СписокВыбора.Удалить(10); + КонецЕсли; + Иначе + Индекс = СписокВыбора.Индекс(ЭлементСписка); + Если Индекс <> 0 Тогда + СписокВыбора.Сдвинуть(Индекс, -Индекс); + ИзменилисьПерсональныеНастройки = Истина; + КонецЕсли; + КонецЕсли; + ТекущийЭлемент = Элементы.СтрокаПоиска; + КонецЕсли; + + Если Событие = "СтрокаПоискаПриИзменении" И ИзменилисьПерсональныеНастройки Тогда + ПерсональныеНастройкиСписка = Новый Структура("СтрокаПоискаСписокВыбора"); + ПерсональныеНастройкиСписка.СтрокаПоискаСписокВыбора = Элементы.СтрокаПоиска.СписокВыбора.ВыгрузитьЗначения(); + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( + ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(), + "Справочник.ВариантыОтчетов.ФормаСписка", + ПерсональныеНастройкиСписка); + КонецЕсли; + + ДеревоПодсистемТекущаяСтрока = Элементы.ДеревоПодсистем.ТекущаяСтрока; + + СтрокаДерева = ДеревоПодсистем.НайтиПоИдентификатору(ДеревоПодсистемТекущаяСтрока); + Если СтрокаДерева = Неопределено Тогда + Возврат; + КонецЕсли; + + ВсеПодсистемы = Не ЗначениеЗаполнено(СтрокаДерева.ПолноеИмя); + + ПараметрыПоиска = Новый Структура; + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + ПараметрыПоиска.Вставить("СтрокаПоиска", СтрокаПоиска); + Элементы.Список.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; + Иначе + Элементы.Список.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать; + КонецЕсли; + Если Не ВсеПодсистемы Или ЗначениеЗаполнено(СтрокаПоиска) Тогда + ПодсистемыОтчетов = Новый Массив; + Если Не ВсеПодсистемы Тогда + ПодсистемыОтчетов.Добавить(СтрокаДерева.Ссылка); + КонецЕсли; + Если ВсеПодсистемы Или ВключаяПодчиненные Тогда + ДобавитьРекурсивно(ПодсистемыОтчетов, СтрокаДерева.ПолучитьЭлементы()); + КонецЕсли; + ПараметрыПоиска.Вставить("Подсистемы", ПодсистемыОтчетов); + КонецЕсли; + Если ЗначениеЗаполнено(ОтборТипОтчета) Тогда + ТипыОтчетов = Новый Массив; + Если ОтборТипОтчета = 1 Тогда + ТипыОтчетов.Добавить(Перечисления.ТипыОтчетов.Внутренний); + ТипыОтчетов.Добавить(Перечисления.ТипыОтчетов.Расширение); + ТипыОтчетов.Добавить(Перечисления.ТипыОтчетов.Дополнительный); + Иначе + ТипыОтчетов.Добавить(ОтборТипОтчета); + КонецЕсли; + ПараметрыПоиска.Вставить("ТипыОтчетов", ТипыОтчетов); + КонецЕсли; + + ЕстьОтборПоВариантам = ПараметрыПоиска.Количество() > 0; + ПараметрыПоиска.Вставить("ПометкаУдаления", Ложь); + ПараметрыПоиска.Вставить("ЖесткийОтборПоПодсистемам", Не ВсеПодсистемы); + + РезультатПоиска = ВариантыОтчетов.НайтиВариантыОтчетов(ПараметрыПоиска); + Список.Параметры.УстановитьЗначениеПараметра("ЕстьОтборПоВариантам", ЕстьОтборПоВариантам); + Список.Параметры.УстановитьЗначениеПараметра("ВариантыПользователя", РезультатПоиска.Ссылки); + +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоПодсистемОбработчикАктивизацииСтроки() + Если ДеревоПодсистемТекущаяСтрока <> Элементы.ДеревоПодсистем.ТекущаяСтрока Тогда + ОбновитьСодержимоеСписка(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗаголовокДереваПодсистем() + Элементы.ГруппаРазделы.Заголовок = ?(Элементы.ДеревоПодсистем.ТекущиеДанные = Неопределено, + НСтр("ru = 'Все разделы'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()), + Элементы.ДеревоПодсистем.ТекущиеДанные.Представление); +КонецПроцедуры + +&НаСервере +Процедура ДобавитьРекурсивно(МассивПодсистем, КоллекцияСтрокДерева) + Для Каждого СтрокаДерева Из КоллекцияСтрокДерева Цикл + МассивПодсистем.Добавить(СтрокаДерева.Ссылка); + ДобавитьРекурсивно(МассивПодсистем, СтрокаДерева.ПолучитьЭлементы()); + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ДеревоПодсистемЗаписатьСвойствоВМассив(МассивСтрокДерева, ИмяСвойства, МассивСсылок) + Для Каждого СтрокаДерева Из МассивСтрокДерева Цикл + МассивСсылок.Добавить(СтрокаДерева[ИмяСвойства]); + ДеревоПодсистемЗаписатьСвойствоВМассив(СтрокаДерева.ПолучитьЭлементы(), ИмяСвойства, МассивСсылок); + КонецЦикла; +КонецПроцедуры + +// Записывает данные о размещении варианта отчета. +// +// Параметры: +// ПараметрыРазмещения - см. ПараметрыРазмещения +// +// Возвращаемое значение: +// Структура: +// * Размещено - Число +// * УжеРазмещены - Строка +// * НеМогутРазмещаться - Строка +// +&НаСервере +Функция РазместитьВариантыВПодсистеме(ПараметрыРазмещения) + ИсключаемыеПодсистемы = Новый Массив; + Если ПараметрыРазмещения.Действие = "Перемещение" Тогда + Источник = ПараметрыРазмещения.Источник; // см. СвойстваДанныхСтроки + СтрокаИсточник = ДеревоПодсистем.НайтиПоИдентификатору(Источник.Идентификатор); + ИсключаемыеПодсистемы.Добавить(СтрокаИсточник.Ссылка); + ДеревоПодсистемЗаписатьСвойствоВМассив(СтрокаИсточник.ПолучитьЭлементы(), "Ссылка", ИсключаемыеПодсистемы); + КонецЕсли; + + Размещено = 0; + УжеРазмещены = ""; + НеМогутРазмещаться = ""; + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЗаблокироватьВариантыОтчетовПередРазмещением(Блокировка, ПараметрыРазмещения.Варианты.Массив); + Блокировка.Заблокировать(); + + Для Каждого ВариантСсылка Из ПараметрыРазмещения.Варианты.Массив Цикл + Если ВариантСсылка.ТипОтчета = Перечисления.ТипыОтчетов.Внешний Тогда + НеМогутРазмещаться = ?(НеМогутРазмещаться = "", "", НеМогутРазмещаться + Символы.ПС) + + " " + + Строка(ВариантСсылка) + + " (" + + НСтр("ru = 'внешний'") + + ")"; + Продолжить; + ИначеЕсли ВариантСсылка.ПометкаУдаления Тогда + НеМогутРазмещаться = ?(НеМогутРазмещаться = "", "", НеМогутРазмещаться + Символы.ПС) + + " " + + Строка(ВариантСсылка) + + " (" + + НСтр("ru = 'помечен на удаление'") + + ")"; + Продолжить; + КонецЕсли; + + ЕстьИзменения = Ложь; + ВариантОбъект = ВариантСсылка.ПолучитьОбъект(); // СправочникОбъект.ВариантыОтчетов - + + Приемник = ПараметрыРазмещения.Приемник; // см. СвойстваДанныхСтроки + СтрокаПриемник = ВариантОбъект.Размещение.Найти(Приемник.Ссылка, "Подсистема"); + Если СтрокаПриемник = Неопределено Тогда + СтрокаПриемник = ВариантОбъект.Размещение.Добавить(); + СтрокаПриемник.Подсистема = Приемник.Ссылка; + КонецЕсли; + + // Удаление строки из исходной подсистемы. + // Важно помнить что исключение предопределенного варианта из подсистемы выполняется путем выключения флажка + // подсистемы. + Если ПараметрыРазмещения.Действие = "Перемещение" Тогда + Для Каждого ИсключаемаяПодсистема Из ИсключаемыеПодсистемы Цикл + СтрокаИсточник = ВариантОбъект.Размещение.Найти(ИсключаемаяПодсистема, "Подсистема"); + Если СтрокаИсточник <> Неопределено Тогда + Если СтрокаИсточник.Использование Тогда + СтрокаИсточник.Использование = Ложь; + Если Не ЕстьИзменения Тогда + ЗаполнитьЗначенияСвойств(СтрокаПриемник, СтрокаИсточник, "Важный, СмТакже"); + ЕстьИзменения = Истина; + КонецЕсли; + КонецЕсли; + СтрокаИсточник.Важный = Ложь; + СтрокаИсточник.СмТакже = Ложь; + ИначеЕсли Не ВариантОбъект.Пользовательский Тогда + СтрокаИсточник = ВариантОбъект.Размещение.Добавить(); + СтрокаИсточник.Подсистема = ИсключаемаяПодсистема; + ЕстьИзменения = Истина; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + // Регистрация строки в подсистеме-приемнике. + Если Не СтрокаПриемник.Использование Тогда + ЕстьИзменения = Истина; + СтрокаПриемник.Использование = Истина; + КонецЕсли; + + Если ЕстьИзменения Тогда + Размещено = Размещено + 1; + ВариантОбъект.Записать(); + Иначе + УжеРазмещены = ?(УжеРазмещены = "", "", УжеРазмещены + Символы.ПС) + + " " + + Строка(ВариантСсылка); + КонецЕсли; + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если ПараметрыРазмещения.Действие = "Перемещение" И Размещено > 0 Тогда + Элементы.ДеревоПодсистем.ТекущаяСтрока = Приемник.Идентификатор; + ОбновитьСодержимоеСписка(); + КонецЕсли; + + Возврат Новый Структура("Размещено, УжеРазмещены, НеМогутРазмещаться", Размещено, УжеРазмещены, НеМогутРазмещаться); +КонецФункции + +&НаСервере +Процедура ЗаблокироватьВариантыОтчетовПередРазмещением(Блокировка, ВариантыОтчетов) + + ИсточникДанных = Новый ТаблицаЗначений; + ИсточникДанных.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ВариантыОтчетов")); + + Для Каждого ВариантОтчета Из ВариантыОтчетов Цикл + Строка = ИсточникДанных.Добавить(); + Строка.Ссылка = ВариантОтчета; + КонецЦикла; + + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВариантыОтчетов"); + ЭлементБлокировки.ИсточникДанных = ИсточникДанных; + ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Ссылка", "Ссылка"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьСодержимоеСпискаКлиент(Событие) + Замер = НачатьЗамер(Событие); + ОбновитьСодержимоеСписка(Событие); + ЗакончитьЗамер(Замер); +КонецПроцедуры + +&НаКлиенте +Функция НачатьЗамер(Событие) + Если Не ПараметрыКлиента.ВыполнятьЗамеры Тогда + Возврат Неопределено; + КонецЕсли; + + Если ЗначениеЗаполнено(СтрокаПоиска) И (Событие = "СтрокаПоискаПриИзменении" Или Событие = "ВыполнитьПоиск") Тогда + Имя = "СписокОтчетов.Поиск"; + Иначе + Возврат Неопределено; + КонецЕсли; + + Комментарий = ПараметрыКлиента.ПрефиксЗамеров; + + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + Комментарий = Комментарий + + "; " + НСтр("ru = 'Поиск:'") + " " + Строка(СтрокаПоиска) + + "; " + НСтр("ru = 'Включая подчиненные:'") + " " + Строка(ВключаяПодчиненные); + Иначе + Комментарий = Комментарий + "; " + НСтр("ru = 'Без поиска'"); + КонецЕсли; + + Замер = Новый Структура("МодульОценкаПроизводительностиКлиент, Идентификатор"); + Замер.МодульОценкаПроизводительностиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОценкаПроизводительностиКлиент"); + Замер.Идентификатор = Замер.МодульОценкаПроизводительностиКлиент.ЗамерВремени(Имя, Ложь, Ложь); + Замер.МодульОценкаПроизводительностиКлиент.УстановитьКомментарийЗамера(Замер.Идентификатор, Комментарий); + Возврат Замер; +КонецФункции + +&НаКлиенте +Процедура ЗакончитьЗамер(Замер) + Если Замер <> Неопределено Тогда + Замер.МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(Замер.Идентификатор); + КонецЕсли; +КонецПроцедуры + +// Параметры: +// ЭлементыДерева - Массив из ДанныеФормыЭлементДерева: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * Представление - Строка +// * Имя - Строка +// * ПолноеИмя - Строка +// * Приоритет - Строка +// * ПолноеПредставление - Строка +// +// Возвращаемое значение: +// ДанныеФормыЭлементДерева: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * Представление - Строка +// * Имя - Строка +// * ПолноеИмя - Строка +// * Приоритет - Строка +// * ПолноеПредставление - Строка +// +&НаСервере +Функция ЭлементДереваПодсистем(ЭлементыДерева) + + Возврат ЭлементыДерева[0]; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..c63b0c80 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,3300 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 161 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Описание + 3 + true + true + + true + + + + Объект.Описание + + + Left + + ОписаниеExtendedTooltip + 162 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ОписаниеНачалоВыбора + + true + 2 + true + true + false + true + true + false + true + false + false + false + true + true + true + + + + Автор + 115 + true + true + + true + + + + Объект.Автор + + + + АвторExtendedTooltip + 167 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 116 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Страницы + 269 + + Пользователи + 271 + + ПользователиОпции + 307 + + Доступен + 109 + true + true + + true + + + + Доступен + + + Left + + OnChange + ДоступенПриИзменении + + + ДоступенExtendedTooltip + 164 + true + true + + true + + Label + true + true + + Left + + + + ДоступенКонтекстноеМеню + 110 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Только автору + + + ТолькоДляАвтора + + + + + ru + Указанным пользователям + + + УказаннымПользователям + + + + + true + true + + true + + + <key>ru</key> + <value>Пользователи - опции</value> + + + ПользователиОпцииРасширеннаяПодсказка + 308 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ПользователиВарианта + 275 + + <key>ru</key> + <value>Пользователи варианта</value> + + true + true + + true + + + ПользователиВарианта + + None + Add + Change + Copy + CopyToClipboard + EndEdit + Pickup + + ПользователиВариантаПометка + 291 + true + true + + true + + + + ПользователиВарианта.Check + + + + OnChange + ПользователиВариантаПометкаПриИзменении + + + ПользователиВариантаПометкаРасширеннаяПодсказка + 293 + true + true + + true + + Label + true + true + + Left + + + + ПользователиВариантаПометкаКонтекстноеМеню + 292 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ПользователиВариантаЗначение + 288 + true + true + + true + + + + ПользователиВарианта.Value + + + + ПользователиВариантаЗначениеРасширеннаяПодсказка + 290 + true + true + + true + + Label + true + true + + Left + + + + ПользователиВариантаЗначениеКонтекстноеМеню + 289 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ПользователиВариантаКоманднаяПанель + 277 + + ПользователиВариантаГруппаПодобрать + 294 + + ПользователиВариантаПодобратьПользователейГруппы + 296 + + <key>ru</key> + <value>Пользователей (группы)</value> + + true + true + + true + + + ПользователиВариантаПодобратьПользователейГруппыРасширеннаяПодсказка + 297 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодобратьПользователей + Auto + true + true + UserCmds + Auto + + + ПользователиВариантаПодобратьГруппыВнешнихПользователей + 298 + + <key>ru</key> + <value>Группы внешних пользователей</value> + + true + true + + true + + + ПользователиВариантаПодобратьГруппыВнешнихПользователейРасширеннаяПодсказка + 299 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодобратьГруппыВнешнихПользователей + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Подобрать</value> + + + ПользователиВариантаГруппаПодобратьРасширеннаяПодсказка + 295 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ПользователиВариантаПодобратьПользователей + 300 + + <key>ru</key> + <value>Подобрать</value> + + true + true + + true + + + ПользователиВариантаПодобратьПользователейРасширеннаяПодсказка + 301 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодобратьПользователей + Auto + true + true + UserCmds + Auto + + + ПользователиВариантаУдалить + 302 + true + true + + true + + + ПользователиВариантаУдалитьРасширеннаяПодсказка + 303 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиВарианта.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Left + + + BeforeAddRow + ПользователиВариантаПередНачаломДобавления + + + BeforeDeleteRow + ПользователиВариантаПередУдалением + + + ChoiceProcessing + ПользователиВариантаОбработкаВыбора + + + OnChange + ПользователиВариантаПриИзменении + + + true + true + + true + + ПользователиВариантаСтрокаПоиска + 279 + + ПользователиВариантаСтрокаПоискаРасширеннаяПодсказка + 281 + true + true + + true + + Label + true + true + + Left + + + + ПользователиВариантаСтрокаПоискаКонтекстноеМеню + 280 + true + true + + true + + true + + + true + + + + true + true + + true + + ПользователиВариантаСостояниеПросмотра + 282 + + ПользователиВариантаСостояниеПросмотраРасширеннаяПодсказка + 284 + true + true + + true + + Label + true + true + + Left + + + + ПользователиВариантаСостояниеПросмотраКонтекстноеМеню + 283 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПользователиВариантаУправлениеПоиском + 285 + + ПользователиВариантаУправлениеПоискомРасширеннаяПодсказка + 287 + true + true + + true + + Label + true + true + + Left + + + + ПользователиВариантаУправлениеПоискомКонтекстноеМеню + 286 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПользователиВариантаРасширеннаяПодсказка + 278 + true + true + + true + + Label + true + true + + Left + + + + ПользователиВариантаКонтекстноеМеню + 276 + true + true + + true + + true + + true + true + true + true + true + MultiRow + Row + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + AsFileRef + + ПользователиВарианта.Picture + + + + УведомитьПользователей + 304 + true + true + + true + + + + УведомитьПользователей + + + Right + + ru + Выбранным пользователям в чат будет выведено уведомление о том, что этот вариант отобразится на их панели отчетов. + + + УведомитьПользователейРасширеннаяПодсказка + 306 + true + true + + true + + Label + true + true + + Left + + + + УведомитьПользователейКонтекстноеМеню + 305 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Пользователи</value> + + + ПользователиРасширеннаяПодсказка + 272 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Разделы + 273 + + ДеревоПодсистем + 80 + + <key>ru</key> + <value>Дерево подсистем</value> + + true + true + + true + + + ДеревоПодсистем + + None + Add + Copy + Delete + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + ГруппаКолонок + 83 + VeryHigh + + ДеревоПодсистемИспользование + 104 + VeryHigh + true + true + + true + + + + ДеревоПодсистем.Использование + + + None + + OnChange + ДеревоПодсистемИспользованиеПриИзменении + + + ДеревоПодсистемИспользованиеExtendedTooltip + 171 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемИспользованиеКонтекстноеМеню + 105 + true + true + + true + + true + + CheckBoxField + Left + EnterOnInput + true + Left + true + + + + ДеревоПодсистемПредставление + 86 + VeryHigh + true + true + + true + + + + ДеревоПодсистем.Представление + + + + ДеревоПодсистемПредставлениеExtendedTooltip + 172 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемПредставлениеКонтекстноеМеню + 87 + true + true + + true + + true + + InputField + true + Left + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Колонок</value> + + + ГруппаКолонокExtendedTooltip + 170 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ДеревоПодсистемВажность + 96 + true + true + + true + + + + ДеревоПодсистем.Важность + + + + OnChange + ДеревоПодсистемВажностьПриИзменении + + + ДеревоПодсистемВажностьExtendedTooltip + 173 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемВажностьКонтекстноеМеню + 97 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 8 + true + true + true + false + true + true + true + true + + + + ДеревоПодсистемКоманднаяПанель + 82 + true + true + + true + + Left + + + true + true + + true + + ДеревоПодсистемSearchString + 206 + + ДеревоПодсистемSearchStringExtendedTooltip + 208 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемSearchStringContextMenu + 207 + true + true + + true + + true + + + true + + + + true + true + + true + + ДеревоПодсистемViewStatus + 209 + + ДеревоПодсистемViewStatusExtendedTooltip + 211 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемViewStatusContextMenu + 210 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДеревоПодсистемSearchControl + 212 + + ДеревоПодсистемSearchControlExtendedTooltip + 214 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемSearchControlContextMenu + 213 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДеревоПодсистемExtendedTooltip + 169 + true + true + + true + + Label + true + true + + Left + + + + ДеревоПодсистемКонтекстноеМеню + 81 + true + true + + true + + true + + Tree + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + ExpandAllLevels + true + true + SelectionPresentationAndChoice +
+ true + true + + true + + + <key>ru</key> + <value>Разделы</value> + + + РазделыРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 270 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
+ + Родитель + 224 + true + true + + + + Объект.Parent + + + + РодительРасширеннаяПодсказка + 226 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 225 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ТехническаяИнформация + 135 + + Отчет + 136 + true + true + + true + + + + Объект.Отчет + + + + ОтчетExtendedTooltip + 175 + true + true + + true + + Label + true + true + + Left + + + + ОтчетКонтекстноеМеню + 137 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + КлючВарианта + 192 + true + true + + true + + + + Объект.КлючВарианта + + + + КлючВариантаРасширеннаяПодсказка + 194 + true + true + + true + + Label + true + true + + Left + + + + КлючВариантаКонтекстноеМеню + 193 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ПредопределенныйВариант + 120 + true + true + + true + + + + Объект.ПредопределенныйВариант + + + + ПредопределенныйВариантExtendedTooltip + 176 + true + true + + true + + Label + true + true + + Left + + + + ПредопределенныйВариантКонтекстноеМеню + 121 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + Размещение + 122 + + <key>ru</key> + <value>Данные по размещению (без учета настроек предопределенного варианта)</value> + + true + + true + + + Объект.Размещение + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + SelectAll + SortListAsc + SortListDesc + + РазмещениеИспользование + 127 + true + true + + true + + + + Объект.Размещение.Использование + + + + РазмещениеИспользованиеExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеИспользованиеКонтекстноеМеню + 128 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + РазмещениеПодсистема + 129 + true + true + + true + + + + Объект.Размещение.Подсистема + + + + РазмещениеПодсистемаРасширеннаяПодсказка + 179 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеПодсистемаКонтекстноеМеню + 130 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + РазмещениеВажный + 131 + true + true + + true + + + + Объект.Размещение.Важный + + + + РазмещениеВажныйExtendedTooltip + 180 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеВажныйКонтекстноеМеню + 132 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + РазмещениеСмТакже + 133 + true + true + + true + + + + Объект.Размещение.СмТакже + + + + РазмещениеСмТакжеExtendedTooltip + 181 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеСмТакжеКонтекстноеМеню + 134 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + РазмещениеКоманднаяПанель + 124 + true + true + + true + + Left + true + + + true + true + + true + + РазмещениеSearchString + 215 + + РазмещениеSearchStringExtendedTooltip + 217 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеSearchStringContextMenu + 216 + true + true + + true + + true + + + true + + + + true + true + + true + + РазмещениеViewStatus + 218 + + РазмещениеViewStatusExtendedTooltip + 220 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеViewStatusContextMenu + 219 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РазмещениеSearchControl + 221 + + РазмещениеSearchControlExtendedTooltip + 223 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеSearchControlContextMenu + 222 + true + true + + true + + true + + SearchControlAddition + + true + + + + РазмещениеExtendedTooltip + 177 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеКонтекстноеМеню + 123 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ + НаименованияПолейИПараметров + 190 + + НаименованияПолей + 182 + true + true + + true + + + + Объект.НаименованияПолей + + + Top + + НаименованияПолейРасширеннаяПодсказка + 184 + true + true + + true + + Label + true + true + + Left + + + + НаименованияПолейКонтекстноеМеню + 183 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + 3 + true + true + true + true + true + true + + + + НаименованияПараметровИОтборов + 185 + true + true + + true + + + + Объект.НаименованияПараметровИОтборов + + + Top + + НаименованияПараметровИОтборовРасширеннаяПодсказка + 187 + true + true + + true + + Label + true + true + + Left + + + + НаименованияПараметровИОтборовКонтекстноеМеню + 186 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + 3 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Наименования полей и параметров</value> + + + НаименованияПолейИПараметровРасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Представления + 244 + + <key>ru</key> + <value>Представления</value> + + true + true + + true + + + Объект.Представления + + None + + ПредставленияНомерСтроки + 257 + true + true + + true + + + + Объект.Представления.LineNumber + + + + ПредставленияНомерСтрокиРасширеннаяПодсказка + 259 + true + true + + true + + Label + true + true + + Left + + + + ПредставленияНомерСтрокиКонтекстноеМеню + 258 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + ПредставленияКодЯзыка + 260 + true + true + + true + + + + Объект.Представления.КодЯзыка + + + + ПредставленияКодЯзыкаРасширеннаяПодсказка + 262 + true + true + + true + + Label + true + true + + Left + + + + ПредставленияКодЯзыкаКонтекстноеМеню + 261 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ПредставленияНаименование + 263 + true + true + + true + + + + Объект.Представления.Наименование + + + + ПредставленияНаименованиеРасширеннаяПодсказка + 265 + true + true + + true + + Label + true + true + + Left + + + + ПредставленияНаименованиеКонтекстноеМеню + 264 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ПредставленияОписание + 266 + true + true + + true + + + + Объект.Представления.Описание + + + + ПредставленияОписаниеРасширеннаяПодсказка + 268 + true + true + + true + + Label + true + true + + Left + + + + ПредставленияОписаниеКонтекстноеМеню + 267 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ПредставленияКоманднаяПанель + 246 + true + true + + true + + Left + true + + + true + true + + true + + ПредставленияСтрокаПоиска + 248 + + ПредставленияСтрокаПоискаРасширеннаяПодсказка + 250 + true + true + + true + + Label + true + true + + Left + + + + ПредставленияСтрокаПоискаКонтекстноеМеню + 249 + true + true + + true + + true + + + true + + + + true + true + + true + + ПредставленияСостояниеПросмотра + 251 + + ПредставленияСостояниеПросмотраРасширеннаяПодсказка + 253 + true + true + + true + + Label + true + true + + Left + + + + ПредставленияСостояниеПросмотраКонтекстноеМеню + 252 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПредставленияУправлениеПоиском + 254 + + ПредставленияУправлениеПоискомРасширеннаяПодсказка + 256 + true + true + + true + + Label + true + true + + Left + + + + ПредставленияУправлениеПоискомКонтекстноеМеню + 255 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПредставленияРасширеннаяПодсказка + 247 + true + true + + true + + Label + true + true + + Left + + + + ПредставленияКонтекстноеМеню + 245 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + 3 + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ + ИнтерактивнаяПометкаУдаления + 241 + true + true + + true + + + + Объект.ИнтерактивнаяПометкаУдаления + + + Right + + ИнтерактивнаяПометкаУдаленияРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + + ИнтерактивнаяПометкаУдаленияКонтекстноеМеню + 242 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + + <key>ru</key> + <value>Техническая информация</value> + + true + true + + ТехническаяИнформацияExtendedTooltip + 174 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + true + Picture + NormalSeparation + true + true + true + Auto + Auto + +
+ + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 144 + true + true + + true + + + ФормаЗаписатьИЗакрытьExtendedTooltip + 150 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.WriteAndClose + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 145 + true + true + + true + + + ФормаЗаписатьExtendedTooltip + 151 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Auto + true + true + UserCmds + Auto + + + ФормаОткрыть + 143 + true + true + + true + + + Объект.Ref + + + ФормаОткрытьExtendedTooltip + 152 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.Открыть + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьПометкуУдаления + 147 + true + true + + true + + + ФормаУстановитьПометкуУдаленияExtendedTooltip + 153 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + СбросНастроек + 139 + + ФормаСброситьНастройкиРазмещения + 119 + true + true + + true + + + Объект.Ref + + + ФормаСброситьНастройкиРазмещенияExtendedTooltip + 155 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.СброситьНастройкиРазмещения + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСброситьНастройкиПользователей + 79 + true + true + + true + + + Объект.Ref + + + ФормаСброситьНастройкиПользователейExtendedTooltip + 156 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.СброситьНастройкиПользователей + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаРазместитьВРазделах + 138 + true + + true + + + Объект.Ref + + + ФормаРазместитьВРазделахExtendedTooltip + 157 + true + true + + true + + Label + true + true + + Left + + + Catalog.ВариантыОтчетов.Command.РазместитьВРазделах + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Сброс настроек</value> + + + СбросНастроекExtendedTooltip + 154 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаПеречитать + 148 + true + true + + true + + + ФормаПеречитатьExtendedTooltip + 158 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Reread + Auto + true + true + UserCmds + Auto + + + ФормаИзменитьФорму + 149 + true + true + + true + + + ФормаИзменитьФормуExtendedTooltip + 159 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 146 + true + true + + true + + + ФормаСправкаExtendedTooltip + 160 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Delete + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ВариантыОтчетов + + + true + + + true + +
true
+ true +
+ + ПолныеПраваНаВарианты + 4 + + Boolean + + + true + + + true + + + + ДеревоПодсистем + + <key>ru</key> + <value>Размещение в панелях отчетов</value> + + 2 + + ValueTree + + + true + + + true + + true + + Ссылка + 1 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Раздел, Группа</value> + + 2 + + String + + + + true + + + true + + + + Имя + 3 + + String + + 100 + + + + true + + + true + + + + ПолноеИмя + 4 + + String + + + + true + + + true + + + + Приоритет + 5 + + String + + 100 + + + + true + + + true + + + + Использование + + <key>ru</key> + <value>Использование</value> + + 6 + + Number + + 1 + + + + true + + + true + + + + Важность + + <key>ru</key> + <value>Важность</value> + + 9 + + String + + 15 + + + + true + + + true + + + + Модифицированность + 10 + + Boolean + + + true + + + true + + + + + ИмяОтчета + 6 + + String + + 150 + + + + true + + + true + + + + ЭтоВнешний + 7 + + Boolean + + + true + + + true + + + + Доступен + + <key>ru</key> + <value>Доступен</value> + + 8 + + String + + + + true + + + true + + true + + + ПараметрыОткрытияФормыОтчета + 11 + + + true + + + true + + + + ДоступенВсемПользователям + 12 + + Boolean + + + true + + + true + + + + ЭтоПредопределенный + 15 + + Boolean + + + true + + + true + + + + ПользователиВарианта + + <key>ru</key> + <value>Пользователи варианта</value> + + 3 + + ValueList + + + true + + + true + + true + + + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + + + + ИспользоватьГруппыПользователей + 5 + + Boolean + + + true + + + true + + + + ИспользоватьВнешнихПользователей + 9 + + Boolean + + + true + + + true + + + + УведомитьПользователей + + <key>ru</key> + <value>Уведомить в чате об этом варианте отчета</value> + + 10 + + Boolean + + + true + + + true + + + + ВопросОУведомленииПользователейЗадан + 13 + + Boolean + + + true + + + true + + + + ПодобратьГруппыВнешнихПользователей + + <key>ru</key> + <value>Подобрать группы внешних пользователей</value> + + 1 + + true + + + + ПодобратьГруппыВнешнихПользователей + + + Auto + + + ПодобратьПользователей + + <key>ru</key> + <value>Подобрать пользователей</value> + + 2 + + true + + + + ПодобратьПользователей + + + Auto + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..ee70e7b5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,36 @@ + +

Предназначен для хранения вариантов отчетов и настройки их размещения в командном интерфейсе.

+

Сведения о варианте отчета

+
  • Заполните Наименование варианта отчета, которое выводится в списках программы и в панели отчетов. +
  • +
  • Напишите Описание - подробную информацию о варианте отчета, которая выводится как подсказка в панелях отчетов и в списках вариантов отчетов. +
  • +
  • Укажите Автора отчета, выбрав из списка пользователей. Например, так можно закрепить варианты отчетов за конкретными сотрудниками, назначив из ответственными за актуальность варианта отчета. 

Доступность

+
На вкладке Пользователи с помощью переключателя Доступен можно указать, кому будет виден данный вариант отчета:
+
+
  • Только автору;
  • +
  • Указанным пользователям.
+
С помощью кнопки Подобрать можно выбрать из списка пользователей, которым будет доступен отчет. 
+
Для указанных пользователей отчет будет отображаться в панели отчетов, подменю и окне выбора варианта отчета. Остальным пользователям, имеющим права на отчет, он будет доступен из списка Все отчеты, а также в режиме настройки панели отчетов.
+
+

+

Размещение в панелях отчетов

+

Размещение вариантов отчетов на вкладке Разделы могут менять администраторы вариантов отчетов и авторы.

+
  • Включите один или несколько флажков в колонке Раздел, группа для размещения варианта отчетов в разделах или группах программы. При размещении в разделе вариант отчета будет выводиться в верхней части панели отчетов раздела, без размещения в группах. +
  • +
  • +
    В колонке Важность выберите способ выделения варианта отчета в группе:
    +
    • +
      Важный – вариант отчета будет выделен жирным шрифтом.
      +
    • +
    • +
      См. также – вариант отчета будет выведен в отдельной группе внизу панели отчетов.

+

Формирование отчета

+
  • Нажмите Открыть, укажите необходимые для отчета параметры, затем нажмите Сформировать.

Сброс настроек

+
Сброс настроек может быть необходим, если они ошибочны и затрудняют работу с отчетом. Выполните команды:
+

+
  • Еще - Сбросить настройки размещения - сбросить настройки размещения по данному варианту отчета;
  • +
  • Еще - Сбросить настройки пользователей - сбросить пользовательские настройки в панелях отчетов по данному варианту отчета.

+

См. также:

+
\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..44005db2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,400 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + Если Параметры.Свойство("ПараметрыОткрытияФормыОтчета", ПараметрыОткрытияФормыОтчета) Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект); + + Доступен = ?(Объект.ТолькоДляАвтора, "ТолькоДляАвтора", "УказаннымПользователям"); + + ПолныеПраваНаВарианты = ВариантыОтчетов.ПолныеПраваНаВарианты(); + ПравоНаЭтотВариант = ПолныеПраваНаВарианты Или Объект.Автор = Пользователи.АвторизованныйПользователь(); + Если Не ПравоНаЭтотВариант Тогда + ТолькоПросмотр = Истина; + Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина; + КонецЕсли; + + Если Объект.ПометкаУдаления Тогда + Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина; + КонецЕсли; + + Если Не Объект.Пользовательский Тогда + Элементы.Наименование.ТолькоПросмотр = Истина; + Элементы.Доступен.ТолькоПросмотр = Истина; + Элементы.Автор.ТолькоПросмотр = Истина; + Элементы.Автор.АвтоОтметкаНезаполненного = Ложь; + КонецЕсли; + + ЭтоВнешний = (Объект.ТипОтчета = Перечисления.ТипыОтчетов.Внешний); + Если ЭтоВнешний Тогда + Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина; + КонецЕсли; + + Элементы.Доступен.ТолькоПросмотр = Не ПолныеПраваНаВарианты; + Элементы.Автор.ТолькоПросмотр = Не ПолныеПраваНаВарианты; + Элементы.ТехническаяИнформация.Видимость = ПолныеПраваНаВарианты; + + // Заполнение имени отчета для команды "Просмотр". + Если Объект.ТипОтчета = Перечисления.ТипыОтчетов.Внутренний + Или Объект.ТипОтчета = Перечисления.ТипыОтчетов.Расширение Тогда + ИмяОтчета = Объект.Отчет.Имя; + ИначеЕсли Объект.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный Тогда + ИмяОтчета = Объект.Отчет.ИмяОбъекта; + Иначе + ИмяОтчета = Объект.Отчет; + КонецЕсли; + + ПерезаполнитьДерево(Ложь); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + + ВариантыОтчетов.ОпределитьПоведениеСпискаПользователейВариантаОтчета(ЭтотОбъект); + ВариантыОтчетов.ВывестиПризнакУведомленияПользователейВариантаОтчета(Элементы.УведомитьПользователей); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ПараметрыОткрытияФормыОтчета <> Неопределено Тогда + Отказ = Истина; + ВариантыОтчетовКлиент.ОткрытьФормуОтчета(Неопределено, ПараметрыОткрытияФормыОтчета); + КонецЕсли; + + ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект, Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если Источник <> ЭтотОбъект + И (ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеВарианта() + Или ИмяСобытия = "Запись_НаборКонстант") Тогда + ПерезаполнитьДерево(Истина); + Элементы.ДеревоПодсистем.Развернуть(ДеревоПодсистем.ПолучитьЭлементы()[0].ПолучитьИдентификатор(), Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + СпроситьОУведомленииПользователей(Отказ); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + // Запись свойств, связанных с предопределенным вариантом отчета. + ОписаниеИзменено = Ложь; + Если ЭтоПредопределенный Тогда + + ПредопределенныйВариант = ТекущийОбъект.ПредопределенныйВариант.ПолучитьОбъект(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ПредопределенныйВариант); + КонецЕсли; + + ОписаниеИзменено = Не ПустаяСтрока(Объект.Описание) И НРег(СокрЛП(Объект.Описание)) <> НРег(СокрЛП(ПредопределенныйВариант.Описание)); + Если Не ОписаниеИзменено Тогда + ТекущийОбъект.Описание = ""; + Для каждого ПредставлениеВарианта Из ТекущийОбъект.Представления Цикл + ПредставлениеВарианта.Описание = ""; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + // Запись дерева подсистем. + ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений")); + Если ТекущийОбъект.ЭтоНовый() Тогда + ИзмененныеРазделы = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 1), Истина); + Иначе + ИзмененныеРазделы = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Модифицированность", Истина), Истина); + КонецЕсли; + ВариантыОтчетов.ДеревоПодсистемЗаписать(ТекущийОбъект, ИзмененныеРазделы); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + + Если ЭтоПредопределенный И Не ОписаниеИзменено Тогда + ТекущийОбъект.Представления.Очистить(); + КонецЕсли; + + ТекущийОбъект.ДополнительныеСвойства.Вставить("ПользователиВарианта", ПользователиВарианта); + ТекущийОбъект.ДополнительныеСвойства.Вставить("УведомитьПользователей", УведомитьПользователей); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + ПерезаполнитьДерево(Ложь); + ЗаполнитьИзПредопределенного(ТекущийОбъект); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(Объект.Ссылка, ЭтотОбъект); + СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "ДеревоПодсистем", "*", Истина); +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + ЗаполнитьИзПредопределенного(ТекущийОбъект); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + + РегистрыСведений.НастройкиВариантовОтчетов.ПрочитатьНастройкиДоступностиВариантаОтчета( + ТекущийОбъект.Ссылка, ПользователиВарианта, ИспользоватьГруппыПользователей, ИспользоватьВнешнихПользователей); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ОписаниеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект, "Описание", НСтр("ru = 'Описание'")); +КонецПроцедуры + +&НаКлиенте +Процедура ДоступенПриИзменении(Элемент) + + Объект.ТолькоДляАвтора = (Доступен = "ТолькоДляАвтора"); + + ВариантыОтчетовКлиент.ПроверитьПользователейВариантаОтчета(ЭтотОбъект); + ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект, Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователиВарианта + +&НаКлиенте +Процедура ПользователиВариантаПриИзменении(Элемент) + + ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиВариантаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиВариантаПередУдалением(Элемент, Отказ) + + Если Не ИспользоватьГруппыПользователей + И Не ИспользоватьВнешнихПользователей Тогда + + Отказ = Истина; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиВариантаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + ВариантыОтчетовКлиент.ПользователиВариантаОтчетаОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиВариантаПометкаПриИзменении(Элемент) + + ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоПодсистем + +&НаКлиенте +Процедура ДеревоПодсистемИспользованиеПриИзменении(Элемент) + ВариантыОтчетовКлиент.ДеревоПодсистемИспользованиеПриИзменении(ЭтотОбъект, Элемент); +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоПодсистемВажностьПриИзменении(Элемент) + ВариантыОтчетовКлиент.ДеревоПодсистемВажностьПриИзменении(ЭтотОбъект, Элемент); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПодобратьПользователей(Команда) + + ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(ЭтотОбъект, ИспользоватьГруппыПользователей); + +КонецПроцедуры + +&НаКлиенте +Процедура ПодобратьГруппыВнешнихПользователей(Команда) + + ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета( + ЭтотОбъект, Элементы.ПользователиВариантаГруппаПодобрать.Видимость, Истина); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + ВариантыОтчетов.УстановитьУсловноеОформлениеСпискаПользователейВариантаОтчета(ЭтотОбъект); + ВариантыОтчетов.УстановитьУсловноеОформлениеДереваПодсистем(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Функция ПерезаполнитьДерево(Прочитать) + ВыделенныеСтроки = ОтчетыСервер.ЗапомнитьВыделенныеСтроки(ЭтотОбъект, "ДеревоПодсистем", "Ссылка"); + Если Прочитать Тогда + ЭтотОбъект.Прочитать(); + КонецЕсли; + ДеревоПриемник = ВариантыОтчетов.ДеревоПодсистемСформировать(ЭтотОбъект, Объект); + ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем"); + ОтчетыСервер.ВосстановитьВыделенныеСтроки(ЭтотОбъект, "ДеревоПодсистем", ВыделенныеСтроки); + Возврат Истина; +КонецФункции + +&НаСервере +Процедура ЗаполнитьИзПредопределенного(ВариантОбъект) + + ЭтоПредопределенный = ВариантыОтчетов.ЭтоПредопределенныйВариантОтчета(ВариантОбъект); + + Если Не ЭтоПредопределенный Тогда + Возврат; + КонецЕсли; + + ПредопределенныйВариант = ВариантОбъект.ПредопределенныйВариант.ПолучитьОбъект(); + + ВариантОбъект.Наименование = ПредопределенныйВариант.Наименование; + + ПредставленияВарианта = ВариантОбъект.Представления.Выгрузить(); + ВариантОбъект.Представления.Очистить(); + ВариантОбъект.Представления.Загрузить(ПредопределенныйВариант.Представления.Выгрузить()); + + Если ПустаяСтрока(ВариантОбъект.Описание) Тогда + ВариантОбъект.Описание = ПредопределенныйВариант.Описание; + Иначе + ВариантОбъект.Представления.Сортировать("КодЯзыка"); + ПредставленияВарианта.Сортировать("КодЯзыка"); + Для каждого ПредставлениеВарианта Из ВариантОбъект.Представления Цикл + ОписаниеВарианта = ПредставленияВарианта.Найти(ПредставлениеВарианта.КодЯзыка, "КодЯзыка"); + ПредставлениеВарианта.Описание = ОписаниеВарианта.Описание; + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СпроситьОУведомленииПользователей(Отказ) + + Если Не УведомитьПользователей + Или ВопросОУведомленииПользователейЗадан Тогда + + Возврат; + КонецЕсли; + + КоличествоПользователей = КоличествоПользователейВариантОтчета(ПользователиВарианта); + + Если КоличествоПользователей < 10 Тогда + Возврат; + КонецЕсли; + + Отказ = Истина; + ВопросОУведомленииПользователейЗадан = Истина; + + Обработчик = Новый ОписаниеОповещения("ПослеВопросаОУведомленииПользователей", ЭтотОбъект); + ВариантыОтчетовСлужебныйКлиент.СпроситьОУведомленииПользователей(Обработчик, КоличествоПользователей); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВопросаОУведомленииПользователей(Ответ, ДополнительныеПараметры) Экспорт + + Если Ответ = КодВозвратаДиалога.Нет Тогда + УведомитьПользователей = Ложь; + КонецЕсли; + + Записать(); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция КоличествоПользователейВариантОтчета(ПользователиВарианта) + + Возврат РегистрыСведений.НастройкиВариантовОтчетов.КоличествоПользователейВариантОтчета(ПользователиВарианта); + +КонецФункции + +#КонецОбласти + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..856d09dc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" @@ -0,0 +1,103 @@ + +

Предназначен для управления вариантами отчетов, для настройки размещения в панелях отчетов разделов программы.

+

Программа позволяет сохранять и использовать несколько вариантов одного и того же отчета. Предусмотрены предопределенные варианты отчетов. Также можно создавать свои собственные варианты отчетов, изменяя настройки существующих: настройки формирования и внешнего вида (состав полей, сортировки, группировки, условное оформление).

+

В программе предусмотрена возможность создавать общие варианты отчетов. Общие варианты отчетов доступны всем пользователям этого отчета.

+

В разделах программы размещены команды перехода к панелям отчетов, предусмотренным в этих разделах. Если отчетов много, то они распределяются по группам раздела. Для удобства работы с панелями отчетов их можно настраивать, например: скрывать редко используемые варианты отчетов, размещать часто используемые в быстром доступе.

+

Для администраторов вариантов отчетов предусмотрены также дополнительные возможности по настройке внешнего вида панели отчетов в программе: можно выделить тот или иной вариант отчета как важный или поместить в группу См. также.

+

Список открывается по команде Все отчеты в панели отчетов раздела программы. Состав разделов и групп в данном списке зависит от предоставленных прав и ролей. Все варианты отчетов без исключения доступны только администратору программы.

+

Администратор программы может открыть список по команде Варианты отчетов раздела Администрирование - Печатные формы, отчеты и обработки. Некоторые команды или действия, доступные для администратора, могут быть недоступны в списке Все отчеты. Об этих особенностях упоминается при описании возможностей списка.

+

Список состоит из двух частей:

+
  • в левой части расположено дерево разделов и групп командного интерфейса программы, в которых имеются панели отчетов. +
    • При перемещении по узлам дерева список автоматически фильтруется по выбранному разделу или группе. +
    • +
    • При помощи флажка Включая подчиненные можно показать все отчеты раздела или группы, включая варианты отчетов вложенных групп. 
  • +
  • В правой части размещается список отчетов.

В списке выводится:

+
  • +
    Наименование - полное наименование варианта отчета, которое выводится в списках.
    +
  • +
  • Автор - полное имя пользователя, который является автором варианта отчета. +
  • +
  • Описание - подробная информация о варианте отчета.

Для того чтобы добавить колонки в список, нажмите Еще - Изменить форму (настройки сохраняются):

+
  • +
    Картинка Доступен всем пользователям:
    +
    • +
      видна - вариант отчета доступен всем пользователям,
      +
    • +
    • +
      не видна - вариант отчета доступен только автору.
  • +
  • Техническая информация: +
    • +
      Имя отчета - имя, под которым отчет зарегистрирован в программе.
      +
    • +
    • +
      Отчет - полное наименование отчета (представление).
      +
    • +
    • +
      Тип отчета - существуют три типа отчетов:
      +
      • +
        Внутренний
        +
      • +
      • +
        Дополнительный
        +
      • +
      • +
        Внешний - варианты внешних отчетов не могут размещаться в панели отчетов.
    • +
    • +
      Ключ варианта - имя предопределенного или уникальный идентификатор пользовательского варианта отчета. 
      +
    • +
    • +
      Наименования параметров и отборов - перечисляются параметры и отборы отчетов.
      +
    • +
    • +
      Наименования полей - перечисляются наименования полей отчетов.

Поиск

+

Если список вариантов отчетов большой, то с помощью поиска можно быстро найти нужный вариант отчета.

+
  • В поле Поиск наберите искомое значение, нажмите Найти. Поиск проводится в выделенном разделе (группе). +
    • +

      Отчеты можно искать по слову (части слова), также возможен поиск по нескольким словам. Поиск осуществляется:

      +
      • в наименованиях отчета; +
      • +
      • в описаниях варианта отчета; +
      • +
      • в представлениях полей варианта отчета; +
      • +
      • в представлениях параметров и отборов варианта отчета; +
      • +
      • в наименованиях пользовательских настроек варианта отчета; +
      • +
      • в наименованиях разделов и групп программы и панели отчетов.

Формирование отчета

+
  • +
    Выделите один из вариантов отчетов, нажмите Открыть, произведите необходимые настройки, нажмите Сформировать.
    +
  • +
  • +
    В списке Все отчеты также можно воспользоваться двойным щелчком мыши на нужном варианте отчета.

Настройка варианта отчета

+
  • +
    Выберите вариант отчета, нажмите Изменить, отредактируйте необходимые поля.
    +
  • +
  • +
    В списке Варианты отчетов, предназначенном только для администратора, также можно воспользоваться двойным щелчком мыши на нужном варианте отчета.

Обновление варианта отчета из файла

+

+
  • С помощью кнопки  Обновить из файла можно загрузить вариант отчета, сохраненный вместе с пользовательскими настройками в архивный файл на компьютере. Укажите путь к архиву с вариантом отчета.
  • +
  • Данная возможность предназначена для обмена настройками вариантов отчета между информационными базами идентичной структуры.

+

Сохранение варианта отчета в файл

+

+
  • С помощью кнопки  Сохранить в файл можно записать вариант отчета (с включением пользовательских настроек). Укажите путь к архивному файлу на компьютере. Вместе с вариантом отчета по умолчанию сохраняются и пользовательские настройки. Можно отменить сохранение всех или некоторых настроек с помощью флажков.
  • +
  • Данная возможность предназначена для обмена настройками вариантов отчета между информационными базами идентичной структуры.

Удаление варианта отчета

+
  • Пользовательский вариант отчета с помощью команды меню Еще можно Пометить на удаление. Также можно воспользоваться клавишей Del. +
  • +
  • Повторно выполните эту команду, для того чтобы Снять пометку удаления. +
  • +
  • Эта возможность недоступна для предопределенных вариантов отчетов.

Размещение вариантов отчетов в разделах программы 

+

Размещение варианта отчета может быть изменено автором отчета или администратором.

+
  • Варианты отчетов можно перемещать из текущего раздела/группы в другие при помощи перетаскивания мышью. Если при перетаскивании зажать клавишу Ctrl, то вариант отчета будет добавлен в новую группу, а также останется в текущей группе. Программа запрашивает подтверждение размещения варианта отчета. Для подтверждения нажмите Да. +
  • +
  • +

    С помощью команды Еще - Разместить в разделах можно настроить размещение сразу для нескольких вариантов отчетов, указав, в каких разделах и группах командного интерфейса программы они должны располагаться.

    +
  • +
  • +

    Предусмотрены дополнительные возможности по настройке внешнего вида панели отчетов в программе: можно выделить тот или иной вариант отчета как Важный или поместить в группу См. также.

  • +

     В списке Варианты отчетов, предназначенном только для администратора, команда Разместить в разделах для удобства управления вариантами отчетов выведена в командную панель списка.

Сброс настроек

+
  • +
    Нажмите Еще - Сбросить настройки размещения, для того чтобы восстановить исходные настройки выбранных вариантов отчетов: размещение в разделах программы, доступность и видимость по умолчанию. Может выполняться только для предопределенных вариантов отчетов;
    +
  • +
  • Нажмите Еще - Сбросить настройки пользователей, для того чтобы сбросить пользовательские настройки выбранных вариантов отчетов: видимость и быстрый доступ.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..20bf83ae --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,240 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Описание"); + Результат.Добавить("Автор"); + Результат.Добавить("ТолькоДляАвтора"); + + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | Пользовательский = ЛОЖЬ + | ИЛИ ТолькоДляАвтора = ЛОЖЬ + | ИЛИ ЭтоАвторизованныйПользователь(Автор) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ЭтоАвторизованныйПользователь(Автор)"; + + Ограничение.ТекстДляВнешнихПользователей = Ограничение.Текст; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + // Переопределение для целей избранного - вместо карточки с настройками размещения отчета будет открываться его + // основная форма. + Если ВидФормы = "ФормаОбъекта" Тогда + СсылкаВарианта = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Ключ"); + Если Не ЗначениеЗаполнено(СсылкаВарианта) Тогда + ВызватьИсключение НСтр("ru = 'Новый вариант отчета можно создать только из формы отчета'"); + КонецЕсли; + ПоказатьКарточку = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ПоказатьКарточку"); + Если ПоказатьКарточку = Истина Тогда + Возврат; + КонецЕсли; + + ПараметрыОткрытия = ВариантыОтчетов.ПараметрыОткрытия(СсылкаВарианта); + + ВариантыОтчетовКлиентСервер.ДополнитьСтруктуруКлючом(ПараметрыОткрытия, "ВыполнятьЗамеры", Ложь); + + Если ПараметрыОткрытия.ТипОтчета = "Внутренний" Или ПараметрыОткрытия.ТипОтчета = "Расширение" Тогда + Вид = "Отчет"; + ИначеЕсли ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда + Вид = "ВнешнийОтчет"; + Если Не ПараметрыОткрытия.Свойство("Подключен") Тогда + ВариантыОтчетов.ПриПодключенииОтчета(ПараметрыОткрытия); + КонецЕсли; + Если Не ПараметрыОткрытия.Подключен Тогда + ВызватьИсключение НСтр("ru = 'Вариант внешнего отчета можно открыть только из формы отчета.'"); + КонецЕсли; + Иначе + ВызватьИсключение НСтр("ru = 'Вариант внешнего отчета можно открыть только из формы отчета.'"); + КонецЕсли; + + ПолноеИмяОтчета = Вид + "." + ПараметрыОткрытия.ИмяОтчета; + + КлючУникальности = ОтчетыКлиентСервер.КлючУникальности(ПолноеИмяОтчета, ПараметрыОткрытия.КлючВарианта); + ПараметрыОткрытия.Вставить("КлючПараметровПечати", КлючУникальности); + ПараметрыОткрытия.Вставить("КлючСохраненияПоложенияОкна", КлючУникальности); + + СтандартнаяОбработка = Ложь; + Если ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда // Для платформы. + ВыбраннаяФорма = "Справочник.ВариантыОтчетов.Форма.ФормаЭлемента"; + Параметры.Вставить("ПараметрыОткрытияФормыОтчета", ПараметрыОткрытия); + Возврат; + КонецЕсли; + ВыбраннаяФорма = ПолноеИмяОтчета + ".Форма"; + ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Параметры, ПараметрыОткрытия); + КонецЕсли; +КонецПроцедуры + +#КонецЕсли + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + + Поля.Добавить("Наименование"); + Поля.Добавить("Ссылка"); + Поля.Добавить("Пользовательский"); + Поля.Добавить("ПредопределенныйВариант"); + Поля.Добавить("ТипОтчета"); + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + + Если ВариантыОтчетовВызовСервера.ЭтоПредопределенныйВариантОтчета(Данные) Тогда + Данные.Ссылка = Данные.ПредопределенныйВариант; + КонецЕсли; + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики обновления. + +// Регистрирует данные к обновлению в плане обмена ОбновлениеИнформационнойБазы +// см. Стандарты и методики разработки прикладных решений: Параллельный режим отложенного обновления. +// +// Параметры: +// Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | Варианты.Ссылка + |ИЗ + | Справочник.ВариантыОтчетов КАК Варианты + |ГДЕ + | Варианты.Отчет = &УниверсальныйОтчет + | И Варианты.Пользовательский + |"); + УниверсальныйОтчет = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Отчеты.УниверсальныйОтчет); + Запрос.УстановитьПараметр("УниверсальныйОтчет", УниверсальныйОтчет); + + Ссылки = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Ссылки); +КонецПроцедуры + +// Обрабатывает данные, зарегистрированные в плане обмена ОбновлениеИнформационнойБазы +// см. Стандарты и методики разработки прикладных решений: Параллельный режим отложенного обновления. +// +// Параметры: +// Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке +// +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + ОбъектМетаданных = Метаданные.Справочники.ВариантыОтчетов; + ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя(); + + Обработано = 0; + Отказано = 0; + + Вариант = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ПолноеИмяОбъекта); + Пока Вариант.Следующий() Цикл + Попытка + Отчеты.УниверсальныйОтчет.УстановитьИсточникДанныхВарианта(Вариант.Ссылка); + Обработано = Обработано + 1; + Исключение + // Если не удалось обработать вариант отчета, повторяем попытку снова. + Отказано = Отказано + 1; + + ШаблонКомментария = НСтр("ru = 'Не удалось установить источник данных варианта отчета %1. + |Возможно он поврежден и не подлежит восстановлению. + | + |Техническая информация о проблеме: %2'"); + Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонКомментария, Вариант.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации( + ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Предупреждение, + ОбъектМетаданных, + Вариант.Ссылка, + Комментарий); + КонецПопытки; + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта); + Если Обработано = 0 И Отказано <> 0 Тогда + ШаблонСообщения = НСтр("ru = 'Процедуре УстановитьИсточникДанныхВарианта не удалось обработать некоторые варианты отчетов: %1'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Отказано); + + ВызватьИсключение ТекстСообщения; + Иначе + ШаблонКомментария = НСтр("ru = 'Процедура УстановитьИсточникДанныхВарианта обработала очередной пакет вариантов отчетов: %1'"); + Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработано); + ЗаписьЖурналаРегистрации( + ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, + ОбъектМетаданных,, + Комментарий); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" new file mode 100644 index 00000000..c2baa115 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" @@ -0,0 +1,368 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) + + ИнициализироватьОбъект(ДанныеЗаполнения); + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + ИсключаемыеРеквизиты = Новый Массив; + + Если Не Пользовательский Тогда + ИсключаемыеРеквизиты.Добавить("Автор"); + КонецЕсли; + + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, ИсключаемыеРеквизиты); + + Если Наименование <> "" И ВариантыОтчетов.НаименованиеЗанято(Отчет, Ссылка, Наименование) Тогда + Отказ = Истина; + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '""%1"" занято, необходимо указать другое наименование.'"), Наименование), + , + "Наименование"); + КонецЕсли; + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда + ПроверитьЗаполнениеПредопределенного(Отказ); + КонецЕсли; + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + + ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); + + ПользователемИзмененаПометкаУдаления = ( + Не ЭтоНовый() + И ПометкаУдаления <> Ссылка.ПометкаУдаления + И Не ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных")); + + Если Не Пользовательский И ПользователемИзмененаПометкаУдаления Тогда + Если ПометкаУдаления Тогда + ТекстОшибки = НСтр("ru = 'Пометка на удаление предопределенного варианта отчета запрещена.'"); + Иначе + ТекстОшибки = НСтр("ru = 'Снятие пометки удаления предопределенного варианта отчета запрещено.'"); + КонецЕсли; + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Если Не ПометкаУдаления И ПользователемИзмененаПометкаУдаления Тогда + НаименованиеЗанято = ВариантыОтчетов.НаименованиеЗанято(Отчет, Ссылка, Наименование); + КлючВариантаЗанят = ВариантыОтчетов.КлючВариантаЗанят(Отчет, Ссылка, КлючВарианта); + Если НаименованиеЗанято ИЛИ КлючВариантаЗанят Тогда + ТекстОшибки = НСтр("ru = 'Ошибка снятия пометки удаления варианта отчета:'"); + Если НаименованиеЗанято Тогда + ТекстОшибки = ТекстОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Наименование ""%1"" уже занято другим вариантом этого отчета.'"), + Наименование); + Иначе + ТекстОшибки = ТекстОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ключ варианта ""%1"" уже занят другим вариантом этого отчета.'"), + КлючВарианта); + КонецЕсли; + ТекстОшибки = ТекстОшибки + НСтр("ru = 'Перед снятием пометки удаления варианта отчета + |необходимо установить пометку удаления конфликтующего варианта отчета.'"); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + КонецЕсли; + + Если ПользователемИзмененаПометкаУдаления Тогда + ИнтерактивнаяПометкаУдаления = ?(Пользовательский, ПометкаУдаления, Ложь); + КонецЕсли; + + ПроверитьРазмещение(); + ЗаполнитьПоляДляПоиска(); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ПользователиВарианта = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ПользователиВарианта"); + ЭтоНовый = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь); + УведомитьПользователей = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "УведомитьПользователей", Ложь); + + РегистрыСведений.НастройкиВариантовОтчетов.ЗаписатьНастройкиДоступностиВариантаОтчета( + Ссылка, ЭтоНовый, ПользователиВарианта, УведомитьПользователей); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ИнициализироватьОбъект(ДанныеЗаполнения) + + Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения); + НастройкиВариантаОтчета = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДанныеЗаполнения, "Настройки"); + + Если ТипЗнч(НастройкиВариантаОтчета) = Тип("НастройкиКомпоновкиДанных") Тогда + + Настройки = Новый ХранилищеЗначения(НастройкиВариантаОтчета); + + КонецЕсли; + + #Область УстановкаТипаОтчета + + Если ТипЗнч(Отчет) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда + + ТипОтчета = Перечисления.ТипыОтчетов.Внутренний; + + ИначеЕсли ТипЗнч(Отчет) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений") Тогда + + ТипОтчета = Перечисления.ТипыОтчетов.Расширение; + + ИначеЕсли ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") + И ТипЗнч(Отчет) = Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") Тогда + + ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный; + + ИначеЕсли ТипЗнч(Отчет) = Тип("Строка") Тогда + + ТипОтчета = Перечисления.ТипыОтчетов.Внешний; + + КонецЕсли; + + #КонецОбласти + + #Область УстановкаДанныхВЗависимостиОтЗначенияАвтора + + Если ЗначениеЗаполнено(Автор) Тогда + + Пользовательский = ЗначениеЗаполнено(Автор); + + ПользователиВарианта = Новый СписокЗначений; + ПользователиВарианта.Добавить(Автор,, Истина); + + ДополнительныеСвойства.Вставить("ПользователиВарианта", ПользователиВарианта); + + КонецЕсли; + + #КонецОбласти + + #Область УстановкаРодителя + + Основание = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДанныеЗаполнения, "Основание"); + + Если ТипЗнч(Основание) = ТипЗнч(Ссылка) Тогда + + СвойстваОснования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Основание, "Родитель, Отчет, Пользовательский, Размещение"); + + Если СвойстваОснования.Отчет = Отчет Тогда + Родитель = ?(СвойстваОснования.Пользовательский, СвойстваОснования.Родитель, Основание); + КонецЕсли; + + Размещение.Загрузить(СвойстваОснования.Размещение.Выгрузить()); + + КонецЕсли; + + Если Не ЗначениеЗаполнено(Родитель) Тогда + ЗаполнитьРодителя(); + КонецЕсли; + + ЗаполнитьРазмещениеПоРодителю(); + + #КонецОбласти + +КонецПроцедуры + +Процедура ПриЧтенииПредставленийНаСервере() Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +Процедура ПроверитьРазмещение() + + Если ЗначениеЗаполнено(Контекст) Тогда + + Размещение.Очистить(); + Возврат; + + КонецЕсли; + + // Удаление из табличной части подсистем, помеченных на удаление. + УдаляемыеСтроки = Новый Массив; + Для Каждого СтрокаРазмещения Из Размещение Цикл + + Если СтрокаРазмещения.Подсистема.ПометкаУдаления = Истина Тогда + УдаляемыеСтроки.Добавить(СтрокаРазмещения); + КонецЕсли; + + КонецЦикла; + + Для Каждого СтрокаРазмещения Из УдаляемыеСтроки Цикл + Размещение.Удалить(СтрокаРазмещения); + КонецЦикла; + +КонецПроцедуры + +// Заполнение реквизитов НаименованияПолей и НаименованияПараметровИОтборов. +Процедура ЗаполнитьПоляДляПоиска() + + Дополнительный = (ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный); + Если Не Пользовательский И Не Дополнительный Тогда + Возврат; + КонецЕсли; + + Попытка + УстановитьОтключениеБезопасногоРежима(Истина); + УстановитьПривилегированныйРежим(Истина); + ВариантыОтчетов.ЗаполнитьПоляДляПоиска(ЭтотОбъект); + Исключение + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось проиндексировать схему варианта ""%1"" отчета ""%2"":'"), + КлючВарианта, Строка(Отчет)); + ТекстОшибки = ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ВариантыОтчетов.ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Ошибка, ТекстОшибки, Ссылка); + КонецПопытки; + +КонецПроцедуры + +// Заполняет родителя варианта отчета, основываясь на ссылке отчета и предопределенных настройках. +Процедура ЗаполнитьРодителя() Экспорт + + Запрос = Новый Запрос( + "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 + | ПредопределенныеВарианты.Ссылка, + | ПредопределенныеВарианты.Включен + |ПОМЕСТИТЬ ПредопределенныеВарианты + |ИЗ + | Справочник.ПредопределенныеВариантыОтчетов КАК ПредопределенныеВарианты + |ГДЕ + | ТИПЗНАЧЕНИЯ(&Отчет) <> ТИП(Справочник.ИдентификаторыОбъектовРасширений) + | И ПредопределенныеВарианты.Отчет = &Отчет + | И НЕ ПредопределенныеВарианты.ПометкаУдаления + | И ПредопределенныеВарианты.ГруппироватьПоОтчету + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ ПЕРВЫЕ 1 + | ПредопределенныеВарианты.Ссылка, + | ПредопределенныеВарианты.Включен + |ИЗ + | Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ПредопределенныеВарианты + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредопределенныеВариантыОтчетовВерсийРасширений КАК ДоступныеВарианты + | ПО ДоступныеВарианты.Вариант = ПредопределенныеВарианты.Ссылка + |ГДЕ + | ТИПЗНАЧЕНИЯ(&Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений) + | И ПредопределенныеВарианты.Отчет = &Отчет + | И ПредопределенныеВарианты.ГруппироватьПоОтчету + | И НЕ ДоступныеВарианты.Вариант ЕСТЬ NULL + | + |УПОРЯДОЧИТЬ ПО + | ПредопределенныеВарианты.Включен УБЫВ + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 + | ВариантыОтчетов.Ссылка + |ИЗ + | ПредопределенныеВарианты КАК ПредопределенныеВарианты + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ПО ПредопределенныеВарианты.Ссылка = ВариантыОтчетов.ПредопределенныйВариант + |ГДЕ + | НЕ ВариантыОтчетов.ПометкаУдаления"); + + Запрос.УстановитьПараметр("Отчет", Отчет); + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Родитель = Выборка.Ссылка; + КонецЕсли; + +КонецПроцедуры + +Процедура ЗаполнитьРазмещениеПоРодителю() + + Если Размещение.Количество() > 0 + Или Не ЗначениеЗаполнено(Родитель) Тогда + + Возврат; + КонецЕсли; + + СвойстваРодителя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Родитель, "ПредопределенныйВариант, Размещение"); + + Размещение.Загрузить(СвойстваРодителя.Размещение.Выгрузить()); + + Если Размещение.Количество() > 0 + Или Не ЗначениеЗаполнено(СвойстваРодителя.ПредопределенныйВариант) Тогда + + Возврат; + КонецЕсли; + + РазмещениеПредопределенногоВарианта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + СвойстваРодителя.ПредопределенныйВариант, "Размещение"); + + Размещение.Загрузить(РазмещениеПредопределенногоВарианта.Выгрузить()); + + Для Каждого Строка Из Размещение Цикл + Строка.Использование = Истина; + КонецЦикла; + +КонецПроцедуры + +// Базовые проверки корректности данных предопределенных вариантов отчетов. +Процедура ПроверитьЗаполнениеПредопределенного(Отказ) + + Если ПометкаУдаления Или Не Предопределенный Тогда + Возврат; + ИначеЕсли Не ЗначениеЗаполнено(Отчет) Тогда + ТекстОшибки = НеЗаполненоПоле("Отчет"); + ИначеЕсли Не ЗначениеЗаполнено(ТипОтчета) Тогда + ТекстОшибки = НеЗаполненоПоле("ТипОтчета"); + ИначеЕсли ТипОтчета <> ВариантыОтчетов.ТипОтчета(Отчет) Тогда + ТекстОшибки = НСтр("ru = 'Противоречивые значения полей ""%1"" и ""%2""'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, "ТипОтчета", "Отчет"); + ИначеЕсли Не ЗначениеЗаполнено(ПредопределенныйВариант) + И (ТипОтчета = Перечисления.ТипыОтчетов.Внутренний Или ТипОтчета = Перечисления.ТипыОтчетов.Расширение) Тогда + ТекстОшибки = НеЗаполненоПоле("ПредопределенныйВариант"); + Иначе + Возврат; + КонецЕсли; + + ВызватьИсключение ТекстОшибки; + +КонецПроцедуры + +Функция НеЗаполненоПоле(ИмяПоля) + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не заполнено поле ""%1""'"), ИмяПоля); + +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..8ace5872 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" @@ -0,0 +1,832 @@ + + + + + + + + + + ВариантыОтчетов + + ru + Отчеты + + true + Catalog.ВариантыОтчетов.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Родитель, Основной вариант + + + ru + Исходный вариант отчета, на основании которого сохранен этот вариант отчета + + true + + Catalog.ВариантыОтчетов.EmptyRef + + Use + + + + + Use + Description + + ru + Краткое представление отчета. +Выводится в панелях отчетов. + + + + + ShowError + Use + + + + + Use + Code + + + + Use + + + + DontUse + true + + + ru + + + Managed + Use + + ru + Вариант отчета + + true + HierarchyOfItems + 2 + true + 150 + String + AsDescription + InDialog + BothWays + Catalog.ВариантыОтчетов.Form.ФормаЭлемента + Catalog.ВариантыОтчетов.Form.ФормаСписка + Catalog.ВариантыОтчетов.Form.ФормаСписка + + Автор + + ru + Автор + + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + ru + Автор или ответственный за вариант отчета + + + + ShowError + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВидимостьПоУмолчанию + + ru + По умолчанию виден в панелях отчетов + + + Boolean + + + ru + "Да" - вариант отчета будет виден в панелях отчетов всех пользователей. +"Нет" - вариант отчета будет скрыт в панелях отчетов всех пользователей. +Каждый пользователь может скрывать/показывать этот вариант отчета в режиме настройки панели отчетов. + + + + + true + + Use + + + ВидимостьПоУмолчаниюПереопределена + + ru + Видимость по умолчанию переопределена + + Когда Истина то вместо флажка ВидимостьПоУмолчанию используется значение аналогичного флажка предопределенного варианта отчета. + + Boolean + + + ru + Служебный реквизит, который используется для предопределенных вариантов отчетов. + + + + + Index + Use + + + ИнтерактивнаяПометкаУдаления + + ru + Интерактивная пометка удаления + + + Boolean + + + ru + Пометка удаления, установленная пользователем + + + + + Use + Use + + + КлючВарианта + + ru + Ключ варианта + + + String + + 256 + + + + ru + Уникальный ключ варианта отчета + + + + + + + Index + Use + + + КлючевыеСлова + + ru + Ключевые слова + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + + + + Use + Use + + + Контекст + + ru + Контекст + + + String + + 430 + + + + ru + Служебный реквизит. Полное имя объекта метаданных, в контексте которого формируется вариант отчета. Используется, как разделитель вариантов отчетов. + + + + + + + Use + Use + + + НаименованияПараметровИОтборов + + ru + Наименования параметров и отборов + + + String + + + + ru + Параметры и фильтры, выведенные в отчете. +Используется при поиске. + + + + + + + Use + Use + + + НаименованияПолей + + ru + Наименования полей + + + String + + + + ru + Поля, выведенные в отчете. +Используется при поиске. + + + + + + + Use + Use + + + Настройки + + ru + Настройки + + + ValueStorage + + + ru + Пользовательские настройки варианта отчета + + + + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Выводится в панели отчетов как подсказка. + + true + + + + + + Use + Use + + + Отчет + + ru + Отчет + + АПК:1329 - в таблице предполагается мало записей (в ERP ~ 1200) - оптимизация не требуется + + CatalogRef.ИдентификаторыОбъектовРасширений + String + CatalogRef.ДополнительныеОтчетыИОбработки + CatalogRef.ИдентификаторыОбъектовМетаданных + + 150 + + + + ru + Ссылка отчета или полное имя внешнего отчета. + + + + ShowError + + + + Index + Use + + + Пользовательский + + ru + Пользовательский + + + Boolean + + + ru + Тип варианта отчета: +Да - Пользовательский, +Нет - Предопределенный. + + + + + Index + Use + + + ПредопределенныйВариант + + ru + Предопределенный вариант + + Вариант конфигурации + + CatalogRef.ПредопределенныеВариантыОтчетовРасширений + CatalogRef.ПредопределенныеВариантыОтчетов + + + ru + Предопределенный вариант отчета, содержит настройки по умолчанию. + + + + + Index + Use + + + ТипОтчета + + ru + Тип отчета + + + EnumRef.ТипыОтчетов + + + ru + Тип варианта отчета + + + + ShowError + + Index + Use + Use + + + ТолькоДляАвтора + + ru + Только для автора + + + Boolean + + + ru + Влияет на доступность варианта из панели отчетов: +Флажок снят - вариант доступен всем пользователям. +Флажок установлен - вариант доступен только автору. + + + + + Use + Use + + + ХешНастроек + + ru + Хеш настроек + + + String + + 32 + + + + ru + Служебное поле. +Используется при обновлении программы. + + + + + + + Use + + + + + + + Размещение + + ru + Размещение + + + Use + LineNumber + + Use + + + + + Использование + + ru + Использование + + + Boolean + + + ru + Если флажок снят то отчет не выводится в указанной группе. + + + + Use + + + Подсистема + + ru + Раздел, Группа + + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Подсистема + + + + Use + Index + + + Важный + + ru + Важный + + + Boolean + + + ru + Если флажок установлен то отчет выделяется жирным шрифтом и выводится в начале группы. + + + + Use + Index + + + СмТакже + + ru + См также + + + Boolean + + + ru + Если флажок установлен то отчет выводится в отдельной группе "См. также", расположенной внизу панели отчетов. + + + + Use + Index + + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + + Use + Index + Use + + + Наименование + + ru + Наименование + + + String + + 150 + + + + ru + Наименование варианта отчета + + + + Use + Index + Use + + + Описание + + ru + Описание + + + String + + + + + Use + Use + + + + РазмещениеВРазделах + + ru + Размещение в разделах + + Размещение нескольких вариантов отчетов в разделах + + + ru + + + PersonalComputer + MobileDevice + + + СбросНастроекРазмещения + + ru + Сброс настроек размещения + + PersonalComputer + MobileDevice + + + СбросПользовательскихНастроек + + ru + Сброс пользовательских настроек + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + Открыть + + ru + Открыть... + + FormCommandBarImportant + + CatalogRef.ВариантыОтчетов + + PictureAndText + + ru + Открыть отчет... + + + StdPicture.Report + + F3 + + + РазместитьВРазделах + + ru + Разместить в разделах... + + FormCommandBarImportant + + CatalogRef.ВариантыОтчетов + + Multiple + true + Auto + + ru + Изменить размещение нескольких отчетов... + + + + + СброситьНастройкиПользователей + + ru + Сбросить настройки пользователей + + FormCommandBarImportant + + CatalogRef.ВариантыОтчетов + + Multiple + Auto + + StdPicture.User + + + + + СброситьНастройкиРазмещения + + ru + Сбросить настройки размещения + + FormCommandBarImportant + + CatalogRef.ВариантыОтчетов + + Multiple + Auto + + StdPicture.RestoreValues + + + + + Изменить + + ru + Изменить... + + FormCommandBarImportant + + CatalogRef.ВариантыОтчетов + + PictureAndText + + ru + Изменить настройки отчета... + + + StdPicture.Change + + F2 + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..7797b036 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,549 @@ + + + + ГруппаПользовательскихНастроек + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Код + 16 + + <key>ru</key> + <value>Порядковый +номер</value> + + true + true + + true + + + + Список.Code + + + true + + КодРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 5 + true + true + + + + ОписаниеМетаданных + 19 + true + true + + true + + + + Список.ОписаниеМетаданных + + + + ОписаниеМетаданныхРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеМетаданныхКонтекстноеМеню + 20 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 27 + true + true + + + + ДатаПоследнегоИспользования + 27 + + <key>ru</key> + <value>Дата последнего +использования</value> + + true + true + + true + + + + Список.ДатаПоследнегоИспользования + + + + ДатаПоследнегоИспользованияРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + ДатаПоследнегоИспользованияКонтекстноеМеню + 28 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 8 + true + true + + + + Ссылка + 24 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 25 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 2 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + + ФормаВключитьВозможностьРедактирования + 22 + true + true + + true + + + ФормаВключитьВозможностьРедактированияРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ВерсииРасширений + true + true + true + true + +
+ + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..02dc480d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,30 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + Элементы.ФормаВключитьВозможностьРедактирования.Доступность = Ложь; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..f1a51274 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,256 @@ + + + + ОписаниеМетаданных + 4 + true + true + + true + + + + Объект.ОписаниеМетаданных + + + + ОписаниеМетаданныхРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеМетаданныхКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ДатаПоследнегоИспользования + 9 + true + true + + true + + + + Объект.ДатаПоследнегоИспользования + + + + ДатаПоследнегоИспользованияРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + + ДатаПоследнегоИспользованияКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаВключитьВозможностьРедактирования + 7 + true + true + + true + + + ФормаВключитьВозможностьРедактированияРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ВерсииРасширений + + + true + + + true + +
true
+ true +
+ + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..02dc480d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,30 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + Элементы.ФормаВключитьВозможностьРедактирования.Доступность = Ложь; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..3aacec5f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" @@ -0,0 +1,890 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +// Параметры: +// ИмяПараметра - Строка +// УстановленныеПараметры - Массив из Строка +// +Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса, УстановленныеПараметры) Экспорт + + Если ИменаПараметровСеанса = Неопределено + Или ИменаПараметровСеанса.Найти("УстановленныеРасширения") <> Неопределено Тогда + + ПараметрыСеанса.УстановленныеРасширения = УстановленныеРасширения(Истина); + УстановленныеПараметры.Добавить("УстановленныеРасширения"); + КонецЕсли; + + Если ИменаПараметровСеанса = Неопределено + Или ИменаПараметровСеанса.Найти("ПодключенныеРасширения") <> Неопределено Тогда + + Расширения = РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансАктивные); + ПараметрыСеанса.ПодключенныеРасширения = КонтрольныеСуммыРасширений(Расширения, "БезопасныйРежим"); + УстановленныеПараметры.Добавить("ПодключенныеРасширения"); + КонецЕсли; + + Если ИменаПараметровСеанса <> Неопределено + И ИменаПараметровСеанса.Найти("ВерсияРасширений") <> Неопределено Тогда + + ПараметрыСеанса.ВерсияРасширений = ВерсияРасширений(); + УстановленныеПараметры.Добавить("ВерсияРасширений"); + КонецЕсли; + + Если ИменаПараметровСеанса = Неопределено + И ТекущийРежимЗапуска() <> Неопределено Тогда + + ЗарегистрироватьИспользованиеВерсииРасширений(); + КонецЕсли; + +КонецПроцедуры + +// Возвращает отдельные контрольные суммы для основных расширений и +// исправлений для установки параметра сеанса УстановленныеРасширения и +// дальнейшей проверки изменений. +// +// Вызывается при запуске для установки параметра сеанса УстановленныеРасширения, +// который требуется для анализа наличия расширений и контроля динамического обновления, +// а также из формы установки расширений конфигурации в режиме 1С:Предприятия. +// +// Для сеанса запущенного без разделителей возвращается только состав неразделенных (общих) +// расширений, независимо от установленных разделителей. +// +// Возвращаемое значение: +// ФиксированнаяСтруктура: +// * Основные - Строка - контрольная сумма всех расширений, кроме исправительных расширений. +// * Исправления - Строка - контрольная сумма всех исправительных расширений. +// +Функция УстановленныеРасширения(ПриЗапуске = Ложь) Экспорт + + Если ОбщегоНазначения.РазделениеВключено() + И ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда + + МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); + Неразделенные = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей(); + Иначе + Неразделенные = Ложь; + КонецЕсли; + + РасширенияБазыДанных = РасширенияКонфигурации.Получить(); + Если ПриЗапуске Тогда + РасширенияПриЗапуске = Новый Соответствие; + АктивныеРасширения = РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансАктивные); + Для Каждого Расширение Из АктивныеРасширения Цикл + РасширенияПриЗапуске.Вставить(КонтрольнаяСуммаРасширения(Расширение), Расширение); + КонецЦикла; + НеподключенныеРасширения = РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансОтключенные); + Для Каждого Расширение Из НеподключенныеРасширения Цикл + РасширенияПриЗапуске.Вставить(КонтрольнаяСуммаРасширения(Расширение), Расширение); + КонецЦикла; + ДобавленныеРасширения = Новый Соответствие; + Расширения = Новый Массив; + Для Каждого Расширение Из РасширенияБазыДанных Цикл + КонтрольнаяСумма = КонтрольнаяСуммаРасширения(Расширение); + РасширениеПриЗапуске = РасширенияПриЗапуске.Получить(КонтрольнаяСумма); + Если РасширениеПриЗапуске <> Неопределено Тогда + ДобавленныеРасширения.Вставить(КонтрольнаяСумма, Истина); + Расширения.Добавить(РасширениеПриЗапуске); + КонецЕсли; + КонецЦикла; + Для Каждого ОписаниеРасширения Из РасширенияПриЗапуске Цикл + Если ДобавленныеРасширения.Получить(ОписаниеРасширения.Ключ) = Неопределено Тогда + Расширения.Добавить(ОписаниеРасширения.Значение); + КонецЕсли; + КонецЦикла; + Иначе + Расширения = РасширенияБазыДанных; + КонецЕсли; + + Основные = Новый Массив; + Исправления = Новый Массив; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда + МодульОбновлениеКонфигурации = ОбщегоНазначения.ОбщийМодуль("ОбновлениеКонфигурации"); + Иначе + МодульОбновлениеКонфигурации = Неопределено; + КонецЕсли; + + Для Каждого Расширение Из Расширения Цикл + Если Неразделенные И Расширение.ОбластьДействия = ОбластьДействияРасширенияКонфигурации.РазделениеДанных Тогда + Продолжить; + КонецЕсли; + Если МодульОбновлениеКонфигурации <> Неопределено И МодульОбновлениеКонфигурации.ЭтоИсправление(Расширение) Тогда + Исправления.Добавить(Расширение); + Иначе + Основные.Добавить(Расширение); + КонецЕсли; + КонецЦикла; + + УстановленныеРасширения = Новый Структура; + УстановленныеРасширения.Вставить("Основные", КонтрольныеСуммыРасширений(Основные)); + УстановленныеРасширения.Вставить("Исправления", КонтрольныеСуммыРасширений(Исправления)); + УстановленныеРасширения.Вставить("ОсновныеСостояние", КонтрольныеСуммыРасширений(Основные, "Все")); + УстановленныеРасширения.Вставить("ИсправленияСостояние", КонтрольныеСуммыРасширений(Исправления, "Все")); + + Если ПриЗапуске + И АктивныеРасширения.Количество() = 0 + И НеподключенныеРасширения.Количество() = 0 + И РасширенияБазыДанных.Количество() <> 0 + И СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда + + УстановленныеРасширения.Вставить("РасширенияНедоступны"); + КонецЕсли; + + Возврат Новый ФиксированнаяСтруктура(УстановленныеРасширения); + +КонецФункции + +// Возвращает признак изменения состава расширений после запуска сеанса. +// +// Возвращаемое значение: +// Булево +// +Функция РасширенияИзмененыДинамически() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Если ПараметрыСеанса.УстановленныеРасширения.Свойство("РасширенияНедоступны") Тогда + Возврат Ложь; + КонецЕсли; + + УстановленныеРасширения = УстановленныеРасширения(); + + Возврат ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние <> УстановленныеРасширения.ОсновныеСостояние + Или ПараметрыСеанса.УстановленныеРасширения.ИсправленияСостояние <> УстановленныеРасширения.ИсправленияСостояние; + +КонецФункции + +// Возвращает информацию по измененным расширениям и исправлениям. +// +// Возвращаемое значение: +// Структура: +// * Расширения - Структура: +// * Добавлено - Число +// * Удалено - Число +// * Исправления - Структура: +// * Добавлено - Число +// * Удалено - Число +// +Функция ДинамическиИзмененныеРасширения() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Если ПараметрыСеанса.УстановленныеРасширения.Свойство("РасширенияНедоступны") Тогда + Возврат Неопределено; + КонецЕсли; + + УстановленныеРасширения = УстановленныеРасширения(); + + Результат = Новый Структура; + Результат.Вставить("Расширения", Неопределено); + Результат.Вставить("Исправления", Неопределено); + Если ПараметрыСеанса.УстановленныеРасширения.ИсправленияСостояние <> УстановленныеРасширения.ИсправленияСостояние Тогда + Изменения = ИзмененияВСоставеРасширений(ПараметрыСеанса.УстановленныеРасширения.Исправления, УстановленныеРасширения.Исправления); + Результат.Исправления = Изменения; + КонецЕсли; + + Если ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние <> УстановленныеРасширения.ОсновныеСостояние Тогда + Изменения = ИзмененияВСоставеРасширений(ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние, УстановленныеРасширения.ОсновныеСостояние); + Результат.Расширения = Изменения; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Добавляет сведения, что сеанс начал использование версии метаданных. +Процедура ЗарегистрироватьИспользованиеВерсииРасширений() Экспорт + + Если ТранзакцияАктивна() Тогда + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПриРегистрацииИспользованияВерсииРасширенийВНеразделенномСеансе(); + КонецЕсли; + Возврат; + КонецЕсли; + + ВерсияРасширений = ПараметрыСеанса.ВерсияРасширений; + + Если Не ЗначениеЗаполнено(ВерсияРасширений) Тогда + Возврат; + КонецЕсли; + + ОкругленнаяДатаНачалаСеанса = ОкругленнаяДатаНачалаСеанса(); + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ВерсияРасширений", ВерсияРасширений); + Запрос.УстановитьПараметр("ДатаПоследнегоИспользования", ОкругленнаяДатаНачалаСеанса); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ВерсииРасширений КАК ВерсииРасширений + |ГДЕ + | НЕ ВерсииРасширений.ПометкаУдаления + | И ВерсииРасширений.Ссылка = &ВерсияРасширений + | И ВерсииРасширений.ДатаПоследнегоИспользования < &ДатаПоследнегоИспользования"; + + // Если в другом сеансе обновляется дата последнего использования текущей версии, тогда + // нужно дождаться окончания обновления, чтобы избежать очереди исключительных блокировок. + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ВерсияРасширений); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + РезультатЗапроса = Запрос.Выполнить(); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если Не РезультатЗапроса.Пустой() Тогда + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ВерсияРасширений); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Объект = СлужебныйЭлемент(ВерсияРасширений); + + Если Объект <> Неопределено + И Объект.ДатаПоследнегоИспользования < ОкругленнаяДатаНачалаСеанса Тогда + + Объект.ДатаПоследнегоИспользования = ОкругленнаяДатаНачалаСеанса; + Объект.Записать(); + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЕсли; + + ОбновитьПоследнююВерсиюРасширений(ВерсияРасширений); + +КонецПроцедуры + +Функция ПоследняяВерсияРасширений() Экспорт + + ИмяПараметра = "СтандартныеПодсистемы.БазоваяФункциональность.ПоследняяВерсияРасширений"; + ХранимыеСвойства = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, Истина); + + Если ХранимыеСвойства = Неопределено + Или ТипЗнч(ХранимыеСвойства) <> Тип("Структура") + Или Не ХранимыеСвойства.Свойство("ВерсияРасширений") + Или Не ХранимыеСвойства.Свойство("ДатаОбновления") Тогда + + ХранимыеСвойства = Новый Структура("ВерсияРасширений, ДатаОбновления", , '00010101'); + КонецЕсли; + + Возврат ХранимыеСвойства; + +КонецФункции + +// Удаляет устаревшие версии метаданных. +Процедура УдалитьУстаревшиеВерсииПараметров() Экспорт + + ДругаяВерсия = ДругаяВерсияРасширений(); + + Если Не ЗначениеЗаполнено(ДругаяВерсия) Тогда + ОтключитьРегламентноеЗаданиеЕслиТребуется(); + Возврат; + КонецЕсли; + + ПроверяемыеПриложения = Новый Соответствие; + ПроверяемыеПриложения.Вставить("1CV8", Истина); + ПроверяемыеПриложения.Вставить("1CV8C", Истина); + ПроверяемыеПриложения.Вставить("WebClient", Истина); + ПроверяемыеПриложения.Вставить("COMConnection", Истина); + ПроверяемыеПриложения.Вставить("WSConnection", Истина); + ПроверяемыеПриложения.Вставить("BackgroundJob", Истина); + ПроверяемыеПриложения.Вставить("SystemBackgroundJob", Истина); + + МассивСеансов = ПолучитьСеансыИнформационнойБазы(); + НаименьшаяДатаНачалаСеанса = ПолучитьТекущийСеансИнформационнойБазы().НачалоСеанса; + + Для Каждого Сеанс Из МассивСеансов Цикл + Если Сеанс.НачалоСеанса >= НаименьшаяДатаНачалаСеанса + Или ПроверяемыеПриложения.Получить(Сеанс.ИмяПриложения) = Неопределено Тогда + Продолжить; + КонецЕсли; + НаименьшаяДатаНачалаСеанса = Сеанс.НачалоСеанса; + КонецЦикла; + НаименьшаяДатаНачалаСеанса = ОкругленнаяДатаНачалаСеанса(НаименьшаяДатаНачалаСеанса); + + // Пометка устаревших версий расширений. + Пока Истина Цикл + ДругаяВерсия = ДругаяВерсияРасширений(НаименьшаяДатаНачалаСеанса); + Если Не ЗначениеЗаполнено(ДругаяВерсия) Тогда + Прервать; + КонецЕсли; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ДругаяВерсия); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Объект = СлужебныйЭлемент(ДругаяВерсия); + + Если Объект <> Неопределено + И Объект.ДатаПоследнегоИспользования < НаименьшаяДатаНачалаСеанса Тогда + + Объект.ПометкаУдаления = Истина; + Объект.Записать(); + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЦикла; + + ОтключитьРегламентноеЗаданиеЕслиТребуется(); + +КонецПроцедуры + +// Вызывается из формы Расширения. +Процедура ПриУдаленииВсехРасширений() Экспорт + + ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Истина); + +КонецПроцедуры + +// Включает/Отключает регламентное задание УдалениеУстаревшихПараметровРаботыВерсийРасширений. +Процедура ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Включить) Экспорт + + РегламентныеЗаданияСервер.УстановитьИспользованиеПредопределенногоРегламентногоЗадания( + Метаданные.РегламентныеЗадания.УдалениеУстаревшихПараметровРаботыВерсийРасширений, Включить); + +КонецПроцедуры + +// Для общих форм Расширения, УстановленныеИсправления. +// +// Возвращаемое значение: +// РасширениеКонфигурации +// Неопределено +// +Функция НайтиРасширение(ИдентификаторРасширения) Экспорт + + Отбор = Новый Структура; + Отбор.Вставить("УникальныйИдентификатор", Новый УникальныйИдентификатор(ИдентификаторРасширения)); + Расширения = РасширенияКонфигурации.Получить(Отбор); + + Расширение = Неопределено; + + Если Расширения.Количество() = 1 Тогда + Расширение = Расширения[0]; + КонецЕсли; + + Возврат Расширение; + +КонецФункции + +// Для общих форм Расширения, УстановленныеИсправления. +// +// Параметры: +// Расширение - РасширениеКонфигурации +// +Процедура ОтключитьПредупрежденияБезопасности(Расширение) Экспорт + + Расширение.ЗащитаОтОпасныхДействий = ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений(); + +КонецПроцедуры + +// Для общих форм Расширения, УстановленныеИсправления. +Процедура ОтключитьИспользованиеОсновныхРолейДляВсехПользователей(Расширение) Экспорт + + Расширение.ИспользоватьОсновныеРолиДляВсехПользователей = Ложь; + +КонецПроцедуры + +// Для общих форм Расширения, УстановленныеИсправления. +Процедура УдалитьРасширения(ИдентификаторыРасширений, ТекстОшибки) Экспорт + + УдаляемыеРасширения = Новый Массив; + + ТекстОшибки = ""; + Попытка + УдаляемоеРасширение = ""; + Для Каждого ИдентификаторРасширения Из ИдентификаторыРасширений Цикл + Расширение = НайтиРасширение(ИдентификаторРасширения); + Если Расширение <> Неопределено Тогда + ОписаниеРасширения = Новый Структура; + ОписаниеРасширения.Вставить("Удалено", Ложь); + ОписаниеРасширения.Вставить("Расширение", Расширение); + ОписаниеРасширения.Вставить("ДанныеРасширения", Расширение.ПолучитьДанные()); + УдаляемыеРасширения.Добавить(ОписаниеРасширения); + КонецЕсли; + КонецЦикла; + Индекс = УдаляемыеРасширения.Количество() - 1; + Пока Индекс >= 0 Цикл + ОписаниеРасширения = УдаляемыеРасширения[Индекс]; + ОтключитьПредупрежденияБезопасности(ОписаниеРасширения.Расширение); + ОтключитьИспользованиеОсновныхРолейДляВсехПользователей(ОписаниеРасширения.Расширение); + УдаляемоеРасширение = ОписаниеРасширения.Расширение.Синоним; + УдаляемоеРасширение = ?(УдаляемоеРасширение = "", ОписаниеРасширения.Расширение.Имя, УдаляемоеРасширение); + ОписаниеРасширения.Расширение.Удалить(); + УдаляемоеРасширение = ""; + ОписаниеРасширения.Удалено = Истина; + Индекс = Индекс - 1; + КонецЦикла; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось удалить расширение ""%1"" по причине: + |%2'"), + УдаляемоеРасширение, + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + + Если Не ЗначениеЗаполнено(ТекстОшибки) Тогда + Попытка + Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() + И РасширенияКонфигурации.Получить().Количество() = 0 Тогда + + Справочники.ВерсииРасширений.ПриУдаленииВсехРасширений(); + КонецЕсли; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'После удаления, при обработке случая удаления всех расширений, произошла ошибка: + |%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ТекстОшибки) Тогда + Попытка + РегистрыСведений.ПараметрыРаботыВерсийРасширений.ОбновитьПараметрыРаботыРасширений(); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'После удаления, при подготовке оставшихся расширений к работе, произошла ошибка: + |%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + КонецЕсли; + + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ИнформацияОбОшибкеВосстановления = Неопределено; + ВосстановлениеВыполнялось = Ложь; + Попытка + Для Каждого ОписаниеРасширения Из УдаляемыеРасширения Цикл + Если Не ОписаниеРасширения.Удалено Тогда + Продолжить; + КонецЕсли; + ОписаниеРасширения.Расширение.Записать(ОписаниеРасширения.ДанныеРасширения); + ВосстановлениеВыполнялось = Истина; + КонецЦикла; + Исключение + ИнформацияОбОшибкеВосстановления = ИнформацияОбОшибке(); + ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При попытке восстановить удаленные расширения произошла еще одна ошибка: + |%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибкеВосстановления)); + КонецПопытки; + Если ВосстановлениеВыполнялось + И ИнформацияОбОшибкеВосстановления = Неопределено Тогда + + ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС + + НСтр("ru = 'Удаленные расширения были восстановлены.'"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Для общих форм Расширения, УстановленныеИсправления. +// +// Возвращаемое значение: +// Массив из УникальныйИдентификатор +// +Функция ЗапросыНаОтменуРазрешенийИспользованияВнешнегоМодуля(ИдентификаторыРасширений) Экспорт + + Запросы = Новый Массив; + + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + Если Не МодульРаботаВБезопасномРежиме.ИспользуютсяПрофилиБезопасности() Тогда + Возврат Запросы; + КонецЕсли; + + Разрешения = Новый Массив; + + Для Каждого ИдентификаторРасширения Из ИдентификаторыРасширений Цикл + ТекущееРасширение = НайтиРасширение(ИдентификаторРасширения); + Разрешения.Добавить(МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнегоМодуля( + ТекущееРасширение.Имя, Base64Строка(ТекущееРасширение.ХешСумма))); + КонецЦикла; + + Запросы.Добавить(МодульРаботаВБезопасномРежиме.ЗапросНаОтменуРазрешенийИспользованияВнешнихРесурсов( + ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.ПараметрыРаботыВерсийРасширений"), + Разрешения)); + + Возврат Запросы; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Возвращает контрольные суммы указанных расширений. +// +// Параметры: +// Расширения - Массив - получить контрольные суммы указанных расширений. +// УчитыватьСостояниеРасширений - Булево - учитывать признаки Активно и БезопасныйРежим. +// +// Возвращаемое значение: +// Строка - строки вида "<Имя расширения> (<Версия расширения>) <Контрольная сумма>". +// +Функция КонтрольныеСуммыРасширений(Расширения, СвойстваПодключения = "") + + Список = Новый СписокЗначений; + + Для Каждого Расширение Из Расширения Цикл + Список.Добавить(КонтрольнаяСуммаРасширения(Расширение, СвойстваПодключения)); + КонецЦикла; + + Если Список.Количество() <> 0 Тогда + КонтрольнаяСумма = "#" + Метаданные.Имя + " (" + Метаданные.Версия + ")"; + Список.Добавить(КонтрольнаяСумма); + КонецЕсли; + + КонтрольныеСуммы = ""; + Для Каждого Элемент Из Список Цикл + КонтрольныеСуммы = КонтрольныеСуммы + Символы.ПС + Элемент.Значение; + КонецЦикла; + + Возврат СокрЛ(КонтрольныеСуммы); + +КонецФункции + +// Для функций КонтрольныеСуммыРасширений и УстановленныеРасширения. +Функция КонтрольнаяСуммаРасширения(Расширение, СвойстваПодключения = "") + + КонтрольнаяСумма = Расширение.Имя + " (" + Расширение.Версия + ") " + Base64Строка(Расширение.ХешСумма); + + Если ЗначениеЗаполнено(СвойстваПодключения) Тогда + КонтрольнаяСумма = КонтрольнаяСумма + " БезопасныйРежим:" + Расширение.БезопасныйРежим; + КонецЕсли; + + Если СвойстваПодключения = "Все" Тогда + КонтрольнаяСумма = КонтрольнаяСумма + + " ПередаватьВПодчиненныеУзлыРИБ:" + Расширение.ИспользуетсяВРаспределеннойИнформационнойБазе + + " Активно:" + Расширение.Активно; + КонецЕсли; + + Возврат КонтрольнаяСумма; + +КонецФункции + +// Возвращает текущую версию расширений. +// Для поиска версии используется описание подключенных расширений. +// +Функция ВерсияРасширений() + + Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат ПустаяСсылка(); + КонецЕсли; + + ОписаниеРасширений = ПараметрыСеанса.ПодключенныеРасширения; + Если Не ЗначениеЗаполнено(ОписаниеРасширений) Тогда + Возврат ПустаяСсылка(); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ВерсииРасширений.Ссылка КАК Ссылка, + | ВерсииРасширений.ОписаниеМетаданных КАК ОписаниеРасширений + |ИЗ + | Справочник.ВерсииРасширений КАК ВерсииРасширений + |ГДЕ + | НЕ ВерсииРасширений.ПометкаУдаления"; + + // Если в другом сеансе создается новая версия, тогда нужно дождаться + // окончания создания, чтобы избежать очереди исключительных блокировок. + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ПризнакДобавленияНовойВерсии()); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Выборка = Запрос.Выполнить().Выбрать(); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если ВерсияНайдена(Выборка, ОписаниеРасширений) Тогда + ВерсияРасширений = Выборка.Ссылка; + Иначе + // Создание новой версии расширений. + ОкругленнаяДатаНачалаСеанса = ОкругленнаяДатаНачалаСеанса(); + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ПризнакДобавленияНовойВерсии()); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + // Повторная проверка, что версия еще не создана, + // что маловероятно, но возможно между транзакциями. + РезультатЗапроса = Запрос.Выполнить(); + Выборка = РезультатЗапроса.Выбрать(); + Если ВерсияНайдена(Выборка, ОписаниеРасширений) Тогда + ВерсияРасширений = Выборка.Ссылка; + Иначе + Выборка = РезультатЗапроса.Выбрать(); + Если Выборка.Следующий() И Выборка.Количество() = 1 Тогда + ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Истина); + КонецЕсли; + Объект = СлужебныйЭлемент(); + Объект.ОписаниеМетаданных = ОписаниеРасширений; + Объект.ДатаПоследнегоИспользования = ОкругленнаяДатаНачалаСеанса; + Объект.Записать(); + ВерсияРасширений = Объект.Ссылка; + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЕсли; + + Возврат ВерсияРасширений; + +КонецФункции + +// Для функции ВерсияРасширений. +Функция ВерсияНайдена(Выборка, ОписаниеРасширений) + + Пока Выборка.Следующий() Цикл + Если Выборка.ОписаниеРасширений = ОписаниеРасширений Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +// Для функции ВерсияРасширений. +Функция ПризнакДобавленияНовойВерсии() + + Возврат Справочники.ВерсииРасширений.ПолучитьСсылку( + Новый УникальныйИдентификатор("61ce6265-abb2-11ea-87d6-b06ebfbf08c7")); + +КонецФункции + +// Для функции ВерсияРасширений и процедур УдалитьУстаревшиеВерсииПараметров, +// ЗарегистрироватьИспользованиеВерсииРасширений. +// +Функция ОкругленнаяДатаНачалаСеанса(НачалоСеанса = '00010101') + + Если ЗначениеЗаполнено(НачалоСеанса) Тогда + Возврат НачалоЧаса(НачалоСеанса); + КонецЕсли; + + Возврат НачалоЧаса(ПолучитьТекущийСеансИнформационнойБазы().НачалоСеанса); + +КонецФункции + +// Для функции ВерсияРасширений и процедур УдалитьУстаревшиеВерсииПараметров, +// ЗарегистрироватьИспользованиеВерсииРасширений. +// +Функция СлужебныйЭлемент(Ссылка = Неопределено) + + Если Ссылка = Неопределено Тогда + ЭлементСправочника = СоздатьЭлемент(); + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ЕСТЬNULL(МАКСИМУМ(ВерсииРасширений.Код), 0) КАК МаксимальныйНомер + |ИЗ + | Справочник.ВерсииРасширений КАК ВерсииРасширений"; + Выборка = Запрос.Выполнить().Выбрать(); + ЭлементСправочника.Код = ?(Выборка.Следующий(), Выборка.МаксимальныйНомер, 0) + 1; + Иначе + ЭлементСправочника = Ссылка.ПолучитьОбъект(); + Если ЭлементСправочника = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + КонецЕсли; + + ЭлементСправочника.ДополнительныеСвойства.Вставить("НеВыполнятьКонтрольУдаляемых"); + ЭлементСправочника.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + ЭлементСправочника.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; + ЭлементСправочника.ОбменДанными.Загрузка = Истина; + + Возврат ЭлементСправочника; + +КонецФункции + +// Для процедуры УдалитьУстаревшиеВерсииПараметров. +Функция ДругаяВерсияРасширений(НаименьшаяДатаНачалаСеанса = '39991231') + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + Запрос.УстановитьПараметр("НаименьшаяДатаНачалаСеанса", НаименьшаяДатаНачалаСеанса); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ВерсииРасширений.Ссылка КАК Ссылка + |ИЗ + | Справочник.ВерсииРасширений КАК ВерсииРасширений + |ГДЕ + | ВерсииРасширений.Ссылка <> &ВерсияРасширений + | И ВерсииРасширений.ДатаПоследнегоИспользования < &НаименьшаяДатаНачалаСеанса + | И НЕ ВерсииРасширений.ПометкаУдаления"; + + // Если справочник ВерсииРасширений изменяется в другом сеансе, + // тогда нужно дождаться окончания изменений. + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Выборка = Запрос.Выполнить().Выбрать(); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если Выборка.Следующий() Тогда + Возврат Выборка.Ссылка; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Для процедуры УдалитьУстаревшиеВерсииПараметров. +Процедура ОтключитьРегламентноеЗаданиеЕслиТребуется() + + // Отключение регламентного задания, если осталась только одна версия расширений. + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 2 + | ВерсииРасширений.Ссылка КАК Ссылка + |ИЗ + | Справочник.ВерсииРасширений КАК ВерсииРасширений + |ГДЕ + | НЕ ВерсииРасширений.ПометкаУдаления"; + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Количество() = 0 + Или Выборка.Количество() = 1 + И Выборка.Следующий() + И Выборка.Ссылка = ПараметрыСеанса.ВерсияРасширений Тогда + + ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Ложь); + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Для процедуры ЗарегистрироватьИспользованиеВерсииРасширений. +Процедура ОбновитьПоследнююВерсиюРасширений(ВерсияРасширений) + + Если КонфигурацияБазыДанныхИзмененаДинамически() + Или РасширенияИзмененыДинамически() Тогда + Возврат; + КонецЕсли; + + ХранимыеСвойства = ПоследняяВерсияРасширений(); + + Если ХранимыеСвойства.ВерсияРасширений = ВерсияРасширений Тогда + Возврат; + КонецЕсли; + + ХранимыеСвойства.ВерсияРасширений = ВерсияРасширений; + ХранимыеСвойства.ДатаОбновления = ТекущаяДатаСеанса(); + + ИмяПараметра = "СтандартныеПодсистемы.БазоваяФункциональность.ПоследняяВерсияРасширений"; + СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, ХранимыеСвойства, Истина); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ЗапланироватьОбновлениеПараметровОграниченияДоступа( + "ОбновитьПоследнююВерсиюРасширений"); + КонецЕсли; + +КонецПроцедуры + +// Для функции ДинамическиИзмененныеРасширения. +Функция ИзмененияВСоставеРасширений(ТекущийСостав, НовыйСостав) + СоответствиеНовых = Новый Соответствие; + Для Каждого Расширение Из СтрРазделить(НовыйСостав, Символы.ПС) Цикл + Если СтрНачинаетсяС(Расширение, "#") Или Не ЗначениеЗаполнено(Расширение) Тогда + Продолжить; + КонецЕсли; + ИмяИХеш = СтрРазделить(Расширение, " "); + СоответствиеНовых.Вставить(ИмяИХеш[0], ИмяИХеш[1]); + КонецЦикла; + + СоответствиеТекущих = Новый Соответствие; + Для Каждого Расширение Из СтрРазделить(ТекущийСостав, Символы.ПС) Цикл + Если СтрНачинаетсяС(Расширение, "#") Или Не ЗначениеЗаполнено(Расширение) Тогда + Продолжить; + КонецЕсли; + ИмяИХеш = СтрРазделить(Расширение, " "); + СоответствиеТекущих.Вставить(ИмяИХеш[0], ИмяИХеш[1]); + КонецЦикла; + + Добавлено = 0; + Изменено = 0; + СписокНовых = Новый Массив; + Для Каждого НовоеРасширение Из СоответствиеНовых Цикл + НайденныйЭлемент = СоответствиеТекущих[НовоеРасширение.Ключ]; + Если НайденныйЭлемент = Неопределено Тогда + Добавлено = Добавлено + 1; + СписокНовых.Добавить(НовоеРасширение.Ключ); + ИначеЕсли НайденныйЭлемент <> НовоеРасширение.Значение Тогда + Изменено = Изменено + 1; + СоответствиеТекущих.Удалить(НовоеРасширение.Ключ); + Иначе + СоответствиеТекущих.Удалить(НовоеРасширение.Ключ); + КонецЕсли; + КонецЦикла; + Удалено = СоответствиеТекущих.Количество(); + + Результат = Новый Структура; + Результат.Вставить("Добавлено", Добавлено); + Результат.Вставить("Изменено", Изменено); + Результат.Вставить("Удалено", Удалено); + Результат.Вставить("СписокНовых", СписокНовых); + + Возврат Результат; +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..b2fdd6cc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" @@ -0,0 +1,45 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +Перем НовыйОбъект; + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + НовыйОбъект = ЭтоНовый(); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если НовыйОбъект Тогда + Справочники.ВерсииРасширений.ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" new file mode 100644 index 00000000..92137cdd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\222\320\265\321\200\321\201\320\270\320\270\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" @@ -0,0 +1,186 @@ + + + + + + + + + + ВерсииРасширений + + ru + Версии расширений + + Catalog.ВерсииРасширений.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + ru + Обобщенная версия набора метаданных + + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + ru + Порядковый номер + + + ru + Номер добавленной версии по порядку + + + Use + + + + DontUse + Managed + + ru + Версия расширений + + 2 + true + 9 + Variable + true + true + AutoUpdate + InDialog + BothWays + Catalog.ВерсииРасширений.Form.ФормаЭлемента + Catalog.ВерсииРасширений.Form.ФормаСписка + DontUse + + ОписаниеМетаданных + + ru + Описание метаданных + + + String + + + + ru + Строки вида: +<Имя расширения> (<Версия расширения>) <Хеш расширения> +... + + + + + + + Use + Use + + + ДатаПоследнегоИспользования + + ru + Дата последнего использования + + + Date + + + + ru + Обновляется при входе, если меньше даты начала сеанса округленной до часа. +Используется в задании удаления устаревших версий расширений, у которых дата последнего использования меньше минимальной даты начала активных сеансов, округленной до часа. + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..33c1f770 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,24 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + ЭтоТекущая + Desc + + + НомерВерсии + Desc + + Normal + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Form.form" new file mode 100644 index 00000000..668bba2f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Form.form" @@ -0,0 +1,1652 @@ + + + + Список + 2 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Copy + + ГруппаВертикально + 114 + + ГруппаОсновное + 116 + + СписокАвтор + 49 + VeryHigh + true + true + + true + + + + Список.Автор + + + + ru + Пользователь, который добавил версию файла в список + + + СписокАвторРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + + СписокАвторКонтекстноеМеню + 50 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СписокВладелец + 47 + Usual + true + + true + + + + Список.Владелец + + + + СписокВладелецРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + + СписокВладелецКонтекстноеМеню + 48 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СписокНомерВерсии + 57 + Usual + true + true + + true + + + + Список.НомерВерсии + + + + ru + Номер версии файла + + + СписокНомерВерсииРасширеннаяПодсказка + 94 + true + true + + true + + Label + true + true + + Left + + + + СписокНомерВерсииКонтекстноеМеню + 58 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 12 + true + true + false + true + true + true + true + + + + СписокДатаСоздания + 53 + Usual + true + true + + true + + + + Список.ДатаСоздания + + + + ru + Дата добавления версии файла в список + + + СписокДатаСозданияРасширеннаяПодсказка + 96 + true + true + + true + + Label + true + true + + Left + + + + СписокДатаСозданияКонтекстноеМеню + 54 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 15 + true + true + false + true + true + true + true + + + + СписокРазмер + 55 + Usual + true + true + + true + + + + Список.Размер + + + + ru + Размер версии файла в байтах + + + СписокРазмерРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + + СписокРазмерКонтекстноеМеню + 56 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Основное</value> + + + ГруппаОсновноеРасширеннаяПодсказка + 117 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + СписокКомментарий + 51 + VeryLow + true + true + + true + + + + Список.Комментарий + + + + ru + Комментарий к версии файла + + + СписокКомментарийРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + + СписокКомментарийКонтекстноеМеню + 52 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + Style.ПоясняющийТекст + + + + true + true + + true + + + <key>ru</key> + <value>Вертикально</value> + + + ГруппаВертикальноРасширеннаяПодсказка + 115 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + СписокСсылка + 59 + VeryLow + true + true + + + + Список.Ссылка + + + + СписокСсылкаРасширеннаяПодсказка + 98 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 60 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 1 + true + true + true + true + true + true + + + None + + СписокКоманднаяПанель + 22 + true + true + + true + + Left + true + + + Selection + СписокВыбор + + + BeforeAddRow + СписокПередНачаломДобавления + + + BeforeDeleteRow + СписокПередУдалением + + + OnActivateRow + СписокПриАктивизацииСтроки + + + BeforeRowChange + СписокПередНачаломИзменения + + + true + true + + true + + СписокСтрокаПоиска + 99 + + СписокСтрокаПоискаРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 100 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 102 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 103 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 105 + + СписокУправлениеПоискомРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 106 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 89 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 13 + + КонтекстноеМенюСписокОткрытьВерсию + 63 + true + true + + true + + false + + КонтекстноеМенюСписокОткрытьВерсиюExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьВерсию + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюСписокОткрытьКарточку + 43 + true + true + + true + + false + + КонтекстноеМенюСписокОткрытьКарточкуExtendedTooltip + 83 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьКарточку + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюСписокСделатьАктивной + 44 + true + true + + true + + false + + КонтекстноеМенюСписокСделатьАктивнойExtendedTooltip + 84 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СделатьАктивной + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюСписокСравнить + 64 + true + true + + true + + false + + КонтекстноеМенюСписокСравнитьExtendedTooltip + 85 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Сравнить + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюСписокСохранитьКак + 71 + true + true + + true + + + КонтекстноеМенюСписокСохранитьКакExtendedTooltip + 86 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюСписокКопировать + 46 + true + true + + true + + false + + КонтекстноеМенюСписокКопироватьExtendedTooltip + 88 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюУстановитьПометкуУдаления + 112 + true + true + + true + + + СписокКонтекстноеМенюУстановитьПометкуУдаленияРасширеннаяПодсказка + 113 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюУдалить + 122 + true + true + + true + + + СписокКонтекстноеМенюУдалитьРасширеннаяПодсказка + 123 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Удалить + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + 7 + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + true + true + true + true + + Список.ИндексКартинки + + + CommonPicture.КоллекцияПиктограммФайлов + + + Style.BorderColor + + None + None + None + SelectionPresentationAndChoice + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + +
+ Top + + ФормаКоманднаяПанель + -1 + + ФормаОткрытьВерсию + 62 + true + true + + true + + false + + ФормаОткрытьВерсиюExtendedTooltip + 74 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьВерсию + true + true + UserCmds + Auto + + + ФормаОткрытьКарточку + 36 + true + true + + true + + false + + ФормаОткрытьКарточкуExtendedTooltip + 75 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьКарточку + true + true + UserCmds + Auto + + + ФормаСделатьАктивной + 35 + true + true + + true + + false + + ФормаСделатьАктивнойExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СделатьАктивной + Auto + true + true + UserCmds + Auto + + + ФормаСравнить + 61 + true + true + + true + + false + + ФормаСравнитьExtendedTooltip + 78 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Сравнить + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьКак + 70 + true + true + + true + + + ФормаСохранитьКакExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСтандартныеКоманды + 72 + + ФормаУстановитьПометкуУдаления + 108 + true + true + + true + + + ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ФормаУдалить + 118 + true + true + + true + + + ФормаУдалитьРасширеннаяПодсказка + 119 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Удалить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма стандартные команды</value> + + + ФормаСтандартныеКомандыExtendedTooltip + 80 + true + true + + true + + Label + true + true + + Left + + + + + + ПоказыватьПомеченныеФайлы + 120 + true + true + + true + + + ПоказыватьПомеченныеФайлыРасширеннаяПодсказка + 121 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьПомеченныеФайлы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаИзменитьФорму + 110 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 73 + true + true + + true + + + ФормаСправкаExtendedTooltip + 81 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + + <key>ru</key> + <value>Список</value> + + 2 + + DynamicList + + + true + + + true + + + + Список.ИндексКартинкиТекущий + + + + Список.Владелец + + + Список.ДатаСоздания + + + Список.ИндексКартинки + + + Список.Код + + + Список.Комментарий + + + Список.НомерВерсии + + + Список.ПолноеНаименование + + + Список.ПометкаУдаления + + + Список.Размер + + + Список.Расширение + + + Список.РодительскаяВерсия + + + Список.Ссылка + + + Список.ЭтоТекущая + +
true
+ + ВЫБРАТЬ РАЗРЕШЕННЫЕ + ВерсииФайловПереопределяемый.Код КАК Код, + ВерсииФайловПереопределяемый.Размер КАК Размер, + ВерсииФайловПереопределяемый.Комментарий КАК Комментарий, + ВерсииФайловПереопределяемый.Автор КАК Автор, + ВерсииФайловПереопределяемый.ДатаСоздания КАК ДатаСоздания, + ВерсииФайловПереопределяемый.ПолноеНаименование КАК ПолноеНаименование, + ВерсииФайловПереопределяемый.РодительскаяВерсия КАК РодительскаяВерсия, + ВЫБОР + КОГДА ВерсииФайловПереопределяемый.ПометкаУдаления + ТОГДА ВерсииФайловПереопределяемый.ИндексКартинки + 1 + ИНАЧЕ ВерсииФайловПереопределяемый.ИндексКартинки + КОНЕЦ КАК ИндексКартинки, + ВерсииФайловПереопределяемый.ПометкаУдаления КАК ПометкаУдаления, + ВерсииФайловПереопределяемый.Владелец КАК Владелец, + ВерсииФайловПереопределяемый.Ссылка КАК Ссылка, + ВЫБОР + КОГДА ВерсииФайловПереопределяемый.Владелец.ТекущаяВерсия = ВерсииФайловПереопределяемый.Ссылка + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ЭтоТекущая, + ВерсииФайловПереопределяемый.Расширение КАК Расширение, + ВерсииФайловПереопределяемый.НомерВерсии КАК НомерВерсии +ИЗ + Справочник.ВерсииФайлов КАК ВерсииФайловПереопределяемый +ГДЕ + ВерсииФайловПереопределяемый.Владелец = &Владелец + Catalog.ВерсииФайлов + true + true + true + true + true + +
+ + УникальныйИдентификаторКарточкиФайла + 3 + + UUID + + + true + + + true + + + + ВладелецВерсии + 1 + + CatalogRef + + + true + + + true + + + + СделатьАктивной + + <key>ru</key> + <value>Сделать активной</value> + + 1 + + ru + Сделать активной + + + true + + + + СделатьАктивнойВыполнить + + + DontUse + + + ПометитьНаУдаление + + <key>ru</key> + <value>Пометить на удаление</value> + + 2 + + ru + Пометить текущий элемент на удаление / Снять пометку (Del) + + + true + + + StdPicture.MarkToDelete + + Picture + DontUse + + + ОткрытьКарточку + + <key>ru</key> + <value>Открыть карточку</value> + + 3 + + ru + Открыть карточку версии + + + true + + + StdPicture.Change + + + + ОткрытьКарточку + + + DontUse + + + Сравнить + + <key>ru</key> + <value>Показать отличия</value> + + 4 + + ru + Показать отличия двух версий + + + true + + + + Сравнить + + + DontUse + + + ОткрытьВерсию + + <key>ru</key> + <value>Просмотреть</value> + + 5 + + ru + Открыть версию файла для просмотра + + + true + + + CommonPicture.ОткрытьВыбранныйФайл + + + + ОткрытьВерсию + + + DontUse + + + СохранитьКак + + <key>ru</key> + <value>Сохранить как...</value> + + 6 + + ru + Сохранить файл версии на диск или другое устройство + + + true + + + CommonPicture.СохранитьФайлКак + + + + СохранитьКак + + + Picture + DontUse + + + ПоказыватьПомеченныеФайлы + + <key>ru</key> + <value>Показывать помеченные файлы</value> + + 7 + + ru + Показывать помеченные файлы + + + true + + + + ПоказыватьПомеченныеФайлы + + + Auto + + + Удалить + + <key>ru</key> + <value>Удалить</value> + + 8 + + ru + Удалить данные версии файла + + + true + + + StdPicture.DeleteDirectly + + + + Удалить + + + + Список + + + + Файл + + AnyRef + + true + + + УникальныйИдентификаторКарточкиФайла + + UUID + + + + + + + Form.Command.СделатьАктивной + Added + FormCommandBarImportant + 0 + + true + + + + Form.Command.ПометитьНаУдаление + Added + FormCommandBarImportant + 1 + + true + + + + Form.Command.ОткрытьКарточку + Added + FormCommandBarImportant + 2 + + true + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Help/ru.html" new file mode 100644 index 00000000..fd8aa204 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Help/ru.html" @@ -0,0 +1,11 @@ + +

Предназначен для хранения сведений о версиях файлов.

+

Открывается командой Версии файла на панели навигации карточки файла.

+

В списке с помощью кнопок панели навигации можно:

+
  • Просмотреть - открыть версию файла соответствующим приложением для просмотра (также это можно сделать двойным щелчком мыши); +
  • Открыть карточку - просмотреть данные о версии файла; +
  • Сделать активной - установить выбранную версию файла текущей. Команда доступна только для незанятых файлов; +
  • Показать отличия - сравнить две любые версии файла, предварительно выделив их. Сравнение версий поддерживается для файлов формата HTML, TXT, RTF, DOC, DOCX, ODT. +
  • Записать версию файла на компьютер с помощью команды Сохранить как меню Еще. Укажите путь на компьютере для сохранения версии файла.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Module.bsl" new file mode 100644 index 00000000..fa4b2158 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/Module.bsl" @@ -0,0 +1,334 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЗаголовокОшибки = НСтр("ru = 'Ошибка при настройке динамического списка присоединенных файлов.'"); + ОкончаниеОшибки = НСтр("ru = 'В этом случае настройка динамического списка невозможна.'"); + + ИмяСправочникаХранилищаВерсийФайлов = РаботаСФайламиСлужебный.ИмяСправочникаХраненияВерсийФайлов( + Параметры.Файл.ВладелецФайла, "", ЗаголовокОшибки, ОкончаниеОшибки); + + Если Не ПустаяСтрока(ИмяСправочникаХранилищаВерсийФайлов) Тогда + НастроитьДинамическийСписок(ИмяСправочникаХранилищаВерсийФайлов); + КонецЕсли; + + ВидимостьКомандыСравнить = + Не ОбщегоНазначения.ЭтоLinuxКлиент() И Не ОбщегоНазначения.ЭтоВебКлиент(); + Элементы.ФормаСравнить.Видимость = ВидимостьКомандыСравнить; + Элементы.КонтекстноеМенюСписокСравнить.Видимость = ВидимостьКомандыСравнить; + + УникальныйИдентификаторКарточкиФайла = Параметры.УникальныйИдентификаторКарточкиФайла; + + Список.Параметры.УстановитьЗначениеПараметра("Владелец", Параметры.Файл); + ВладелецВерсии = Параметры.Файл; + + РаботаСФайламиСлужебный.УстановитьОтборПоПометкеУдаления(Список.Отбор); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + + Элементы.ФормаОткрытьВерсию.Картинка = БиблиотекаКартинок.Лупа; + Элементы.ФормаОткрытьВерсию.Отображение = ОтображениеКнопки.Картинка; + Элементы.СписокКомментарий.Видимость = Ложь; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СделатьАктивнойВыполнить() + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + НоваяАктивнаяВерсия = ТекущиеДанные.Ссылка; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ТекущиеДанные.Владелец, ТекущиеДанные.Ссылка); + + Если ЗначениеЗаполнено(ДанныеФайла.Редактирует) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Смена активной версии разрешена только для незанятых файлов.'")); + ИначеЕсли ДанныеФайла.ПодписанЭП Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Смена активной версии разрешена только для неподписанных файлов.'")); + Иначе + СменитьАктивнуюВерсиюФайла(НоваяАктивнаяВерсия); + Оповестить("Запись_Файл", Новый Структура("Событие", "АктивнаяВерсияИзменена"), Параметры.Файл); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_Файл" + И Параметр.Свойство("Событие") + И (Параметр.Событие = "ЗаконченоРедактирование" + Или Параметр.Событие = "ВерсияСохранена") Тогда + + Элементы.Список.Обновить(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ТекущиеДанные.Владелец, ТекущиеДанные.Ссылка, УникальныйИдентификатор); + РаботаСФайламиСлужебныйКлиент.ОткрытьВерсиюФайла(Неопределено, ДанныеФайла, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередУдалением(Элемент, Отказ) + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + + Версия = ТекущиеДанные.Ссылка; + + ПараметрыОткрытияФормы = Новый Структура("Ключ", Версия); + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ВерсияПрисоединенногоФайла", ПараметрыОткрытияФормы); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + Если Элементы.Список.ТекущаяСтрока <> Неопределено Тогда + ИзменитьДоступностьКоманд(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОткрытьКарточку(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + + Версия = ТекущиеДанные.Ссылка; + + ПараметрыОткрытияФормы = Новый Структура("Ключ", Версия); + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ВерсияПрисоединенногоФайла", ПараметрыОткрытияФормы); + + КонецЕсли; + +КонецПроцедуры + +// Сравнить 2 выбранные версии. +&НаКлиенте +Процедура Сравнить(Команда) + + ЧислоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество(); + Если ЧислоВыделенныхСтрок <> 2 И ЧислоВыделенныхСтрок <> 1 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Для просмотра отличий необходимо выбрать две версии файла.'")); + Возврат; + КонецЕсли; + + Если ЧислоВыделенныхСтрок = 2 Тогда + ПервыйФайл = Элементы.Список.ВыделенныеСтроки[0]; + ВторойФайл = Элементы.Список.ВыделенныеСтроки[1]; + ИначеЕсли ЧислоВыделенныхСтрок = 1 Тогда + ПервыйФайл = Элементы.Список.ТекущиеДанные.Ссылка; + ВторойФайл = Элементы.Список.ТекущиеДанные.РодительскаяВерсия; + КонецЕсли; + + Расширение = НРег(Элементы.Список.ТекущиеДанные.Расширение); + РаботаСФайламиСлужебныйКлиент.СравнитьФайлы(УникальныйИдентификатор, ПервыйФайл, ВторойФайл, Расширение, ВладелецВерсии); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьВерсию(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ТекущиеДанные.Владелец, ТекущиеДанные.Ссылка ,УникальныйИдентификатор); + РаботаСФайламиСлужебныйКлиент.ОткрытьВерсиюФайла(Неопределено, ДанныеФайла, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьКак(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляСохранения(ТекущиеДанные.Владелец, ТекущиеДанные.Ссылка , УникальныйИдентификатор); + РаботаСФайламиСлужебныйКлиент.СохранитьКак(Неопределено, ДанныеФайла, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура Удалить(Команда) + + Если Элементы.Список.ТекущаяСтрока = Неопределено Тогда + Возврат; + КонецЕсли; + + РаботаСФайламиСлужебныйКлиент.УдалитьДанные( + Новый ОписаниеОповещения("ПослеУдаленияДанных", ЭтотОбъект), + Элементы.Список.ТекущиеДанные.Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПомеченныеФайлы(Команда) + + РаботаСФайламиСлужебныйКлиент.ИзменитьОтборПоПометкеУдаления(Список.Отбор, Элементы.ПоказыватьПомеченныеФайлы); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ИзменитьДоступностьКоманд() + + АвторТекущийПользователь = + Элементы.Список.ТекущиеДанные.Автор = ПользователиКлиент.АвторизованныйПользователь(); + + Элементы.ФормаУдалить.Доступность = АвторТекущийПользователь; + Элементы.СписокКонтекстноеМенюУдалить.Доступность = АвторТекущийПользователь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеУдаленияДанных(Результат, ДополнительныеПараметры) Экспорт + + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаСервере +Процедура СменитьАктивнуюВерсиюФайла(Версия) + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + + ЭлементБлокировкиДанных = Блокировка.Добавить(Метаданные.НайтиПоТипу(ТипЗнч(Версия.Владелец)).ПолноеИмя()); + ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Версия.Владелец); + + ЭлементБлокировкиДанных = Блокировка.Добавить(Метаданные.НайтиПоТипу(ТипЗнч(Версия)).ПолноеИмя()); + ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Версия); + + Блокировка.Заблокировать(); + + ЗаблокироватьДанныеДляРедактирования(Версия.Владелец, , УникальныйИдентификаторКарточкиФайла); + ЗаблокироватьДанныеДляРедактирования(Версия, , УникальныйИдентификаторКарточкиФайла); + + ФайлОбъект = Версия.Владелец.ПолучитьОбъект(); + Если ФайлОбъект.ПодписанЭП Тогда + ВызватьИсключение НСтр("ru = 'У подписанного файла нельзя изменять активную версию.'"); + КонецЕсли; + ФайлОбъект.ТекущаяВерсия = Версия; + ФайлОбъект.ТекстХранилище = Версия.ТекстХранилище; + ФайлОбъект.Записать(); + + ВерсияОбъект = Версия.ПолучитьОбъект(); + ВерсияОбъект.Записать(); + + РазблокироватьДанныеДляРедактирования(ФайлОбъект.Ссылка, УникальныйИдентификаторКарточкиФайла); + РазблокироватьДанныеДляРедактирования(Версия, УникальныйИдентификаторКарточкиФайла); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьДинамическийСписок(ИмяСправочникаХранилищаВерсийФайлов) + + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + + ТекстЗапроса = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВерсииФайлов.Код КАК Код, + | ВерсииФайлов.Размер КАК Размер, + | ВерсииФайлов.Комментарий КАК Комментарий, + | ВерсииФайлов.Автор КАК Автор, + | ВерсииФайлов.ДатаСоздания КАК ДатаСоздания, + | ВерсииФайлов.ПолноеНаименование КАК ПолноеНаименование, + | ВерсииФайлов.РодительскаяВерсия КАК РодительскаяВерсия, + | ВЫБОР + | КОГДА ВерсииФайлов.ПометкаУдаления + | ТОГДА ВерсииФайлов.ИндексКартинки + 1 + | ИНАЧЕ ВерсииФайлов.ИндексКартинки + | КОНЕЦ КАК ИндексКартинки, + | ВерсииФайлов.ПометкаУдаления КАК ПометкаУдаления, + | ВерсииФайлов.Владелец КАК Владелец, + | ВерсииФайлов.Ссылка КАК Ссылка, + | ВЫБОР + | КОГДА ВерсииФайлов.Владелец.ТекущаяВерсия = ВерсииФайлов.Ссылка + | ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ЭтоТекущая, + | ВерсииФайлов.Расширение КАК Расширение, + | ВерсииФайлов.НомерВерсии КАК НомерВерсии + |ИЗ + | &ИмяСправочника КАК ВерсииФайлов + |ГДЕ + | ВерсииФайлов.Владелец = &Владелец"; + + ПолноеИмяСправочника = "Справочник." + ИмяСправочникаХранилищаВерсийФайлов; + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", ПолноеИмяСправочника); + + СвойстваСписка.ОсновнаяТаблица = ПолноеИмяСправочника; + СвойстваСписка.ДинамическоеСчитываниеДанных = Истина; + СвойстваСписка.ТекстЗапроса = ТекстЗапроса; + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..aef20ac7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,1370 @@ + + + + <key>ru</key> + <value>Выбор версии файла</value> + + + ГруппаПользовательскихНастроек + 35 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 37 + + ФормаВыбрать + 58 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаСоздать + 60 + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 62 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаИзменить + 64 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаОбновить + 66 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Refresh + Auto + true + true + UserCmds + Auto + + + ГруппаУдаление + 68 + + УстановитьПометкуУдаления + 70 + true + true + + true + + + УстановитьПометкуУдаленияРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ФормаУдалить + 72 + true + true + + true + + + ФормаУдалитьРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Удалить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Удаление</value> + + + ГруппаУдалениеРасширеннаяПодсказка + 69 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаПоискПоТекущемуЗначению + 74 + true + true + + true + + + ФормаПоискПоТекущемуЗначениюРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.FindByCurrentValue + Auto + true + true + UserCmds + Auto + + + ФормаНайти + 76 + true + true + + true + + + ФормаНайтиРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ФормаОтменитьПоиск + 78 + true + true + + true + + + ФормаОтменитьПоискРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ФормаИсторияИзменений + 80 + true + true + + true + + + ФормаИсторияИзмененийРасширеннаяПодсказка + 81 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ChangeHistory + Auto + true + true + UserCmds + Auto + + + ФормаНастройкаСписка + 82 + true + true + + true + + + ФормаНастройкаСпискаРасширеннаяПодсказка + 83 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ListSettings + Auto + true + true + UserCmds + Auto + + + ФормаЗагрузитьНастройкиДинамическогоСписка + 84 + true + true + + true + + + ФормаЗагрузитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.LoadDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьНастройкиДинамическогоСписка + 86 + true + true + + true + + + ФормаСохранитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 87 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SaveDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСтандартныеНастройкиДинамическогоСписка + 88 + true + true + + true + + + ФормаСтандартныеНастройкиДинамическогоСпискаРасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.DynamicListStandardSettings + Auto + true + true + UserCmds + Auto + + + ФормаВывестиСписок + 90 + true + true + + true + + + ФормаВывестиСписокРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + + ПоказыватьПомеченныеФайлы + 92 + true + true + + true + + + ПоказыватьПомеченныеФайлыРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьПомеченныеФайлы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 2 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Delete + + ГруппаВертикально + 51 + + ГруппаОсновное + 53 + + СписокВладелец + 39 + VeryHigh + true + true + + true + + + + Список.Владелец + + + + СписокВладелецРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + + СписокВладелецКонтекстноеМеню + 40 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокНомерВерсии + 19 + VeryHigh + true + true + + true + + + + Список.НомерВерсии + + + + СписокНомерВерсииРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + СписокНомерВерсииКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 11 + true + true + true + true + true + + Style.BorderColor + + + + + СписокАвтор + 21 + true + true + + true + + + + Список.Автор + + + + СписокАвторРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + СписокАвторКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + true + true + true + + + + СписокДатаСоздания + 23 + true + true + + true + + + + Список.ДатаСоздания + + + + СписокДатаСозданияРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + + СписокДатаСозданияКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + + + + СписокРазмер + 25 + true + true + + true + + + + Список.Размер + + + + СписокРазмерРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + СписокРазмерКонтекстноеМеню + 26 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Основное</value> + + + ГруппаОсновноеРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + Комментарий + 55 + true + true + + true + + + + Список.Комментарий + + + + КомментарийРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 56 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + Style.ПоясняющийТекст + + + + true + true + + true + + + <key>ru</key> + <value>Вертикально</value> + + + ГруппаВертикальноРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + СписокСсылка + 32 + true + true + + + + Список.Ссылка + + + + СписокСсылкаРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 33 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + None + + СписокКоманднаяПанель + 18 + true + true + + true + + Left + true + + + OnActivateRow + СписокПриАктивизацииСтроки + + + true + true + + true + + СписокСтрокаПоиска + 42 + + СписокСтрокаПоискаРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 43 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 45 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 46 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 48 + + СписокУправлениеПоискомРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 49 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 3 + true + true + + true + + true + + HierarchicalList + true + true + true + true + 7 + true + true +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + Style.BorderColor + + None + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
+ Top + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Delete + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + ВерсииФайлов.Ссылка КАК Ссылка, + ВерсииФайлов.Владелец КАК Владелец, + ВерсииФайлов.ПометкаУдаления КАК ПометкаУдаления, + ВерсииФайлов.НомерВерсии КАК НомерВерсии, + ВерсииФайлов.Размер КАК Размер, + ВерсииФайлов.Автор КАК Автор, + ВерсииФайлов.ДатаСоздания КАК ДатаСоздания, + ВерсииФайлов.Комментарий КАК Комментарий +ИЗ + Справочник.ВерсииФайлов КАК ВерсииФайлов + Catalog.ВерсииФайлов + true + true + true + true + true + +
+ + ПоказыватьПомеченныеФайлы + + <key>ru</key> + <value>Показывать помеченные файлы</value> + + 1 + + ru + Показывать помеченные файлы + + + true + + + + ПоказыватьПомеченныеФайлы + + + Auto + + + Удалить + + <key>ru</key> + <value>Удалить</value> + + 2 + + ru + Удалить данные версии файла + + + true + + + StdPicture.DeleteDirectly + + + + Удалить + + + + Список + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..67a214b8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,15 @@ + +

Предназначен для выбора версии файла.

+

Вызывается из карточки версии файла при выборе Родительской версии.

+

В списке выводится:

+
  • Номер версии - нумерация версий ведется программой автоматически при изменениях файла, при этом максимальный номер имеет последняя сохраненная версия. +
  • +
    +
    Автор - пользователь, который добавил версию файла. Также в этой колонке в виде картинки отображается тип файла.
    +
  • +
    Дата создания - дата и время добавления версии файла в базу.
    +
  • +
    Размер (байт) - размер данных версии файла в байтах.

Выбор версии файла

+
  • Выделите нужную версию, нажмите Выбрать. Также можно воспользоваться двойным щелчком мыши. При этом можно выбрать только одну версию файла.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..57d9b54d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,88 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Отбор.Свойство("Владелец") Тогда + Элементы.СписокВладелец.Видимость = Ложь; + КонецЕсли; + + // Оформление помеченных на удаление. + ЭлементУсловногоОформления = Список.УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + РаботаСФайламиСлужебный.УстановитьОтборПоПометкеУдаления(Список.Отбор); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Комментарий.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + Если Элементы.Список.ТекущаяСтрока <> Неопределено Тогда + Элементы.ФормаУдалить.Доступность = + Элементы.Список.ТекущиеДанные.Автор = ПользователиКлиент.АвторизованныйПользователь(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Удалить(Команда) + + Если Элементы.Список.ТекущаяСтрока = Неопределено Тогда + Возврат; + КонецЕсли; + + РаботаСФайламиСлужебныйКлиент.УдалитьДанные( + Новый ОписаниеОповещения("ПослеУдаленияДанных", ЭтотОбъект), + Элементы.Список.ТекущиеДанные.Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПомеченныеФайлы(Команда) + + РаботаСФайламиСлужебныйКлиент.ИзменитьОтборПоПометкеУдаления(Список.Отбор, Элементы.ПоказыватьПомеченныеФайлы); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПослеУдаленияДанных(Результат, ДополнительныеПараметры) Экспорт + + Элементы.Список.Обновить(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..04f5444c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1269 @@ + + + + ГруппаПользовательскихНастроек + 51 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 53 + + ФормаИзменить + 13 + + <key>ru</key> + <value>Открыть карточку</value> + + true + true + + true + + + ФормаИзменитьExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + PictureAndText + true + true + UserCmds + Auto + + + ГруппаУдаление + 68 + + УстановитьПометкуУдаления + 70 + true + true + + true + + + УстановитьПометкуУдаленияРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ФормаУдалить + 72 + true + true + + true + + + ФормаУдалитьРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Удалить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Удаление</value> + + + ГруппаУдалениеРасширеннаяПодсказка + 69 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаСтандартныеКоманды + 15 + true + true + + true + + + <key>ru</key> + <value>Форма стандартные команды</value> + + + ФормаСтандартныеКомандыExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ПоказыватьПомеченныеФайлы + 74 + true + true + + true + + + ПоказыватьПомеченныеФайлыРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьПомеченныеФайлы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСправка + 14 + true + true + + true + + + ФормаСправкаExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Copy + Create + Delete + + ГруппаВертикально + 64 + + ГруппаОсновное + 66 + VeryHigh + + СписокПолноеНаименование + 8 + VeryHigh + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.ПолноеНаименование + + + + СписокПолноеНаименованиеРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + СписокПолноеНаименованиеКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокРасширение + 30 + true + true + + + + Список.Расширение + + + + СписокРасширениеРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + СписокРасширениеКонтекстноеМеню + 31 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокВладелец + 16 + true + true + + + + Список.Owner + + + + СписокВладелецРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + + СписокВладелецКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокАвтор + 18 + true + true + + true + + + + Список.Автор + + + + СписокАвторРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + + СписокАвторКонтекстноеМеню + 19 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокДатаСоздания + 22 + true + true + + true + + + + Список.ДатаСоздания + + + + СписокДатаСозданияРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + + СписокДатаСозданияКонтекстноеМеню + 23 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокРазмер + 24 + true + true + + true + + + + Список.Размер + + + + СписокРазмерРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + СписокРазмерКонтекстноеМеню + 25 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокНомерВерсии + 26 + true + true + + true + + + + Список.НомерВерсии + + + + СписокНомерВерсииРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + + СписокНомерВерсииКонтекстноеМеню + 27 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Основное</value> + + + ГруппаОсновноеРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + СписокКомментарий + 20 + true + true + + true + + + + Список.Комментарий + + + + СписокКомментарийРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + + СписокКомментарийКонтекстноеМеню + 21 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + Style.ПоясняющийТекст + + + + true + true + + true + + + <key>ru</key> + <value>Вертикально</value> + + + ГруппаВертикальноРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + СписокСсылка + 48 + true + true + + + + Список.Ссылка + + + + СписокСсылкаРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 49 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + Selection + СписокВыбор + + + BeforeAddRow + СписокПередНачаломДобавления + + + BeforeDeleteRow + СписокПередУдалением + + + OnActivateRow + СписокПриАктивизацииСтроки + + + BeforeRowChange + СписокПередНачаломИзменения + + + true + true + + true + + СписокСтрокаПоиска + 55 + + СписокСтрокаПоискаРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 56 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 58 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 59 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 61 + + СписокУправлениеПоискомРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 62 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюИзменить + 10 + + <key>ru</key> + <value>Открыть карточку</value> + + true + true + + true + + + СписокКонтекстноеМенюИзменитьExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюКопироватьВБуферОбмена + 12 + true + true + + true + + + СписокКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюУстановитьПометкуУдаления + 11 + true + true + + true + + + СписокКонтекстноеМенюУстановитьПометкуУдаленияExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюУдалить + 76 + true + true + + true + + + СписокКонтекстноеМенюУдалитьРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Удалить + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + HierarchicalList + true + true + true + 10 + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + End + true + true + true + + Список.ИндексКартинки + + + CommonPicture.КоллекцияПиктограммФайлов + + None + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Create + Delete + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + ВерсииФайлов.Ссылка КАК Ссылка, + ВерсииФайлов.НомерВерсии КАК НомерВерсии, + ВерсииФайлов.ФайлХранилище, + ВерсииФайлов.Размер, + ВерсииФайлов.Комментарий, + ВерсииФайлов.Автор, + ВерсииФайлов.ДатаСоздания, + ВерсииФайлов.ПолноеНаименование, + ВерсииФайлов.ИндексКартинки, + ВерсииФайлов.ПометкаУдаления, + ВерсииФайлов.Расширение, + ВерсииФайлов.Владелец +ИЗ + Справочник.ВерсииФайлов КАК ВерсииФайлов + Catalog.ВерсииФайлов + true + true + true + true + true + +
+ + Удалить + + <key>ru</key> + <value>Удалить</value> + + 1 + + ru + Удалить данные версии файла + + + true + + + StdPicture.DeleteDirectly + + + + Удалить + + + + Список + + + + ПоказыватьПомеченныеФайлы + + <key>ru</key> + <value>Показывать помеченные файлы</value> + + 2 + + ru + Показывать помеченные файлы + + + true + + + + ПоказыватьПомеченныеФайлы + + + Auto + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..b1a3025a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,160 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Оформление помеченных на удаление. + ЭлементУсловногоОформления = Список.УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + РаботаСФайламиСлужебный.УстановитьОтборПоПометкеУдаления(Список.Отбор); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.СписокКомментарий.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_Файл" + И Параметр.Свойство("Событие") + И ( Параметр.Событие = "ЗаконченоРедактирование" + ИЛИ Параметр.Событие = "ВерсияСохранена") Тогда + + Элементы.Список.Обновить(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ВладелецФайла(ВыбраннаяСтрока), ВыбраннаяСтрока, УникальныйИдентификатор); + РаботаСФайламиСлужебныйКлиент.ОткрытьВерсиюФайла(Неопределено, ДанныеФайла, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередУдалением(Элемент, Отказ) + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(Элементы.Список.ТекущаяСтрока); + Если ДанныеФайла.ТекущаяВерсия = Элементы.Список.ТекущаяСтрока Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Активную версию нельзя удалить.'")); + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; + ОткрытьКарточкуФайла(); +КонецПроцедуры + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + Если Элементы.Список.ТекущаяСтрока <> Неопределено Тогда + ИзменитьДоступностьКоманд(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Удалить(Команда) + + Если Элементы.Список.ТекущаяСтрока = Неопределено Тогда + Возврат; + КонецЕсли; + + РаботаСФайламиСлужебныйКлиент.УдалитьДанные( + Новый ОписаниеОповещения("ПослеУдаленияДанных", ЭтотОбъект), + Элементы.Список.ТекущиеДанные.Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПомеченныеФайлы(Команда) + + РаботаСФайламиСлужебныйКлиент.ИзменитьОтборПоПометкеУдаления(Список.Отбор, Элементы.ПоказыватьПомеченныеФайлы); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ИзменитьДоступностьКоманд() + + АвторТекущийПользователь = + Элементы.Список.ТекущиеДанные.Автор = ПользователиКлиент.АвторизованныйПользователь(); + + Элементы.ФормаУдалить.Доступность = АвторТекущийПользователь; + Элементы.СписокКонтекстноеМенюУдалить.Доступность = АвторТекущийПользователь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеУдаленияДанных(Результат, ДополнительныеПараметры) Экспорт + + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьКарточкуФайла() + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + + Версия = ТекущиеДанные.Ссылка; + + ПараметрыОткрытияФормы = Новый Структура("Ключ", Версия); + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ВерсияПрисоединенногоФайла", ПараметрыОткрытияФормы); + + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ВладелецФайла(ВыбраннаяСтрока) + Возврат ВыбраннаяСтрока.Владелец; +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..ba876dc7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" @@ -0,0 +1,28 @@ + +

Предназначен для просмотра и управления версиями файла.

+

Для просмотра списка всех версий файла откройте его карточку (в списке файлов нажмите F2 или Еще - Открыть карточку) и нажмите Версии файла на панели навигации.

+

Список версий является иерархическим, для удобства просмотра отображается в виде дерева. В этом случае легко проследить историю редактирования файла. Более поздние версии отображаются подчиненными более ранним. При этом первую версию файла удалить из списка невозможно.

+

По окончании редактирования файла программа рекомендует сохранить версию файла и ввести информацию о данной версии. По умолчанию эта возможность включена (рекомендуется использовать сохранение версий, так как в случае серьезных ошибок, которые привели к порче файла, можно вернуться к более ранней, неиспорченной версии). Хранение версий можно включить с помощью соответствующего флажка в карточке файла или при загрузке файлов (папок). Впоследствии можно изменить некоторые сведения о версии, например, комментарий.

+

В списке выводится:

+
  • +
    Автор - пользователь, который добавил версию файла. Также в этой колонке в виде картинки отображается тип файла.
    +
  • +
    Номер версии - нумерация версий ведется программой автоматически при изменениях файла, при этом максимальный номер имеет последняя сохраненная версия.
    +
  • +
    Комментарий - дополнительная информация о версии файла.
    +
  • +
    Дата создания - дата и время добавления версии файла в базу.
    +
  • +
    Размер (байт) - размер данных версии файла в байтах.

С помощью команды Еще - Изменить форму можно добавить дополнительные поля, например:

+
  • +
    Полное наименование файла - полное имя файла;
    +
  • +
    Тип хранения файла - принимает значения В информационной базе или В томах.
    +
  • +
    Расширение - формат файла, и некоторые другие поля.

Просмотр версии файла

+
  • Нажмите Просмотреть, для того чтобы открыть выбранную версию файла соответствующим приложением для просмотра или редактирования (также можно открыть версию файла двойным щелчком мыши по нужной строке или с помощью команды Еще - Просмотреть).

Просмотр сведений о версии файла

+
  • Нажмите Открыть карточку, для того чтобы открыть сведения о выбранной версии. В карточке версии можно изменить Комментарий.

Замена текущей версии файла

+
  • Выберите нужную версию файла в списке, нажмите Сделать активной, для того чтобы изменить активную (текущую) версию. При этом нумерация версий остается прежней, меняется только порядок версий в списке.

Сравнение двух версий файла

+
  • Выделите две версии в списке и нажмите Показать отличия для их сравнения. Сравнение версий поддерживается для следующих типов файлов:HTML, TXT, RTF, DOC, DOCX, ODT.

Сохранение версии файла на диск

+
  • Для того чтобы сохранить файл версии на диск или другое устройство,нажмите Еще - Сохранить как. Выберите каталог для сохранения файла.

См. также: 

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..53fbe9df --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,71 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + РедактируемыеРеквизиты.Добавить("Комментарий"); + + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(Владелец.ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(Владелец.ВладелецФайла)"; + + Ограничение.ТекстДляВнешнихПользователей = Ограничение.Текст; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + Если ВидФормы = "ФормаОбъекта" Тогда + СтандартнаяОбработка = Ложь; + ВыбраннаяФорма = "Обработка.РаботаСФайлами.Форма.ВерсияПрисоединенногоФайла"; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" new file mode 100644 index 00000000..4977b31d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" @@ -0,0 +1,114 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка + Или ДополнительныеСвойства.Свойство("УдалениеДанных") + Или ДополнительныеСвойства.Свойство("КонвертацияФайлов") + Или ДополнительныеСвойства.Свойство("РазмещениеФайловВТомах") Тогда + + Возврат; + КонецЕсли; + + Если ЭтоНовый() Тогда + РодительскаяВерсия = Владелец.ТекущаяВерсия; + КонецЕсли; + + // Выполним установку индекса пиктограммы при записи объекта. + ИндексКартинки = РаботаСФайламиСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение); + + Если СтатусИзвлеченияТекста.Пустая() Тогда + СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен; + КонецЕсли; + + Если ТипЗнч(Владелец) = Тип("СправочникСсылка.Файлы") Тогда + Наименование = СокрЛП(ПолноеНаименование); + КонецЕсли; + + Если Владелец.ТекущаяВерсия = Ссылка Тогда + Если ПометкаУдаления = Истина И Владелец.ПометкаУдаления <> Истина Тогда + ВызватьИсключение НСтр("ru = 'Активную версию нельзя удалить.'"); + КонецЕсли; + ИначеЕсли РодительскаяВерсия.Пустая() Тогда + Если ПометкаУдаления = Истина И Владелец.ПометкаУдаления <> Истина Тогда + ВызватьИсключение НСтр("ru = 'Первую версию нельзя удалить.'"); + КонецЕсли; + ИначеЕсли ПометкаУдаления = Истина И Владелец.ПометкаУдаления <> Истина Тогда + // Очищаем у версий, дочерних к помеченной, ссылку на родительскую - + // переставляем на родительскую версию удаляемой версии. + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ВерсииФайлов.Ссылка КАК Ссылка + |ИЗ + | &ИмяСправочникаВерсииФайлов КАК ВерсииФайлов + |ГДЕ + | ВерсииФайлов.РодительскаяВерсия = &РодительскаяВерсия"; + + ИмяСправочникаВерсииФайлов = "Справочник." + Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).Имя; + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяСправочникаВерсииФайлов", ИмяСправочникаВерсииФайлов); + Запрос.УстановитьПараметр("РодительскаяВерсия", Ссылка); + + Результат = Запрос.Выполнить(); + НачатьТранзакцию(); + Попытка + Если Не Результат.Пустой() Тогда + Выборка = Результат.Выбрать(); + Выборка.Следующий(); + + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировкиДанных = БлокировкаДанных.Добавить(Метаданные.НайтиПоТипу(ТипЗнч(Выборка.Ссылка)).ПолноеИмя()); + ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Выборка.Ссылка); + БлокировкаДанных.Заблокировать(); + + Объект = Выборка.Ссылка.ПолучитьОбъект(); + + ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка); + Объект.РодительскаяВерсия = РодительскаяВерсия; + Объект.Записать(); + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЕсли; + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + + Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда + + СвойстваФайла = РаботаСФайламиВТомахСлужебный.СвойстваФайлаВТоме(); + ЗаполнитьЗначенияСвойств(СвойстваФайла, ЭтотОбъект); + + РаботаСФайламиВТомахСлужебный.УдалитьФайл( + РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(СвойстваФайла)); + + КонецЕсли; + + // Проверку ОбменДанными.Загрузка следует выполнять начиная с этой строки. + // Сначала требуется физически удалить файл, а потом уже сведения о нем в информационной базе. + // Иначе данные о расположении файла будут недоступны. + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" new file mode 100644 index 00000000..ee798e79 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" @@ -0,0 +1,803 @@ + + + + + + + + + + ВерсииФайлов + + ru + Версии файлов + + Catalog.ВерсииФайлов.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + + ru + Файл + + + ru + Владелец версии файла + + true + + Catalog.Файлы.EmptyRef + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Краткое наименование + + + ru + Наименование + + + + + ShowError + Use + + + + + Use + Code + + ru + Код + + + + + Use + + + + Use + true + + + ru + + + Catalog.ВерсииФайлов.StandardAttribute.Owner + Managed + Use + + ru + Версия файла + + 2 + true + Catalog.Файлы + 11 + 150 + String + Variable + WithinOwnerSubordination + true + true + InDialog + BothWays + Catalog.ВерсииФайлов.Form.ФормаСписка + Catalog.ВерсииФайлов.Form.ФормаВыбора + + Автор + + ru + Автор + + + CatalogRef.ВнешниеПользователи + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил версию файла в список + + + + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата изменения (универсальное время) + + + Date + + + + ru + Дата изменения данных версии файла (универсальное время) + + + + + 0001-01-01T00:00:00 + + Use + + + ДатаМодификацииФайла + + ru + Дата изменения (местное время) + + + Date + + + + ru + Дата изменения данных версии файла (местное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления версии файла в список + + + + + 0001-01-01T00:00:00 + + Index + Use + Use + + + УдалитьЗашифрован + + ru + (не используется) Зашифрована + + + Boolean + + + ru + Признак того, что версия файла зашифрована + + + + + Index + Use + Use + + + ИндексКартинки + + ru + Индекс значка + + + Number + + 10 + + + + ru + Индекс значка версии файла (служебное поле) + + + + + 0 + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к версии файла + + true + + + + + + Use + Use + + + НомерВерсии + + ru + Номер + + + Number + + 5 + + + + ru + Номер версии файла + + + + + Use + Use + + + УдалитьПодписанЭП + + ru + (не используется) Подписана электронно + + + Boolean + + + ru + Признак того, что версия файла подписана электронно + + + + + Use + Use + + + ПолноеНаименование + + ru + Полное наименование + + + String + + 256 + + + + ru + Имя версии файла (без расширения) длиной до 256 символов + + + + + + + Index + Use + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к версии файла в томе (служебное поле) + + + + + + + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер версии файла в байтах + + + + + 0 + + Index + Use + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение версии файла + + + + + + + Index + Use + Use + + + РодительскаяВерсия + + ru + Родительская версия + + + CatalogRef.ВерсииФайлов + + + ru + Родительская версия (возможна иерархическая структура версий) + + + + + Catalog.ВерсииФайлов.EmptyRef + + Index + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения версии файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения версии файла (в томе или в информационной базе) + + + + + Use + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (когда версия файла хранится в томе) + + + + + Index + Use + Use + + + ФайлХранилище + + ru + Временное хранилище версии файла + + + ValueStorage + + + ru + Временное хранилище версии файла (служебное поле) + + + + + Use + + + + + + + УдалитьЭлектронныеПодписи + + ru + (не используется) Электронные подписи + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + ДатаПроверкиПодписи + + ru + Дата проверки подписи + + + Date + + + + ru + Дата последней проверки подписи. + + + + Use + Use + + + ПодписьВерна + + ru + Подпись верна + + + Boolean + + + ru + Результат последней проверки подписи. + + + + Use + Use + + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + + + ru + + + PersonalComputer + MobileDevice + + + ВерсииФайла + + ru + Версии файла + + + + ru + + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\230\321\201\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\222\320\270\320\264\320\276\320\262\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\230\321\201\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\222\320\270\320\264\320\276\320\262\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Form.form" new file mode 100644 index 00000000..0dc6193c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\230\321\201\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\222\320\270\320\264\320\276\320\262\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Form.form" @@ -0,0 +1,573 @@ + + + + ПанельИндикаторов + 21 + + ГруппаИндикаторНачалаИсправления + 23 + + НадписьВопрос + 25 + + <key>ru</key> + <value>Исправление видов контактной информации может занять продолжительное время. Выполнить исправление?</value> + + true + true + + true + + + НадписьВопросРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + НадписьВопросКонтекстноеМеню + 26 + true + true + + true + + true + + Label + true + 2 + true + true + true + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Индикатор начала исправления</value> + + + ru + Группа индикатор исправления + + + ГруппаИндикаторНачалаИсправленияРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + ГруппаИндикаторИсправления + 19 + + ДекорацияПрогресс + 9 + + <key>ru</key> + <value>Декорация прогресс</value> + + true + true + + true + + + ДекорацияПрогрессExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПрогрессКонтекстноеМеню + 10 + true + true + + true + + true + + 5 + true + 2 + true + true + + + CommonPicture.ДлительнаяОперация48 + + + + + ДекорацияВыполнениеИсправления + 12 + + <key>ru</key> + <value>Выполняется исправление проблемы. +Пожалуйста, подождите...</value> + + true + true + + true + + + ДекорацияВыполнениеИсправленияРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияВыполнениеИсправленияКонтекстноеМеню + 13 + true + true + + true + + true + + Label + true + 26 + true + true + true + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Индикатор исправления</value> + + + ГруппаИндикаторИсправленияРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + ГруппаИндикаторУспешноеИсправление + 30 + + ТекстИтогиИсправления + 41 + + <key>ru</key> + <value>Исправлено %1 из %2.</value> + + true + true + + true + + + ТекстИтогиИсправленияРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + + ТекстИтогиИсправленияКонтекстноеМеню + 42 + true + true + + true + + true + + Label + true + true + + Left + + + + ОписаниеРучногоИсправления + 38 + + <key>ru</key> + <value>Если исправление не помогло: +• Запустить конфигуратор, меню <b>Администрирование</> - <b>Тестирования и исправление</>, включить два флажка для проверки логической и ссылочной целостности + См. подробнее на ИТС: <link https://its.1c.ru/db/v83doc#bookmark:adm:TI000000142>https://its.1c.ru/db/v83doc#bookmark:adm:TI000000142</> +• Дождаться завершения тестирования и исправления, снять блокировку входа в программу. + +Для технических специалистов: +• С помощью группового изменения реквизитов (в разделе <b>Администрирование</>) установить корректные настройки у элементов справочника <b>Виды контактной информации</>. Например, в случае отсутствия родительской группы у вида. +</value> + + true + true + + true + + + ОписаниеРучногоИсправленияРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеРучногоИсправленияКонтекстноеМеню + 39 + true + true + + true + + true + + true + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Успешное исправление</value> + + + ru + Группа индикатор исправления + + + ГруппаИндикаторУспешноеИсправлениеРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + ПанельИндикаторовРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ИсправитьПроблему + 3 + true + true + + true + + + ИсправитьПроблемуРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИсправитьПроблему + Auto + true + true + true + UserCmds + Auto + + + Закрыть + 1 + true + true + + true + + + ЗакрытьРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 28 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Right + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + true + Vertical + Bottom + true + true + true + true + true + + ИдентификаторПроверки + 1 + + String + + 255 + + + + true + + + true + + + + ДлительнаяОперация + 2 + + + true + + + true + + + + ИтогиИсправления + 3 + + String + + + + true + + + true + + + + ИсправитьПроблему + + <key>ru</key> + <value>Исправить проблему</value> + + 1 + + ru + Исправить проблему + + + true + + + + ИсправитьПроблему + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\230\321\201\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\222\320\270\320\264\320\276\320\262\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\230\321\201\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\222\320\270\320\264\320\276\320\262\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Module.bsl" new file mode 100644 index 00000000..11e2df8b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\230\321\201\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\222\320\270\320\264\320\276\320\262\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Module.bsl" @@ -0,0 +1,105 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ИдентификаторПроверки = Параметры.ИдентификаторПроверки; + УстановитьТекущуюСтраницу(ЭтотОбъект, "Вопрос"); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ИсправитьПроблему(Команда) + + ДлительнаяОперация = ИсправитьПроблемуВФоне(ИдентификаторПроверки); + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ОповещениеОЗавершении = Новый ОписаниеОповещения("ИсправитьПроблемуВФонеЗавершение", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьТекущуюСтраницу(Форма, ИмяСтраницы) + + ЭлементыФормы = Форма.Элементы; + Если ИмяСтраницы = "ИдетИсправлениеПроблемы" Тогда + ЭлементыФормы.ГруппаИндикаторИсправления.Видимость = Истина; + ЭлементыФормы.ГруппаИндикаторНачалаИсправления.Видимость = Ложь; + ЭлементыФормы.ГруппаИндикаторУспешноеИсправление.Видимость = Ложь; + ЭлементыФормы.ИсправитьПроблему.Видимость = Ложь; + ИначеЕсли ИмяСтраницы = "ИсправлениеУспешноВыполнено" Тогда + ЭлементыФормы.ГруппаИндикаторИсправления.Видимость = Ложь; + ЭлементыФормы.ГруппаИндикаторНачалаИсправления.Видимость = Ложь; + ЭлементыФормы.ГруппаИндикаторУспешноеИсправление.Видимость = Истина; + ЭлементыФормы.ИсправитьПроблему.Видимость = Ложь; + ЭлементыФормы.Закрыть.КнопкаПоУмолчанию = Истина; + Иначе // "Вопрос" + ЭлементыФормы.ГруппаИндикаторИсправления.Видимость = Ложь; + ЭлементыФормы.ГруппаИндикаторНачалаИсправления.Видимость = Истина; + ЭлементыФормы.ГруппаИндикаторУспешноеИсправление.Видимость = Ложь; + ЭлементыФормы.ИсправитьПроблему.Видимость = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ИсправитьПроблемуВФоне(ИдентификаторПроверки) + + Если ДлительнаяОперация <> Неопределено Тогда + ДлительныеОперации.ОтменитьВыполнениеЗадания(ДлительнаяОперация.ИдентификаторЗадания); + КонецЕсли; + + УстановитьТекущуюСтраницу(ЭтотОбъект, "ИдетИсправлениеПроблемы"); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Исправление видов контактной информации'"); + + Возврат ДлительныеОперации.ВыполнитьВФоне("УправлениеКонтактнойИнформациейСлужебный.ИсправитьВидыКонтактнойИнформацииВФоне", + Новый Структура("ИдентификаторПроверки", ИдентификаторПроверки), ПараметрыВыполнения); + +КонецФункции + +&НаКлиенте +Процедура ИсправитьПроблемуВФонеЗавершение(Результат, ДополнительныеПараметры) Экспорт + + ДлительнаяОперация = Неопределено; + + Если Результат = Неопределено Тогда + УстановитьТекущуюСтраницу(ЭтотОбъект, "ИдетИсправлениеПроблемы"); + Возврат; + ИначеЕсли Результат.Статус = "Ошибка" Тогда + УстановитьТекущуюСтраницу(ЭтотОбъект, "Вопрос"); + ВызватьИсключение Результат.КраткоеПредставлениеОшибки; + ИначеЕсли Результат.Статус = "Выполнено" Тогда + Результат = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); + Если ТипЗнч(Результат) = Тип("Структура") Тогда + Элементы.ТекстИтогиИсправления.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Элементы.ТекстИтогиИсправления.Заголовок, Результат.ИсправленоОбъектов, Результат.ВсегоОбъектов); + КонецЕсли; + УстановитьТекущуюСтраницу(ЭтотОбъект, "ИсправлениеУспешноВыполнено"); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..3a32e10d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,429 @@ + + + + ГруппаПользовательскихНастроек + 11 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 13 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Copy + Create + CreateFolder + MoveItem + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 8 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокСтрокаПоиска + 15 + + СписокСтрокаПоискаРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 16 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 18 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 19 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 21 + + СписокУправлениеПоискомРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 22 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Folders + + true + true + ГруппаПользовательскихНастроек + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Create + CreateFolder + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ВидыКонтактнойИнформации + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..30d3701d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,8 @@ + +

Список предназначен для выбора вида контактной информации.

+

Открывается по кнопке Выбрать из окна ввода нового поля контактной информации.

+

Виды контактной информации представляют собой предопределенные группы, каждая из которых соответствует спискам или документам, которые являются носителями контактной информации, а элементы внутри этих групп определяют состав контактной информации этих объектов программы. При этом состав групп не может быть изменен. Список групп имеет иерархическую структуру в виде дерева.

+

Выбор вида контактной информации

+
  • Выделите нужную группу, нажмите Выбрать.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..4a884823 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Истина); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..797dc245 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,102 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 3 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + Copy + Delete + Reread + SetDeletionMark + Write + WriteAndClose + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ВидыКонтактнойИнформации + + + true + + + true + +
true
+ true +
+ + + + + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..41d34030 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + РеквизитДопУпорядочивания + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..1112cf4d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,567 @@ + + + + ГруппаПользовательскихНастроек + 42 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + CreateFolder + MoveItem + + Наименование + 37 + VeryHigh + + <key>ru</key> + <value>Вид контактной информации</value> + + true + true + + true + + + + Список.Наименование + + + + НаименованиеРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 38 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + false + + + + Ссылка + 30 + true + true + + + + Список.Ссылка + + + + СсылкаExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 31 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + Selection + СписокВыбор + + + BeforeAddRow + СписокПередНачаломДобавления + + + true + true + + true + + СписокСтрокаПоиска + 46 + + СписокСтрокаПоискаРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 47 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 49 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 50 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 52 + + СписокУправлениеПоискомРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 53 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюПерейтиКСписку + 57 + true + true + + true + + + СписокКонтекстноеМенюПерейтиКСпискуРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКСписку + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + Tree + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandAllLevels + true + true + + Список.ИндексПиктограммы + + + CommonPicture.ВидыКонтактнойИнформации + + + Style.BorderColor + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + + + + ФормаКоманднаяПанель + -1 + + ФормаПерейтиКСписку + 55 + true + true + + true + + + ФормаПерейтиКСпискуРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКСписку + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + CreateFolder + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.ИндексПиктограммы + + + Список.РеквизитДопУпорядочивания + + + Список.Ссылка + + + Список.ЭтоГруппа + +
true
+ + ВЫБРАТЬ + ВЫБОР + КОГДА СправочникВидыКонтактнойИнформации.ЭтоГруппа + ТОГДА ВЫБОР + КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления + ТОГДА 1 + КОГДА СправочникВидыКонтактнойИнформации.Предопределенный + ТОГДА 2 + ИНАЧЕ 0 + КОНЕЦ + КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления + ТОГДА 4 + КОГДА СправочникВидыКонтактнойИнформации.Предопределенный + ТОГДА ВЫБОР СправочникВидыКонтактнойИнформации.Тип + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) + ТОГДА 14 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) + ТОГДА 15 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница) + ТОГДА 16 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс) + ТОГДА 17 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое) + ТОГДА 18 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) + ТОГДА 19 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Skype) + ТОГДА 21 + ИНАЧЕ 3 + КОНЕЦ + ИНАЧЕ ВЫБОР СправочникВидыКонтактнойИнформации.Тип + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) + ТОГДА 7 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) + ТОГДА 8 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница) + ТОГДА 9 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс) + ТОГДА 10 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое) + ТОГДА 11 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) + ТОГДА 12 + КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Skype) + ТОГДА 20 + ИНАЧЕ 3 + КОНЕЦ + КОНЕЦ КАК ИндексПиктограммы, + СправочникВидыКонтактнойИнформации.Ссылка КАК Ссылка, + ВЫБОР + КОГДА &ЭтоОсновнойЯзык + ТОГДА СправочникВидыКонтактнойИнформации.Наименование + ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование, СправочникВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150)) + КОНЕЦ КАК Наименование, + СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + СправочникВидыКонтактнойИнформации.Используется КАК Используется, + СправочникВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоГруппа +ИЗ + Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления + ПО (ВидыКонтактнойИнформацииПредставления.Ссылка = СправочникВидыКонтактнойИнформации.Ссылка) + И (ВидыКонтактнойИнформацииПредставления.КодЯзыка = &КодЯзыка) +ГДЕ + СправочникВидыКонтактнойИнформации.Используется + И ЕСТЬNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА) + Catalog.ВидыКонтактнойИнформации + true + true + true + true + true + +
+ + ПерейтиКСписку + + <key>ru</key> + <value>Перейти к списку...</value> + + 1 + + ru + Перейти к списку с контактной информацией + + + true + + + + ПерейтиКСписку + + + Auto + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..2092fe13 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,151 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык); + Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + // Проверим, выполняется ли копирование группы. + Если Копирование И Группа Тогда + Отказ = Истина; + + ПоказатьПредупреждение(, НСтр("ru = 'Добавление новых групп в справочнике запрещено.'")); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + Если Элементы.Список.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные.ЭтоГруппа Тогда + СтандартнаяОбработка = Ложь; + ПерейтиКСписку(Неопределено); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПерейтиКСписку(Команда) + Если Элементы.Список.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + ОткрытьФорму(ИмяФормыСписка(Элементы.Список.ТекущиеДанные.Ссылка)); +КонецПроцедуры + +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); +КонецПроцедуры +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Используется"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ИмяФормыСписка(ВидКонтактнойИнформацииСсылка) + + ЭтоГруппа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВидКонтактнойИнформацииСсылка, "ЭтоГруппа,Родитель"); + ГруппаВидаСсылка = ?(ЭтоГруппа.ЭтоГруппа, ВидКонтактнойИнформацииСсылка, ЭтоГруппа.Родитель); + + Запрос = Новый Запрос( + "ВЫБРАТЬ + |ВЫБОР + | КОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида <> """" + | ТОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида + | ИНАЧЕ ВидыКонтактнойИнформации.ИмяПредопределенныхДанных + |КОНЕЦ КАК ИмяПредопределенногоВида + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ГДЕ + | ВидыКонтактнойИнформации.Ссылка = &ГруппаВидаСсылка"); + + Запрос.УстановитьПараметр("ГруппаВидаСсылка", ГруппаВидаСсылка); + ИмяПредопределенногоВида = ВРЕГ(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ИмяПредопределенногоВида")[0]); + + ИменаБазовыхТипов = Новый Массив; + ИменаБазовыхТипов.Добавить("Справочник"); + ИменаБазовыхТипов.Добавить("Документ"); + ИменаБазовыхТипов.Добавить("БизнесПроцесс"); + ИменаБазовыхТипов.Добавить("Задача"); + ИменаБазовыхТипов.Добавить("ПланСчетов"); + ИменаБазовыхТипов.Добавить("ПланОбмена"); + ИменаБазовыхТипов.Добавить("ПланВидовХарактеристик"); + ИменаБазовыхТипов.Добавить("ПланВидовРасчета"); + Для каждого ИмяБазовогоТипа Из ИменаБазовыхТипов Цикл + Если СтрНачинаетсяС(ИмяПредопределенногоВида, ВРег(ИмяБазовогоТипа)) Тогда + Возврат ИмяБазовогоТипа + "." + + Сред(ИмяПредопределенногоВида, СтрДлина(ИмяБазовогоТипа) + 1, СтрДлина(ИмяПредопределенногоВида)) + + ".ФормаСписка"; + КонецЕсли; + КонецЦикла; + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Невозможно перейти в списку для %1'"), ВидКонтактнойИнформацииСсылка); + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..e6193060 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1807 @@ + + + + ГруппаОсновнаяИнформация + 148 + + ГруппаТипИНастройки + 155 + + Тип + 70 + true + true + + true + + + + Объект.Тип + + + + OnChange + ТипПриИзменении + + + ТипExtendedTooltip + 86 + true + true + + true + + Label + true + true + + Left + + + + ТипКонтекстноеМеню + 71 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + ТипОчистка + + 19 + true + true + false + true + true + true + + Style.ФонУправляющегоПоля + + + + true + true + + true + + + <key>ru</key> + <value>Тип и настройки</value> + + + ГруппаТипИНастройкиРасширеннаяПодсказка + 156 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + true + + OnChange + НаименованиеПриИзменении + + + НаименованиеExtendedTooltip + 87 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Родитель + 11 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 89 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + РодительОчистка + + true + true + false + true + + + true + true + + true + + + <key>ru</key> + <value>Основная информация</value> + + + ГруппаОсновнаяИнформацияРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаТипКонтактнойИнформации + 63 + + ГруппаТипОбщиеДляВсех + 64 + + ОбязательноеЗаполнение + 18 + true + true + + true + + + + Объект.ОбязательноеЗаполнение + + + Right + + ОбязательноеЗаполнениеExtendedTooltip + 92 + true + true + + true + + Label + true + true + + Left + + + + ОбязательноеЗаполнениеКонтекстноеМеню + 19 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ВидРедактирования + 168 + + <key>ru</key> + <value>Редактировать</value> + + true + true + + true + + + + Объект.ВидРедактирования + + + + OnChange + ВидРедактированияПриИзменении + + + ВидРедактированияРасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + + ВидРедактированияКонтекстноеМеню + 169 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + true + true + true + + + ru + В диалоге + + + Диалог + + + + + ru + В поле ввода + + + ПолеВвода + + + + + ru + В диалоге и поле ввода + + + ПолеВводаИДиалог + + + + + + ГруппаХранитьИсториюИзменений + 157 + + ОтступХранитьИсториюИзменений + 159 + true + true + + true + + + ОтступХранитьИсториюИзмененийРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + + ОтступХранитьИсториюИзмененийКонтекстноеМеню + 160 + true + true + + true + + true + + Label + 1 + true + true + + Left + + + + ХранитьИсториюИзменений + 162 + true + true + + true + + + + Объект.ХранитьИсториюИзменений + + + Right + + ru + Поле контактной информации хранит не только текущее значение, но и его историю изменений на указанную дату. Для просмотра истории необходимо в контекстном меню элемента контактной информации выбрать пункт «История изменений». + + Button + + OnChange + ХранитьИсториюИзмененийПриИзменении + + + ХранитьИсториюИзмененийРасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + + ХранитьИсториюИзмененийКонтекстноеМеню + 163 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Хранить историю изменений</value> + + + ГруппаХранитьИсториюИзмененийРасширеннаяПодсказка + 158 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + РазрешитьВводНесколькихЗначений + 80 + true + true + + true + + + + Объект.РазрешитьВводНесколькихЗначений + + + Right + + ru + Разрешить ввод нескольких значений одного вида + + + OnChange + РазрешитьВводНесколькихЗначенийПриИзменении + + + РазрешитьВводНесколькихЗначенийExtendedTooltip + 94 + true + true + + true + + Label + true + true + + Left + + + + РазрешитьВводНесколькихЗначенийКонтекстноеМеню + 81 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Тип общие для всех</value> + + + ГруппаТипОбщиеДляВсехExtendedTooltip + 91 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ГруппаНаименованиеНастройкиПоТипам + 65 + + Проверки + 27 + + Адрес + 25 + + ВключатьСтрануВПредставление + 16 + true + true + + true + + + + Объект.ВключатьСтрануВПредставление + + + Right + + ВключатьСтрануВПредставлениеExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + + ВключатьСтрануВПредставлениеКонтекстноеМеню + 17 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + МеждународныйФорматАдреса + 165 + true + true + + true + + + + Объект.МеждународныйФорматАдреса + + + Right + + OnChange + МеждународныйФорматАдресаПриИзменении + + + МеждународныйФорматАдресаРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + + МеждународныйФорматАдресаКонтекстноеМеню + 166 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ДополнительныеНастройкиАдреса + 153 + true + true + + true + + + ДополнительныеНастройкиАдресаРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ДополнительныеНастройкиАдреса + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Адрес</value> + + + АдресExtendedTooltip + 100 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + АдресЭлектроннойПочты + 28 + + ПроверятьКорректность + 20 + + <key>ru</key> + <value>Запрещать ввод некорректных адресов</value> + + true + true + + true + + + + Объект.ПроверятьКорректность + + + Right + + ПроверятьКорректностьExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + + ПроверятьКорректностьКонтекстноеМеню + 21 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Адрес электронной почты</value> + + + АдресЭлектроннойПочтыExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Телефон + 132 + + ТелефонCДобавочнымНомером + 134 + true + true + + true + + + + Объект.ТелефонCДобавочнымНомером + + + Right + + ТелефонCДобавочнымНомеромРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + + ТелефонCДобавочнымНомеромКонтекстноеМеню + 135 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПроверятьКорректностьТелефон + 137 + + <key>ru</key> + <value>Запрещать ввод некорректных номеров</value> + + true + true + + true + + + + Объект.ПроверятьКорректность + + + Right + + ПроверятьКорректностьТелефонРасширеннаяПодсказка + 139 + true + true + + true + + Label + true + true + + Left + + + + ПроверятьКорректностьТелефонКонтекстноеМеню + 138 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + МаскаПриВводеНомераТелефона + 178 + + <key>ru</key> + <value>Вводить номер по маске:</value> + + true + true + + true + + + + Объект.ВводитьНомерПоМаске + + + Right + + МаскаПриВводеНомераТелефонаРасширеннаяПодсказка + 180 + true + true + + true + + Label + true + true + + Left + + + + МаскаПриВводеНомераТелефонаКонтекстноеМеню + 179 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + МаскаТелефона + 184 + + ДекорацияОтступМаскаТелефона + 186 + true + true + + true + + + ДекорацияОтступМаскаТелефонаРасширеннаяПодсказка + 188 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияОтступМаскаТелефонаКонтекстноеМеню + 187 + true + true + + true + + true + + Label + 1 + true + true + + Left + + + + ШаблонМаскиНомераТелефона + 181 + true + true + + true + + + + Объект.МаскаНомераТелефона + + + None + Button + + ШаблонМаскиНомераТелефонаРасширеннаяПодсказка + 183 + + <key>ru</key> + <value><font Arial><fontsize 8><bgcolor #ffffff><color #333333>В строке маски допустимо использование следующих специальных символов:</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>! - любой введенный символ преобразуется в верхний регистр;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>9 - допустимо ввести произвольный символ цифры;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333># - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>X (латинского алфавита) - допустимо ввести произвольный символ;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333></></></></></value> + + true + true + + true + + true + Label + true + true + + Left + + + + ШаблонМаскиНомераТелефонаКонтекстноеМеню + 182 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + true + + ru + +9 (999) 999-99-99 + + + + true + true + + true + + + <key>ru</key> + <value>Маска телефона</value> + + + МаскаТелефонаРасширеннаяПодсказка + 185 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Телефон</value> + + + ТелефонРасширеннаяПодсказка + 133 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Skype + 124 + + ДекорацияЗаглушкаSkype + 126 + true + true + + true + + + ДекорацияЗаглушкаSkypeРасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияЗаглушкаSkypeКонтекстноеМеню + 127 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Skype</value> + + + SkypeРасширеннаяПодсказка + 125 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Другое + 51 + + ВидПоляДругое + 150 + + <key>ru</key> + <value>Вид поля</value> + + true + true + + true + + + + Объект.ВидПоляДругое + + + + ВидПоляДругоеРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + + ВидПоляДругоеКонтекстноеМеню + 151 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Многострочное широкое + + + МногострочноеШирокое + + + + + ru + Однострочное широкое + + + ОднострочноеШирокое + + + + + ru + Однострочное узкое + + + ОднострочноеУзкое + + + + + true + true + + true + + + <key>ru</key> + <value>Другое</value> + + + ДругоеExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Прочие + 140 + + ДекорацияЗаглушка + 54 + true + true + + true + + + ДекорацияЗаглушкаРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияЗаглушкаКонтекстноеМеню + 55 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Прочие</value> + + + ПрочиеРасширеннаяПодсказка + 141 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Проверки</value> + + + ПроверкиExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наименование настройки по типам</value> + + + ГруппаНаименованиеНастройкиПоТипамExtendedTooltip + 97 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Тип контактной информации</value> + + + ГруппаТипКонтактнойИнформацииExtendedTooltip + 90 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаИдентификаторДляФормул + 171 + + ИдентификаторДляФормул + 173 + true + true + + true + + + + Объект.ИдентификаторДляФормул + + + + ИдентификаторДляФормулРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторДляФормулКонтекстноеМеню + 174 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ЗаполнитьИдентификаторДляФормул + 176 + true + true + + true + + + ЗаполнитьИдентификаторДляФормулРасширеннаяПодсказка + 177 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ЗаполнитьИдентификаторДляФормул + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Идентификатор для формул</value> + + + ГруппаИдентификаторДляФормулРасширеннаяПодсказка + 172 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ВидыКонтактнойИнформации + + + true + + + true + +
true
+ true +
+ + ПроверятьПоКлассификатору + 2 + + Number + + 10 + + + + true + + + true + + true + + + ДоступныДополнительныеНастройкиАдреса + 3 + + Boolean + + + true + + + true + + + + ДополнительныеНастройкиАдреса + + <key>ru</key> + <value>Дополнительные настройки адреса</value> + + 1 + + ru + Дополнительные настройки адреса + + + true + + + + ДополнительныеНастройкиАдреса + + + DontUse + + + ЗаполнитьИдентификаторДляФормул + + <key>ru</key> + <value>Заполнить идентификатор для формул</value> + + 2 + + ru + Заполнить идентификатор для формул + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьИдентификаторДляФормул + + + Picture + Auto + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..1a6d2f26 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,93 @@ + +

Описание свойств поля контактной информации.

+

Поставка программы осуществляется c предопределенными полями контактной информации для некоторых документов и списков. У предопределенных полей контактной информации можно только поменять настройки, остальные реквизиты заполнены по умолчанию и защищены от редактирования.

+

Виды контактной информации

+

Программа позволяет хранить следующие виды контактной информации:

+
  • +
    Адрес - поле с таким видом контактной информации предназначено для хранения адреса в виде произвольной строки или в виде шаблона адреса. Позволяет заполнять адрес с помощью шаблона ввода, используя адресный классификатор. Если адрес заполняется с помощью адресного классификатора, то индекс адреса устанавливается из классификатора автоматически, после окончания ввода адреса. Предопределенные фактический и юридический адреса используются в печатных формах документов.
    +
  • +
  • +
    Телефон - поле с таким видом контактной информации предназначено для хранения телефонных номеров в виде произвольной строки, или в соответствии с шаблоном ввода номера телефона. Предопределенный телефон используется в печатных формах документов.
    +
  • +
  • +
    Адрес электронной почты - поле с таким видом контактной информации предназначено для хранения адреса электронной почты. Реквизит используется при отправке электронных писем из программы.
    +
  • +
  • +
    Веб-страница - поле с таким видом контактной информации предназначено для хранения адресов веб страниц. Позволяет прикрепить гиперссылки на интернет-страницы, после этого ссылки будут храниться в базе с возможностью перехода по ним.
    +
  • +
  • +
    Факс - поле с таким видом контактной информации предназначено для хранения номеров факсов в виде произвольной строки, или в соответствии с шаблоном ввода номера факса. Реквизит используется в печатных формах документов.
    +
  • +
  • +
    Другое - поле с таким видом контактной информации может использоваться для хранения произвольной текстовой контактной информации, например, можно поместить информацию о том, как добраться до организации. Программа позволяет в это поле ввести текст длиной до 1024 символов.
    +
  • +
  • +
    Skype - поле с таким видом контактной информации используется для хранения логина Skype.

Добавление поля контактной информации в список или документ

+

Заполните необходимую информацию:

+
  • +
    Выберите из списка Тип контактной информации.
    +
  • +
  • +
    Введите Наименование, с которым поле контактной информации появится в списке или документе.
  • +
  • +
    Выберите Группу, если она не введена по умолчанию. Группа соответствует документу или списку программы, в который добавляется новое поле контактной информации.
  • +
  • Поле Идентификатор для формул заполняется автоматически по специальным правилам. Не рекомендуется его изменять. Если автоматического заполнения не произошло, можно нажать кнопку  Заполнить. Данный реквизит будет использоваться для построения и выполнения формул пользователями с разными языками интерфейса.

Настройки полей контактной информации

+
  • +
    Включите флажок Обязательное заполнение, для того чтобы программа проверяла заполнение поля контактной информации при вводе документов или списков. Сохранение данных без заполнения этого поля будет невозможно.
    +
  • +
  • Настройка Редактировать используется для типов контактной информации Адрес, Телефон, Факс. Такая настройка позволяет выбрать способ ввода этих видов контактной информации:
  • +
    • В диалоге - позволяет ограничить ввод нового и редактирование существующего адреса, телефона или факса шаблоном ввода, а также выбором адреса из адресного классификатора. При выбранном значении предусмотрена возможность ввести адрес в свободной форме. Это может понадобиться в исключительных случаях, например, если данные адреса в каких либо документах приводятся с ошибкой, но для печати необходимо их проставить. При этом такой адрес будет храниться в программе с пометкой, что он введен в свободной форме, и использоваться с ограничениями. После уточнения адрес можно будет исправить, заполнив по шаблону.
    • +
    • В поле ввода - если для адресов и телефонов не требуется ввод по шаблону (например, для иностранных адресов), то можно отключить ввод в диалоге;
    • +
    • В диалоге и в поле ввода - позволяет использовать оба способа ввода. Если правильный ввод адреса не вызывает затруднений, можно будет ввести адрес прямо в поле ввода не открывая диалога, в случае затруднений можно будет открыть шаблон и ввести адрес с помощью шаблона.
  • +
    Настройка Запрещать ввод некорректного адреса используется для полей Адрес, Телефон или Адрес электронной почты. Такая настройка позволяет запретить ввод российских адресов, телефонов или адресов электронной почты, которые заполнены не по установленным правилам.
  • +
  • Включите флажок Разрешить ввод нескольких значений, для того чтобы можно было ввести несколько значений. Например, у организации или физического лица может быть несколько адресов электронной почты или номеров телефонов, по которым можно с ними связаться.

Особенности настройки поля Адрес

+
+
  • Включать страну в представление - включите флажок, для того чтобы страна указывалась при автоматическом составлении программой полного адреса в поле Адрес.

+
  • Хранить историю изменений - включите флажок, для того чтобы хранить историю изменений, используется не для всех объектов программы, зависит от настроек разработчика.

+

Международный формат адреса

+
  • Для создания международного адреса (например, для валютных платежей), включите флажок Международный формат адреса, в этом случае ссылка Дополнительные настройки адреса становится недоступной.

Дополнительные настройки поля Адрес 

+

С помощью соответствующей ссылки можно перейти к дополнительным настройкам адреса:

+
  • Включите флажок Только российский адрес, для того чтобы запретить выбор другой страны при заполнении адреса. Используйте эту возможность, если у сотрудников Вашей организации только российские адреса, это ускорит ввод информации. При этом становятся доступными дополнительные настройки: +
    • Запрещать ввод некорректного адреса - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок Редактировать только в диалоге). Адрес проверяется по ФИАС. +
    • +
    • Указывать ОКТМО - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. По ОКТМО нужно получать адрес муниципального образования, в том числе и код - получение особенностей налогообложения выполняется именно по коду. При необходимости поле можно отредактировать.
    • +
    • Автоматически исправлять устаревшие адреса - можно включить автоматическую проверку и исправление адресов. В этом случае регламентное задание 1 раз в неделю проверяет и исправляет адреса, ставшие устаревшими.

Особенности настройки поля Телефон и факс

+
+
  • Для того чтобы использовать Телефон с добавочным номером, включите соответствующий флажок. Для некоторых типов телефонов (например, мобильный телефон) не предусмотрено добавочных номеров.
+
  • Включите флажок Вводить номер по маске, при этом можно выбрать маску из списка, при необходимости поправить ее. Маска используется только при вводе новых номеров телефонов.
  • +
  • В строке маски допустимо использование следующих специальных символов:
  • +
    • ! - любой введенный символ преобразуется в верхний регистр;
    • +
    • 9 - допустимо ввести произвольный символ цифры;
    • +
    • # - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;
    • +
    • N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) 
    • +
    • U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;
    • +
    • X (латинского алфавита) - допустимо ввести произвольный символ;
    • +
    • ^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;
    • +
    • @ - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.
  • Например, при маске "+7(999)999-99-99" текст "9001234567" преобразуется в "+7(900)123-45-67".
  • +
  • Для того чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "\".
  • +
  • Допускается указание нескольких масок в одном параметре. Маски разделяются символом ";". В этом случае использоваться будет та маска, к которой подходит введенный текст.
  • +

Особенности настройки поля Адрес электронной почты

+
  • Если у поля установлен тип Адрес электронной почты, то программа проверяет правильность ввода адреса электронной почты. Включите флажок Запрещать ввод некорректных адресов, в этом случае ввести некорректный адрес электронной почты будет невозможно.

Особенности настройки поля Другое

+
  • +
    С помощью переключателя можно указать Вид поля, для того чтобы более точно расположить поле в окне объекта:
    +
    • +
      Многострочное широкое - включает несколько строк;
    • +
    • +
      Однострочное широкое - длинная строка;
    • +
    • +
      Однострочное узкое - если вид контактной информации Другое используется для ввода текстовых данных небольшой длины, то размер поля ввода можно уменьшить.

Разрешение редактирования реквизитов

+ +

+
  • Для того чтобы не допустить рассогласование данных в программе, следующие реквизиты не доступны для редактирования:
  • +
    • Тип;
    • +
    • Группа;
    • +
    • Идентификатор формул.

+
+
  • В программе предусмотрена возможность изменения уже существующих настроек видов контактной информации при необходимости - если без такой корректировки невозможна дальнейшая работа с информационной базой.
  • +
  • Некоторые реквизиты (например, ТипГруппаИдентификатор для формул) изменять не рекомендуется.
  • +
  • Если без этого не обойтись, с помощью команды Еще - Разрешить редактирование типа и группы можно перейти к изменению данных реквизитов, после оценки всех рисков данного действия.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..a4f35b8b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,536 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Предопределенный Или Объект.ЗапретитьРедактированиеПользователем Тогда + Элементы.Наименование.ТолькоПросмотр = Истина; + Элементы.Родитель.ТолькоПросмотр = Истина; + Элементы.Тип.ТолькоПросмотр = Истина; + Элементы.ГруппаТипОбщиеДляВсех.ТолькоПросмотр = Объект.ЗапретитьРедактированиеПользователем; + Элементы.ИдентификаторДляФормул.ТолькоПросмотр = Истина; + Иначе + // Обработчик подсистемы запрета редактирования реквизитов объектов. + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда + МодульЗапретРедактированияРеквизитовОбъектов = ОбщегоНазначения.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектов"); + МодульЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект,, НСтр("ru = 'Разрешить редактирование типа и группы'")); + + Иначе + Элементы.Родитель.ТолькоПросмотр = Истина; + Элементы.Тип.ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + Объект.ВидРедактирования = "ПолеВводаИДиалог"; + КонецЕсли; + + СсылкаРодителя = Объект.Родитель; + Элементы.ХранитьИсториюИзменений.Доступность = Объект.ВидРедактирования = "Диалог"; + Элементы.РазрешитьВводНесколькихЗначений.Доступность = НЕ Объект.ХранитьИсториюИзменений; + + Если Не Объект.МожноИзменятьСпособРедактирования Тогда + Элементы.ВидРедактирования.Доступность = Ложь; + Элементы.РазрешитьВводНесколькихЗначений.Доступность = Ложь; + Элементы.ГруппаНаименованиеНастройкиПоТипам.Доступность = Ложь; + Элементы.ХранитьИсториюИзменений.Доступность = Ложь; + КонецЕсли; + + Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь; + + Если Объект.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес + ИЛИ НЕ СсылкаРодителя.Пустая() + ИЛИ СсылкаРодителя.Уровень() = 0 Тогда + ТабличнаяЧасть = Неопределено; + + РеквизитыРодителя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаРодителя, "ИмяПредопределенныхДанных, ИмяПредопределенногоВида"); + ИмяПредопределенногоВида = ?(ЗначениеЗаполнено(РеквизитыРодителя.ИмяПредопределенногоВида), + РеквизитыРодителя.ИмяПредопределенногоВида, РеквизитыРодителя.ИмяПредопределенныхДанных); + + Если СтрНачинаетсяС(ИмяПредопределенногоВида, "Справочник") Тогда + ИмяОбъекта = Сред(ИмяПредопределенногоВида, СтрДлина("Справочник") + 1); + Если Метаданные.Справочники.Найти(ИмяОбъекта) <> Неопределено Тогда + ТабличнаяЧасть = Метаданные.Справочники[ИмяОбъекта].ТабличныеЧасти.Найти("КонтактнаяИнформация"); + КонецЕсли; + ИначеЕсли СтрНачинаетсяС(ИмяПредопределенногоВида, "Документ") Тогда + ИмяОбъекта = Сред(ИмяПредопределенногоВида, СтрДлина("Документ") + 1); + Если Метаданные.Документы.Найти(ИмяОбъекта) <> Неопределено Тогда + ТабличнаяЧасть = Метаданные.Документы[ИмяОбъекта].ТабличныеЧасти.Найти("КонтактнаяИнформация"); + КонецЕсли; + КонецЕсли; + + Если ТабличнаяЧасть <> Неопределено Тогда + Если ТабличнаяЧасть.Реквизиты.Найти("ДействуетС") <> Неопределено Тогда + Элементы.ГруппаХранитьИсториюИзменений.Видимость = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если (Объект.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон + Или Объект.Тип = Перечисления.ТипыКонтактнойИнформации.Факс) + И Объект.ВидРедактирования = "Диалог" Тогда + Элементы.МаскаПриВводеНомераТелефона.Доступность = Ложь; + КонецЕсли; + + ДоступныДополнительныеНастройкиАдреса = (Метаданные.Обработки.Найти("РасширенныйВводКонтактнойИнформации") <> Неопределено + И Метаданные.Обработки["РасширенныйВводКонтактнойИнформации"].Формы.Найти("НастройкиАдреса") <> Неопределено); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + + Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда + МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами"); + МодульРаботаСАдресами.ЗаполнитьМаскиНомераТелефона(Элементы.ШаблонМаскиНомераТелефона.СписокВыбора); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + ИзменитьОтображениеПриИзмененииТипа(); +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "ПослеВводаСтрокНаРазныхЯзыках" + И Параметр = ЭтотОбъект Тогда + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбновитьПредлагаемоеЗначениеИдентификатора(); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + Если НЕ ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") + И ЗначениеЗаполнено(Объект.ИдентификаторДляФормул) Тогда + // Заполнение идентификатора для формул + // и проверка есть ли свойство с тем же наименованием. + ТекстВопроса = ИдентификаторДляФормулУжеИспользуется( + Объект.ИдентификаторДляФормул, Объект.Ссылка, Объект.Родитель); + + Если ЗначениеЗаполнено(ТекстВопроса) Тогда + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить'")); + Кнопки.Добавить("ВернутьсяКВводуИдентификатора", НСтр("ru = 'Отмена'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопроса, Кнопки, , "ПродолжитьЗапись"); + + Отказ = Истина; + + Иначе + ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если Не ТекущийОбъект.ПроверитьЗаполнение() Тогда + Отказ = Истина; + КонецЕсли; + + // Формирование идентификатора для формул дополнительного реквизита (сведения). + Если Не ЗначениеЗаполнено(ТекущийОбъект.ИдентификаторДляФормул) + Или ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") Тогда + НаименованиеОбъекта = НаименованиеДляФормированияИдентификатора(ТекущийОбъект.Наименование, ТекущийОбъект.Представления); + ТекущийОбъект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( + НаименованиеОбъекта, ТекущийОбъект.Ссылка, ТекущийОбъект.Родитель); + + ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + Если ПараметрыЗаписи.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда + ТекущийОбъект.ДополнительныеСвойства.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + Если Не ТекущийОбъект.Предопределенный Тогда + // Обработчик подсистемы запрета редактирования реквизитов объектов. + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда + МодульЗапретРедактированияРеквизитовОбъектов = ОбщегоНазначения.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектов"); + МодульЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект); + КонецЕсли; + КонецЕсли; + + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + ПроверяемыеРеквизиты.Очистить(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбновитьПредлагаемоеЗначениеИдентификатора(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ТипПриИзменении(Элемент) + + ИзменитьРеквизитыПриИзмененииТипа(); + ИзменитьОтображениеПриИзмененииТипа(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТипОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ВидРедактированияПриИзменении(Элемент) + + Если Объект.ВидРедактирования = "Диалог" Тогда + Элементы.ХранитьИсториюИзменений.Доступность = Истина; + Объект.ВводитьНомерПоМаске = Ложь; + Элементы.МаскаПриВводеНомераТелефона.Доступность = Ложь; + Иначе + Элементы.ХранитьИсториюИзменений.Доступность = Ложь; + Объект.ХранитьИсториюИзменений = Ложь; + Элементы.МаскаПриВводеНомераТелефона.Доступность = Истина; + КонецЕсли; + + Элементы.РазрешитьВводНесколькихЗначений.Доступность = НЕ Объект.ХранитьИсториюИзменений; + +КонецПроцедуры + +&НаКлиенте +Процедура ХранитьИсториюИзмененийПриИзменении(Элемент) + + Если Объект.ХранитьИсториюИзменений Тогда + Объект.РазрешитьВводНесколькихЗначений = Ложь; + КонецЕсли; + + Элементы.РазрешитьВводНесколькихЗначений.Доступность = Не Объект.ХранитьИсториюИзменений; + +КонецПроцедуры + +&НаКлиенте +Процедура РазрешитьВводНесколькихЗначенийПриИзменении(Элемент) + + Если Объект.РазрешитьВводНесколькихЗначений Тогда + Объект.ХранитьИсториюИзменений = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РодительОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура МеждународныйФорматАдресаПриИзменении(Элемент) + + ИзменитьОтображениеПриИзмененииТипа(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДоступностьПолейДляАдреса() + + Если Объект.ВидРедактирования = "ПолеВвода" Тогда + Объект.ВключатьСтрануВПредставление = Ложь; + Элементы.ВключатьСтрануВПредставление.Доступность = Ложь; + Иначе + Элементы.ВключатьСтрануВПредставление.Доступность = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда) + + Если Не Объект.Предопределенный Тогда + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда + МодульЗапретРедактированияРеквизитовОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектовКлиент"); + Оповещение = Новый ОписаниеОповещения("РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект); + МодульЗапретРедактированияРеквизитовОбъектовКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтотОбъект, Оповещение); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт + + Если НЕ Результат = Неопределено Тогда + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДополнительныеНастройкиАдреса(Команда) + ОповещениеОЗакрытие = Новый ОписаниеОповещения("ПослеЗакрытияФормыНастроекАдреса", ЭтотОбъект); + ПараметрыФормы = Новый Структура(); + ПараметрыФормы.Вставить("Объект", Объект); + ПараметрыФормы.Вставить("ТолькоПросмотр", ЭтотОбъект.ТолькоПросмотр); + ИмяФормыНастройкиАдреса = "Обработка.РасширенныйВводКонтактнойИнформации.Форма.НастройкиАдреса"; + ОткрытьФорму(ИмяФормыНастройкиАдреса, ПараметрыФормы,,,,, ОповещениеОЗакрытие); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьИдентификаторДляФормул(Команда) + ЗаполнитьИдентификаторДляФормулНаСервере(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ИзменитьОтображениеПриИзмененииТипа() + + Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда + Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Адрес; + Элементы.ВидРедактирования.Доступность = Объект.МожноИзменятьСпособРедактирования; + Элементы.ДополнительныеНастройкиАдреса.Видимость = ДоступныДополнительныеНастройкиАдреса; + Элементы.ДополнительныеНастройкиАдреса.Доступность = Не Объект.МеждународныйФорматАдреса; + Элементы.ВидРедактирования.Видимость = Истина; + + ДоступностьПолейДляАдреса(); + + Иначе + Элементы.ДополнительныеНастройкиАдреса.Видимость = Ложь; + Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда + Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.АдресЭлектроннойПочты; + Элементы.ВидРедактирования.Видимость = Ложь; + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Skype") Тогда + Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Skype; + Элементы.ВидРедактирования.Видимость = Ложь; + Элементы.РазрешитьВводНесколькихЗначений.Доступность = Истина; + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") + Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда + Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Телефон; + Элементы.ВидРедактирования.Доступность = Объект.МожноИзменятьСпособРедактирования; + Элементы.ВидРедактирования.Видимость = Истина; + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Другое") Тогда + Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Другое; + Элементы.ВидРедактирования.Доступность = Ложь; + Элементы.ВидРедактирования.Видимость = Ложь; + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.ВебСтраница") Тогда + Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Прочие; + Элементы.ВидРедактирования.Видимость = Ложь; + Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь; + Иначе + Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Прочие; + Элементы.ВидРедактирования.Доступность = Ложь; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРеквизитыПриИзмененииТипа() + + Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда + Элементы.ХранитьИсториюИзменений.Доступность = Истина; + Иначе + + Объект.ХранитьИсториюИзменений = Ложь; + Элементы.ХранитьИсториюИзменений.Доступность = Ложь; + + Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда + Объект.ВидРедактирования = "ПолеВвода"; + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") + Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда + // Нет изменений + Иначе + Объект.ВидРедактирования = "ПолеВводаИДиалог"; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗакрытияФормыНастроекАдреса(Результат, ДополнительныеПараметры) Экспорт + Если ТипЗнч(Результат) = Тип("Структура") Тогда + ЗаполнитьЗначенияСвойств(Объект, Результат); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ОбновитьПредлагаемоеЗначениеИдентификатора() + + ПредлагаемыйИдентификатор = ""; + Если Не Элементы.ИдентификаторДляФормул.ТолькоПросмотр Тогда + Представление = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления); + ПредлагаемыйИдентификатор = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( + Представление, Объект.Ссылка, Объект.Родитель); + Если ПредлагаемыйИдентификатор <> Объект.ИдентификаторДляФормул Тогда + Объект.ИдентификаторДляФормул = ПредлагаемыйИдентификатор; + Модифицированность = Истина; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьИдентификаторДляФормулНаСервере() + ЗаголовокДляИдентификатора = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления); + Объект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( + ЗаголовокДляИдентификатора, Объект.Ссылка, Объект.Родитель); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция НаименованиеДляФормированияИдентификатора(Знач Наименование, Знач Представления) + Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Наименование = НайденныеСтроки[0].Наименование; + КонецЕсли; + КонецЕсли; + + Возврат Наименование; +КонецФункции + +&НаКлиенте +Процедура ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ <> "ПродолжитьЗапись" Тогда + Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда + ВыполнитьОбработкуОповещения( + Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры, + ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры), + Истина); + КонецЕсли; + Иначе + ПараметрыЗаписи.Вставить("КогдаИдентификаторДляФормулУжеИспользуется"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ИдентификаторДляФормулУжеИспользуется(Знач ИдентификаторДляФормул, Знач ТекущийВидКонтактнойИнформации, Знач Родитель) + + ПроверочныйИдентификатор = Справочники.ВидыКонтактнойИнформации.ИдентификаторДляФормул(ИдентификаторДляФормул); + Если ВРег(ИдентификаторДляФормул) <> ВРег(ПроверочныйИдентификатор) Тогда + ТекстВопроса = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов. + | + |Создать новый идентификатор для формул и продолжить запись?'"); + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса, + ИдентификаторДляФормул); + Возврат ТекстВопроса; + КонецЕсли; + + РодительВерхнегоУровня = Родитель; + Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл + Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель"); + Если ЗначениеЗаполнено(Значение) Тогда + РодительВерхнегоУровня = Значение; + Иначе + Прервать; + КонецЕсли; + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ВидыКонтактнойИнформации.Ссылка + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ГДЕ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул = &ИдентификаторДляФормул + | И ВидыКонтактнойИнформации.Ссылка <> &Ссылка + | И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&Родитель)"; + + Запрос.УстановитьПараметр("Ссылка", ТекущийВидКонтактнойИнформации); + Запрос.УстановитьПараметр("ИдентификаторДляФормул", ИдентификаторДляФормул); + Запрос.УстановитьПараметр("Родитель", РодительВерхнегоУровня); + + Выборка = Запрос.Выполнить().Выбрать(); + + Если НЕ Выборка.Следующий() Тогда + Возврат ""; + КонецЕсли; + + ТекстВопроса = НСтр("ru = 'Существует вид контактной информации с идентификатором для формул + |""%1"". + | + |Рекомендуется использовать другой идентификатор для формул, + |иначе программа может работать некорректно. + | + |Создать новый идентификатор для формул и продолжить запись?'"); + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса, + ИдентификаторДляФормул); + + Возврат ТекстВопроса; + +КонецФункции + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Help/ru.html" new file mode 100644 index 00000000..72e196e3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/Help/ru.html" @@ -0,0 +1,13 @@ + +

Предназначен для настройки видов контактной информации в документах и списках программы.

+

Программа позволяет хранить и обрабатывать контактную информацию, использующуюся на предприятии.

+

Работа с контактной информацией в разных списках программы реализована одинаково. Все списки предоставляют одинаковую возможность по работе с адресами или телефонами. В программе также предусмотрена возможность хранения контактной информации в табличных частях документов и загрузка контактной информации. В табличных частях документов можно редактировать контактную информацию. Такая возможность может потребоваться при работе в документах представляемой электронной отчетности. Связано это с необходимостью сохранения в данных документа точной копии представленных в фискальные органы сведений, в том числе адресов и телефонов физических лиц.

+

Поставка программы осуществляется c предопределенными группами и элементами списка. Предопределенные группы списка соответствуют спискам или документам программы - носителям контактной информации. Добавление новых групп в список запрещено. Элементы внутри этих групп определяют состав контактной информации соответствующих объектов программы.

+

В списках и табличных частях документов программы предусмотрено несколько предопределенных видов контактной информации, кроме того, имеется возможность добавлять новые виды контактной информации.

+

Настройку видов контактной информации рекомендуется выполнить на этапе начального заполнения программы. Эта рекомендация не исключает настройку в процессе ведения контактной информации. Настройку обычно выполняет администратор программы.

+

Список открывается соответствующей командой панели навигации раздела Администрирование - Общие настройки - Контактная информация.

+

Добавление нового поля контактной информации в список или документ

+
  • +
    Выбрав соответствующую группу в списке, нажмите Создать. Заполните необходимые поля.

Предопределенные виды контактной информации

+
  • У предопределенных элементов списка в отличие от произвольных полей контактной информации можно изменить только настройки, остальные реквизиты заполнены по умолчанию и защищены от редактирования.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/ManagerModule.bsl" new file mode 100644 index 00000000..72ee2704 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/ManagerModule.bsl" @@ -0,0 +1,584 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("*"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов + +// Возвращаемое значение: +// см. ЗапретРедактированияРеквизитовОбъектовПереопределяемый.ПриОпределенииЗаблокированныхРеквизитов.ЗаблокированныеРеквизиты. +// +Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт + + БлокируемыеРеквизиты = Новый Массив; + + БлокируемыеРеквизиты.Добавить("Тип;Тип"); + БлокируемыеРеквизиты.Добавить("Родитель"); + БлокируемыеРеквизиты.Добавить("ИдентификаторДляФормул"); + + Возврат БлокируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов + +// СтандартныеПодсистемы.ПоискИУдалениеДублей + +// Анализирует пары ссылок справочника на возможность замены одной на другую +// во всех местах использования с прикладной точки зрения. +// Проверки на запрет замены групп и ссылок разных типов производятся автоматически при начале замены. +// +// Параметры: +// ПарыЗамен - Соответствие из КлючИЗначение: +// * Ключ - ЛюбаяСсылка - что будет заменено +// * Значение - ЛюбаяСсылка - на что будет заменено +// Параметры - Структура - набор флагов, описывающих действие с заменяемыми элементами. +// Содержит необязательные реквизиты: +// * СпособУдаления - Строка - может принимать значения: +// "Непосредственно" - Если после замены ссылка нигде не используется, +// то она будет удалена непосредственно +// "Пометка" - Если после замены ссылка не используется, то +// она будет помечена на удаление. +// Любые другие значения говорят о том, что заменяемая ссылка не будет изменена. +// +// Возвращаемое значение: +// Соответствие из КлючИЗначение: +// * Ключ - ЛюбаяСсылка - исходная ссылка +// * Значение - Строка - описание, почему замена недопустима. Если все замены допустимы, то возвращается пустое соответствие +// +Функция ВозможностьЗаменыЭлементов(Знач ПарыЗамен, Знач Параметры = Неопределено) Экспорт + + Результат = Новый Соответствие; + Для Каждого КлючЗначение Из ПарыЗамен Цикл + ТекущаяСсылка = КлючЗначение.Ключ; + ЦелеваяСсылка = КлючЗначение.Значение; + + Если ТекущаяСсылка = ЦелеваяСсылка Тогда + Продолжить; + КонецЕсли; + + // Разрешаем заменять вид контактной информации на другой, только если они относятся к одной группе. + МожноЗаменять = ТекущаяСсылка.Родитель = ЦелеваяСсылка.Родитель; + Если Не МожноЗаменять Тогда + Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Элемент ""%1"" относится к ""%2"", а ""%3"" - к ""%4""'"), + ТекущаяСсылка, ТекущаяСсылка.Родитель, ЦелеваяСсылка, ЦелеваяСсылка.Родитель); + Результат.Вставить(ТекущаяСсылка, Ошибка); + КонецЕсли; + + КонецЦикла; + + Возврат Результат; +КонецФункции + +// Вызывается для определения прикладных параметров поиска дублей. +// +// Параметры: +// +// ПараметрыПоиска - Структура - предлагаемые параметры поиска. Содержит поля: +// +// * ПравилаПоиска - ТаблицаЗначений - предлагаемые правила сравнения для объектов. +// Может быть изменена для установки новых вариантов. Содержит колонки: +// ** Реквизит - Строка - имя реквизита для сравнения. +// ** Правило - Строка - правило сравнения: "Равно" - сравнение по равенству, "Подобно" -подобие строк, +// "" - пустая строка - не сравнивать. +// +// * КомпоновщикОтбора - КомпоновщикНастроекКомпоновкиДанных - инициализированный компоновщик для +// предварительного отбора. Может быть изменен, например, для +// усиления отборов. +// +// * ОграниченияСравнения - Массив - предназначен для заполнения описания прикладных правил-ограничений. +// Должен быть дополнен структурами с полями: +// ** Представление - Строка - описание правила-ограничения для пользователя. +// ** ДополнительныеПоля - Строка - список дополнительных реквизитов запятую, необходимых для +// дополнительного анализа. +// +// * КоличествоЭлементовДляСравнения - Число - количество кандидатов в дубли, передаваемых одним вызовом +// обработчику. +// +// ДополнительныеПараметры - Произвольный - значение, переданное при вызове программного интерфейса +// ОбщегоНазначения.НайтиДублиЭлементов. +// При вызове пользователем из обработки "ПоискИЗаменаДублей" равно Неопределено. +// +Процедура ПараметрыПоискаДублей(ПараметрыПоиска, ДополнительныеПараметры = Неопределено) Экспорт + + Ограничение = Новый Структура; + Ограничение.Вставить("Представление", НСтр("ru = 'Относятся к одной группе и одного типа (адрес, телефон и пр.).'")); + Ограничение.Вставить("ДополнительныеПоля", "Родитель, Тип"); + ПараметрыПоиска.ОграниченияСравнения.Добавить(Ограничение); + + // Размер таблицы для передачи в обработчик. + ПараметрыПоиска.КоличествоЭлементовДляСравнения = 100; + +КонецПроцедуры + +// Параметры: +// ТаблицаКандидатов - см. ПоискИУдалениеДублейПереопределяемый.ПриПоискеДублей.ТаблицаКандидатов +// ДополнительныеПараметры - см. ПоискИУдалениеДублейПереопределяемый.ПриПоискеДублей.ДополнительныеПараметры +// +Процедура ПриПоискеДублей(ТаблицаКандидатов, ДополнительныеПараметры = Неопределено) Экспорт + + Для Каждого Вариант Из ТаблицаКандидатов Цикл + Если Вариант.Поля1.Родитель = Вариант.Поля2.Родитель И Вариант.Поля1.Тип = Вариант.Поля2.Тип Тогда + Вариант.ЭтоДубли = Истина; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПоискИУдалениеДублей + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +#Область ИдентификаторДляФормул + +// Проверяет уникальность идентификатора в рамках объекта метаданных для которого предназначен вид контактной +// информации (родитель) а также соответствие идентификатора правилам написания. +// +// Параметры: +// ИдентификаторДляФормул - Строка - идентификатор для формул. +// Ссылка - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на текущий объект. +// Родитель - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на родитель текущего объекта. +// Отказ - Булево - флаг отказа при наличии ошибки. +// +Процедура ПроверитьУникальностьИдентификатора(ИдентификаторДляФормул, Ссылка, Родитель, Отказ) Экспорт + + Если ЗначениеЗаполнено(ИдентификаторДляФормул) Тогда + + ИдентификаторПоПравилам = Истина; + ПроверочныйИдентификатор = ИдентификаторДляФормул(ИдентификаторДляФормул); + Если НЕ ВРег(ПроверочныйИдентификатор) = ВРег(ИдентификаторДляФормул) Тогда + ИдентификаторПоПравилам = Ложь; + + ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов.'"); + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),, + "ИдентификаторДляФормул",, Отказ); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов.'", КодЯзыка); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + КонецЕсли; + + Если ИдентификаторПоПравилам Тогда + РодительВерхнегоУровня = Родитель; + Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл + Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель"); + Если ЗначениеЗаполнено(Значение) Тогда + РодительВерхнегоУровня = Значение; + Иначе + Прервать; + КонецЕсли; + КонецЦикла; + Если НЕ ИдентификаторДляФормулУникален(ИдентификаторДляФормул, Ссылка, РодительВерхнегоУровня) Тогда + + Отказ = Истина; + + ТекстОшибки = НСтр("ru = 'В базе данных уже содержится вид контактной информации с идентификатором ""%1"" внутри группы ""%2"". Идентификатор должен быть уникальным'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул, РодительВерхнегоУровня); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, "ИдентификаторДляФормул"); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ТекстОшибки = НСтр("ru = 'В базе данных уже содержится вид контактной информации с идентификатором ""%1"" внутри группы ""%2"". Идентификатор должен быть уникальным'", КодЯзыка); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул, РодительВерхнегоУровня); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + КонецЕсли; + КонецЕсли; + + Иначе + + ТекстОшибки = НСтр("ru = 'Идентификатор для формул не заполнен'"); + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),, + "ИдентификаторДляФормул",, Отказ); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ТекстОшибки = НСтр("ru = 'Идентификатор для формул не заполнен'", КодЯзыка); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + + КонецЕсли; + +КонецПроцедуры + +// Возвращает уникальный идентификатора для формул (после проверки на уникальность) +// +// Параметры: +// ПредставлениеОбъекта - Строка - представление, из которого будет сформирован идентификатор для формул. +// СсылкаНаТекущийОбъект - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на текущий элемент. +// Родитель - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на родитель текущего объекта. +// Возвращаемое значение: +// Строка - уникальное значение идентификатора для формул. +// +Функция УникальныйИдентификаторДляФормул(ПредставлениеОбъекта, СсылкаНаТекущийОбъект, Родитель) Экспорт + + Идентификатор = ИдентификаторДляФормул(ПредставлениеОбъекта); + Если ПустаяСтрока(Идентификатор) Тогда + // Представление состоит и спецсимволов или цифр. + Префикс = НСтр("ru = 'Идентификатор'"); + Идентификатор = ИдентификаторДляФормул(Префикс + ПредставлениеОбъекта); + КонецЕсли; + + РодительВерхнегоУровня = Родитель; + Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл + Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель"); + Если ЗначениеЗаполнено(Значение) Тогда + РодительВерхнегоУровня = Значение; + Иначе + Прервать; + КонецЕсли; + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул КАК ИдентификаторДляФормул + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ГДЕ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул = &ИдентификаторДляФормул + | И ВидыКонтактнойИнформации.Ссылка <> &СсылкаНаТекущийОбъект + | И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул КАК ИдентификаторДляФормул + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ГДЕ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул ПОДОБНО &ИдентификаторДляФормулПодобие + | И ВидыКонтактнойИнформации.Ссылка <> &СсылкаНаТекущийОбъект + | И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня)"; + Запрос.УстановитьПараметр("СсылкаНаТекущийОбъект", СсылкаНаТекущийОбъект); + Запрос.УстановитьПараметр("РодительВерхнегоУровня", РодительВерхнегоУровня); + Запрос.УстановитьПараметр("ИдентификаторДляФормул", Идентификатор); + Запрос.УстановитьПараметр("ИдентификаторДляФормулПодобие", Идентификатор + "%"); + + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + УникальностьПоТочномуСоответствию = РезультатыЗапроса[0]; + Если НЕ УникальностьПоТочномуСоответствию.Пустой() Тогда + // Есть элементы с данным идентификатором. + ИспользованныеИдентификаторы = Новый Соответствие; + ВыборкаПодобных = РезультатыЗапроса[1].Выбрать(); + Пока ВыборкаПодобных.Следующий() Цикл + ИспользованныеИдентификаторы.Вставить(ВРЕГ(ВыборкаПодобных.ИдентификаторДляФормул), Истина); + КонецЦикла; + + ДобавляемыйНомер = 1; + ИдентификаторБезНомера = Идентификатор; + Пока НЕ ИспользованныеИдентификаторы.Получить(ВРЕГ(Идентификатор)) = Неопределено Цикл + ДобавляемыйНомер = ДобавляемыйНомер + 1; + Идентификатор = ИдентификаторБезНомера + ДобавляемыйНомер; + КонецЦикла; + КонецЕсли; + ИспользованныеИдентификаторы = Новый Соответствие; + + Возврат Идентификатор; +КонецФункции + +Функция ИдентификаторДляФормулУникален(ПроверяемыйИдентификатор, СсылкаНаТекущийОбъект, Родитель) + + РодительВерхнегоУровня = Родитель; + Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл + Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель"); + Если ЗначениеЗаполнено(Значение) Тогда + РодительВерхнегоУровня = Значение; + Иначе + Прервать; + КонецЕсли; + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Таблица.Ссылка + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК Таблица + |ГДЕ + | Таблица.Ссылка <> &СсылкаНаТекущийОбъект + | И Таблица.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня) + | И Таблица.ИдентификаторДляФормул = &ИдентификаторДляФормул"; + Запрос.УстановитьПараметр("ИдентификаторДляФормул", ПроверяемыйИдентификатор); + Запрос.УстановитьПараметр("СсылкаНаТекущийОбъект", СсылкаНаТекущийОбъект); + Запрос.УстановитьПараметр("РодительВерхнегоУровня", РодительВерхнегоУровня); + + РезультатЗапроса = Запрос.Выполнить(); + + Возврат РезультатЗапроса.Пустой(); +КонецФункции + +// Вычисляет значение идентификатора из строки соответствии с правилами именования переменных. +// +// Параметры: +// СтрокаПредставления - Строка - наименование, строка из которой необходимо получить идентификатор. +// +// Возвращаемое значение: +// Строка - идентификатор, соответствующий правилам именования идентификаторов. +// +Функция ИдентификаторДляФормул(СтрокаПредставления) Экспорт + + СпецСимволы = СпецСимволы(); + + Идентификатор = ""; + БылСпецСимвол = Ложь; + + Для НомСимвола = 1 По СтрДлина(СтрокаПредставления) Цикл + + Символ = Сред(СтрокаПредставления, НомСимвола, 1); + + Если СтрНайти(СпецСимволы, Символ) <> 0 Тогда + БылСпецСимвол = Истина; + Если Символ = "_" Тогда + Идентификатор = Идентификатор + Символ; + КонецЕсли; + ИначеЕсли БылСпецСимвол + ИЛИ НомСимвола = 1 Тогда + БылСпецСимвол = Ложь; + Идентификатор = Идентификатор + ВРег(Символ); + Иначе + Идентификатор = Идентификатор + Символ; + КонецЕсли; + + КонецЦикла; + + Возврат Идентификатор; + +КонецФункции + +Функция СпецСимволы() + Диапазоны = Новый Массив; + Диапазоны.Добавить(Новый Структура("Мин, Макс", 0, 32)); + Диапазоны.Добавить(Новый Структура("Мин, Макс", 127, 191)); + + СпецСимволы = " .,+,-,/,*,?,=,<,>,(,)%!@#$%&*""№:;{}[]?()\|/`~'^_"; + Для Каждого Диапазон Из Диапазоны Цикл + Для КодСимвола = Диапазон.Мин По Диапазон.Макс Цикл + СпецСимволы = СпецСимволы + Символ(КодСимвола); + КонецЦикла; + КонецЦикла; + Возврат СпецСимволы; +КонецФункции + +Функция НаименованиеДляФормированияИдентификатора(Знач Наименование, Знач Представления) + Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Наименование = НайденныеСтроки[0].Наименование; + КонецЕсли; + КонецЕсли; + + Возврат Наименование; +КонецФункции + +#КонецОбласти + +// Регистрирует к обработке виды контактной информации. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | ВидыКонтактнойИнформации.Ссылка КАК Ссылка + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации"; + + РезультатЗапроса = Запрос.Выполнить().Выгрузить(); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, + РезультатЗапроса.ВыгрузитьКолонку("Ссылка")); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ВидКонтактнойИнформацииСсылка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ВидыКонтактнойИнформации"); + + ЯзыковБольшеОдного = Метаданные.Языки.Количество() > 1; + Наименования = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.НаименованияВидовКонтактнойИнформации(); + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + + Пока ВидКонтактнойИнформацииСсылка.Следующий() Цикл + НачатьТранзакцию(); + Попытка + ВидКонтактнойИнформации = ВидКонтактнойИнформацииСсылка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.ВидыКонтактнойИнформации + + // Исправление наименований на разных языках + Если ЯзыковБольшеОдного Тогда + ИмяВида = ?(ЗначениеЗаполнено(ВидКонтактнойИнформации.ИмяПредопределенногоВида), + ВидКонтактнойИнформации.ИмяПредопределенногоВида, ВидКонтактнойИнформации.ИмяПредопределенныхДанных); + + Если ЗначениеЗаполнено(ИмяВида) Тогда + УстановитьНаименованияВидовКонтактнойИнформации(ВидКонтактнойИнформации, ИмяВида, Наименования); + КонецЕсли; + КонецЕсли; + + Если Не ВидКонтактнойИнформации.ЭтоГруппа Тогда + Если ВидКонтактнойИнформации.УдалитьРедактированиеТолькоВДиалоге Тогда + ВидКонтактнойИнформации.ВидРедактирования = "Диалог"; + ИначеЕсли ВидКонтактнойИнформации.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты + Или ВидКонтактнойИнформации.Тип = Перечисления.ТипыКонтактнойИнформации.Skype + Или ВидКонтактнойИнформации.Тип = Перечисления.ТипыКонтактнойИнформации.Другое Тогда + ВидКонтактнойИнформации.ВидРедактирования = "ПолеВвода"; + ИначеЕсли ВидКонтактнойИнформации.Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда + ВидКонтактнойИнформации.ВидРедактирования = "Диалог"; + Иначе + ВидКонтактнойИнформации.ВидРедактирования = "ПолеВводаИДиалог"; + КонецЕсли; + КонецЕсли; + + Если НЕ ВидКонтактнойИнформации.ЭтоГруппа + И НЕ ЗначениеЗаполнено(ВидКонтактнойИнформации.ИдентификаторДляФормул) Тогда + НаименованиеДляИдентификатора = НаименованиеДляФормированияИдентификатора(ВидКонтактнойИнформации.Наименование, + ВидКонтактнойИнформации.Представления); + ВидКонтактнойИнформации.ИдентификаторДляФормул = УникальныйИдентификаторДляФормул(НаименованиеДляИдентификатора, + ВидКонтактнойИнформации.Ссылка, ВидКонтактнойИнформации.Родитель); + КонецЕсли; + + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВидКонтактнойИнформации); + ОбъектовОбработано = ОбъектовОбработано + 1; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + + // Если не удалось обработать какой-либо вид контактной информации, повторяем попытку снова. + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать вид контактной информации: %1 по причине: %2'"), + ВидКонтактнойИнформацииСсылка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.Справочники.ВидыКонтактнойИнформации, ВидКонтактнойИнформацииСсылка.Ссылка, ТекстСообщения); + КонецПопытки; + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ВидыКонтактнойИнформации"); + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре ЗаполнитьВидыКонтактнойИнформации не удалось обработать некоторые виды контактной информации (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.Справочники.ВидыКонтактнойИнформации,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьВидыКонтактнойИнформации обработала очередную порцию видов контактной информации: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +Процедура УстановитьНаименованияВидовКонтактнойИнформации(ВидКонтактнойИнформации, ИмяВида, Наименования) + + Для Каждого Язык Из Метаданные.Языки Цикл + + Представление = Наименования[Язык.КодЯзыка][ИмяВида]; + Если ЗначениеЗаполнено(Представление) Тогда + + Если Язык = Метаданные.ОсновнойЯзык Тогда + ВидКонтактнойИнформации.Наименование = Представление; + Иначе + + Если Наименования[Язык.КодЯзыка][ИмяВида] <> Неопределено Тогда + + Отбор = Новый Структура; + Отбор.Вставить("КодЯзыка", Язык.КодЯзыка); + Отбор.Вставить("Наименование", Представление); + НайденныеСтроки = ВидКонтактнойИнформации.Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + НоваяСтрока = НайденныеСтроки[0]; + Иначе + НоваяСтрока = ВидКонтактнойИнформации.Представления.Добавить(); + КонецЕсли; + НоваяСтрока.КодЯзыка = Язык.КодЯзыка; + НоваяСтрока.Наименование = Представление; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..19e993fa --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/ObjectModule.bsl" @@ -0,0 +1,125 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если СтрНачинаетсяС(ИмяПредопределенныхДанных, "Удалить") Тогда + Возврат; + КонецЕсли; + + Если НЕ ЭтоГруппа Тогда + Результат = УправлениеКонтактнойИнформациейСлужебный.ПроверитьПараметрыВидаКонтактнойИнформации(ЭтотОбъект); + Если Результат.ЕстьОшибки Тогда + Отказ = Истина; + ВызватьИсключение Результат.ТекстОшибки; + КонецЕсли; + ИмяГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Родитель, "ИмяПредопределенногоВида"); + Если ПустаяСтрока(ИмяГруппы) Тогда + ИмяГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Родитель, "ИмяПредопределенныхДанных"); + КонецЕсли; + + ПроверкаИдентификатораДляФормул(Отказ); + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + УстановитьСостояниеРегламентногоЗадания(); + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если СтрНачинаетсяС(ИмяПредопределенныхДанных, "Удалить") Тогда + ПроверяемыеРеквизиты.Очистить(); + Возврат; + КонецЕсли; + + Если ЭтоГруппа Тогда + + НепроверяемыеРеквизиты = Новый Массив; + НепроверяемыеРеквизиты.Добавить("Родитель"); + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты); + + КонецЕсли; + +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + ИмяПредопределенногоВида = ""; + Если НЕ ЭтоГруппа Тогда + ИдентификаторДляФормул = ""; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПроверкаИдентификатораДляФормул(Отказ) + Если НЕ ДополнительныеСвойства.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда + // Программная запись. + Если ЗначениеЗаполнено(ИдентификаторДляФормул) Тогда + Справочники.ВидыКонтактнойИнформации.ПроверитьУникальностьИдентификатора(ИдентификаторДляФормул, + Ссылка, Родитель, Отказ); + Иначе + // Установка идентификатора. + ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( + НаименованиеДляФормированияИдентификатора(), Ссылка, Родитель); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +Функция НаименованиеДляФормированияИдентификатора() + НаименованиеДляИдентификатора = Наименование; + Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + НаименованиеДляИдентификатора = НайденныеСтроки[0].Наименование; + КонецЕсли; + КонецЕсли; + + Возврат НаименованиеДляИдентификатора; +КонецФункции + +Процедура ПриЧтенииПредставленийНаСервере() Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +Процедура УстановитьСостояниеРегламентногоЗадания() + + Статус = ?(ИсправлятьУстаревшиеАдреса = Истина, Истина, Неопределено); + УправлениеКонтактнойИнформациейСлужебный.УстановитьИспользованиеРегламентногоЗадания(Статус); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270.mdo" new file mode 100644 index 00000000..068acae0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270/\320\222\320\270\320\264\321\213\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\275\320\276\320\271\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270.mdo" @@ -0,0 +1,793 @@ + + + + + + + + + + ВидыКонтактнойИнформации + + ru + Виды контактной информации + + true + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа + + + ru + Группа вида контактной информации + + true + + Catalog.ВидыКонтактнойИнформации.EmptyRef + + ShowError + Use + + + + + Use + Description + + ru + Наименование + + + ru + Наименование вида контактной информации + + + + + ShowError + Use + + + + + Use + Code + + + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Вид контактной информации + + true + true + 3 + true + 150 + String + AsDescription + + + СправочникПользователи + Контактная информация справочника "Пользователи" + + + + true + + ТелефонПользователя + Телефон + + + + + + EmailПользователя + Электронная почта + + + + + + + BothWays + Catalog.ВидыКонтактнойИнформации.Form.ФормаЭлемента + Catalog.ВидыКонтактнойИнформации.Form.ФормаГруппы + Catalog.ВидыКонтактнойИнформации.Form.ФормаСписка + Catalog.ВидыКонтактнойИнформации.Form.ФормаВыбораГруппы + + ТолькоНациональныйАдрес + + ru + Только национальный адрес + + + Boolean + + + ru + Допустимы только национальные адреса + + + + + Use + Use + + + ВидРедактирования + + ru + Вид редактирования + + + String + + 20 + + + + ru + Редактировать контактную информацию в только в поле ввода или только в диалоге (ручной ввод информации невозможен). + + + + ShowError + + Use + Use + + + ВидПоляДругое + + ru + Вид поля другое + + + String + + 20 + + + + ru + Внешний вид поля другое на форме + + true + + + + МногострочноеШирокое + + Use + Use + + + ВключатьСтрануВПредставление + + ru + Включать страну в представление + + + Boolean + + + ru + В представление будет включена страна адреса. + + + + + Use + Use + + + ЗапретитьРедактированиеПользователем + + ru + Запретить редактирование пользователем + + + Boolean + + + ru + Запретить редактирование пользователем вида пользователем + + + + + Use + Use + + + Используется + + ru + Используется + + + Boolean + + + ru + Вид контактной информации используется + + + + + true + + Use + ForFolderAndItem + Use + + + МожноИзменятьСпособРедактирования + + ru + Можно изменять способ редактирования + + + Boolean + + + ru + Разрешено изменять способ редактирования + + + + true + + true + + Use + Use + + + ОбязательноеЗаполнение + + ru + Обязательное заполнение + + + Boolean + + + ru + Вид контактной информации обязателен к заполнению + + + + + Use + Use + + + ПроверятьКорректность + + ru + Запрещать ввод некорректного адреса + + + Boolean + + + ru + Проверять корректность ввода контактной информации + + + + + Use + Use + + + ПроверятьПоФИАС + + ru + Проверять по ФИАС + + + Boolean + + + ru + Проверять корректность ввода адресов по классификатору ФИАС + + + + + Use + + + РазрешитьВводНесколькихЗначений + + ru + Разрешить ввод нескольких значений + + + Boolean + + + ru + Возможность добавления более одной записи этого вида + + + + + Use + Use + + + УдалитьРедактированиеТолькоВДиалоге + + ru + (не используется) Редактирование только в диалоге + + + Boolean + + + ru + Редактировать контактную информацию только в диалоге (ручной ввод информации невозможен) + + + + + Use + Use + + + РеквизитДопУпорядочивания + + ru + Порядок + + + Number + + 5 + + + + ru + Используется для упорядочивания (служебный) + + + + + 0 + + IndexWithAdditionalOrder + Use + + + СкрыватьНеактуальныеАдреса + + ru + Скрывать неактуальные адреса + + + Boolean + + + ru + Скрывать неактуальные адреса при выборе из классификатора + + + + + Use + Use + + + ТелефонCДобавочнымНомером + + ru + Телефон c добавочным номером + + + Boolean + + + ru + Телефон может содержать добавочный номер + + + + + Use + Use + + + Тип + + ru + Тип + + + EnumRef.ТипыКонтактнойИнформации + + + ru + Тип контактной информации (адрес, телефон и т.д.) + + + + ShowError + true + + Enum.ТипыКонтактнойИнформации.EnumValue.Адрес + + Use + Use + + + УказыватьОКТМО + + ru + Указывать ОКТМО + + + Boolean + + + ru + Возможность ввода ОКТМО в адресе + + + + + Use + Use + + + ХранитьИсториюИзменений + + ru + Хранить историю изменений + + + Boolean + + + ru + Сохранять историю изменения контактной информации + + + + + Use + Use + + + МеждународныйФорматАдреса + + ru + Международный формат адреса + + + Boolean + + + ru + Адрес редактируется в международном формате на английском языке. + + + + + Use + Use + + + ИмяПредопределенногоВида + + ru + Имя предопределенного вида + + + String + + 150 + + + + + + + + Use + ForFolderAndItem + Use + + + ИмяГруппы + + ru + Имя группы + + + String + + 150 + + + + + + + + Use + Use + + + ИсправлятьУстаревшиеАдреса + + ru + Исправлять устаревшие адреса + + + Boolean + + + ru + Автоматические исправлять устаревшие адреса на новые + + + + + Use + Use + + + ИдентификаторДляФормул + + ru + Идентификатор для формул + + + String + + 150 + + + + + + + + Use + Use + + + МаскаНомераТелефона + + ru + Маска номера телефона + + + String + + 150 + + + + ru + Содержит строку маски для интерактивного ввода номера телефона. + + + + + + + Use + Use + + + ВводитьНомерПоМаске + + ru + Вводить номер по маске + + + Boolean + + + ru + Признак, что ввод номера телефона выполняется по маске. + + + + + Use + Use + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + ru + Код языка представления реквизита + + + + ShowError + Use + Index + Use + + + Наименование + + ru + Наименование + + + String + + 150 + + + + ru + Представление реквизита на другом языке + + + + Use + Index + Use + + ForFolderAndItem + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + PersonalComputer + MobileDevice + + + ФормаВыбораГруппы + + ru + Форма выбора группы + + + + ru + + + PersonalComputer + MobileDevice + + + ИсправлениеВидовКонтактнойИнформации + + ru + Исправление видов контактной информации + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..0c7b3a2f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,953 @@ + + + + ОсновнаяГруппировка + 50 + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Наименование + 4 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Основная группировка</value> + + + ОсновнаяГруппировкаExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Владелец + 52 + true + true + + true + + + ВладелецРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 53 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ГруппаОсновнаяПанель + 44 + + СтраницаГлавное + 46 + + Свойство1 + 29 + true + true + + true + + + + Объект.Свойство1 + + + + Свойство1РасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + Свойство1КонтекстноеМеню + 30 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + ShowInInputField + true + true + true + + + + Свойство2 + 32 + true + true + + true + + + + Объект.Свойство2 + + + + Свойство2РасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + + Свойство2КонтекстноеМеню + 33 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + ShowInInputField + true + true + true + + + + Свойство3 + 35 + true + true + + true + + + + Объект.Свойство3 + + + + Свойство3РасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + + Свойство3КонтекстноеМеню + 36 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + ShowInInputField + true + true + true + + + + Свойство4 + 38 + true + true + + true + + + + Объект.Свойство4 + + + + Свойство4РасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + + Свойство4КонтекстноеМеню + 39 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + ShowInInputField + true + true + true + + + + Свойство5 + 41 + true + true + + true + + + + Объект.Свойство5 + + + + Свойство5РасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + + Свойство5КонтекстноеМеню + 42 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + ShowInInputField + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Главное</value> + + + СтраницаГлавноеРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаДополнительныеСвойства + 48 + + СвойстваОбъекта + 7 + + <key>ru</key> + <value>Свойства объекта</value> + + true + true + + true + + + Объект.СвойстваОбъекта + + None + + СвойстваОбъектаНомерСтроки + 20 + true + true + + true + + + + Объект.СвойстваОбъекта.LineNumber + + + + СвойстваОбъектаНомерСтрокиРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбъектаНомерСтрокиКонтекстноеМеню + 21 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + СвойстваОбъектаИмяСвойства + 23 + true + true + + true + + + + Объект.СвойстваОбъекта.ИмяСвойства + + + + СвойстваОбъектаИмяСвойстваРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбъектаИмяСвойстваКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СвойстваОбъектаЗначениеСвойства + 26 + true + true + + true + + + + Объект.СвойстваОбъекта.ЗначениеСвойства + + + + СвойстваОбъектаЗначениеСвойстваРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбъектаЗначениеСвойстваКонтекстноеМеню + 27 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + false + true + ShowInInputField + true + true + true + + + + СвойстваОбъектаКоманднаяПанель + 9 + true + true + + true + + Left + true + + + OnChange + СвойстваОбъектаПриИзменении + + + true + true + + true + + СвойстваОбъектаСтрокаПоиска + 11 + + СвойстваОбъектаСтрокаПоискаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбъектаСтрокаПоискаКонтекстноеМеню + 12 + true + true + + true + + true + + + true + + + + true + true + + true + + СвойстваОбъектаСостояниеПросмотра + 14 + + СвойстваОбъектаСостояниеПросмотраРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбъектаСостояниеПросмотраКонтекстноеМеню + 15 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СвойстваОбъектаУправлениеПоиском + 17 + + СвойстваОбъектаУправлениеПоискомРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбъектаУправлениеПоискомКонтекстноеМеню + 18 + true + true + + true + + true + + SearchControlAddition + + true + + + + СвойстваОбъектаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбъектаКонтекстноеМеню + 8 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Дополнительные свойства</value> + + + СтраницаДополнительныеСвойстваРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ true + true + + true + + + <key>ru</key> + <value>Основная панель</value> + + + ГруппаОсновнаяПанельРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ВидыПроверок + + + true + + + true + +
true
+ true +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..6b34f514 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,51 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ОбновитьСчетчикиСтрокТаблиц(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДополнительныеСвойства + +&НаКлиенте +Процедура СвойстваОбъектаПриИзменении(Элемент) + + ОбновитьСчетчикиСтрокТаблиц(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбновитьСчетчикиСтрокТаблиц() + + УстановитьЗаголовокСтраницы(Элементы.СтраницаДополнительныеСвойства, Объект.СвойстваОбъекта, НСтр("ru = 'Дополнительные свойства'")); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗаголовокСтраницы(ЭлементСтраница, РеквизитТабличнаяЧасть, ЗаголовокПоУмолчанию) + + ЗаголовокСтраницы = ЗаголовокПоУмолчанию; + Если РеквизитТабличнаяЧасть.Количество() > 0 Тогда + ЗаголовокСтраницы = ЗаголовокПоУмолчанию + " (" + РеквизитТабличнаяЧасть.Количество() + ")"; + КонецЕсли; + ЭлементСтраница.Заголовок = ЗаголовокСтраницы; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/ManagerModule.bsl" new file mode 100644 index 00000000..73e00c3d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/ManagerModule.bsl" @@ -0,0 +1,52 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + НеРедактируемыеРеквизиты = Новый Массив; + + Возврат НеРедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов + +// Возвращаемое значение: +// см. ЗапретРедактированияРеквизитовОбъектовПереопределяемый.ПриОпределенииЗаблокированныхРеквизитов.ЗаблокированныеРеквизиты. +// +Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт + + БлокируемыеРеквизиты = Новый Массив; + + Возврат БлокируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272.mdo" new file mode 100644 index 00000000..10a4acca --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272/\320\222\320\270\320\264\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\276\320\272.mdo" @@ -0,0 +1,376 @@ + + + + + + + + + + ВидыПроверок + + ru + Виды проверок + + Содержит проверяемые объекты, как конкретные (Ссылка на документ / справочник), так и абстрактные (Операция закрытия месяца). + true + Catalog.ВидыПроверок.StandardAttribute.Description + Catalog.ВидыПроверок.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Входит в группу + + + ru + Группа к которой относится вид проверок. + + true + + Catalog.ВидыПроверок.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование + + + ru + Наименование вида проверок. + + + ShowError + Use + + + + + Use + Code + + ru + Код + + + ru + Код вида проверок. + + + Use + + + + Use + Catalog.ВидыПроверок.Attribute.Свойство1 + Catalog.ВидыПроверок.Attribute.Свойство2 + Catalog.ВидыПроверок.Attribute.Свойство3 + Catalog.ВидыПроверок.Attribute.Свойство4 + Catalog.ВидыПроверок.Attribute.Свойство5 + Managed + Use + + ru + Вид проверки + + true + HierarchyOfItems + 2 + true + 9 + 128 + String + Variable + true + true + AsDescription + InDialog + BothWays + Catalog.ВидыПроверок.Form.ФормаЭлемента + + Свойство1 + + ru + Свойство1 + + + Boolean + String + Date + Number + AnyRef + + 16 + 2 + + + 64 + + + + + ru + Свойство №1 вида проблемы. + + + + + Index + Use + Use + + + Свойство2 + + ru + Свойство2 + + + Boolean + String + Date + Number + AnyRef + + 16 + 2 + + + 64 + + + + + ru + Свойство №2 вида проблемы. + + + + + Index + Use + Use + + + Свойство3 + + ru + Свойство3 + + + Boolean + String + Date + Number + AnyRef + + 16 + 2 + + + 64 + + + + + ru + Свойство №3 вида проблемы. + + + + + Use + Use + + + Свойство4 + + ru + Свойство4 + + + Boolean + String + Date + Number + AnyRef + + 16 + 2 + + + 64 + + + + + ru + Свойство №4 вида проблемы. + + + + + Use + Use + + + Свойство5 + + ru + Свойство5 + + + Boolean + String + Date + Number + AnyRef + + 16 + 2 + + + 64 + + + + + ru + Свойство №5 вида проблемы. + + + + + Use + Use + + + + + + + СвойстваОбъекта + + ru + Свойства объекта + + + Use + LineNumber + + Use + + + + + ИмяСвойства + + ru + Имя свойства + + + String + + 128 + + + + + Use + Use + + + ЗначениеСвойства + + ru + Значение свойства + + + Boolean + String + Date + Number + AnyRef + + 16 + 2 + + + 64 + + + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\241\320\237\320\276\321\200\321\202\320\260\320\273\320\2601\320\241\320\230\320\242\320\241/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\241\320\237\320\276\321\200\321\202\320\260\320\273\320\2601\320\241\320\230\320\242\320\241/Form.form" new file mode 100644 index 00000000..e2d236e3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\241\320\237\320\276\321\200\321\202\320\260\320\273\320\2601\320\241\320\230\320\242\320\241/Form.form" @@ -0,0 +1,850 @@ + + + + Страницы + 1 + + Начальная + 3 + + Шапка + 11 + + Предупреждение32 + 13 + + <key>ru</key> + <value>Предупреждение32</value> + + true + true + + true + + + Предупреждение32РасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + Предупреждение32КонтекстноеМеню + 14 + true + true + + true + + true + + true + true + false + + + CommonPicture.Вопрос32 + + + + + ДекорацияПояснение + 16 + + <key>ru</key> + <value>%1 + + +Проверить и загрузить обновление компоненты?</value> + + true + true + + true + + + ДекорацияПояснениеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПояснениеКонтекстноеМеню + 17 + true + true + + true + + true + + Label + 75 + true + + Style.NormalTextFont + 100 + + + Left + + + true + true + + true + + + ШапкаРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ПодключитьИнтернетПоддержку + 22 + true + true + + true + + + ПодключитьИнтернетПоддержкуРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПодключитьИнтернетПоддержку + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Начальная</value> + + + НачальнаяРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ДлительнаяОперация + 32 + + ДлительнаяОперация48 + 34 + + <key>ru</key> + <value>Длительная операция48</value> + + true + true + + true + + + ДлительнаяОперация48РасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + ДлительнаяОперация48КонтекстноеМеню + 35 + true + true + + true + + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + + + + + ДлительнаяОперацияНадпись + 37 + + <key>ru</key> + <value>Выполняется получение компоненты с Портала 1С:ИТС</value> + + true + true + + true + + + ДлительнаяОперацияНадписьРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + ДлительнаяОперацияНадписьКонтекстноеМеню + 38 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Длительная операция</value> + + + ДлительнаяОперацияРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + Center + true + + + + Ошибка + 42 + + Ошибка32 + 47 + + <key>ru</key> + <value>Ошибка32</value> + + true + true + + true + + + Ошибка32РасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + + Ошибка32КонтекстноеМеню + 48 + true + true + + true + + true + + true + true + + + CommonPicture.Ошибка32 + + + + + КраткоеПредставлениеОшибки + 44 + true + true + + true + + + + КраткоеПредставлениеОшибки + + + None + + КраткоеПредставлениеОшибкиРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + КраткоеПредставлениеОшибкиКонтекстноеМеню + 45 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + 2 + true + + + true + true + + true + + + <key>ru</key> + <value>Ошибка</value> + + + ОшибкаРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + + Выполнено + 50 + + Успешно32 + 52 + + <key>ru</key> + <value>Успешно32</value> + + true + true + + true + + + Успешно32РасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + Успешно32КонтекстноеМеню + 53 + true + true + + true + + true + + true + true + + + CommonPicture.Успешно32 + + + + + РезультатВыполнения + 58 + true + true + + true + + + + РезультатВыполнения + + + None + + РезультатВыполненияРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + + РезультатВыполненияКонтекстноеМеню + 59 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + 2 + true + + + true + true + + true + + + <key>ru</key> + <value>Выполнено</value> + + + ВыполненоРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + true + true + + true + + + СтраницыРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + Загрузить + 28 + true + true + + true + + true + + ЗагрузитьРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Загрузить + Auto + true + true + true + UserCmds + Auto + + + Отмена + 30 + true + true + + true + + + ОтменаРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + + Закрыть + 61 + true + true + + true + + + ЗакрытьРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Help + LockOwnerWindow + true + true + Vertical + true + true + true + true + + ДоступнаЗагрузкаСПортала + 2 + + Boolean + + + true + + + true + + + + ДанныеАутентификацииПорталаСохранены + 3 + + Boolean + + + true + + + true + + + + КраткоеПредставлениеОшибки + + <key>ru</key> + <value>Краткое представление ошибки</value> + + 4 + + String + + + + true + + + true + + + + РезультатВыполнения + + <key>ru</key> + <value>Результат выполнения</value> + + 5 + + String + + + + true + + + true + + + + ОбновляемыеКомпоненты + 1 + + ValueList + + + true + + + true + + + + + + + ПодключитьИнтернетПоддержку + + <key>ru</key> + <value>Подключить Интернет-поддержку</value> + + 1 + + true + + + + ПодключитьИнтернетПоддержку + + + Auto + + + Загрузить + + <key>ru</key> + <value>Загрузить</value> + + 2 + + ru + Загрузить внешнюю компоненту с портала 1С:ИТС + + + true + + + + Загрузить + + + Auto + + + ОбновляемыеКомпоненты + + true + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\241\320\237\320\276\321\200\321\202\320\260\320\273\320\2601\320\241\320\230\320\242\320\241/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\241\320\237\320\276\321\200\321\202\320\260\320\273\320\2601\320\241\320\230\320\242\320\241/Module.bsl" new file mode 100644 index 00000000..04b1ae3b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\241\320\237\320\276\321\200\321\202\320\260\320\273\320\2601\320\241\320\230\320\242\320\241/Module.bsl" @@ -0,0 +1,175 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ТипЗнч(Параметры.ОбновляемыеКомпоненты) <> Тип("Массив") + Или Параметры.ОбновляемыеКомпоненты.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Некорректное значение параметра формы ОбновляемыеКомпоненты.'"); + КонецЕсли; + + ДанныеАутентификацииПорталаСохранены = ДанныеАутентификацииПорталаСохранены(); + ДоступнаЗагрузкаСПортала = ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала(); + + ТекстПояснения = ""; + ПредложитьОбновление = Ложь; + РеквизитыКомпонент = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(Параметры.ОбновляемыеКомпоненты, "Идентификатор, Версия, ОбновлятьСПортала1СИТС"); + Для Каждого ОбновляемаяКомпонента Из Параметры.ОбновляемыеКомпоненты Цикл + Реквизиты = РеквизитыКомпонент[ОбновляемаяКомпонента]; + ТекстПояснения = ТекстПояснения + + ВнешниеКомпонентыСлужебный.ПредставлениеКомпоненты(Реквизиты.Идентификатор, Реквизиты. Версия) + + ?(Реквизиты.ОбновлятьСПортала1СИТС, "", " - " + НСтр("ru = 'обновление отключено'") + ".") + + Символы.ПС; + + ПредложитьОбновление = ПредложитьОбновление Или Реквизиты.ОбновлятьСПортала1СИТС; + Если Реквизиты.ОбновлятьСПортала1СИТС Тогда + ОбновляемыеКомпоненты.Добавить(ОбновляемаяКомпонента); + КонецЕсли; + КонецЦикла; + + Если ПредложитьОбновление Тогда + + Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 + |Проверить и загрузить обновление компоненты?'"), + ТекстПояснения); + + Элементы.ПодключитьИнтернетПоддержку.Видимость = Не ДанныеАутентификацииПорталаСохранены; + Элементы.Закрыть.Видимость = Ложь; + + Иначе + Элементы.ДекорацияПояснение.Заголовок = ТекстПояснения; + Элементы.ПодключитьИнтернетПоддержку.Видимость = Ложь; + Элементы.Загрузить.Видимость = Ложь; + Элементы.Отмена.Видимость = Ложь; + Элементы.Закрыть.Видимость = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Не ДоступнаЗагрузкаСПортала Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПодключитьИнтернетПоддержку(Команда = Неопределено) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда + МодульИнтернетПоддержкаПользователейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ИнтернетПоддержкаПользователейКлиент"); + Оповещение = Новый ОписаниеОповещения("ПослеПодключенияИнтернетПоддержки", ЭтотОбъект); + МодульИнтернетПоддержкаПользователейКлиент.ПодключитьИнтернетПоддержкуПользователей(Оповещение, ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Загрузить(Команда) + + Если Не ДанныеАутентификацииПорталаСохранены Тогда + ПодключитьИнтернетПоддержку(); + Возврат; + КонецЕсли; + + Элементы.Загрузить.Доступность = Ложь; + Элементы.Страницы.ТекущаяСтраница = Элементы.ДлительнаяОперация; + + ДлительнаяОперация = НачатьОбновлениеКомпонентСПортала(); + + Если ДлительнаяОперация = Неопределено Тогда + КраткоеПредставлениеОшибки = НСтр("ru = 'Не удалось создать фоновое задание обновления компоненты.'"); + Элементы.Страницы.ТекущаяСтраница = Элементы.Ошибка; + КонецЕсли; + + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ФормаВладелец = ЭтотОбъект; + ПараметрыОжидания.ВыводитьОкноОжидания = Ложь; + + Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентСПортала", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПослеПодключенияИнтернетПоддержки(Результат, Параметр) Экспорт + + Если ТипЗнч(Результат) = Тип("Структура") Тогда + Элементы.ПодключитьИнтернетПоддержку.Видимость = Ложь; + ДанныеАутентификацииПорталаСохранены = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ДанныеАутентификацииПорталаСохранены() + + Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда + МодульИнтернетПоддержкаПользователей = ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователей"); + Возврат МодульИнтернетПоддержкаПользователей.ЗаполненыДанныеАутентификацииПользователяИнтернетПоддержки(); + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +&НаСервере +Функция НачатьОбновлениеКомпонентСПортала() + + Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала() Тогда + Возврат Неопределено; + КонецЕсли; + + ПараметрыПроцедуры = Новый Структура; + ПараметрыПроцедуры.Вставить("ОбновляемыеКомпоненты", ОбновляемыеКомпоненты.ВыгрузитьЗначения()); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Обновление внешней компоненты.'"); + + Возврат ДлительныеОперации.ВыполнитьВФоне("ВнешниеКомпонентыСлужебный.ОбновитьКомпонентыСПортала", + ПараметрыПроцедуры, ПараметрыВыполнения); + +КонецФункции + +&НаКлиенте +Процедура ПослеОбновленияКомпонентСПортала(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Результат.Статус = "Ошибка" Тогда + КраткоеПредставлениеОшибки = Результат.КраткоеПредставлениеОшибки; + Элементы.Страницы.ТекущаяСтраница = Элементы.Ошибка; + КонецЕсли; + + Если Результат.Статус = "Выполнено" Тогда + РезультатВыполнения = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); + Элементы.Страницы.ТекущаяСтраница = Элементы.Выполнено; + Элементы.Загрузить.Видимость = Ложь; + Элементы.Отмена.Видимость = Ложь; + Элементы.Закрыть.Видимость = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\237\320\276\320\270\321\201\320\272\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\235\320\260\320\237\320\276\321\200\321\202\320\260\320\273\320\2651\320\241\320\230\320\242\320\241/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\237\320\276\320\270\321\201\320\272\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\235\320\260\320\237\320\276\321\200\321\202\320\260\320\273\320\2651\320\241\320\230\320\242\320\241/Form.form" new file mode 100644 index 00000000..fdcdfb3a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\237\320\276\320\270\321\201\320\272\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\235\320\260\320\237\320\276\321\200\321\202\320\260\320\273\320\2651\320\241\320\230\320\242\320\241/Form.form" @@ -0,0 +1,686 @@ + + + + Страницы + 1 + + Начальная + 3 + + Шапка + 11 + + Предупреждение32 + 13 + + <key>ru</key> + <value>Предупреждение32</value> + + true + true + + true + + + Предупреждение32РасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + Предупреждение32КонтекстноеМеню + 14 + true + true + + true + + true + + true + true + false + + + CommonPicture.Предупреждение32 + + + + + ДекорацияПояснение + 16 + + <key>ru</key> + <value>%1 + + +Компонента не загружена в программу. +Загрузить?</value> + + true + true + + true + + + ДекорацияПояснениеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПояснениеКонтекстноеМеню + 17 + true + true + + true + + true + + Label + 75 + true + + Style.NormalTextFont + 100 + + + Left + + + true + true + + true + + + ШапкаРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ПодключитьИнтернетПоддержку + 22 + true + true + + true + + + ПодключитьИнтернетПоддержкуРасширеннаяПодсказка + 23 + + <key>ru</key> + <value>Для использования веб-сервиса 1С и загрузки внешних компонент необходимо выполнить подключение к Интернет-поддержке пользователей.</value> + + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПодключитьИнтернетПоддержку + Auto + true + true + UserCmds + Button + Auto + + true + true + + true + + + <key>ru</key> + <value>Начальная</value> + + + НачальнаяРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ДлительнаяОперация + 32 + + ДлительнаяОперация48 + 34 + + <key>ru</key> + <value>Длительная операция48</value> + + true + true + + true + + + ДлительнаяОперация48РасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + ДлительнаяОперация48КонтекстноеМеню + 35 + true + true + + true + + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + + + + + ДлительнаяОперацияНадпись + 37 + + <key>ru</key> + <value>Выполняется получение компоненты с Портала 1С:ИТС</value> + + true + true + + true + + + ДлительнаяОперацияНадписьРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + ДлительнаяОперацияНадписьКонтекстноеМеню + 38 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Длительная операция</value> + + + ДлительнаяОперацияРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + Center + true + + + + Ошибка + 42 + + Ошибка32 + 47 + + <key>ru</key> + <value>Ошибка32</value> + + true + true + + true + + + Ошибка32РасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + + Ошибка32КонтекстноеМеню + 48 + true + true + + true + + true + + true + true + + + CommonPicture.Ошибка32 + + + + + КраткоеПредставлениеОшибки + 44 + true + true + + true + + + + КраткоеПредставлениеОшибки + + + None + + КраткоеПредставлениеОшибкиРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + КраткоеПредставлениеОшибкиКонтекстноеМеню + 45 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + 2 + true + + + true + true + + true + + + <key>ru</key> + <value>Ошибка</value> + + + ОшибкаРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + true + true + + true + + + СтраницыРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + Загрузить + 28 + true + true + + true + + true + + ЗагрузитьРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Загрузить + Auto + true + true + true + UserCmds + Auto + + + Отмена + 30 + true + true + + true + + + ОтменаРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Help + LockOwnerWindow + true + true + Vertical + true + true + true + true + + ДоступнаЗагрузкаСПортала + 2 + + Boolean + + + true + + + true + + + + ДанныеАутентификацииПорталаСохранены + 3 + + Boolean + + + true + + + true + + + + КраткоеПредставлениеОшибки + + <key>ru</key> + <value>Краткое представление ошибки</value> + + 4 + + String + + + + true + + + true + + + + ПодключитьИнтернетПоддержку + + <key>ru</key> + <value>Подключить интернет поддержку</value> + + 1 + + ru + Подключить интернет поддержку + + + true + + + + ПодключитьИнтернетПоддержку + + + Auto + + + Загрузить + + <key>ru</key> + <value>Загрузить</value> + + 2 + + ru + Загрузить + + + true + + + + Загрузить + + + Auto + + + ТекстПояснения + + String + + + + + Идентификатор + + String + + + true + + + Версия + + String + + + true + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\237\320\276\320\270\321\201\320\272\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\235\320\260\320\237\320\276\321\200\321\202\320\260\320\273\320\2651\320\241\320\230\320\242\320\241/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\237\320\276\320\270\321\201\320\272\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\235\320\260\320\237\320\276\321\200\321\202\320\260\320\273\320\2651\320\241\320\230\320\242\320\241/Module.bsl" new file mode 100644 index 00000000..2db5df03 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\237\320\276\320\270\321\201\320\272\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\235\320\260\320\237\320\276\321\200\321\202\320\260\320\273\320\2651\320\241\320\230\320\242\320\241/Module.bsl" @@ -0,0 +1,148 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ПустаяСтрока(Параметры.ТекстПояснения) Тогда + ТекстПояснения = ВнешниеКомпонентыСлужебный.ПредставлениеКомпоненты(Параметры.Идентификатор, Параметры.Версия); + Иначе + ТекстПояснения = Параметры.ТекстПояснения; + КонецЕсли; + + Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 + | + |Компонента не загружена в программу. + |Загрузить?'"), + ТекстПояснения); + + ДанныеАутентификацииПорталаСохранены = ДанныеАутентификацииПорталаСохранены(); + ДоступнаЗагрузкаСПортала = ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала(); + + Элементы.ПодключитьИнтернетПоддержку.Видимость = Не ДанныеАутентификацииПорталаСохранены; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Не ДоступнаЗагрузкаСПортала Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПодключитьИнтернетПоддержку(Команда = Неопределено) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда + МодульИнтернетПоддержкаПользователейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ИнтернетПоддержкаПользователейКлиент"); + Оповещение = Новый ОписаниеОповещения("ПослеПодключенияИнтернетПоддержки", ЭтотОбъект); + МодульИнтернетПоддержкаПользователейКлиент.ПодключитьИнтернетПоддержкуПользователей(Оповещение, ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Загрузить(Команда) + + Если Не ДанныеАутентификацииПорталаСохранены Тогда + ПодключитьИнтернетПоддержку(); + Возврат; + КонецЕсли; + + Элементы.Загрузить.Доступность = Ложь; + Элементы.Страницы.ТекущаяСтраница = Элементы.ДлительнаяОперация; + + ДлительнаяОперация = НачатьПолучениеКомпонентыСПортала(Параметры.Идентификатор, Параметры.Версия); + + Если ДлительнаяОперация = Неопределено Тогда + КраткоеПредставлениеОшибки = НСтр("ru = 'Не удалось создать фоновое задание обновления компоненты.'"); + Элементы.Страницы.ТекущаяСтраница = Элементы.Ошибка; + КонецЕсли; + + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ФормаВладелец = ЭтотОбъект; + ПараметрыОжидания.ВыводитьОкноОжидания = Ложь; + + Оповещение = Новый ОписаниеОповещения("ПослеПолученияКомпонентыСПортала", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПослеПодключенияИнтернетПоддержки(Результат, Параметр) Экспорт + + Если ТипЗнч(Результат) = Тип("Структура") Тогда + Элементы.ПодключитьИнтернетПоддержку.Видимость = Ложь; + ДанныеАутентификацииПорталаСохранены = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ДанныеАутентификацииПорталаСохранены() + + Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда + МодульИнтернетПоддержкаПользователей = ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователей"); + Возврат МодульИнтернетПоддержкаПользователей.ЗаполненыДанныеАутентификацииПользователяИнтернетПоддержки(); + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +&НаСервере +Функция НачатьПолучениеКомпонентыСПортала(Идентификатор, Версия) + + Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала() Тогда + Возврат Неопределено; + КонецЕсли; + + ПараметрыПроцедуры = Новый Структура; + ПараметрыПроцедуры.Вставить("Идентификатор", Идентификатор); + ПараметрыПроцедуры.Вставить("Версия", Версия); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Получение внешней компоненты.'"); + + Возврат ДлительныеОперации.ВыполнитьВФоне("ВнешниеКомпонентыСлужебный.НоваяКомпонентаСПортала", + ПараметрыПроцедуры, ПараметрыВыполнения); + +КонецФункции + +&НаКлиенте +Процедура ПослеПолученияКомпонентыСПортала(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Результат.Статус = "Ошибка" Тогда + КраткоеПредставлениеОшибки = Результат.КраткоеПредставлениеОшибки; + Элементы.Страницы.ТекущаяСтраница = Элементы.Ошибка; + КонецЕсли; + + Если Результат.Статус = "Выполнено" Тогда + Закрыть(Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..75a009a8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,25 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + Идентификатор + Asc + + + ДатаВерсии + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..a9458368 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1028 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + БыстрыеОтборы + 44 + + ИспользованиеОтбор + 62 + + <key>ru</key> + <value>Показывать</value> + + true + true + + true + + + + ИспользованиеОтбор + + + + OnChange + ИспользованиеОтборПриИзменении + + + ИспользованиеОтборРасширеннаяПодсказка + 64 + true + true + + true + + Label + true + true + + Left + + + + ИспользованиеОтборКонтекстноеМеню + 63 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + true + + + ru + Все + + + 0 + + + + + ru + Используемые + + + 1 + + + + + ru + Отключенные + + + 2 + + + + + true + true + + true + + + <key>ru</key> + <value>Быстрые отборы</value> + + + БыстрыеОтборыExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + КоманднаяПанель + 36 + + ФормаСоздать + 69 + + <key>ru</key> + <value>Добавить из файла...</value> + + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 70 + + <key>ru</key> + <value>Добавить из файла на диске...</value> + + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ГруппаДействие + 65 + + ОбновитьСПортала1СИТС + 67 + true + true + + true + + + ОбновитьСПортала1СИТСРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьСПортала1СИТС + Auto + true + true + UserCmds + Auto + + + ФормаОбновитьИзФайла + 58 + true + true + + true + + + ФормаОбновитьИзФайлаРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьИзФайла + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьКак + 60 + true + true + + true + + + ФормаСохранитьКакРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Действие</value> + + + ГруппаДействиеРасширеннаяПодсказка + 66 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Copy + ShowMultipleSelection + + Идентификатор + 25 + true + true + + true + + + + Список.Идентификатор + + + + ИдентификаторРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторКонтекстноеМеню + 26 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 25 + true + true + + + + Версия + 22 + true + true + + true + + + + Список.Версия + + + + ВерсияРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + ВерсияКонтекстноеМеню + 23 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 18 + true + true + + + + ОбновлятьСПортала1СИТС + 28 + true + true + + true + + + + Список.ОбновлятьСПортала1СИТС + + + None + + ОбновлятьСПортала1СИТСРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + + ОбновлятьСПортала1СИТСКонтекстноеМеню + 29 + true + true + + true + + true + + CheckBoxField + Center + Enter + true + + CommonPicture.ОбновлениеВнешнихКомпонентССайта + + Center + true + + + + Наименование + 52 + true + true + + true + + + + Список.Наименование + + + + НаименованиеРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 53 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 31 + true + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 32 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + true + + + BeforeAddRow + СписокПередНачаломДобавления + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + + СписокКонтекстноеМенюОбновитьИзФайла + 40 + true + true + + true + + + СписокКонтекстноеМенюОбновитьИзФайлаРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьИзФайла + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюСохранитьКак + 42 + true + true + + true + + + СписокКонтекстноеМенюСохранитьКакРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Use + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + Таблица.Ссылка КАК Ссылка, + Таблица.ПометкаУдаления КАК ПометкаУдаления, + Таблица.Наименование КАК Наименование, + Таблица.Версия КАК Версия, + Таблица.Идентификатор КАК Идентификатор, + Таблица.Использование КАК Использование, + Таблица.ОбновлятьСПортала1СИТС КАК ОбновлятьСПортала1СИТС, + Таблица.ДатаВерсии КАК ДатаВерсии +ИЗ + Справочник.ВнешниеКомпоненты КАК Таблица + Catalog.ВнешниеКомпоненты + true + true + true + true + true + +
+ + ИспользованиеОтбор + 2 + + Number + + + + true + + + true + + + ИспользованиеОтбор + + + + ОбновитьИзФайла + + <key>ru</key> + <value>Обновить из файла...</value> + + 2 + + ru + Обновить из файла на диске... + + + true + + + CommonPicture.ОбновитьФайлИзФайлаНаДиске + + + + ОбновитьИзФайла + + + Picture + DontUse + + + СохранитьКак + + <key>ru</key> + <value>Сохранить как...</value> + + 3 + + ru + Сохранить как... + + + true + + + CommonPicture.СохранитьФайлКак + + + + СохранитьКак + + + DontUse + + + ОбновитьСПортала1СИТС + + <key>ru</key> + <value>Обновить с Портала 1С:ИТС</value> + + 1 + + ru + Обновить с Портала 1С:ИТС + + + true + + + CommonPicture.ОбновлениеВнешнихКомпонентССайта + + + + ОбновитьСПортала + + + TextPicture + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..2a3b3da5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,169 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ВнешниеКомпоненты) Тогда + + Элементы.ФормаОбновитьИзФайла.Видимость = Ложь; + Элементы.ФормаСохранитьКак.Видимость = Ложь; + Элементы.ОбновитьСПортала1СИТС.Видимость = Ложь; + Элементы.СписокКонтекстноеМенюОбновитьИзФайла.Видимость = Ложь; + Элементы.СписокКонтекстноеМенюСохранитьКак.Видимость = Ложь; + + КонецЕсли; + + Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала() Тогда + + Элементы.ОбновлятьСПортала1СИТС.Видимость = Ложь; + Элементы.ОбновитьСПортала1СИТС.Видимость = Ложь; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + УстановитьОтбор(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ИспользованиеОтборПриИзменении(Элемент) + + УстановитьОтбор(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Если Копирование Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОбновитьСПортала(Команда) + + МассивСсылок = Элементы.Список.ВыделенныеСтроки; + + Если МассивСсылок.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентыСПортала", ЭтотОбъект); + + ВнешниеКомпонентыСлужебныйКлиент.ОбновитьКомпонентыСПортала(Оповещение, МассивСсылок); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайла(Команда) + + ДанныеСтроки = Элементы.Список.ТекущиеДанные; + Если ДанныеСтроки = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ключ", ДанныеСтроки.Ссылка); + ПараметрыФормы.Вставить("ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии", Истина); + + ОткрытьФорму("Справочник.ВнешниеКомпоненты.ФормаОбъекта", ПараметрыФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьКак(Команда) + + ДанныеСтроки = Элементы.Список.ТекущиеДанные; + Если ДанныеСтроки = Неопределено Тогда + Возврат; + КонецЕсли; + + ВнешниеКомпонентыСлужебныйКлиент.СохранитьКомпонентуВФайл(ДанныеСтроки.Ссылка); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПослеОбновленияКомпонентыСПортала(Результат, ДополнительныеПараметры) Экспорт + + Элементы.Список.Обновить(); + +КонецПроцедуры + +///////////////////////////////////////////////////////// +// Представление данных на форме. + +&НаСервере +Процедура УстановитьОтбор() + + ПараметрыОтбора = Новый Соответствие(); + ПараметрыОтбора.Вставить("ИспользованиеОтбор", ИспользованиеОтбор); + УстановитьОтборСписка(Список, ПараметрыОтбора); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьОтборСписка(Список, ПараметрыОтбора) + + Если ПараметрыОтбора["ИспользованиеОтбор"] = 0 Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Использование",,,, Ложь); + ИначеЕсли ПараметрыОтбора["ИспользованиеОтбор"] = 1 Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Использование", Перечисления.ВариантыИспользованияВнешнихКомпонент.Используется,,, Истина); + ИначеЕсли ПараметрыОтбора["ИспользованиеОтбор"] = 2 Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Использование", Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена,,, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + + ЭлементУсловногоОформления = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Использование"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена; + + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра( + "TextColor", Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..d81f1603 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1086 @@ + + + + Информация + 166 + + ИнформацияКартинка + 168 + + <key>ru</key> + <value>Информация картинка</value> + + true + true + + true + + + ИнформацияКартинкаРасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияКартинкаКонтекстноеМеню + 169 + true + true + + true + + true + + true + true + + + CommonPicture.Информация + + + + + ОписаниеОшибки + 171 + true + true + + true + + + + Объект.ОписаниеОшибки + + + None + + ОписаниеОшибкиРасширеннаяПодсказка + 173 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеОшибкиКонтекстноеМеню + 172 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + + + true + true + + true + + + <key>ru</key> + <value>Информация</value> + + + ИнформацияРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + Шапка + 70 + + ГруппаИдентификаторВерсия + 72 + + Идентификатор + 10 + true + true + + true + + + + Объект.Идентификатор + + + ShowBottom + + ИдентификаторРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + Show + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Версия + 7 + true + true + + true + + + + Объект.Версия + + + + ВерсияРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + ВерсияКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Show + EnterOnInput + true + Left + true + + 18 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Идентификатор версия</value> + + + ГруппаИдентификаторВерсияРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаНаименование + 162 + + Наименование + 146 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Объект.Description + + + Button + + НаименованиеРасширеннаяПодсказка + 148 + + <key>ru</key> + <value>Имя внешней компоненты для отображения пользователям.</value> + + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 147 + true + true + + true + + true + + InputField + Show + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование</value> + + + ГруппаНаименованиеРасширеннаяПодсказка + 163 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаИспользованиеОбновлятьСПортала1СИТС + 155 + + Использование + 131 + true + true + + true + + + + Объект.Использование + + + None + + ru + В режиме отладки доступна только полноправному пользователю + + + OnChange + ИспользованиеПриИзменении + + + ИспользованиеРасширеннаяПодсказка + 133 + true + true + + true + + Label + true + true + + Left + + + + ИспользованиеКонтекстноеМеню + 132 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + Tumbler + + + Enum.ВариантыИспользованияВнешнихКомпонент.EnumValue.Используется + + + + + Enum.ВариантыИспользованияВнешнихКомпонент.EnumValue.Отключена + + + + + + ОбновлятьСПортала1СИТС + 16 + true + true + + true + + + + Объект.ОбновлятьСПортала1СИТС + + + Right + + ru + Доступно только для используемой компоненты последней версии. + + Button + + OnChange + ОбновлятьСПортала1СИТСПриИзменении + + + ОбновлятьСПортала1СИТСРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + ОбновлятьСПортала1СИТСКонтекстноеМеню + 17 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Использование обновлять с Портала 1С:ИТС</value> + + + ГруппаИспользованиеОбновлятьСПортала1СИТСРасширеннаяПодсказка + 156 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + 60 + false + + ШапкаРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ПоддерживаемыеКлиентскиеПриложения + 174 + true + true + + true + + + ПоддерживаемыеКлиентскиеПриложенияРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПоддерживаемыеКлиентскиеПриложения + Auto + true + true + UserCmds + Auto + + + ДатаВерсии + 159 + true + true + + + + Объект.ДатаВерсии + + + + ДатаВерсииРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + + ДатаВерсииКонтекстноеМеню + 160 + true + true + + true + + true + + InputField + Show + Enter + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 164 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 165 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.WriteAndClose + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 157 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 158 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Picture + true + true + UserCmds + Auto + + + ГруппаДействие + 136 + + ФормаОбновитьИзФайла + 77 + true + true + + true + + + ФормаОбновитьИзФайлаРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьИзФайла + Auto + true + true + UserCmds + Auto + + + ОбновитьСПортала1СИТС + 83 + true + true + + true + + + ОбновитьСПортала1СИТСРасширеннаяПодсказка + 84 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьСПортала1СИТС + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьКак + 87 + true + true + + true + + + ФормаСохранитьКакРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Действие</value> + + + ГруппаДействиеРасширеннаяПодсказка + 137 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаСтандартныеКоманды + 151 + true + true + + true + + + <key>ru</key> + <value>Форма стандартные команды</value> + + + ФормаСтандартныеКомандыРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 153 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + ShowInList + 75 + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ВнешниеКомпоненты + + + true + + + true + +
true
+ true +
+ + АдресДвоичныхДанныхКомпоненты + 2 + + String + + + + true + + + true + + + + Записана + 3 + + Boolean + + + true + + + true + + + + ОбновитьИзФайла + + <key>ru</key> + <value>Обновить из файла...</value> + + 1 + + ru + Обновить из файла на диске... + + + true + + + CommonPicture.ОбновитьФайлИзФайлаНаДиске + + + + ОбновитьИзФайла + + + TextPicture + DontUse + + + ОбновитьСПортала1СИТС + + <key>ru</key> + <value>Обновить с Портала 1С:ИТС</value> + + 3 + + true + + + CommonPicture.ОбновлениеВнешнихКомпонентССайта + + + + ОбновитьСПортала + + + TextPicture + DontUse + + + СохранитьКак + + <key>ru</key> + <value>Сохранить как...</value> + + 2 + + true + + + CommonPicture.СохранитьФайлКак + + + + СохранитьКак + + + DontUse + + + ПоддерживаемыеКлиентскиеПриложения + + <key>ru</key> + <value>Поддерживаемые клиентские приложения</value> + + 4 + + true + + + + ПоддерживаемыеКлиентскиеПриложения + + + Auto + + + ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии + + Boolean + + true + + + ПараметрыПоискаДополнительнойИнформации + + true + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..2d5235b5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,21 @@ + +

Информация о внешней компоненте.

+

Открывается из списка Внешние компоненты по кнопке Добавить из файла или двойному щелчку мыши (также по команде Еще - Изменить).

+

Разработчик размещает в файле внешней компоненты необходимую информацию для ее установки, поэтому основные поля в карточке внешней компоненты заполняются автоматически. Поля являются обязательными для заполнения:

+
  • Идентификатор - внутренний идентификатор объекта внешней компоненты; +
  • Версия - номер версии, с его помощью впоследствии можно определить актуальность внешней компоненты; +
  • Наименование - полное наименование внешней компоненты - выводится пользователям при установке внешней компоненты. +
  • Обновлять с портала 1С:ИТС - включите флажок, для того чтобы внешняя компонента автоматически обновлялась с сайта 1С:ИТС.

Если после автоматического заполнения остались незаполненными поля, которые являются обязательными для заполнения, карточка не запишется. В этом случае необходимо заполнить их вручную.

+

Состояние внешней компоненты

+

С помощью тумблера можно установить состояние внешней компоненты:

+
  • Используется - устанавливается по умолчанию при подключении внешней компоненты; +
  • Отключена - если использование внешней компоненты в данный момент по каким-либо причинам не нужно (например, сначала ее необходимо протестировать, когда в программе не будет пользователей), можно не удалять ее, а выбрать это положение тумблера. В этом случае внешняя компоненты останется в программе, но не будет никому доступна.

Обновление внешней компоненты с портала 1С:ИТС

+
  • +
    Нажмите кнопку , для того чтобы обновить внешнюю компоненту с портала 1С:ИТС. Доступно для внешних компонент, полученных на портале 1С:ИТС.

Обновление внешней компоненты

+
  • Нажмите кнопку  Обновить из файла. Программа выводит Предупреждение безопасности. +
  • Если внешняя компонента получена из надежного источника и не может содержать вирусы, нажмите кнопку Продолжить. +
  • Укажите путь к файлу на компьютере, нажмите кнопку Открыть. +
  • Информация в карточке внешней компоненты будет обновлена.

Сохранение на компьютер

+
  • Сохраненную на компьютер внешнюю компоненту можно будет использовать в случае нештатных ситуаций. +
  • Нажмите  Сохранить как.Укажите путь к файлу на компьютере. Нажмите Сохранить.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..0ed40c10 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,468 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ДополнительнаяИнформация; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭтоНовый = Объект.Ссылка.Пустая(); + + Если ЭтоНовый Тогда + Параметры.ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии = Истина; + КонецЕсли; + + УстановитьВидимостьДоступность(); + + Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ВнешниеКомпоненты) Тогда + + Элементы.ФормаОбновитьИзФайла.Видимость = Ложь; + Элементы.ФормаСохранитьКак.Видимость = Ложь; + Элементы.ОбновитьСПортала1СИТС.Видимость = Ложь; + + КонецЕсли; + + Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала() Тогда + + Элементы.ОбновлятьСПортала1СИТС.Видимость = Ложь; + Элементы.ОбновитьСПортала1СИТС.Видимость = Ложь; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Параметры.ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии Тогда + ПодключитьОбработчикОжидания("ЗагрузитьКомпонентуИзФайла", 0.1, Истина); + КонецЕсли + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // Если вызвана команда "Перечитать" необходимо удалить буфер данных компоненты + Если ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты) Тогда + УдалитьИзВременногоХранилища(АдресДвоичныхДанныхКомпоненты); + КонецЕсли; + + АдресДвоичныхДанныхКомпоненты = Неопределено; + УстановитьВидимостьДоступность(); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + // Если есть двоичные данные компоненты, которые надо сохранить, то помещаем их в ДополнительныеСвойства. + Если ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты) Тогда + ДвоичныеДанныеКомпоненты = ПолучитьИзВременногоХранилища(АдресДвоичныхДанныхКомпоненты); + ТекущийОбъект.ДополнительныеСвойства.Вставить("ДвоичныеДанныеКомпоненты", ДвоичныеДанныеКомпоненты); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Записана = Истина; // Факт записи свидетельствует положительный результат при закрытии отдельно от записи. + Параметры.ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии = Ложь; // Избежание закрытия формы при ошибке. + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + УстановитьВидимостьДоступность(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + Если Не Модифицированность Тогда + СтандартнаяОбработка = Ложь; + + ПараметрЗакрытия = ВнешниеКомпонентыСлужебныйКлиент.РезультатЗагрузкиКомпоненты(); + ПараметрЗакрытия.Загружена = Записана; + ПараметрЗакрытия.Идентификатор = Объект.Идентификатор; + ПараметрЗакрытия.Версия = Объект.Версия; + ПараметрЗакрытия.Наименование = Объект.Наименование; + ПараметрЗакрытия.ДополнительнаяИнформация = ДополнительнаяИнформация; + + Закрыть(ПараметрЗакрытия); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ИспользованиеПриИзменении(Элемент) + + УстановитьВидимостьДоступность(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновлятьСПортала1СИТСПриИзменении(Элемент) + + УстановитьВидимостьДоступность(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОбновитьСПортала(Команда) + + Если Модифицированность Тогда + Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопросаЗаписатьОбъект", ЭтотОбъект); + ПоказатьВопрос(Оповещение, + НСтр("ru = 'Для проверки обновления необходимо записать изменения. Записать?'"), + РежимДиалогаВопрос.ДаНет); + Иначе + НачатьОбновлениеКомпонентыСПортала(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайла(Команда) + + ОчиститьСообщения(); + ЗагрузитьКомпонентуИзФайла(); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьКак(Команда) + + Если ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Перед сохранение компоненты в файл элемент справочника нужно записать.'")); + Иначе + ОчиститьСообщения(); + ВнешниеКомпонентыСлужебныйКлиент.СохранитьКомпонентуВФайл(Объект.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоддерживаемыеКлиентскиеПриложения(Команда) + + Реквизиты = Новый Структура; + Реквизиты.Вставить("Windows_x86"); + Реквизиты.Вставить("Windows_x86_64"); + Реквизиты.Вставить("Linux_x86"); + Реквизиты.Вставить("Linux_x86_64"); + Реквизиты.Вставить("Windows_x86_Firefox"); + Реквизиты.Вставить("Linux_x86_Firefox"); + Реквизиты.Вставить("Linux_x86_64_Firefox"); + Реквизиты.Вставить("Windows_x86_MSIE"); + Реквизиты.Вставить("Windows_x86_64_MSIE"); + Реквизиты.Вставить("Windows_x86_Chrome"); + Реквизиты.Вставить("Linux_x86_Chrome"); + Реквизиты.Вставить("Linux_x86_64_Chrome"); + Реквизиты.Вставить("MacOS_x86_64"); + Реквизиты.Вставить("MacOS_x86_64_Safari"); + + ЗаполнитьЗначенияСвойств(Реквизиты, Объект); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПоддерживаемыеКлиенты", Реквизиты); + + ОткрытьФорму("ОбщаяФорма.ПоддерживаемыеКлиентскиеПриложения", ПараметрыФормы); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область КлиентскаяЛогика + +&НаКлиенте +Процедура ЗагрузитьКомпонентуИзФайла() + + Оповещение = Новый ОписаниеОповещения("ЗагрузитьКомпонентуПослеПредупрежденияБезопасности", ЭтотОбъект); + ПараметрыФормы = Новый Структура("Ключ", "ПередДобавлениемВнешнейКомпоненты"); + ОткрытьФорму("ОбщаяФорма.ПредупреждениеБезопасности", ПараметрыФормы,,,,, Оповещение); + +КонецПроцедуры + +// Продолжение процедуры ЗагрузитьКомпонентуИзФайла. +&НаКлиенте +Процедура ЗагрузитьКомпонентуПослеПредупрежденияБезопасности(Ответ, Контекст) Экспорт + + // Ответ: + // - "Продолжить" - Загрузить. + // - КодВозвратаДиалога.Отмена - Отклонить. + // - Неопределено - Закрыто окно. + Если Ответ <> "Продолжить" Тогда + ЗагрузитьКомпонентуПриОтображенииОшибки(); + Возврат; + КонецЕсли; + + Оповещение = Новый ОписаниеОповещения("ЗагрузитьКомпонентуПослеПомещенияФайла", ЭтотОбъект, Контекст); + + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.Диалог.Фильтр = НСтр("ru = 'Внешняя компонента (*.zip)|*.zip|Все файлы (*.*)|*.*'"); + ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл внешней компоненты'"); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + + ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки, Объект.ИмяФайла); + +КонецПроцедуры + +// Продолжение процедуры ЗагрузитьКомпонентуИзФайла. +&НаКлиенте +Процедура ЗагрузитьКомпонентуПослеПомещенияФайла(ПомещенныйФайл, Контекст) Экспорт + + Если ПомещенныйФайл = Неопределено Тогда + ЗагрузитьКомпонентуПриОтображенииОшибки(НСтр("ru = 'Не удалось загрузить файл компоненты.'")); + Возврат; + КонецЕсли; + + ПараметрыЗагрузки = Новый Структура; + ПараметрыЗагрузки.Вставить("АдресХранилищаФайла", ПомещенныйФайл.Хранение); + ПараметрыЗагрузки.Вставить("ИмяФайла", ТолькоИмяФайла(ПомещенныйФайл.Имя)); + + Результат = ЗагрузитьКомпонентуИзФайлаНаСервере(ПараметрыЗагрузки); + Если Результат.Загружена И ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты)Тогда + ДополнительнаяИнформация = Результат.ДополнительнаяИнформация; + Модифицированность = Истина; + Иначе + ЗагрузитьКомпонентуПриОтображенииОшибки(Результат.ОписаниеОшибки); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ЗагрузитьКомпонентуИзФайла. +&НаКлиенте +Процедура ЗагрузитьКомпонентуПриОтображенииОшибки(ОписаниеОшибки = "") + + Если ПустаяСтрока(ОписаниеОшибки) Тогда + ЗагрузитьКомпонентуПослеОтображенияОшибки(Неопределено); + Иначе + Оповещение = Новый ОписаниеОповещения("ЗагрузитьКомпонентуПослеОтображенияОшибки", ЭтотОбъект); + + СтрокаСПредупреждением = НСтр("ru = '%1 + |Необходимо указать zip-архив с внешней компонентой. + |Подробнее см. Технология создания внешних компонент'"); + СтрокаСПредупреждением = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СтрокаСПредупреждением, ОписаниеОшибки); + + ПоказатьПредупреждение(Оповещение, СтрокаСПредупреждением); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ЗагрузитьКомпонентуИзФайла. +&НаКлиенте +Процедура ЗагрузитьКомпонентуПослеОтображенияОшибки(ДополнительныеПараметры) Экспорт + + // Открыта через программный интерфейс. + Если Параметры.ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии Тогда + Закрыть(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗакрытияВопросаЗаписатьОбъект(РезультатВопроса, Контекст) Экспорт + + Если РезультатВопроса = КодВозвратаДиалога.Да Тогда + Записать(); + НачатьОбновлениеКомпонентыСПортала(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НачатьОбновлениеКомпонентыСПортала() + + ЭтоНовый = Объект.Ссылка.Пустая(); + Если ЭтоНовый Тогда + Возврат; + КонецЕсли; + + РазблокироватьДанныеФормыДляРедактирования(); + + ОбновляемыеКомпоненты = Новый Массив; + ОбновляемыеКомпоненты.Добавить(Объект.Ссылка); + + Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентыСПортала", ЭтотОбъект); + ВнешниеКомпонентыСлужебныйКлиент.ОбновитьКомпонентыСПортала(Оповещение, ОбновляемыеКомпоненты); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОбновленияКомпонентыСПортала(Результат, ДополнительныеПараметры) Экспорт + + ОбновитьКарточкуПослеОбновленияКомпонентыСПортала(); + +КонецПроцедуры + +#КонецОбласти + +#Область СервернаяЛогика + +// Серверная логика процедуры ЗагрузитьКомпонентуИзФайла. +&НаСервере +Функция ЗагрузитьКомпонентуИзФайлаНаСервере(ПараметрыЗагрузки) + + Если Не Пользователи.ЭтоПолноправныйПользователь(,, Ложь) Тогда + ВызватьИсключение НСтр("ru = 'Недостаточно прав для загрузки компоненты.'"); + КонецЕсли; + + ОбъектСправочника = РеквизитФормыВЗначение("Объект"); + + ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПараметрыЗагрузки.АдресХранилищаФайла); + Информация = ВнешниеКомпонентыСлужебный.ИнформацияОКомпонентеИзФайла(ДвоичныеДанные,, + Параметры.ПараметрыПоискаДополнительнойИнформации); + + Результат = РезультатЗагрузкиКомпоненты(); + + Если Не Информация.Разобрано Тогда + Результат.ОписаниеОшибки = Информация.ОписаниеОшибки; + Возврат Результат; + КонецЕсли; + + Если ЗначениеЗаполнено(ОбъектСправочника.Идентификатор) + И ЗначениеЗаполнено(Информация.Реквизиты.Идентификатор) Тогда + + Если ОбъектСправочника.Идентификатор <> Информация.Реквизиты.Идентификатор Тогда + Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Невозможно обновить компоненту, т.к. различаются идентификаторы. + |Ожидался %1, а идентификатор загружаемой внешней компоненты: %2.'"), + ОбъектСправочника.Идентификатор, Информация.Реквизиты.Идентификатор); + Возврат Результат; + КонецЕсли; + + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ОбъектСправочника, Информация.Реквизиты,, "Идентификатор"); // По данным манифеста. + Если Не ЗначениеЗаполнено(ОбъектСправочника.Идентификатор) Тогда + ОбъектСправочника.Идентификатор = Информация.Реквизиты.Идентификатор; + КонецЕсли; + ОбъектСправочника.ИмяФайла = ПараметрыЗагрузки.ИмяФайла; // Установка имени файла. + АдресДвоичныхДанныхКомпоненты = ПоместитьВоВременноеХранилище(Информация.ДвоичныеДанные, + УникальныйИдентификатор); + + ОбъектСправочника.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Загружена из файла %1. %2.'"), + ОбъектСправочника.ИмяФайла, + ТекущаяДатаСеанса()); + + ЗначениеВРеквизитФормы(ОбъектСправочника, "Объект"); + + Модифицированность = Истина; + УстановитьВидимостьДоступность(); + + Результат.Загружена = Истина; + Результат.ДополнительнаяИнформация = Информация.ДополнительнаяИнформация; + Возврат Результат; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция РезультатЗагрузкиКомпоненты() + + Результат = Новый Структура; + Результат.Вставить("Загружена", Ложь); + Результат.Вставить("ОписаниеОшибки", ""); + Результат.Вставить("ДополнительнаяИнформация", Новый Соответствие); + + Возврат Результат; + +КонецФункции + +// Серверная логика обновления компоненты с сайта. +&НаСервере +Процедура ОбновитьКарточкуПослеОбновленияКомпонентыСПортала() + + ЭтотОбъект.Прочитать(); + Модифицированность = Ложь; + УстановитьВидимостьДоступность(); + +КонецПроцедуры + +#КонецОбласти + +#Область Представление + +&НаСервере +Процедура УстановитьВидимостьДоступность() + + СправочникОбъект = РеквизитФормыВЗначение("Объект"); + ЭтоНовый = Объект.Ссылка.Пустая(); + + Элементы.Информация.Видимость = Не ЭтоНовый И ЗначениеЗаполнено(Объект.ОписаниеОшибки); + + // Параметры отображения предупреждений при редактировании + ОтображатьПредупреждение = ОтображениеПредупрежденияПриРедактировании.Отображать; + НеОтображатьПредупреждение = ОтображениеПредупрежденияПриРедактировании.НеОтображать; + Если ЗначениеЗаполнено(Объект.Наименование) Тогда + Элементы.Наименование.ОтображениеПредупрежденияПриРедактировании = ОтображатьПредупреждение; + Иначе + Элементы.Наименование.ОтображениеПредупрежденияПриРедактировании = НеОтображатьПредупреждение; + КонецЕсли; + Если ЗначениеЗаполнено(Объект.Идентификатор) Тогда + Элементы.Идентификатор.ОтображениеПредупрежденияПриРедактировании = ОтображатьПредупреждение; + Иначе + Элементы.Идентификатор.ОтображениеПредупрежденияПриРедактировании = НеОтображатьПредупреждение; + КонецЕсли; + Если ЗначениеЗаполнено(Объект.Версия) Тогда + Элементы.Версия.ОтображениеПредупрежденияПриРедактировании = ОтображатьПредупреждение; + Иначе + Элементы.Версия.ОтображениеПредупрежденияПриРедактировании = НеОтображатьПредупреждение; + КонецЕсли; + + // Доступность кнопки Сохранить в файл + Элементы.ФормаСохранитьКак.Доступность = Не ЭтоНовый; + + // Зависимость использования и автоматического обновления. + КомпонентаОтключена = (Объект.Использование = Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена); + Элементы.ОбновлятьСПортала1СИТС.Доступность = Не КомпонентаОтключена И СправочникОбъект.ЭтоКомпонентаПоследнейВерсии(); + + Элементы.ОбновитьСПортала1СИТС.Доступность = Объект.ОбновлятьСПортала1СИТС; + +КонецПроцедуры + +#КонецОбласти + +#Область Прочее + +&НаКлиенте +Функция ТолькоИмяФайла(ВыбранноеИмяФайла) + + // Использовать критично на клиенте, т.к. ПолучитьРазделительПути() на сервере может быть другим. + МассивПодстрок = СтрРазделить(ВыбранноеИмяФайла, ПолучитьРазделительПути(), Ложь); + Возврат МассивПодстрок.Получить(МассивПодстрок.ВГраница()); + +КонецФункции + +#КонецОбласти + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Help/ru.html" new file mode 100644 index 00000000..afa0ab7c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Help/ru.html" @@ -0,0 +1,30 @@ + +

Предназначен для управления внешними компонентами.

+

Внешние компоненты - специальные программы, которые могут обеспечивать:

+
  • Работу с подключаемым оборудованием; +
  • Обмены с банком и документооборот; +
  • Работа с буфером обмена, сканирование и т.п.; +
  • Печать штрихкодов, извлечение текстов, компонента склонения и т.д.

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

+

Программа предоставляет администратору возможность контролировать список внешних компонент, используемых на клиентских рабочих местах. Без контроля администратора пользователи не могут подключать к программе какие-либо сторонние внешние компоненты.

+

В списке отражаются все установленные в программе внешние компоненты. В колонке  флажками обозначаются внешние компоненты, которые обновляются с сайта 1С:ИТС.

+

Подключение внешней компоненты

+
  • Нажмите Добавить из файла. +
  • Программа выводит Предупреждение безопасности. Если внешняя компонента получена из надежного источника и не может содержать вирусы, нажмите Продолжить. +
  • Укажите путь к файлу на компьютере, нажмите Открыть. +
  • Разработчик размещает в файле внешней компоненты необходимую информацию для ее установки, поэтому основные поля в карточке внешней компоненты заполняются автоматически.

Обновление внешней компоненты с портала 1С:ИТС

+
  • +
    С помощью кнопки  можно обновить внешнюю компоненту с сайта 1С:ИТС.
    +
  • +
    Доступно для внешних компонент, которые были получены на портале 1С:ИТС. Для обновления нужно зарегистрироваться на портале 1С:ИТС.

Обновление внешней компоненты из файла

+
  • Нажмите кнопку Обновить из файла. Программа выводит Предупреждение безопасности. +
  • Если внешняя компонента получена из надежного источника и не может содержать вирусы, нажмите кнопку Продолжить. +
  • Укажите путь к файлу на компьютере, нажмите кнопку Открыть. +
  • Информация в карточке внешней компоненты будет обновлена.

Сохранение внешних компонент на компьютер

+
  • Сохраненную на компьютер внешнюю компоненту можно будет использовать в случае нештатных ситуаций. +
  • Выполните команду Сохранить как контекстного меню по правой кнопке мыши или меню Еще. +
  • Укажите путь к файлу на компьютере. Нажмите Сохранить.

Отборы в списке

+

С помощью поля Показывать в списке можно отобрать внешние компоненты по следующим признакам:

+
  • Все; +
  • Используемые; +
  • Отключенные.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..8dd56acd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ManagerModule.bsl" @@ -0,0 +1,107 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Возвращает ссылку на справочник внешней компоненты по идентификатору и версии. +// +// Параметры: +// Идентификатор - Строка - идентификатор объекта внешнего компонента. +// Версия - Строка - версия компоненты. +// +// Возвращаемое значение: +// СправочникСсылка.ВнешниеКомпоненты - ссылка на контейнер внешней компоненты в информационной базе. +// +Функция НайтиПоИдентификатору(Идентификатор, Версия = Неопределено) Экспорт + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + + Если Не ЗначениеЗаполнено(Версия) Тогда + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ВнешниеКомпоненты.Идентификатор КАК Идентификатор, + | ВнешниеКомпоненты.ДатаВерсии КАК ДатаВерсии, + | ВЫБОР + | КОГДА ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется) + | ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК Использование, + | ВнешниеКомпоненты.Ссылка КАК Ссылка + |ИЗ + | Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты + |ГДЕ + | ВнешниеКомпоненты.Идентификатор = &Идентификатор + | + |УПОРЯДОЧИТЬ ПО + | Использование УБЫВ, + | ДатаВерсии УБЫВ"; + Иначе + Запрос.УстановитьПараметр("Версия", Версия); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ВнешниеКомпоненты.Ссылка КАК Ссылка, + | ВЫБОР + | КОГДА ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется) + | ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК Использование + |ИЗ + | Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты + |ГДЕ + | ВнешниеКомпоненты.Идентификатор = &Идентификатор + | И ВнешниеКомпоненты.Версия = &Версия + | + |УПОРЯДОЧИТЬ ПО + | Использование УБЫВ"; + + КонецЕсли; + + Результат = Запрос.Выполнить(); + + Если Результат.Пустой() Тогда + Возврат ПустаяСсылка(); + КонецЕсли; + + Выборка = Результат.Выбрать(); + Выборка.Следующий(); + + Возврат Результат.Выгрузить()[0].Ссылка; + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..a24f6f5b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ObjectModule.bsl" @@ -0,0 +1,146 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + // Связь реквизитов с пометкой удаления. + Если ПометкаУдаления Тогда + Использование = Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена; + КонецЕсли; + + // Связь реквизитов с вариантом использования. + Если Использование = Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена Тогда + ОбновлятьСПортала1СИТС = Ложь; + КонецЕсли; + + // Не должно быть несколько компонент с одним идентификатором, с одновременно включенными ОбновлятьСПортала1СИТС. + Если Не ЭтоКомпонентаПоследнейВерсии() Тогда + ОбновлятьСПортала1СИТС = Ложь; + КонецЕсли; + + // Контроль уникальности идентификатора и версии компоненты. + Если Не ЭтоУникальнаяКомпонента() Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Внешняя компонента с таким идентификатором ""%1"" и датой ""%2"" уже загружена в программу.'"), + Идентификатор, + ДатаВерсии); + КонецЕсли; + + // Помещение двоичных данных компоненты + ДвоичныеДанныеКомпоненты = Неопределено; + Если ДополнительныеСвойства.Свойство("ДвоичныеДанныеКомпоненты", ДвоичныеДанныеКомпоненты) Тогда + ХранилищеКомпоненты = Новый ХранилищеЗначения(ДвоичныеДанныеКомпоненты); + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + // Если была загружается компонента новой версии, а у одной из старых есть признак ОбновлятьСПортала1СИТС + // то при перезаписи компонент младших версий признак будет сброшен. + Если ЭтоКомпонентаПоследнейВерсии() Тогда + ПерезаписатьКомпонентыМладшихВерсий(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ЭтоКомпонентаПоследнейВерсии() Экспорт + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | МАКСИМУМ(ВнешниеКомпоненты.ДатаВерсии) КАК ДатаВерсии + |ИЗ + | Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты + |ГДЕ + | ВнешниеКомпоненты.Идентификатор = &Идентификатор + | И ВнешниеКомпоненты.Ссылка <> &Ссылка + | И НЕ ВнешниеКомпоненты.ПометкаУдаления"; + + Результат = Запрос.Выполнить(); + Выборка = Результат.Выбрать(); + Выборка.Следующий(); + Возврат (Выборка.ДатаВерсии = Null) Или (Выборка.ДатаВерсии <= ДатаВерсии) + +КонецФункции + +Функция ЭтоУникальнаяКомпонента() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.УстановитьПараметр("ДатаВерсии", ДатаВерсии); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | 1 КАК Поле1 + |ИЗ + | Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты + |ГДЕ + | ВнешниеКомпоненты.Идентификатор = &Идентификатор + | И ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется) + | И ВнешниеКомпоненты.Ссылка <> &Ссылка + | И ВнешниеКомпоненты.ДатаВерсии = &ДатаВерсии"; + + Результат = Запрос.Выполнить(); + Возврат Результат.Пустой(); + +КонецФункции + +Процедура ПерезаписатьКомпонентыМладшихВерсий() + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВнешниеКомпоненты"); + ЭлементБлокировки.УстановитьЗначение("Идентификатор", Идентификатор); + Блокировка.Заблокировать(); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + Запрос.УстановитьПараметр("ДатаВерсии", ДатаВерсии); + Запрос.Текст = + "ВЫБРАТЬ + | ВнешниеКомпоненты.Ссылка КАК Ссылка + |ИЗ + | Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты + |ГДЕ + | ВнешниеКомпоненты.Идентификатор = &Идентификатор + | И ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется) + | И ВнешниеКомпоненты.ДатаВерсии < &ДатаВерсии"; + + Результат = Запрос.Выполнить(); + Выборка = Результат.Выбрать(); + Пока Выборка.Следующий() Цикл + Объект = Выборка.Ссылка.ПолучитьОбъект(); + Объект.Заблокировать(); + Объект.Записать(); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" new file mode 100644 index 00000000..44dd0708 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" @@ -0,0 +1,539 @@ + + + + + + + + + + ВнешниеКомпоненты + + ru + Внешние компоненты + + true + Catalog.ВнешниеКомпоненты.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Catalog.ВнешниеКомпоненты.Attribute.Идентификатор + Managed + Use + + ru + Внешняя компонента + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + Catalog.ВнешниеКомпоненты.Form.ФормаЭлемента + Catalog.ВнешниеКомпоненты.Form.ФормаСписка + + Использование + + ru + Использование + + + EnumRef.ВариантыИспользованияВнешнихКомпонент + + + + ShowError + true + + Enum.ВариантыИспользованияВнешнихКомпонент.EnumValue.Используется + + Index + Use + Use + + + Идентификатор + + ru + Идентификатор + + + String + + 150 + + + + ru + Внутренний идентификатор объекта внешней компоненты. + + + + ShowError + + + + Index + Use + Use + + + Версия + + ru + Версия + + + String + + 20 + + + + ru + Версия внешней компоненты + + + + ShowError + + + + Use + Use + + + ДатаВерсии + + ru + Дата версии + + + Date + + + + ru + Необходима для определения актуальной версии + + + + + Index + Use + Use + + + ИмяФайла + + ru + Имя файла + + + String + + 260 + + + + ru + Имя файла внешней компоненты + + + + + + + Use + Use + + + ХранилищеКомпоненты + + ru + Хранилище компоненты + + + ValueStorage + + + ru + Двоичные данные внешней компоненты, содержит ZIP-архив (служебное поле) + + + + + Use + Use + + + ОбновлятьСПортала1СИТС + + ru + Обновлять с Портала 1С:ИТС + + + Boolean + + + + + Use + Use + + + ОписаниеОшибки + + ru + Описание ошибки + + + String + + 1024 + + + + + + + + Use + Use + + + Windows_x86 + + ru + Windows x86 + + + Boolean + + + + + Use + Use + + + Windows_x86_64 + + ru + Windows x86_64 + + + Boolean + + + + + Use + Use + + + Linux_x86 + + ru + Linux x86 + + + Boolean + + + + + Use + Use + + + Linux_x86_64 + + ru + Linux x86_64 + + + Boolean + + + + + Use + Use + + + Windows_x86_Firefox + + ru + Windows x86 Firefox + + + Boolean + + + + + Use + Use + + + Linux_x86_Firefox + + ru + Linux x86 Firefox + + + Boolean + + + + + Use + Use + + + Linux_x86_64_Firefox + + ru + Linux x86_64 Firefox + + + Boolean + + + + + Use + Use + + + Windows_x86_MSIE + + ru + Windows x86 MSIE + + + Boolean + + + + + Use + Use + + + Windows_x86_64_MSIE + + ru + Windows x86_64 MSIE + + + Boolean + + + + + Use + Use + + + Windows_x86_Chrome + + ru + Windows x86 Chrome + + + Boolean + + + + + Use + Use + + + Linux_x86_Chrome + + ru + Linux x86 Chrome + + + Boolean + + + + + Use + Use + + + Linux_x86_64_Chrome + + ru + Linux x86_64 Chrome + + + Boolean + + + + + Use + Use + + + MacOS_x86_64 + + ru + macOS x86_64 + + + Boolean + + + + + Use + Use + + + MacOS_x86_64_Safari + + ru + macOS x86_64 Safari + + + Boolean + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ПоискКомпонентыНаПортале1СИТС + + ru + Поиск компоненты на Портале 1С:ИТС + + PersonalComputer + MobileDevice + + + ОбновлениеКомпонентСПортала1СИТС + + ru + Обновление компонент с портала 1С:ИТС + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Commands/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Commands/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277/CommandModule.bsl" new file mode 100644 index 00000000..d9aa4a3e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Commands/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277/CommandModule.bsl" @@ -0,0 +1,37 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОбъектАвторизации", ПараметрКоманды); + + Попытка + ОткрытьФорму( + "Справочник.ВнешниеПользователи.ФормаОбъекта", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Если СтрНайти(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке), + "ВызватьИсключение" + " " + "ОписаниеОшибкиКакПредупреждения") > 0 Тогда + + ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + Иначе + ВызватьИсключение; + КонецЕсли; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..b26a13af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,22 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + Наименование + Asc + Normal + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..c70d65bd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,3279 @@ + + + + ГруппаНастроек + 219 + + ВидПользователей + 221 + + <key>ru</key> + <value>Вид</value> + + true + true + + true + + + + ВидПользователей + + + + ВидПользователейРасширеннаяПодсказка + 223 + true + true + + true + + Label + true + true + + Left + + + + ВидПользователейКонтекстноеМеню + 222 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ВидПользователейНачалоВыбора + + + Clearing + ВидПользователейОчистка + + 45 + true + true + false + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Настроек</value> + + + ГруппаНастроекРасширеннаяПодсказка + 220 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаПользовательскихНастроек + 165 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 166 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 163 + + ЗавершитьИЗакрыть + 98 + true + + true + + + ЗавершитьИЗакрытьExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗавершитьИЗакрыть + true + true + true + UserCmds + + StdPicture.WriteAndClose + + Auto + + + ВыбратьГруппуВнешнихПользователей + 67 + + <key>ru</key> + <value>Выбрать группу</value> + + true + true + + true + + false + + ВыбратьГруппуВнешнихПользователейExtendedTooltip + 100 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыВнешнихПользователей.StandardCommand.Choose + PictureAndText + true + true + UserCmds + + StdPicture.ChooseValue + + Auto + + + ВыбратьВнешнегоПользователя + 68 + true + true + + true + + false + + ВыбратьВнешнегоПользователяExtendedTooltip + 101 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВнешниеПользователиСписок.StandardCommand.Choose + Auto + true + true + UserCmds + Auto + + + СоздатьВнешнегоПользователя + 54 + true + true + + true + + false + + СоздатьВнешнегоПользователяExtendedTooltip + 102 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВнешниеПользователиСписок.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СоздатьГруппуВнешнихПользователей + 55 + true + true + + true + + false + + СоздатьГруппуВнешнихПользователейExtendedTooltip + 103 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьГруппуВнешнихПользователей + Auto + true + true + UserCmds + Auto + + + НазначитьГруппы + 75 + true + true + + true + + + НазначитьГруппыExtendedTooltip + 104 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НазначитьГруппы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + КоманднаяПанельВнешниеПользователи + 53 + + ФормаВыбрать + 227 + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 228 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 203 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 204 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаИзменить + 205 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 206 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьПароль + 207 + true + true + + true + + + ФормаУстановитьПарольРасширеннаяПодсказка + 208 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПароль + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВнешниеПользователиСтандартныеКоманды + 201 + true + true + + true + + + <key>ru</key> + <value>Внешние пользователи стандартные команды</value> + + + ВнешниеПользователиСтандартныеКомандыРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + СведенияОВнешнихПользователях + 133 + true + true + + true + + false + + СведенияОВнешнихПользователяхРасширеннаяПодсказка + 134 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СведенияОВнешнихПользователях + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПользователиИБ + 6 + true + true + + true + + false + + ПользователиИБExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + Catalog.Пользователи.Command.ПользователиИнформационнойБазы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаИзменитьВыделенные + 197 + true + true + + true + + + ФормаИзменитьВыделенныеРасширеннаяПодсказка + 198 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Командная панель внешние пользователи</value> + + + КоманднаяПанельВнешниеПользователиExtendedTooltip + 105 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаСправка + 73 + true + true + + true + + + ФормаСправкаExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ГруппаСодержимое + 24 + + ГруппыИПользователи + 77 + + ГруппаГруппы + 84 + + ГруппыВнешнихПользователей + 25 + + <key>ru</key> + <value>Группы внешних пользователей</value> + + true + true + + true + + + ГруппыВнешнихПользователей + + false + None + Delete + + НаименованиеГруппы + 30 + true + true + + true + + + + ГруппыВнешнихПользователей.Description + + + + НаименованиеГруппыExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеГруппыКонтекстноеМеню + 31 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 10 + true + true + + + + СсылкаГруппы + 158 + true + true + + + + ГруппыВнешнихПользователей.Ref + + + + СсылкаГруппыРасширеннаяПодсказка + 160 + true + true + + true + + Label + true + true + + Left + + + + СсылкаГруппыКонтекстноеМеню + 159 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ГруппыВнешнихПользователейКоманднаяПанель + 27 + true + true + + true + + Left + true + + + DragCheck + ГруппыВнешнихПользователейПроверкаПеретаскивания + + + ValueChoice + ГруппыВнешнихПользователейВыборЗначения + + + BeforeAddRow + ГруппыВнешнихПользователейПередНачаломДобавления + + + OnActivateRow + ГруппыВнешнихПользователейПриАктивизацииСтроки + + + Drag + ГруппыВнешнихПользователейПеретаскивание + + + OnChange + ГруппыВнешнихПользователейПриИзменении + + + true + true + + true + + ГруппыВнешнихПользователейСтрокаПоиска + 170 + + ГруппыВнешнихПользователейСтрокаПоискаРасширеннаяПодсказка + 172 + true + true + + true + + Label + true + true + + Left + + + + ГруппыВнешнихПользователейСтрокаПоискаКонтекстноеМеню + 171 + true + true + + true + + true + + + true + + + + true + true + + true + + ГруппыВнешнихПользователейСостояниеПросмотра + 173 + + ГруппыВнешнихПользователейСостояниеПросмотраРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + + ГруппыВнешнихПользователейСостояниеПросмотраКонтекстноеМеню + 174 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ГруппыВнешнихПользователейУправлениеПоиском + 176 + + ГруппыВнешнихПользователейУправлениеПоискомРасширеннаяПодсказка + 178 + true + true + + true + + Label + true + true + + Left + + + + ГруппыВнешнихПользователейУправлениеПоискомКонтекстноеМеню + 177 + true + true + + true + + true + + SearchControlAddition + + true + + + + ГруппыВнешнихПользователейExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + + ГруппыВнешнихПользователейКонтекстноеМеню + 26 + + ГруппыВнешнихПользователейКонтекстноеМенюВывестиСписок + 161 + true + true + + true + + + ГруппыВнешнихПользователейКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 162 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыВнешнихПользователей.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + Tree + true + true + true + 10 + true + true + true + MultiRow + Row + 1 + 1 + AutoUse + AutoUse + Auto + Auto + ExpandTopLevel + true + true + true + + ГруппыВнешнихПользователей.НомерКартинки + + + CommonPicture.СостоянияПользователей + + SelectionPresentationAndChoice + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + ГруппаВыбратьГруппу + 86 + + ВыбратьГруппу + 89 + true + true + + true + + + ВыбратьГруппуExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыбратьГруппу + Auto + 5 + true + true + UserCmds + Auto + + + ОтменитьВыборПользователяИлиГруппы + 90 + true + true + + true + + + ОтменитьВыборПользователяИлиГруппыExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьВыборПользователяИлиГруппы + Auto + 5 + true + true + UserCmds + Auto + + + ОчиститьСписокВыбранныхПользователейИГрупп + 91 + true + true + + true + + + ОчиститьСписокВыбранныхПользователейИГруппExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьСписокВыбранныхПользователейИГрупп + Auto + 5 + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Выбрать группу</value> + + true + + ГруппаВыбратьГруппуExtendedTooltip + 114 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Center + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группы пользователей</value> + + + ГруппаГруппыExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПользователи + 85 + + ВнешниеПользователиСписок + 48 + + <key>ru</key> + <value>Внешние пользователи список</value> + + true + true + + true + + + ВнешниеПользователиСписок + + false + None + CopyToClipboard + Delete + OutputList + + Наименование + 51 + true + true + + true + + + + ВнешниеПользователиСписок.Description + + + + НаименованиеExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 52 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 135 + true + true + + + + ВнешниеПользователиСписок.Ref + + + + СсылкаРасширеннаяПодсказка + 137 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 136 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ВнешниеПользователиСписокКоманднаяПанель + 50 + true + true + + true + + Left + true + + + DragCheck + ВнешниеПользователиСписокПроверкаПеретаскивания + + + ValueChoice + ВнешниеПользователиСписокВыборЗначения + + + BeforeAddRow + ВнешниеПользователиСписокПередНачаломДобавления + + + OnActivateRow + ВнешниеПользователиСписокПриАктивизацииСтроки + + + BeforeRowChange + ВнешниеПользователиСписокПередНачаломИзменения + + + OnChange + ВнешниеПользователиСписокПриИзменении + + + true + true + + true + + ВнешниеПользователиСписокСтрокаПоиска + 179 + + ВнешниеПользователиСписокСтрокаПоискаРасширеннаяПодсказка + 181 + true + true + + true + + Label + true + true + + Left + + + + ВнешниеПользователиСписокСтрокаПоискаКонтекстноеМеню + 180 + true + true + + true + + true + + + true + + + + true + true + + true + + ВнешниеПользователиСписокСостояниеПросмотра + 182 + + ВнешниеПользователиСписокСостояниеПросмотраРасширеннаяПодсказка + 184 + true + true + + true + + Label + true + true + + Left + + + + ВнешниеПользователиСписокСостояниеПросмотраКонтекстноеМеню + 183 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВнешниеПользователиСписокУправлениеПоиском + 185 + + ВнешниеПользователиСписокУправлениеПоискомРасширеннаяПодсказка + 187 + true + true + + true + + Label + true + true + + Left + + + + ВнешниеПользователиСписокУправлениеПоискомКонтекстноеМеню + 186 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВнешниеПользователиСписокExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + + ВнешниеПользователиСписокКонтекстноеМеню + 49 + + ВнешниеПользователиСписокКонтекстноеМенюСоздать + 211 + true + true + + true + + + ВнешниеПользователиСписокКонтекстноеМенюСоздатьРасширеннаяПодсказка + 212 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВнешниеПользователиСписок.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ВнешниеПользователиСписокКонтекстноеМенюСкопировать + 213 + true + true + + true + + + ВнешниеПользователиСписокКонтекстноеМенюСкопироватьРасширеннаяПодсказка + 214 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВнешниеПользователиСписок.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ВнешниеПользователиСписокКонтекстноеМенюИзменить + 215 + true + true + + true + + + ВнешниеПользователиСписокКонтекстноеМенюИзменитьРасширеннаяПодсказка + 216 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВнешниеПользователиСписок.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ВнешниеПользователиСписокКонтекстноеМенюУстановитьПароль + 217 + true + true + + true + + + ВнешниеПользователиСписокКонтекстноеМенюУстановитьПарольРасширеннаяПодсказка + 218 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПароль + Auto + true + true + UserCmds + Auto + + + ВнешниеПользователиСписокКонтекстноеМенюСтандартныеКоманды + 209 + true + true + + true + + + <key>ru</key> + <value>Внешние пользователи список контекстное меню стандартные команды</value> + + + ВнешниеПользователиСписокКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 210 + true + true + + true + + Label + true + true + + Left + + + + Item.ВнешниеПользователиСписок + + + + ВнешниеПользователиСписокКонтекстноеМенюНазначитьГруппы + 76 + true + true + + true + + + ВнешниеПользователиСписокКонтекстноеМенюНазначитьГруппыExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НазначитьГруппы + Auto + true + true + UserCmds + Auto + + + ВнешниеПользователиСписокКонтекстноеМенюИзменитьВыделенные + 199 + true + true + + true + + + ВнешниеПользователиСписокКонтекстноеМенюИзменитьВыделенныеРасширеннаяПодсказка + 200 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + 10 + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + + ВнешниеПользователиСписок.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + + + + ГруппаВыбратьПользователя + 92 + + ВыбратьПользователяКоманда + 95 + true + true + + true + + + ВыбратьПользователяКомандаExtendedTooltip + 125 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыбратьПользователяКоманда + Auto + 5 + true + true + UserCmds + Auto + + + ОтменитьВыборПользователя + 96 + true + + true + + + ОтменитьВыборПользователяExtendedTooltip + 126 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьВыборПользователяИлиГруппы + Auto + 5 + true + true + UserCmds + Auto + + + ОчиститьСписокВыбранных + 97 + true + + true + + + ОчиститьСписокВыбранныхExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьСписокВыбранныхПользователейИГрупп + Auto + 5 + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Выбрать пользователя</value> + + true + + ГруппаВыбратьПользователяExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Center + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Пользователи</value> + + + ГруппаПользователиExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группы и пользователи</value> + + + ГруппыИПользователиExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + LeftNarrowest + Auto + Auto + + + + ВыбранныеПользователиИГруппы + 78 + + СписокВыбранныхПользователейИГрупп + 79 + + <key>ru</key> + <value>Выбранные пользователи и группы</value> + + true + true + + true + + + ВыбранныеПользователиИГруппы + + Top + Add + Change + Copy + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + ПользователиИГруппы + 82 + true + true + + true + + + + ВыбранныеПользователиИГруппы.Пользователь + + + + ПользователиИГруппыExtendedTooltip + 130 + true + true + + true + + Label + true + true + + Left + + + + ПользователиИГруппыКонтекстноеМеню + 83 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + false + true + true + true + + + + СписокВыбранныхПользователейИГруппКоманднаяПанель + 81 + true + true + + true + + Left + + + Selection + СписокВыбранныхПользователейИГруппВыбор + + + BeforeAddRow + СписокВыбранныхПользователейИГруппПередНачаломДобавления + + + true + true + + true + + СписокВыбранныхПользователейИГруппСтрокаПоиска + 188 + + СписокВыбранныхПользователейИГруппСтрокаПоискаРасширеннаяПодсказка + 190 + true + true + + true + + Label + true + true + + Left + + + + СписокВыбранныхПользователейИГруппСтрокаПоискаКонтекстноеМеню + 189 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокВыбранныхПользователейИГруппСостояниеПросмотра + 191 + + СписокВыбранныхПользователейИГруппСостояниеПросмотраРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + + СписокВыбранныхПользователейИГруппСостояниеПросмотраКонтекстноеМеню + 192 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокВыбранныхПользователейИГруппУправлениеПоиском + 194 + + СписокВыбранныхПользователейИГруппУправлениеПоискомРасширеннаяПодсказка + 196 + true + true + + true + + Label + true + true + + Left + + + + СписокВыбранныхПользователейИГруппУправлениеПоискомКонтекстноеМеню + 195 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокВыбранныхПользователейИГруппExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + + СписокВыбранныхПользователейИГруппКонтекстноеМеню + 80 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + ВыбранныеПользователиИГруппы.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + + true + true + + true + + + <key>ru</key> + <value>Выбранные пользователи и группы</value> + + + ВыбранныеПользователиИГруппыExtendedTooltip + 128 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Содержимое</value> + + + ГруппаСодержимоеРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Equal + Auto + Auto + + + + ГруппаПоказыватьВнешнихПользователейДочернихГрупп + 58 + + ВыбиратьИерархически + 56 + true + true + + true + + + + ВыбиратьИерархически + + + Right + + OnChange + ВыбиратьИерархическиПриИзменении + + + ВыбиратьИерархическиExtendedTooltip + 132 + true + true + + true + + Label + true + true + + Left + + + + ВыбиратьИерархическиКонтекстноеМеню + 57 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПоказыватьНедействительныхПользователей + 167 + true + true + + true + + + + ПоказыватьНедействительныхПользователей + + + Right + + OnChange + ПоказыватьНедействительныхПользователейПриИзменении + + + ПоказыватьНедействительныхПользователейРасширеннаяПодсказка + 169 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьНедействительныхПользователейКонтекстноеМеню + 168 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Показывать внешних пользователей дочерних групп</value> + + + ГруппаПоказыватьВнешнихПользователейДочернихГруппExtendedTooltip + 131 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Комментарии + 148 + + КомментарийГруппы + 150 + + ЗаголовокКомментарияГруппы + 154 + + ГруппыВнешнихПользователейКомментарий + 224 + true + true + + true + + + + Items.ГруппыВнешнихПользователей.CurrentData.Комментарий + + + Left + + ГруппыВнешнихПользователейКомментарийРасширеннаяПодсказка + 226 + true + true + + true + + Label + true + true + + Left + + + + ГруппыВнешнихПользователейКомментарийКонтекстноеМеню + 225 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ЗаголовокКомментарияГруппыРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + + Items.ГруппыВнешнихПользователей.CurrentData.Description + + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Комментарий группы</value> + + + КомментарийГруппыРасширеннаяПодсказка + 151 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + + КомментарийПользователя + 152 + + ЗаголовокКомментарияПользователя + 156 + + ВнешниеПользователиСписокКомментарий + 138 + true + true + + true + + + + Items.ВнешниеПользователиСписок.CurrentData.Комментарий + + + Left + + ВнешниеПользователиСписокКомментарийРасширеннаяПодсказка + 140 + true + true + + true + + Label + true + true + + Left + + + + ВнешниеПользователиСписокКомментарийКонтекстноеМеню + 139 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 2 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ЗаголовокКомментарияПользователяРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + + Items.ВнешниеПользователиСписок.CurrentData.Description + + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Комментарий пользователя</value> + + + КомментарийПользователяРасширеннаяПодсказка + 153 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + true + true + + + <key>ru</key> + <value>Комментарии</value> + + + КомментарииРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПередЗагрузкеДанныхИзНастроекНаСервере + + Create + Use + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + ВнешниеПользователиСписок + + <key>ru</key> + <value>Внешние пользователи список</value> + + 1 + + DynamicList + + + true + + + true + + + ВнешниеПользователиСписок.Ref + + + ВнешниеПользователиСписок.ВозможноСменитьПароль + + + ВнешниеПользователиСписок.Недействителен + +
true
+ + ВЫБРАТЬ + ВнешниеПользователи.Ссылка, + ВнешниеПользователи.Подготовлен, + ВнешниеПользователи.ПометкаУдаления, + ВнешниеПользователи.Недействителен, + ВнешниеПользователи.Предопределенный, + ВнешниеПользователи.Наименование, + ВнешниеПользователи.Комментарий, + ТИПЗНАЧЕНИЯ(ВнешниеПользователи.Ссылка.ОбъектАвторизации) КАК ТипОбъектаАвторизации, + ВЫБОР + КОГДА ВнешниеПользователи.ПометкаУдаления + ТОГДА 6 + ИНАЧЕ 7 + КОНЕЦ КАК НомерКартинки, + ВЫБОР + КОГДА ВнешниеПользователи.Недействителен + ТОГДА ЛОЖЬ + КОГДА ВнешниеПользователи.ИдентификаторПользователяИБ = &ИдентификаторТекущегоПользователяИБ + ТОГДА ИСТИНА + КОГДА &ВозможноСменитьТолькоСвойПароль + ТОГДА ЛОЖЬ + КОГДА ВнешниеПользователи.ИдентификаторПользователяИБ = &ПустойУникальныйИдентификатор + ТОГДА ЛОЖЬ + ИНАЧЕ ИСТИНА + КОНЕЦ КАК ВозможноСменитьПароль, + ВнешниеПользователи.ИдентификаторПользователяИБ +ИЗ + Справочник.ВнешниеПользователи КАК ВнешниеПользователи +ГДЕ + ВЫБОР + КОГДА &ВсеВнешниеПользователи + ТОГДА ИСТИНА + КОГДА &ВыбиратьИерархически + ТОГДА ИСТИНА В + (ВЫБРАТЬ + ИСТИНА + ИЗ + РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + ГДЕ + СоставыГруппПользователей.Пользователь = ВнешниеПользователи.Ссылка + И СоставыГруппПользователей.ГруппаПользователей = &ГруппаВнешнихПользователей) + ИНАЧЕ ИСТИНА В + (ВЫБРАТЬ + ИСТИНА + ИЗ + Справочник.ГруппыВнешнихПользователей.Состав КАК ГруппыВнешнихПользователейСостав + ГДЕ + ГруппыВнешнихПользователейСостав.ВнешнийПользователь = ВнешниеПользователи.Ссылка + И ГруппыВнешнихПользователейСостав.Ссылка = &ГруппаВнешнихПользователей) + КОНЕЦ + Catalog.ВнешниеПользователи + true + true + true + true + true + +
+ + ГруппыВнешнихПользователей + + <key>ru</key> + <value>Группы внешних пользователей</value> + + 2 + + DynamicList + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + + ГруппыВнешнихПользователей.DeletionMark + + + ГруппыВнешнихПользователей.Parent + + + ГруппыВнешнихПользователей.Ref + + + ГруппыВнешнихПользователей.ВсеОбъектыАвторизации + + + ВЫБРАТЬ + ГруппыВнешнихПользователей.Ссылка, + ГруппыВнешнихПользователей.ПометкаУдаления, + ГруппыВнешнихПользователей.Предопределенный, + ГруппыВнешнихПользователей.Родитель, + ГруппыВнешнихПользователей.Наименование, + ВЫБОР + КОГДА ГруппыВнешнихПользователей.ПометкаУдаления + ТОГДА 8 + ИНАЧЕ 9 + КОНЕЦ КАК НомерКартинки, + ГруппыВнешнихПользователей.ВсеОбъектыАвторизации, + ГруппыВнешнихПользователей.Комментарий +ИЗ + Справочник.ГруппыВнешнихПользователей КАК ГруппыВнешнихПользователей + Catalog.ГруппыВнешнихПользователей + true + true + true + true + true + + + + ВыбиратьИерархически + + <key>ru</key> + <value>Показывать пользователей нижестоящих групп</value> + + 3 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + + ВыбиратьИерархически + + + + ОписаниеОтображаемыхВнешнихПользователей + 8 + + String + + + + true + + + true + + + + ХранимыеПараметры + 11 + + + true + + + true + + + + ВыбранныеПользователиИГруппы + + <key>ru</key> + <value>Выбранные пользователи и группы</value> + + 4 + + ValueTable + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + + true + + + true + + + + НомерКартинки + 2 + + Number + + 10 + + + + true + + + true + + + + + СписокВыбранныхПользователейИзменен + 5 + + Boolean + + + true + + + true + + + + ПоказыватьНедействительныхПользователей + + <key>ru</key> + <value>Показывать недействительных пользователей</value> + + 7 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + + + ВидПользователей + + <key>ru</key> + <value>Вид пользователей</value> + + 12 + + String + + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + + + СоздатьГруппуВнешнихПользователей + + <key>ru</key> + <value>Создать группу внешних пользователей</value> + + 3 + + ru + Создать группу внешних пользователей + + + true + + + StdPicture.CreateFolder + + + + СоздатьГруппуВнешнихПользователей + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + НазначитьГруппы + + <key>ru</key> + <value>Назначить группы</value> + + 2 + + ru + Назначить группы + + + true + + Ctrl+Shift+M + + StdPicture.MoveItem + + + + НазначитьГруппы + + + FunctionalOption.ИспользоватьВнешнихПользователей + TextPicture + DontUse + + + ВыбратьГруппу + + <key>ru</key> + <value>></value> + + 4 + + ru + Выбрать группу + + + true + + + + ВыбратьГруппу + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + ВыбратьПользователяКоманда + + <key>ru</key> + <value>></value> + + 5 + + ru + Выбрать пользователя команда + + + true + + + + ВыбратьПользователяКоманда + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + ОтменитьВыборПользователяИлиГруппы + + <key>ru</key> + <value><</value> + + 6 + + ru + Отменить выбор пользователя или группы + + + true + + + + ОтменитьВыборПользователяИлиГруппы + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + ОчиститьСписокВыбранныхПользователейИГрупп + + <key>ru</key> + <value><<</value> + + 7 + + ru + Очистить список выбранных пользователей и групп + + + true + + + + ОчиститьСписокВыбранныхПользователейИГрупп + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + ЗавершитьИЗакрыть + + <key>ru</key> + <value>Завершить и закрыть</value> + + 8 + + ru + Завершить и закрыть + + + true + + + + ЗавершитьИЗакрыть + + + DontUse + + + СведенияОВнешнихПользователях + + <key>ru</key> + <value>Сведения о внешних пользователях</value> + + 9 + + ru + Сведения о внешних пользователях + + + true + + + StdPicture.Report + + + + СведенияОВнешнихПользователях + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + ИзменитьВыделенные + + <key>ru</key> + <value>Изменить выделенные...</value> + + 1 + + ru + Изменить выделенные объекты + + + true + + + + ИзменитьВыделенные + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + УстановитьПароль + + <key>ru</key> + <value>Установить пароль...</value> + + 10 + + true + + + + УстановитьПароль + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + ВыборГруппВнешнихПользователей + + Boolean + + + + ЗакрыватьПриВыборе + + + + СкрытьПользователейБезПользователяИБ + + Boolean + + + + РасширенныйПодбор + + Boolean + + + + ПараметрыРасширеннойФормыПодбора + + + + СкрываемыеПользователи + + + + Назначение + + + + + + + CommonCommand.ДополнительныеСведенияКоманднаяПанель + FormCommandBarImportant + 0 + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..a7284fd2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,1235 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ИСПОЛЬЗОВАНИЕ ФОРМЫ // +// +// Дополнительные параметры открытия формы подбора: +// +// РасширенныйПодбор - Булево - если Истина - открывается расширенная форма +// подбора пользователей. Используется вместе с параметром. +// ПараметрыРасширеннойФормыПодбора. +// ПараметрыРасширеннойФормыПодбора - Строка - ссылка на структуру, +// содержащую параметры расширенной формы подбора во +// временном хранилище. +// Параметры структуры: +// ЗаголовокФормыПодбора - Строка - заголовок формы подбора. +// ВыбранныеПользователи - Массив - массив уже выбранных пользователей. +// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ПоследнийЭлемент; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Начальное значение настройки до загрузки данных из настроек. + ВыбиратьИерархически = Истина; + + НовыйХранимыеПараметры(); + + МассивПустыхСсылок = Неопределено; + Параметры.Свойство("Назначение", МассивПустыхСсылок); + ЗаполнитьПараметрыДинамическихСписков(МассивПустыхСсылок); + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + + ИначеЕсли Пользователи.ЭтоПолноправныйПользователь() Тогда + // Добавление отбора пользователей, подготовленных ответственным за список. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, "Подготовлен", Истина, , + НСтр("ru = 'Подготовленные ответственным за список'"), Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + КонецЕсли; + + // Скрытие пользователей с пустым идентификатором, если значение параметра Истина. + Если Параметры.СкрытьПользователейБезПользователяИБ Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, + "ИдентификаторПользователяИБ", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор(), + ВидСравненияКомпоновкиДанных.НеРавно); + КонецЕсли; + + // Скрытие переданного пользователя из формы выбора пользователей. + Если ТипЗнч(Параметры.СкрываемыеПользователи) = Тип("СписокЗначений") Тогда + + ВидСравненияКД = ВидСравненияКомпоновкиДанных.НеВСписке; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, + "Ссылка", + Параметры.СкрываемыеПользователи, + ВидСравненияКД); + КонецЕсли; + + ОформитьИСкрытьНедействительныхВнешнихПользователей(); + НастроитьПараметрыСпискаВнешнихПользователейДляКомандыУстановитьПароль(); + НастроитьПорядокГруппыВсеВнешниеПользователи(ГруппыВнешнихПользователей); + + ХранимыеПараметры.Вставить("РасширенныйПодбор", Параметры.РасширенныйПодбор); + Элементы.ВыбранныеПользователиИГруппы.Видимость = ХранимыеПараметры.РасширенныйПодбор; + Элементы.ВидПользователей.Видимость = Не ХранимыеПараметры.РасширенныйПодбор; + ХранимыеПараметры.Вставить("ИспользоватьГруппы", + ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей")); + + Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыВнешнихПользователей) Тогда + Элементы.ВнешниеПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = Ложь; + Элементы.НазначитьГруппы.Видимость = Ложь; + КонецЕсли; + + РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); + Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Не РазделениеВключено) Тогда + Если Элементы.Найти("ПользователиИБ") <> Неопределено Тогда + Элементы.ПользователиИБ.Видимость = Ложь; + КонецЕсли; + Элементы.СведенияОВнешнихПользователях.Видимость = Ложь; + КонецЕсли; + + Если Параметры.РежимВыбора Тогда + + Если Элементы.Найти("ПользователиИБ") <> Неопределено Тогда + Элементы.ПользователиИБ.Видимость = Ложь; + КонецЕсли; + Элементы.СведенияОВнешнихПользователях.Видимость = Ложь; + Элементы.ГруппыВнешнихПользователей.РежимВыбора = + ХранимыеПараметры.ВыборГруппВнешнихПользователей; + + // Отключение перетаскивания пользователя в формах выбора и подбора пользователей. + Элементы.ВнешниеПользователиСписок.РазрешитьНачалоПеретаскивания = Ложь; + + Если Параметры.Свойство("ИдентификаторыНесуществующихПользователейИБ") Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, "ИдентификаторПользователяИБ", + Параметры.ИдентификаторыНесуществующихПользователейИБ, + ВидСравненияКомпоновкиДанных.ВСписке, , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + КонецЕсли; + + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + // Режим подбора. + Элементы.ВнешниеПользователиСписок.МножественныйВыбор = Истина; + + Если ХранимыеПараметры.РасширенныйПодбор Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "РасширенныйПодбор"); + ИзменитьПараметрыРасширеннойФормыПодбора(); + КонецЕсли; + + Если ХранимыеПараметры.ВыборГруппВнешнихПользователей Тогда + Элементы.ГруппыВнешнихПользователей.МножественныйВыбор = Истина; + КонецЕсли; + КонецЕсли; + Иначе + Элементы.ВнешниеПользователиСписок.РежимВыбора = Ложь; + Элементы.ГруппыВнешнихПользователей.РежимВыбора = Ложь; + Элементы.Комментарии.Видимость = Ложь; + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьВнешнегоПользователя", "Видимость", Ложь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьГруппуВнешнихПользователей", "Видимость", Ложь); + КонецЕсли; + + ХранимыеПараметры.Вставить("ГруппаВсеПользователи", + Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи); + + ХранимыеПараметры.Вставить("ТекущаяСтрока", Параметры.ТекущаяСтрока); + НастроитьФормуПоИспользованиюГруппПользователей(); + ХранимыеПараметры.Удалить("ТекущаяСтрока"); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") + Или Не Пользователи.ЭтоПолноправныйПользователь() Тогда + + Элементы.ФормаИзменитьВыделенные.Видимость = Ложь; + Элементы.ВнешниеПользователиСписокКонтекстноеМенюИзменитьВыделенные.Видимость = Ложь; + КонецЕсли; + + ОписаниеОбъекта = Новый Структура; + ОписаниеОбъекта.Вставить("Ссылка", Справочники.Пользователи.ПустаяСсылка()); + ОписаниеОбъекта.Вставить("ИдентификаторПользователяИБ", ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()); + УровеньДоступа = ПользователиСлужебный.УровеньДоступаКСвойствамПользователя(ОписаниеОбъекта); + + Если Не УровеньДоступа.УправлениеСписком Тогда + Элементы.ФормаУстановитьПароль.Видимость = Ложь; + Элементы.ВнешниеПользователиСписокКонтекстноеМенюУстановитьПароль.Видимость = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ЗавершитьИЗакрыть.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Параметры.РежимВыбора Тогда + ПроверкаИзмененияТекущегоЭлементаФормы(); + КонецЕсли; + + #Если МобильныйКлиент Тогда + Если ХранимыеПараметры.Свойство("ИспользоватьГруппы") И ХранимыеПараметры.ИспользоватьГруппы Тогда + Элементы.ГруппаГруппы.Заголовок = Строка(Элементы.ГруппыВнешнихПользователей.ТекущиеДанные.Ссылка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_ГруппыВнешнихПользователей") + И Источник = Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока Тогда + + Элементы.ГруппыВнешнихПользователей.Обновить(); + Элементы.ВнешниеПользователиСписок.Обновить(); + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + + ИначеЕсли ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант") Тогда + + Если ВРег(Источник) = ВРег("ИспользоватьГруппыПользователей") Тогда + ПодключитьОбработчикОжидания("ПриИзмененииИспользованияГруппПользователей", 0.1, Истина); + КонецЕсли; + + ИначеЕсли ВРег(ИмяСобытия) = ВРег("РазмещениеПользователейВГруппах") Тогда + + Элементы.ВнешниеПользователиСписок.Обновить(); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + Если ТипЗнч(Настройки["ВыбиратьИерархически"]) = Тип("Булево") Тогда + ВыбиратьИерархически = Настройки["ВыбиратьИерархически"]; + КонецЕсли; + + Если НЕ ВыбиратьИерархически Тогда + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВыбиратьИерархическиПриИзменении(Элемент) + + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНедействительныхПользователейПриИзменении(Элемент) + ПереключитьОтображениеНедействительныхПользователей(ПоказыватьНедействительныхПользователей); +КонецПроцедуры + +&НаКлиенте +Процедура ВидПользователейНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораНазначения", ЭтотОбъект); + ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, НСтр("ru = 'Выбор вида пользователей'"), Ложь, Истина, ОписаниеОповещения); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыГруппыВнешнихПользователей + +&НаКлиенте +Процедура ГруппыВнешнихПользователейПриИзменении(Элемент) + + СписокПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыВнешнихПользователейПриАктивизацииСтроки(Элемент) + + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + +#Если МобильныйКлиент Тогда + Если ХранимыеПараметры.Свойство("РасширенныйПодбор") И Не ХранимыеПараметры.РасширенныйПодбор Тогда + Элементы.ГруппаГруппы.Заголовок = Строка(Элементы.ГруппыВнешнихПользователей.ТекущиеДанные.Ссылка); + ТекущийЭлемент = Элементы.ВнешниеПользователиСписок; + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыВнешнихПользователейВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Не ХранимыеПараметры.РасширенныйПодбор Тогда + ОповеститьОВыборе(Значение); + Иначе + + ПолучитьКартинкиИЗаполнитьСписокВыбранных(Значение); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыВнешнихПользователейПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если НЕ Копирование Тогда + Отказ = Истина; + ПараметрыФормы = Новый Структура; + + Если ЗначениеЗаполнено(Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока) Тогда + + ПараметрыФормы.Вставить( + "ЗначенияЗаполнения", + Новый Структура("Родитель", Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока)); + КонецЕсли; + + ОткрытьФорму( + "Справочник.ГруппыВнешнихПользователей.ФормаОбъекта", + ПараметрыФормы, + Элементы.ГруппыВнешнихПользователей); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыВнешнихПользователейПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыВнешнихПользователейПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + + Если ВыбиратьИерархически Тогда + ПоказатьПредупреждение(, + НСтр("ru = 'Для перетаскивания пользователя в группы необходимо отключить + |флажок ""Показывать пользователей нижестоящих групп"".'")); + Возврат; + КонецЕсли; + + Если Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока = Строка + Или Строка = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Перемещение Тогда + Перемещение = Истина; + Иначе + Перемещение = Ложь; + КонецЕсли; + + ТекущаяСтрокаГруппы = Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока; + ГруппаСТипомВсеОбъектыАвторизации = + Элементы.ГруппыВнешнихПользователей.ДанныеСтроки(ТекущаяСтрокаГруппы).ВсеОбъектыАвторизации; + + Если Строка = ХранимыеПараметры.ГруппаВсеПользователи + И ГруппаСТипомВсеОбъектыАвторизации Тогда + СообщениеПользователю = Новый Структура("Сообщение, ЕстьОшибки, Пользователи", + НСтр("ru = 'Из групп с типом участников ""Все пользователи заданного типа"" исключение пользователей невозможно.'"), + Истина, + Неопределено); + Иначе + ГруппаПомеченаНаУдаление = Элементы.ГруппыВнешнихПользователей.ДанныеСтроки(Строка).ПометкаУдаления; + КоличествоПользователей = ПараметрыПеретаскивания.Значение.Количество(); + ДействиеИсключитьПользователя = (ХранимыеПараметры.ГруппаВсеПользователи = Строка); + ВключитьВГруппу = (ХранимыеПараметры.ГруппаВсеПользователи = ТекущаяСтрокаГруппы) ИЛИ ГруппаСТипомВсеОбъектыАвторизации; + + Если КоличествоПользователей = 1 Тогда + Если ДействиеИсключитьПользователя Тогда + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключить пользователя ""%1"" из группы ""%2""?'"), + Строка(ПараметрыПеретаскивания.Значение[0]), + Строка(Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока)); + + ИначеЕсли Не ГруппаПомеченаНаУдаление Тогда + Если ВключитьВГруппу Тогда + Шаблон = НСтр("ru = 'Включить пользователя ""%1"" в группу ""%2""?'"); + ИначеЕсли Перемещение Тогда + Шаблон = НСтр("ru = 'Переместить пользователя ""%1"" в группу ""%2""?'"); + Иначе + Шаблон = НСтр("ru = 'Скопировать пользователя ""%1"" в группу ""%2""?'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, + Строка(ПараметрыПеретаскивания.Значение[0]), + Строка(Строка)); + Иначе + Если ВключитьВГруппу Тогда + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Включить пользователя ""%2"" в эту группу?'"); + ИначеЕсли Перемещение Тогда + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Переместить пользователя ""%2"" в эту группу?'"); + Иначе + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Скопировать пользователя ""%2"" в эту группу?'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, + Строка(Строка), + Строка(ПараметрыПеретаскивания.Значение[0])); + КонецЕсли; + Иначе + Если ДействиеИсключитьПользователя Тогда + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключить пользователей (%1) из группы ""%2""?'"), + КоличествоПользователей, + Строка(Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока)); + + ИначеЕсли Не ГруппаПомеченаНаУдаление Тогда + Если ВключитьВГруппу Тогда + Шаблон = НСтр("ru = 'Включить пользователей (%1) в группу ""%2""?'"); + ИначеЕсли Перемещение Тогда + Шаблон = НСтр("ru = 'Переместить пользователей (%1) в группу ""%2""?'"); + Иначе + Шаблон = НСтр("ru = 'Скопировать пользователей (%1) в группу ""%2""?'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, + КоличествоПользователей, + Строка(Строка)); + Иначе + Если ВключитьВГруппу Тогда + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Включить пользователей (%2) в эту группу?'"); + ИначеЕсли Перемещение Тогда + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Переместить пользователей (%2) в эту группу?'"); + Иначе + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Скопировать пользователей (%2) в эту группу?'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, + Строка(Строка), + КоличествоПользователей); + КонецЕсли; + КонецЕсли; + + ДополнительныеПараметры = Новый Структура("ПараметрыПеретаскивания, Строка, Перемещение", + ПараметрыПеретаскивания.Значение, Строка, Перемещение); + Оповещение = Новый ОписаниеОповещения("ГруппыВнешнихПользователейПеретаскиваниеОбработкаВопроса", ЭтотОбъект, ДополнительныеПараметры); + ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да); + Возврат; + + КонецЕсли; + + ГруппыВнешнихПользователейПеретаскиваниеЗавершение(СообщениеПользователю); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыВнешниеПользователи + +&НаКлиенте +Процедура ВнешниеПользователиСписокПриИзменении(Элемент) + + СписокПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВнешниеПользователиСписокПриАктивизацииСтроки(Элемент) + + Если СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(Элементы.ВнешниеПользователиСписок) Тогда + ВозможноСменитьПароль = Элементы.ВнешниеПользователиСписок.ТекущиеДанные.ВозможноСменитьПароль; + Иначе + ВозможноСменитьПароль = Ложь; + КонецЕсли; + + Элементы.ФормаУстановитьПароль.Доступность = ВозможноСменитьПароль; + Элементы.ВнешниеПользователиСписокКонтекстноеМенюУстановитьПароль.Доступность = ВозможноСменитьПароль; + +КонецПроцедуры + +&НаКлиенте +Процедура ВнешниеПользователиСписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Не ХранимыеПараметры.РасширенныйПодбор Тогда + ОповеститьОВыборе(Значение); + Иначе + ПолучитьКартинкиИЗаполнитьСписокВыбранных(Значение); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВнешниеПользователиСписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + ПараметрыФормы = Новый Структура( + "ГруппаНовогоВнешнегоПользователя", Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока); + + Если ЗначениеЗаполнено(ХранимыеПараметры.ОтборОбъектАвторизации) Тогда + + ПараметрыФормы.Вставить( + "ОбъектАвторизацииНовогоВнешнегоПользователя", + ХранимыеПараметры.ОтборОбъектАвторизации); + КонецЕсли; + + Если Копирование И Элемент.ТекущиеДанные <> Неопределено Тогда + ПараметрыФормы.Вставить("ЗначениеКопирования", Элемент.ТекущаяСтрока); + КонецЕсли; + + ОткрытьФорму( + "Справочник.ВнешниеПользователи.ФормаОбъекта", + ПараметрыФормы, + Элементы.ВнешниеПользователиСписок); + +КонецПроцедуры + +&НаКлиенте +Процедура ВнешниеПользователиСписокПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + + Если Не ЗначениеЗаполнено(Элемент.ТекущаяСтрока) Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура("Ключ", Элемент.ТекущаяСтрока); + ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаОбъекта", ПараметрыФормы, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ВнешниеПользователиСписокПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокВыбранныхПользователейИГрупп + +&НаКлиенте +Процедура СписокВыбранныхПользователейИГруппВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + УдалитьИзСпискаВыбранных(); + ЭтотОбъект.Модифицированность = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокВыбранныхПользователейИГруппПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Отказ = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СоздатьГруппуВнешнихПользователей(Команда) + + ТекущиеДанные = Элементы.ГруппыВнешнихПользователей.ТекущиеДанные; + Если Не СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(ТекущиеДанные) Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.ВсеОбъектыАвторизации Тогда + ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Невозможно добавить подгруппу к группе ""%1"", + |так как в число ее участников входят все пользователи выбранных видов.'"), + ТекущиеДанные.Наименование)); + Возврат; + КонецЕсли; + + Элементы.ГруппыВнешнихПользователей.ДобавитьСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура НазначитьГруппы(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Пользователи", Элементы.ВнешниеПользователиСписок.ВыделенныеСтроки); + ПараметрыФормы.Вставить("ВнешниеПользователи", Истина); + + ОткрытьФорму("ОбщаяФорма.ГруппыПользователей", ПараметрыФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПароль(Команда) + + ТекущиеДанные = Элементы.ВнешниеПользователиСписок.ТекущиеДанные; + + Если СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(ТекущиеДанные) Тогда + ПользователиСлужебныйКлиент.ОткрытьФормуСменыПароля(ТекущиеДанные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьИЗакрыть(Команда) + + Если ХранимыеПараметры.РасширенныйПодбор Тогда + МассивПользователей = РезультатВыбора(); + ОповеститьОВыборе(МассивПользователей); + ЭтотОбъект.Модифицированность = Ложь; + Закрыть(МассивПользователей); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьПользователяКоманда(Команда) + + МассивПользователей = Элементы.ВнешниеПользователиСписок.ВыделенныеСтроки; + ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивПользователей); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьВыборПользователяИлиГруппы(Команда) + + УдалитьИзСпискаВыбранных(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьСписокВыбранныхПользователейИГрупп(Команда) + + УдалитьИзСпискаВыбранных(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьГруппу(Команда) + + МассивГрупп = Элементы.ГруппыВнешнихПользователей.ВыделенныеСтроки; + ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивГрупп); + +КонецПроцедуры + +&НаКлиенте +Процедура СведенияОВнешнихПользователях(Команда) + + ОткрытьФорму( + "Отчет.СведенияОПользователях.ФормаОбъекта", + Новый Структура("КлючВарианта", "СведенияОВнешнихПользователях"), + ЭтотОбъект, + "СведенияОВнешнихПользователях"); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Поддержка группового изменения объектов. + +&НаКлиенте +Процедура ИзменитьВыделенные(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") Тогда + МодульГрупповоеИзменениеОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ГрупповоеИзменениеОбъектовКлиент"); + МодульГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.ВнешниеПользователиСписок, ВнешниеПользователиСписок); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Возвращаемое значение: +// Структура: +// * ВыборГруппВнешнихПользователей - Булево +// * ОтборОбъектАвторизации - ОпределяемыйТип.ВнешнийПользователь +// * РасширенныйПодбор - Булево +// * ГруппаВсеПользователи - СправочникСсылка.ГруппыВнешнихПользователей +// * ТекущаяСтрока - Число +// * ЗаголовокФормыПодбора - Строка +// * ИспользоватьГруппы - Булево +// +&НаСервере +Функция НовыйХранимыеПараметры() + + ХранимыеПараметры = Новый Структура; + ХранимыеПараметры.Вставить("ВыборГруппВнешнихПользователей", Параметры.ВыборГруппВнешнихПользователей); + + Если Параметры.Отбор.Свойство("ОбъектАвторизации") Тогда + ХранимыеПараметры.Вставить("ОтборОбъектАвторизации", Параметры.Отбор.ОбъектАвторизации); + Иначе + ХранимыеПараметры.Вставить("ОтборОбъектАвторизации", Неопределено); + КонецЕсли; + Возврат ХранимыеПараметры; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьПараметрыДинамическихСписков(МассивПустыхСсылок = Неопределено) + + Используется = МассивПустыхСсылок <> Неопределено И МассивПустыхСсылок.Количество() <> 0; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ГруппыВнешнихПользователей, "Ссылка.Назначение.ТипПользователей", + МассивПустыхСсылок, ВидСравненияКомпоновкиДанных.ВСписке, , Используется); + + МассивТипов = Новый Массив; + Если Используется Тогда + Для Каждого Элемент Из МассивПустыхСсылок Цикл + МассивТипов.Добавить(ТипЗнч(Элемент)); + КонецЦикла; + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, "ТипОбъектаАвторизации", + МассивТипов, ВидСравненияКомпоновкиДанных.ВСписке, , Используется); + +КонецПроцедуры + +&НаСервере +Процедура ОформитьИСкрытьНедействительныхВнешнихПользователей() + + // Оформление. + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВнешниеПользователиСписок.Недействителен"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ВнешниеПользователиСписок"); + ЭлементОформляемогоПоля.Использование = Истина; + + // Скрытие. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, "Недействителен", Ложь, , , Истина); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьПараметрыСпискаВнешнихПользователейДляКомандыУстановитьПароль() + + ОбновитьЗначениеПараметраКомпоновкиДанных(ВнешниеПользователиСписок, "ИдентификаторТекущегоПользователяИБ", + ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор); + + ОбновитьЗначениеПараметраКомпоновкиДанных(ВнешниеПользователиСписок, "ПустойУникальныйИдентификатор", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()); + + ОбновитьЗначениеПараметраКомпоновкиДанных(ВнешниеПользователиСписок, "ВозможноСменитьТолькоСвойПароль", + Не Пользователи.ЭтоПолноправныйПользователь()); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьПорядокГруппыВсеВнешниеПользователи(Список) + + Перем Порядок; + + // Порядок. + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Предопределенный"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверкаИзмененияТекущегоЭлементаФормы() + + Если ТекущийЭлемент <> ПоследнийЭлемент Тогда + ПриИзмененииТекущегоЭлементаФормы(); + ПоследнийЭлемент = ТекущийЭлемент; + КонецЕсли; + +#Если ВебКлиент Тогда + ПодключитьОбработчикОжидания("ПроверкаИзмененияТекущегоЭлементаФормы", 0.7, Истина); +#Иначе + ПодключитьОбработчикОжидания("ПроверкаИзмененияТекущегоЭлементаФормы", 0.1, Истина); +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииТекущегоЭлементаФормы() + + Если ТекущийЭлемент = Элементы.ГруппыВнешнихПользователей Тогда + Элементы.Комментарии.ТекущаяСтраница = Элементы.КомментарийГруппы; + + ИначеЕсли ТекущийЭлемент = Элементы.ВнешниеПользователиСписок Тогда + Элементы.Комментарии.ТекущаяСтраница = Элементы.КомментарийПользователя; + + КонецЕсли + +КонецПроцедуры + +&НаСервере +Процедура УдалитьИзСпискаВыбранных(УдалитьВсех = Ложь) + + Если УдалитьВсех Тогда + ВыбранныеПользователиИГруппы.Очистить(); + ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп(); + Возврат; + КонецЕсли; + + МассивЭлементовСписка = Элементы.СписокВыбранныхПользователейИГрупп.ВыделенныеСтроки; + Для Каждого ЭлементСписка Из МассивЭлементовСписка Цикл + ВыбранныеПользователиИГруппы.Удалить(ВыбранныеПользователиИГруппы.НайтиПоИдентификатору(ЭлементСписка)); + КонецЦикла; + + ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивВыбранныхЭлементов) + + ВыбранныеЭлементыИКартинки = Новый Массив; + Для Каждого ВыбранныйЭлемент Из МассивВыбранныхЭлементов Цикл + + Если ТипЗнч(ВыбранныйЭлемент) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда + НомерКартинки = Элементы.ВнешниеПользователиСписок.ДанныеСтроки(ВыбранныйЭлемент).НомерКартинки; + Иначе + НомерКартинки = Элементы.ГруппыВнешнихПользователей.ДанныеСтроки(ВыбранныйЭлемент).НомерКартинки; + КонецЕсли; + + ВыбранныеЭлементыИКартинки.Добавить( + Новый Структура("ВыбранныйЭлемент, НомерКартинки", ВыбранныйЭлемент, НомерКартинки)); + КонецЦикла; + + ЗаполнитьСписокВыбранныхПользователейИГрупп(ВыбранныеЭлементыИКартинки); + +КонецПроцедуры + +&НаСервере +Функция РезультатВыбора() + + ВыбранныеПользователиТаблицаЗначений = ВыбранныеПользователиИГруппы.Выгрузить( , "Пользователь"); + МассивПользователей = ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь"); + Возврат МассивПользователей; + +КонецФункции + +&НаСервере +Процедура ИзменитьПараметрыРасширеннойФормыПодбора() + + // Загрузка списка выбранных пользователей. + ПараметрыРасширеннойФормыПодбора = ПолучитьИзВременногоХранилища(Параметры.ПараметрыРасширеннойФормыПодбора); + ВыбранныеПользователиИГруппы.Загрузить(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи); + ХранимыеПараметры.Вставить("ЗаголовокФормыПодбора", ПараметрыРасширеннойФормыПодбора.ЗаголовокФормыПодбора); + Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки"); + // Установка параметров расширенной формы подбора. + Элементы.ЗавершитьИЗакрыть.Видимость = Истина; + Элементы.ГруппаВыбратьПользователя.Видимость = Истина; + // Включение видимости списка выбранных пользователей. + Элементы.ВыбранныеПользователиИГруппы.Видимость = Истина; + ИспользоватьГруппыПользователей = ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей"); + Элементы.ГруппаВыбратьГруппу.Видимость = ИспользоватьГруппыПользователей; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ГруппыИПользователи.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; + Элементы.ГруппыИПользователи.ВажностьПриОтображении = ВажностьПриОтображении.ОченьВысокая; + Элементы.ГруппаСодержимое.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + Элементы.ГруппаВыбратьГруппу.Видимость = Ложь; + Элементы.ГруппаВыбратьПользователя.Видимость = Ложь; + Элементы.Переместить(Элементы.ВыбранныеПользователиИГруппы, Элементы.ГруппаСодержимое, Элементы.ВыбранныеПользователиИГруппы); + ИначеЕсли ИспользоватьГруппыПользователей Тогда + Элементы.ГруппыИПользователи.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; + Элементы.ВнешниеПользователиСписок.Высота = 5; + Элементы.ГруппыВнешнихПользователей.Высота = 3; + ЭтотОбъект.Высота = 17; + // Включение отображения заголовков списков ПользователиСписок и ГруппыПользователей. + Элементы.ГруппыВнешнихПользователей.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.ВнешниеПользователиСписок.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.ВнешниеПользователиСписок.Заголовок = НСтр("ru = 'Пользователи в группе'"); + Если ПараметрыРасширеннойФормыПодбора.Свойство("ПодборГруппНевозможен") Тогда + Элементы.ВыбратьГруппу.Видимость = Ложь; + КонецЕсли; + Иначе + Элементы.ОтменитьВыборПользователя.Видимость = Истина; + Элементы.ОчиститьСписокВыбранных.Видимость = Истина; + КонецЕсли; + + // Добавление количества выбранных пользователей в заголовке выбранных пользователей и групп. + ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп() + + Если ХранимыеПараметры.ИспользоватьГруппы Тогда + ЗаголовокВыбранныеПользователиИГруппы = НСтр("ru = 'Выбранные пользователи и группы (%1)'"); + Иначе + ЗаголовокВыбранныеПользователиИГруппы = НСтр("ru = 'Выбранные пользователи (%1)'"); + КонецЕсли; + + КоличествоПользователей = ВыбранныеПользователиИГруппы.Количество(); + Если КоличествоПользователей <> 0 Тогда + Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ЗаголовокВыбранныеПользователиИГруппы, КоличествоПользователей); + Иначе + + Если ХранимыеПараметры.ИспользоватьГруппы Тогда + Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи и группы'"); + Иначе + Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи'"); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокВыбранныхПользователейИГрупп(ВыбранныеЭлементыИКартинки) + + ПользователиСлужебный.ВыбратьПользователейГруппы( + ВыбранныеЭлементыИКартинки, ХранимыеПараметры, Элементы.ВнешниеПользователиСписок); + + Для Каждого СтрокаМассива Из ВыбранныеЭлементыИКартинки Цикл + + ВыбранныйПользовательИлиГруппа = СтрокаМассива.ВыбранныйЭлемент; + НомерКартинки = СтрокаМассива.НомерКартинки; + + ПараметрыОтбора = Новый Структура("Пользователь", ВыбранныйПользовательИлиГруппа); + Найденный = ВыбранныеПользователиИГруппы.НайтиСтроки(ПараметрыОтбора); + Если Найденный.Количество() = 0 Тогда + + СтрокаВыбранныеПользователи = ВыбранныеПользователиИГруппы.Добавить(); + СтрокаВыбранныеПользователи.Пользователь = ВыбранныйПользовательИлиГруппа; + СтрокаВыбранныеПользователи.НомерКартинки = НомерКартинки; + ЭтотОбъект.Модифицированность = Истина; + + КонецЕсли; + + КонецЦикла; + + ВыбранныеПользователиИГруппы.Сортировать("Пользователь Возр"); + ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииИспользованияГруппПользователей() + + НастроитьФормуПоИспользованиюГруппПользователей(Истина); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьФормуПоИспользованиюГруппПользователей(ИзменилосьИспользованиеГрупп = Ложь) + + Если ИзменилосьИспользованиеГрупп Тогда + ХранимыеПараметры.Вставить("ИспользоватьГруппы", ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей")); + КонецЕсли; + + Если ХранимыеПараметры.Свойство("ТекущаяСтрока") Тогда + + Если ТипЗнч(Параметры.ТекущаяСтрока) = Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда + + Если ХранимыеПараметры.ИспользоватьГруппы Тогда + Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока = ХранимыеПараметры.ТекущаяСтрока; + Иначе + Параметры.ТекущаяСтрока = Неопределено; + КонецЕсли; + Иначе + ТекущийЭлемент = Элементы.ВнешниеПользователиСписок; + + Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока = + Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи; + КонецЕсли; + Иначе + Если НЕ ХранимыеПараметры.ИспользоватьГруппы + И Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока + <> Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + + Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока = + Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи; + КонецЕсли; + КонецЕсли; + + Элементы.ВыбиратьИерархически.Видимость = + ХранимыеПараметры.ИспользоватьГруппы; + + Если ХранимыеПараметры.РасширенныйПодбор Тогда + Элементы.НазначитьГруппы.Видимость = Ложь; + Иначе + Элементы.НазначитьГруппы.Видимость = ХранимыеПараметры.ИспользоватьГруппы; + КонецЕсли; + + Элементы.СоздатьГруппуВнешнихПользователей.Видимость = + ПравоДоступа("Добавление", Метаданные.Справочники.ГруппыВнешнихПользователей) + И ХранимыеПараметры.ИспользоватьГруппы; + + ВыборГруппВнешнихПользователей = ХранимыеПараметры.ВыборГруппВнешнихПользователей + И ХранимыеПараметры.ИспользоватьГруппы + И Параметры.РежимВыбора; + + Если Параметры.РежимВыбора Тогда + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьГруппуВнешнихПользователей", "Видимость", ?(ХранимыеПараметры.РасширенныйПодбор, + Ложь, ВыборГруппВнешнихПользователей)); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьВнешнегоПользователя", "КнопкаПоУмолчанию", ?(ХранимыеПараметры.РасширенныйПодбор, + Ложь, Не ВыборГруппВнешнихПользователей)); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьВнешнегоПользователя", "Видимость", Не ХранимыеПараметры.РасширенныйПодбор); + + АвтоЗаголовок = Ложь; + + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + // Режим подбора. + + Если ВыборГруппВнешнихПользователей Тогда + + Если ХранимыеПараметры.РасширенныйПодбор Тогда + Заголовок = ХранимыеПараметры.ЗаголовокФормыПодбора; + Иначе + Заголовок = НСтр("ru = 'Подбор внешних пользователей и групп'"); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьВнешнегоПользователя", "Заголовок", НСтр("ru = 'Выбрать внешних пользователей'")); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьГруппуВнешнихПользователей", "Заголовок", НСтр("ru = 'Выбрать группы'")); + Иначе + Если ХранимыеПараметры.РасширенныйПодбор Тогда + Заголовок = ХранимыеПараметры.ЗаголовокФормыПодбора; + Иначе + Заголовок = НСтр("ru = 'Подбор внешних пользователей'"); + КонецЕсли; + КонецЕсли; + Иначе + // Режим выбора. + Если ВыборГруппВнешнихПользователей Тогда + Заголовок = НСтр("ru = 'Выбор внешнего пользователя или группы'"); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьВнешнегоПользователя", "Заголовок", НСтр("ru = 'Выбрать внешнего пользователя'")); + Иначе + Заголовок = НСтр("ru = 'Выбор внешнего пользователя'"); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + + // Принудительное обновление видимости после изменения функциональной + // опции без использования команды ОбновитьИнтерфейс. + Элементы.ГруппыВнешнихПользователей.Видимость = Ложь; + Элементы.ГруппыВнешнихПользователей.Видимость = Истина; + +КонецПроцедуры + +&НаСервере +Функция ПеремещениеПользователяВНовуюГруппу(МассивПользователей, НоваяГруппаВладелец, Перемещение) + + Если НоваяГруппаВладелец = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + ТекущаяГруппаВладелец = Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока; + СообщениеПользователю = ПользователиСлужебный.ПеремещениеПользователяВНовуюГруппу( + МассивПользователей, ТекущаяГруппаВладелец, НоваяГруппаВладелец, Перемещение); + + Элементы.ВнешниеПользователиСписок.Обновить(); + Элементы.ГруппыВнешнихПользователей.Обновить(); + + Возврат СообщениеПользователю; + +КонецФункции + +&НаКлиенте +Процедура ПереключитьОтображениеНедействительныхПользователей(ПоказатьНедействительных) + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, "Недействителен", Ложь, , , + НЕ ПоказатьНедействительных); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьСодержимоеФормыПриИзмененииГруппы(Форма) + + Элементы = Форма.Элементы; + ГруппаВсеВнешниеПользователи = ПредопределенноеЗначение( + "Справочник.ГруппыВнешнихПользователей.ВсеВнешниеПользователи"); + + Если НЕ Форма.ХранимыеПараметры.ИспользоватьГруппы + ИЛИ Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока = ГруппаВсеВнешниеПользователи Тогда + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ВнешниеПользователиСписок, + "ВсеВнешниеПользователи", Истина); + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ВнешниеПользователиСписок, + "ВыбиратьИерархически", Истина); + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ВнешниеПользователиСписок, + "ГруппаВнешнихПользователей", ГруппаВсеВнешниеПользователи); + Иначе + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ВнешниеПользователиСписок, + "ВсеВнешниеПользователи", Ложь); + + #Если Сервер Тогда + Если ЗначениеЗаполнено(Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока) Тогда + ТекущиеДанные = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока, "ВсеОбъектыАвторизации"); + Иначе + ТекущиеДанные = Неопределено; + КонецЕсли; + #Иначе + ТекущиеДанные = Элементы.ГруппыВнешнихПользователей.ТекущиеДанные; + #КонецЕсли + + Если ТекущиеДанные <> Неопределено + И Не ТекущиеДанные.Свойство("ГруппировкаСтроки") + И ТекущиеДанные.ВсеОбъектыАвторизации Тогда + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ВнешниеПользователиСписок, + "ВыбиратьИерархически", Истина); + Иначе + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ВнешниеПользователиСписок, + "ВыбиратьИерархически", Форма.ВыбиратьИерархически); + КонецЕсли; + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ВнешниеПользователиСписок, + "ГруппаВнешнихПользователей", Элементы.ГруппыВнешнихПользователей.ТекущаяСтрока); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьЗначениеПараметраКомпоновкиДанных(Знач ВладелецПараметров, + Знач ИмяПараметра, + Знач ЗначениеПараметра) + + Для каждого Параметр Из ВладелецПараметров.Параметры.Элементы Цикл + Если Строка(Параметр.Параметр) = ИмяПараметра Тогда + + Если Параметр.Использование + И Параметр.Значение = ЗначениеПараметра Тогда + + Возврат; + КонецЕсли; + Прервать; + + КонецЕсли; + КонецЦикла; + + ВладелецПараметров.Параметры.УстановитьЗначениеПараметра(ИмяПараметра, ЗначениеПараметра); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриИзмененииНаСервере() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа(); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Перетаскивание пользователей. + +// Обработчик вопроса. +// +// Параметры: +// Ответ - КодВозвратаДиалога +// ДополнительныеПараметры - Структура: +// * ПараметрыПеретаскивания - Массив из СправочникСсылка.ВнешниеПользователи +// * Строка - СправочникСсылка.ГруппыВнешнихПользователей +// * Перемещение - ДействиеПеретаскивания +// +&НаКлиенте +Процедура ГруппыВнешнихПользователейПеретаскиваниеОбработкаВопроса(Ответ, ДополнительныеПараметры) Экспорт + + Если Ответ = КодВозвратаДиалога.Нет Тогда + Возврат; + КонецЕсли; + + СообщениеПользователю = ПеремещениеПользователяВНовуюГруппу( + ДополнительныеПараметры.ПараметрыПеретаскивания, ДополнительныеПараметры.Строка, ДополнительныеПараметры.Перемещение); + ГруппыВнешнихПользователейПеретаскиваниеЗавершение(СообщениеПользователю); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыВнешнихПользователейПеретаскиваниеЗавершение(СообщениеПользователю) + + Если СообщениеПользователю.Сообщение = Неопределено Тогда + Возврат; + КонецЕсли; + + Оповестить("Запись_ГруппыВнешнихПользователей"); + + Если СообщениеПользователю.ЕстьОшибки = Ложь Тогда + ПоказатьОповещениеПользователя( + НСтр("ru = 'Перемещение пользователей'"), , СообщениеПользователю.Сообщение, БиблиотекаКартинок.Информация32); + Иначе + СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 + |Следующие пользователи не были включены в выбранную группу: + |%2'"), СообщениеПользователю.Сообщение, СообщениеПользователю.Пользователи), РежимДиалогаВопрос.ОК); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораНазначения(МассивТипов, ДополнительныеПараметры) Экспорт + + ЗаполнитьПараметрыДинамическихСписков(МассивТипов); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидПользователейОчистка(Элемент, СтандартнаяОбработка) + + ЗаполнитьПараметрыДинамическихСписков(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..56fe15c8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,3576 @@ + + + + СвойстваОбработкаНесоответствия + 228 + + СвойстваКартинкаПредупреждения + 230 + + <key>ru</key> + <value>Свойства картинка предупреждения</value> + + true + true + + true + + + СвойстваКартинкаПредупрежденияРасширеннаяПодсказка + 232 + true + true + + true + + Label + true + true + + Left + + + + СвойстваКартинкаПредупрежденияКонтекстноеМеню + 231 + true + true + + true + + true + + true + true + false + + + CommonPicture.Предупреждение32 + + + + + СвойстваПояснениеИКоманды + 250 + + СвойстваПояснениеНесоответствия + 235 + + <key>ru</key> + <value>Следующие свойства пользователя информационной базы отличаются от указанных в этой форме: +%1. +Нажмите "Записать", чтобы устранить различия и не выводить это предупреждение.</value> + + true + true + + true + + + ru + Некоторые свойства пользователя информационной базы сохраняются в карточке внешнего пользователя. Между значениями этих свойств найдены различия. + + + СвойстваПояснениеНесоответствияРасширеннаяПодсказка + 237 + true + true + + true + + Label + true + true + + Left + + + + СвойстваПояснениеНесоответствияКонтекстноеМеню + 236 + true + true + + true + + true + + Label + true + false + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Свойства пояснение и команды</value> + + + СвойстваПояснениеИКомандыРасширеннаяПодсказка + 251 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Свойства обработка несоответствия</value> + + + СвойстваОбработкаНесоответствияРасширеннаяПодсказка + 229 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + СопоставлениеОбработкаНесоответствия + 169 + + СопоставлениеКартинкаПредупреждения + 170 + + <key>ru</key> + <value>Сопоставление картинка предупреждения</value> + + true + true + + true + + + СопоставлениеКартинкаПредупрежденияРасширеннаяПодсказка + 200 + true + true + + true + + Label + true + true + + Left + + + + СопоставлениеКартинкаПредупрежденияКонтекстноеМеню + 171 + true + true + + true + + true + + true + true + false + + + CommonPicture.Предупреждение32 + + + + + СопоставлениеПояснениеНесоответствия + 172 + + <key>ru</key> + <value>Пользователь информационной базы не найден. +Нажмите "Записать", чтобы устранить проблему и не выводить это предупреждение.</value> + + true + true + + true + + + СопоставлениеПояснениеНесоответствияРасширеннаяПодсказка + 201 + true + true + + true + + Label + true + true + + Left + + + + СопоставлениеПояснениеНесоответствияКонтекстноеМеню + 173 + true + true + + true + + true + + Label + true + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Сопоставление обработка несоответствия</value> + + + СопоставлениеОбработкаНесоответствияРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ГруппаШапка + 287 + + ГруппаНаименование + 332 + + ОбъектАвторизации + 164 + true + true + + true + + + + Объект.ОбъектАвторизации + + + + OnChange + ОбъектАвторизацииПриИзменении + + + ОбъектАвторизацииExtendedTooltip + 202 + true + true + + true + + Label + true + true + + Left + + + + ОбъектАвторизацииКонтекстноеМеню + 165 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 45 + true + true + true + true + true + true + + + + Недействителен + 190 + true + true + + true + + + + Объект.Недействителен + + + Right + Button + + OnChange + НедействителенПриИзменении + + + НедействителенExtendedTooltip + 203 + true + true + + true + + Label + true + true + + Left + + + + НедействителенКонтекстноеМеню + 191 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование</value> + + + ГруппаНаименованиеРасширеннаяПодсказка + 333 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 288 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаВходВПрограммуРазрешен + 264 + + ВходВПрограммуРазрешен + 99 + true + true + + true + + + + ВходВПрограммуРазрешен + + + Right + + ru + Разрешить вход внешнего пользователя в программу +указанными способами аутентификации. + + + OnChange + ВходВПрограммуРазрешенПриИзменении + + + ВходВПрограммуРазрешенРасширеннаяПодсказка + 204 + true + true + + true + + Label + true + true + + Left + + + + ВходВПрограммуРазрешенКонтекстноеМеню + 100 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаИзменитьОграничение + 346 + + ИзменитьОграничениеНаВходВПрограмму + 344 + true + true + + true + + + ИзменитьОграничениеНаВходВПрограммуРасширеннаяПодсказка + 345 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ИзменитьОграничениеНаВходВПрограмму + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Изменить ограничение</value> + + + ГруппаИзменитьОграничениеРасширеннаяПодсказка + 347 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + РекомендуетсяПроверитьНастройкиДляВхода + 269 + + <key>ru</key> + <value>Рекомендуется проверить настройки для входа</value> + + true + true + + true + + + ru + Перед разрешением входа в программу рекомендуется проверить настройки, т.к. пользователь +был введен не администратором, а ответственным за список внешних пользователей. + + Button + + РекомендуетсяПроверитьНастройкиДляВходаРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + + РекомендуетсяПроверитьНастройкиДляВходаКонтекстноеМеню + 270 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Вход в программу разрешен</value> + + + ГруппаВходВПрограммуРазрешенРасширеннаяПодсказка + 265 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + СтраницыГлавноеИКомментарий + 281 + + СтраницаГлавное + 283 + + СвойстваПользователяИБ + 65 + + ОсновныеСвойства + 75 + + ИмяПереключениеОтметкиНезаполненного + 238 + + ИмяСОтметкойНезаполненного + 240 + + ПользовательИБИмя1 + 242 + true + true + + true + + + + ПользовательИБИмя + + + + OnChange + ПользовательИБИмяПриИзменении + + + ПользовательИБИмя1РасширеннаяПодсказка + 244 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБИмя1КонтекстноеМеню + 243 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Имя с отметкой незаполненного</value> + + + ИмяСОтметкойНезаполненногоРасширеннаяПодсказка + 241 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ИмяБезОтметкиНезаполненного + 245 + + ПользовательИБИмя2 + 247 + true + true + + true + + + + ПользовательИБИмя + + + + OnChange + ПользовательИБИмяПриИзменении + + + ПользовательИБИмя2РасширеннаяПодсказка + 249 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБИмя2КонтекстноеМеню + 248 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Имя без отметки незаполненного</value> + + + ИмяБезОтметкиНезаполненногоРасширеннаяПодсказка + 246 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Имя (переключение отметки незаполненного)</value> + + + ИмяПереключениеОтметкиНезаполненногоРасширеннаяПодсказка + 239 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + СвойстваАутентификации1СПредприятия + 193 + + ПользовательИБАутентификацияСтандартная + 194 + true + true + + true + + + + ПользовательИБАутентификацияСтандартная + + + Right + + ru + Способ входа в программу с помощью имени и пароля, +указанного для пользователя 1С:Предприятия. + + + OnChange + ПользовательИБАутентификацияСтандартнаяПриИзменении + + + ПользовательИБАутентификацияСтандартнаяРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБАутентификацияСтандартнаяКонтекстноеМеню + 195 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + Left + + + + ГруппаОтступ + 274 + + Отступ + 276 + true + true + + true + + + ОтступРасширеннаяПодсказка + 278 + true + true + + true + + Label + true + true + + Left + + + + ОтступКонтекстноеМеню + 277 + true + true + + true + + true + + Label + true + true + + Left + + + + ПараметрыАутентификации1СПредприятия + 196 + + ГруппаПароль + 319 + + НадписьНаличиеПароля + 321 + + <key>ru</key> + <value>Пустой пароль</value> + + true + true + + true + + + НадписьНаличиеПароляРасширеннаяПодсказка + 323 + true + true + + true + + Label + true + true + + Left + + + + НадписьНаличиеПароляКонтекстноеМеню + 322 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + + СменитьПароль + 324 + true + true + + true + + + СменитьПарольРасширеннаяПодсказка + 325 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.СменитьПароль + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Пароль</value> + + + ГруппаПарольРасширеннаяПодсказка + 320 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ПотребоватьСменуПароляПриВходе + 326 + true + true + + true + + + + ПотребоватьСменуПароляПриВходе + + + Right + Button + + OnChange + ПотребоватьСменуПароляПриВходеПриИзменении + + + ПотребоватьСменуПароляПриВходеРасширеннаяПодсказка + 328 + true + true + + true + + Label + true + true + + + URLProcessing + ПотребоватьСменуПароляПриВходеРасширеннаяПодсказкаОбработкаНавигационнойСсылки + + Left + + + + ПотребоватьСменуПароляПриВходеКонтекстноеМеню + 327 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПользовательИБЗапрещеноИзменятьПароль + 51 + true + true + + true + + + + ПользовательИБЗапрещеноИзменятьПароль + + + Right + + ru + Запрещает изменение пароля +внешнему пользователю. + + + OnChange + ПользовательИБЗапрещеноИзменятьПарольПриИзменении + + + ПользовательИБЗапрещеноИзменятьПарольРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБЗапрещеноИзменятьПарольКонтекстноеМеню + 52 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПользовательИБЗапрещеноВосстанавливатьПароль + 361 + true + true + + true + + + + ПользовательИБЗапрещеноВосстанавливатьПароль + + + Right + + ПользовательИБЗапрещеноВосстанавливатьПарольРасширеннаяПодсказка + 363 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБЗапрещеноВосстанавливатьПарольКонтекстноеМеню + 362 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Параметры аутентификации 1С:Предприятия</value> + + + ПараметрыАутентификации1СПредприятияРасширеннаяПодсказка + 210 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Отступ</value> + + + ГруппаОтступРасширеннаяПодсказка + 275 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Свойства аутентификации 1С предприятия</value> + + + СвойстваАутентификации1СПредприятияExtendedTooltip + 208 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + СвойстваАутентификацииOpenID + 279 + + ПользовательИБАутентификацияOpenID + 197 + true + true + + true + + + + ПользовательИБАутентификацияOpenID + + + Right + + ru + Способ входа в программу с помощью имени, указанного для пользователя 1С:Предприятия, +которое передается службе аутентификации по протоколу OpenID. +Используется только при подключении через веб-сервер (адрес службы должен быть настроен). + + + OnChange + ПользовательИБАутентификацияOpenIDПриИзменении + + + ПользовательИБАутентификацияOpenIDРасширеннаяПодсказка + 214 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБАутентификацияOpenIDКонтекстноеМеню + 198 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Свойства аутентификации open ID</value> + + + СвойстваАутентификацииOpenIDРасширеннаяПодсказка + 280 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + СвойстваДополнительные + 192 + + ПользовательИБЯзык + 348 + true + true + + true + + + + ПользовательИБЯзык + + + + OnChange + ПользовательИБЯзыкПриИзменении + + + ПользовательИБЯзыкРасширеннаяПодсказка + 350 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБЯзыкКонтекстноеМеню + 349 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Свойства дополнительные</value> + + false + + СвойстваДополнительныеРасширеннаяПодсказка + 215 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Основные свойства</value> + + + ОсновныеСвойстваExtendedTooltip + 206 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + РедактированиеИлиПросмотрРолей + 168 + + УстановитьРолиНепосредственно + 166 + true + true + + true + + + + Объект.УстановитьРолиНепосредственно + + + Right + + OnChange + УстановитьРолиНепосредственноПриИзменении + + + УстановитьРолиНепосредственноExtendedTooltip + 218 + true + true + + true + + Label + true + true + + Left + + + + УстановитьРолиНепосредственноКонтекстноеМеню + 167 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ОтображениеРолей + 103 + + Роли + 174 + + <key>ru</key> + <value>Разрешенные действия (роли)</value> + + true + true + + true + + + Роли + + false + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + РолиКолонок + 177 + + РолиПометка + 185 + true + true + + true + + + + Роли.Пометка + + + + OnChange + РолиПометкаПриИзменении + + + РолиПометкаExtendedTooltip + 226 + true + true + + true + + Label + true + true + + Left + + + + РолиПометкаКонтекстноеМеню + 186 + true + true + + true + + true + + CheckBoxField + Left + true + + + + РолиСиноним + 187 + true + true + + true + + + + Роли.Синоним + + + + РолиСинонимExtendedTooltip + 227 + true + true + + true + + Label + true + true + + Left + + + + РолиСинонимКонтекстноеМеню + 188 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Роли колонок</value> + + + РолиКолонокExtendedTooltip + 225 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + РолиКоманднаяПанель + 176 + + РолиУстановитьФлажки + 182 + true + true + + true + + false + + РолиУстановитьФлажкиExtendedTooltip + 220 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьРоли + Auto + true + true + UserCmds + Auto + + + РолиСнятьФлажки + 183 + true + true + + true + + false + + РолиСнятьФлажкиExtendedTooltip + 221 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИсключитьРоли + Auto + true + true + UserCmds + Auto + + + РолиПоказатьТолькоВыбранныеРоли + 184 + true + true + + true + + false + + РолиПоказатьТолькоВыбранныеРолиExtendedTooltip + 222 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьТолькоВыбранныеРоли + Auto + true + true + UserCmds + Auto + + + РолиПоказатьПодсистемыРолей + 189 + true + true + + true + + + РолиПоказатьПодсистемыРолейExtendedTooltip + 223 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ГруппировкаРолейПоПодсистемам + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + РолиСтандартныеКоманды + 289 + true + true + + true + + + <key>ru</key> + <value>Роли стандартные команды</value> + + + РолиСтандартныеКомандыРасширеннаяПодсказка + 290 + true + true + + true + + Label + true + true + + Left + + + + Item.Роли + + + true + true + + true + + Left + + + true + true + + true + + РолиСтрокаПоиска + 291 + + РолиСтрокаПоискаРасширеннаяПодсказка + 293 + true + true + + true + + Label + true + true + + Left + + + + РолиСтрокаПоискаКонтекстноеМеню + 292 + true + true + + true + + true + + + true + + + + true + true + + true + + РолиСостояниеПросмотра + 294 + + РолиСостояниеПросмотраРасширеннаяПодсказка + 296 + true + true + + true + + Label + true + true + + Left + + + + РолиСостояниеПросмотраКонтекстноеМеню + 295 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РолиУправлениеПоиском + 297 + + РолиУправлениеПоискомРасширеннаяПодсказка + 299 + true + true + + true + + Label + true + true + + Left + + + + РолиУправлениеПоискомКонтекстноеМеню + 298 + true + true + + true + + true + + SearchControlAddition + + true + + + + РолиExtendedTooltip + 224 + true + true + + true + + Label + true + true + + Left + + + + РолиКонтекстноеМеню + 175 + true + true + + true + + + Tree + true + true + true + 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true + + Роли.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + + true + true + + true + + + <key>ru</key> + <value>Список ролей</value> + + + ОтображениеРолейExtendedTooltip + 219 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Редактирование или просмотр ролей</value> + + + РедактированиеИлиПросмотрРолейExtendedTooltip + 217 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Свойства пользователя информационной базы</value> + + + СвойстваПользователяИБExtendedTooltip + 205 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Главное</value> + + + СтраницаГлавноеРасширеннаяПодсказка + 284 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаКонтактнаяИнформация + 357 + + ГруппаКонтактнаяИнформация + 359 + true + true + + true + + + <key>ru</key> + <value>Контактная информация</value> + + + ГруппаКонтактнаяИнформацияРасширеннаяПодсказка + 360 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Адреса, телефоны</value> + + + СтраницаКонтактнаяИнформацияРасширеннаяПодсказка + 358 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаДополнительныеРеквизиты + 300 + true + true + + true + + + <key>ru</key> + <value>Дополнительные реквизиты</value> + + + СтраницаДополнительныеРеквизитыРасширеннаяПодсказка + 301 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаКомментарий + 285 + + Комментарий + 257 + true + true + + true + + + + Объект.Комментарий + + + None + + КомментарийExtendedTooltip + 259 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 258 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + СтраницаКомментарийРасширеннаяПодсказка + 286 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы главное и комментарий</value> + + + СтраницыГлавноеИКомментарийРасширеннаяПодсказка + 282 + true + true + + true + + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + СтраницыГлавноеИКомментарийПриСменеСтраницы + + TabsOnTop + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 351 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 352 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + true + true + true + UserCmds + + StdPicture.WriteAndClose + + Auto + + + КомандыФормы + 353 + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыРасширеннаяПодсказка + 354 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 355 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 356 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + WriteAndClose + Use + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ВнешниеПользователи + + + true + + + true + +
true
+ true +
+ + ПользовательИБЯзык + + <key>ru</key> + <value>Язык интерфейса +программы</value> + + 10 + + String + + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + + ПользовательИБЗапрещеноИзменятьПароль + + <key>ru</key> + <value>Пользователю запрещено изменять пароль</value> + + 13 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + + ПользовательИБИмя + + <key>ru</key> + <value>Имя (для входа)</value> + + 16 + + String + + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + + ВходВПрограммуРазрешен + + <key>ru</key> + <value>Вход в программу разрешен</value> + + 17 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + + ПользовательИБСуществует + 23 + + Boolean + + + true + + + true + + true + + + ГруппаНовогоВнешнегоПользователя + 2 + + CatalogRef.ГруппыВнешнихПользователей + + + true + + + true + + + + ДействияВФорме + 8 + + + true + + + true + + + + ТекущееПредставлениеОбъектаАвторизации + 18 + + String + + + + true + + + true + + + + ТипОбъектовАвторизации + 5 + + + true + + + true + + + + ОбъектАвторизацииЗаданПриОткрытии + 6 + + Boolean + + + true + + + true + + + + ЕстьСопоставлениеСНесуществующимПользователемИБ + 9 + + Boolean + + + true + + + true + + + + ПользовательИБРоли + 11 + + ValueTable + + + true + + + true + + + Роль + 1 + + String + + 150 + + + + true + + + true + + + + + Роли + + <key>ru</key> + <value>Роли</value> + + 12 + + ValueTree + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 1 + + Boolean + + + true + + + true + + + + Синоним + + <key>ru</key> + <value>Разрешенное действие (роль)</value> + + 2 + + String + + + + true + + + true + + + + НомерКартинки + 3 + + Number + + 1 + true + + + + true + + + true + + + + Имя + 4 + + String + + + + true + + + true + + + + ЭтоРоль + 5 + + Boolean + + + true + + + true + + + + ЭтоНедоступнаяРоль + 6 + + Boolean + + + true + + + true + + + + ЭтоНесуществующаяРоль + 7 + + Boolean + + + true + + + true + + + + + ЗапретРедактированияРолей + 14 + + Boolean + + + true + + + true + + + + ПоказатьПодсистемыРолей + 15 + + Boolean + + + true + + + true + + + ПоказатьПодсистемыРолей + + + + ЗначениеКопирования + 20 + + CatalogRef.ВнешниеПользователи + + + true + + + true + + + + ПользовательИБАутентификацияOpenID + + <key>ru</key> + <value>Аутентификация по протоколу OpenID</value> + + 21 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + + ПользовательИБАутентификацияСтандартная + + <key>ru</key> + <value>Аутентификация 1С:Предприятия</value> + + 22 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + + НачальноеОписаниеПользователяИБ + 24 + + + true + + + true + + + + ПользовательИБПолноеИмя + 25 + + String + + + + true + + + true + + true + + + УровеньДоступа + 26 + + + true + + + true + + + + ПользовательИБАутентификацияОС + 29 + + Boolean + + + true + + + true + + true + + + ПользовательИБПользовательОС + 27 + + String + + + + true + + + true + + true + + + ПользовательИБРежимЗапуска + 30 + + String + + + + true + + + true + + true + + + ПользовательИБПоказыватьВСпискеВыбора + 31 + + Boolean + + + true + + + true + + true + + + ПриЧтенииВходВПрограммуРазрешен + 19 + + Boolean + + + true + + + true + + + + ВходВПрограммуРазрешенЗначениеПрямогоИзменения + 28 + + Boolean + + + true + + + true + + + + ПотребоватьСменуПароляПриВходе + + <key>ru</key> + <value>Потребовать смену пароля при входе</value> + + 33 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + + СрокДействия + 34 + + Date + + Date + + + + true + + + true + + true + + + СрокДействияНеОграничен + 35 + + Boolean + + + true + + + true + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВхода + 36 + + Number + + 3 + true + + + + true + + + true + + + + ПользовательИБИмяЗначениеПрямогоИзменения + 37 + + String + + + + true + + + true + + + + ПользовательИБПароль + 38 + + + true + + + true + + true + + + ПользовательИБСтарыйПароль + 39 + + + true + + + true + + + + ПользовательИБОсновнойИнтерфейс + 40 + + String + + + + true + + + true + + true + + + ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения + 3 + + Boolean + + + true + + + true + + + + ПользовательИБАдресЭлектроннойПочты + 4 + + String + + 256 + + + + true + + + true + + + + ИмяРеквизитаСПочтойДляВосстановленияПароля + 7 + + String + + + + true + + + true + + + + ПарольДляПодтвержденияИзмененияПочты + 32 + + + true + + + true + + + + ПользовательИБЗапрещеноВосстанавливатьПароль + + <key>ru</key> + <value>Пользователю запрещено восстанавливать пароль</value> + + 41 + + Boolean + + + true + + + true + + true + + + ПоказатьТолькоВыбранныеРоли + + <key>ru</key> + <value>Только выбранные</value> + + 3 + + ru + Показать только выбранные роли + + + true + + + CommonPicture.ПоказатьТолькоВыбранныеРоли + + + + ПоказатьТолькоВыбранныеРоли + + + FunctionalOption.ИспользоватьВнешнихПользователей + TextPicture + DontUse + + + ИсключитьРоли + + <key>ru</key> + <value>Исключить роли</value> + + 5 + + ru + Исключить роли + + + true + + + StdPicture.UncheckAll + + + + ИсключитьРоли + + + FunctionalOption.ИспользоватьВнешнихПользователей + true + DontUse + + + ВключитьРоли + + <key>ru</key> + <value>Включить роли</value> + + 6 + + ru + Включить роли + + + true + + + StdPicture.CheckAll + + + + ВключитьРоли + + + FunctionalOption.ИспользоватьВнешнихПользователей + true + DontUse + + + ГруппировкаРолейПоПодсистемам + + <key>ru</key> + <value>По подсистемам</value> + + 1 + + ru + Группировать список ролей по подсистемам + + + true + + + CommonPicture.Подсистема + + + + ГруппировкаРолейПоПодсистемам + + + FunctionalOption.ИспользоватьВнешнихПользователей + TextPicture + DontUse + + + СменитьПароль + + <key>ru</key> + <value>Сменить пароль...</value> + + 2 + + true + + + + СменитьПароль + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + ИзменитьОграничениеНаВходВПрограмму + + <key>ru</key> + <value>Изменить ограничение</value> + + 4 + + true + + + + ИзменитьОграничениеНаВходВПрограмму + + + FunctionalOption.ИспользоватьВнешнихПользователей + DontUse + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 7 + + ru + Записать объект и закрыть форму + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + ГруппаНовогоВнешнегоПользователя + + CatalogRef.ГруппыВнешнихПользователей + + + + ИдентификаторПользователяИБ + + UUID + + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..7c14ad48 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,80 @@ + +

Описание свойств внешнего пользователя.

+

Для ввода или редактирования сведений о внешнем пользователе необходимы права администрирования или права ответственного за список внешних пользователей

+

Вход в программу разрешает только администратор.

+

Ответственный за список внешних пользователей может выполнять ограниченное ведение списка Внешние пользователи, настройку внешнего пользователя до разрешения входа в программу администратором, может использовать команду Внешний доступ, редактировать списки Внешние пользователи и Группы внешних пользователей, а также права доступа внешних пользователей.

+

В остальных случаях доступен только просмотр сведений о себе, а также возможность изменить свой Пароль (в зависимости от настроек администратора), язык программы и контактную информацию.

+

В распределенной информационной базе вход в программу настраивается отдельно для каждой из информационных баз программы.

+

Рекомендации по созданию пароля для входа в программу

+

Хороший пароль должен:

+
  • быть малопонятным выражением. +
  • +
  • состоять не менее чем из восьми символов. +
  • +
  • включать в себя: +
    • заглавные латинские буквы +
    • +
    • прописные латинские буквы +
    • +
    • цифры +
    • +
    • символы (подчеркивание, скобки и т.д.)

Нежелательно, чтобы пароль совпадал с именем пользователя, полностью состоял из цифр, содержал понятные слова, содержал чередующиеся группы символов.

+
  • Примеры хороших паролей:
    “nj7{jhjibq*Gfhjkm,
    F5”njnGhkmNj;t{HI. +
  • +
  • Примеры неудачных паролей:
    Иванов,
    qwerty,
    12345678,
    123123123.

Ввод внешнего пользователя (при наличии права)

+

Если внешнего пользователя ввел ответственный за список и заполнил имя для входа, тогда администратору в карточке внешнего пользователя выводится рекомендация проверить настройки для входа. После разрешения входа рекомендация скрывается, а ответственный более не может изменить настройки для входа, кроме отключения разрешения на вход в программу. Для того чтобы посмотреть всех таких внешних пользователей, которых подготовил ответственный, можно установить отбор в списке по полю Подготовлен.

+
  • Внешний пользователь связан с каким-то объектом программы (например, контрагентом, сотрудником и т.п.), указанным в поле Объект. При вводе по кнопке  Внешний доступ (рекомендуется) поле Объект заполняется автоматически. +
  • +
  • При вводе внешнего пользователя по команде Создать из списка внешних пользователей необходимо заполнить поле Объект вручную. Для этого нажмите кнопку  Выбрать, выберите список программы, затем выберите в этом списке нужный объект, с которым связан внешний пользователь. Поле Объект будет отображаться в программе в различных списках в качестве полного имени внешнего пользователя. +
  • +
  • Флажок Недействителен по умолчанию снят для всех внешних пользователей. Но если внешний пользователь по каким-либо причинам более не работает с программой, и в то же время его нельзя удалить из-за наличия ссылок на него из других объектов программы, то рекомендуется включить флажок Недействителен. Такого внешнего пользователя нельзя выбрать, и он не отображается в списке внешних пользователей. +
  • +
  • На вкладке Главное заполните основные сведения о внешнем пользователе: +
    • Имя (для входа) - короткое имя, используется для входа в программу. +
    • +
    • Аутентификация 1С:Предприятия - по умолчанию флажок включен и активно поле для ввода пароля. +
      • Состояние аутентификации 1С:Предприятия выводится под флажком.
    • +
    • Для ввода пароля нажмите Установить Пароль, введите пароль для входа в программу. В целях безопасности данных всегда заполняйте это поле. +
      • Если данные внешнего пользователя еще не были записаны, выводится сообщение. Нажмите кнопку Записать. +
      • +
      • После установки пароля состояние аутентификации меняется на Пароль установлен, кнопка меняет значение на Сменить пароль.
    • +
    • Потребовать установку пароля при входе - включите флажок, для того чтобы внешний пользователь при входе в программу ввел свой пароль, который будет известен только ему. +
    • +
    • Пользователю запрещено изменять пароль - при необходимости включите флажок и запретите внешнему пользователю менять свой пароль. +
    • +
    • Аутентификация по протоколу OpenID - включите флажок, для того чтобы разрешить внешнему пользователю использовать единую учетную запись по протоколу OpenID. При этом можно отключить флажок Аутентификация 1С: Предприятия.
  • +
  • На вкладке Комментарий напишите дополнительную информацию о внешнем пользователе.

Включение внешнего пользователя в группы

+
  • Если в программе включено использование групп пользователей, то внешнего пользователя во время ввода можно включить в одну или несколько групп. +
  • +
  • Нажмите Группы на панели навигации, с помощью флажков выберите одну или несколько групп. +
  • +
  • Для того чтобы быстро отменить свой выбор, нажмите Исключить из всех групп.

Права доступа внешнего пользователя 

+
  • Права доступа могут также настраиваться ответственным за список внешних пользователей, при этом часть прав доступа (административные права) для него закрыта. В зависимости от программы для настройки прав доступа предусмотрена одна из возможностей: +
    • Нажмите Права доступа на панели навигации, для того чтобы включить внешнего пользователя в одну или несколько групп доступа. Их необходимо выбрать из списка. +
    • +
    • В списке Разрешенные действия (роли) можно назначить внешнему пользователю одну или несколько ролей, которые в совокупности образуют его персональные настройки прав доступа. Роли могут соответствовать как различным должностным обязанностям (или видам деятельности) пользователей, так и более мелким функциям. Выберите нужные роли с помощью флажков.

Разрешение входа в программу (только для администратора)

+
  • Для входа внешнего пользователя в программу нужно включить флажок Вход в программу разрешен. При этом должны быть заданы необходимые свойства: имя (для входа), пароль и другие параметры авторизации. +
  • +
  • +
    В программе возможно прекращение работы пользователей, которым сняли флажок Вход в программу разрешен, интерактивно или программно в связи с окончанием срока действия.
    +
  • +
  • +
    Открытые сеансы пользователей автоматически завершаются не более чем через 25 минут после того, как вход в программу был запрещен.

Ограничения на вход в программу

+

Перейдите по ссылке, для того чтобы Установить ограничения. Вход может быть разрешен:

+
  • +
    Согласно общим настройкам входа - установлено по умолчанию;
    +
  • +
  • +
    Без ограничения срока;
    +
  • +
  • +
    Вход разрешен до (установите срок - введите дату вручную или выберите из календаря с помощью кнопки ). Для защиты от несанкционированного доступа к программе у всех внешних пользователей добавлен срок действия, который позволяет автоматически отключить внешнего пользователя по прошествии указанной даты;
    +
  • +
  • Запретить вход, если не работает более (укажите количество дней) - если внешний пользователь не войдет в программу больше указанного количества дней, то вход в программу будет невозможен. +
    • +
      В этом случае внешний пользователь должен будет обратиться к администратору для возобновления работы в программе. 
  • +
  • +
    Ограничения отражаются в карточке пользователя, также на всех внешних пользователей их можно просмотреть в отчете Сведения о внешних пользователях.

Управление настройками внешнего пользователя

+
  • Программа запоминает настройки каждого пользователя во время его работы. Для того чтобы просмотреть, скопировать или удалить настройки внешнего пользователя (удалять настройки приходится, если из-за этих неправильных настроек работать в программе становится невозможно), нажмите Настройки на панели навигации.

Предупреждения программы

+
  • В случае если свойства внешнего пользователя отличаются от свойств пользователя информационной базы, связанного с внешним, то программа выводит предупреждение с перечнем этих свойств. Предлагается записать данные, для того чтобы устранить различия.

См. также

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..929e72ea --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,1852 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не ПользователиСлужебный.ВнешниеПользователиВнедрены() Тогда + Элементы.ОбъектАвторизации.Доступность = Ложь; + КонецЕсли; + + // Заполнение вспомогательных данных. + + ЗапретРедактированияРолей = ПользователиСлужебный.ЗапретРедактированияРолей(); + + // Заполнение списка выбора языка. + Если Метаданные.Языки.Количество() < 2 Тогда + Элементы.ПользовательИБЯзык.Видимость = Ложь; + Иначе + Для каждого МетаданныеЯзыка Из Метаданные.Языки Цикл + Элементы.ПользовательИБЯзык.СписокВыбора.Добавить( + МетаданныеЯзыка.Имя, МетаданныеЯзыка.Синоним); + КонецЦикла; + КонецЕсли; + + // Подготовка к интерактивным действиям с учетом сценариев открытия формы. + УровеньДоступа = ПользователиСлужебный.УровеньДоступаКСвойствамПользователя(Объект); + + УстановитьПривилегированныйРежим(Истина); + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + + // Создание нового элемента. + Если Параметры.ГруппаНовогоВнешнегоПользователя + <> Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + + ГруппаНовогоВнешнегоПользователя = Параметры.ГруппаНовогоВнешнегоПользователя; + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда + // Копирование элемента. + ЗначениеКопирования = Параметры.ЗначениеКопирования; + Объект.Наименование = ""; + Объект.ОбъектАвторизации = Неопределено; + ПользовательИБАдресЭлектроннойПочты = ""; + + Если Не ПользователиСлужебный.УровеньДоступаПользователяВыше(ЗначениеКопирования, УровеньДоступа) Тогда + ПрочитатьПользователяИБ(ЗначениеЗаполнено(ЗначениеКопирования.ИдентификаторПользователяИБ)); + Иначе + ПрочитатьПользователяИБ(); + КонецЕсли; + + Если Не УровеньДоступа.ИзменениеРазрешенияНаВход Тогда + ВходВПрограммуРазрешен = Ложь; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Ложь; + КонецЕсли; + Иначе + // Добавление элемента. + Если Параметры.Свойство("ОбъектАвторизацииНовогоВнешнегоПользователя") Тогда + + Объект.ОбъектАвторизации = Параметры.ОбъектАвторизацииНовогоВнешнегоПользователя; + ОбъектАвторизацииЗаданПриОткрытии = ЗначениеЗаполнено(Объект.ОбъектАвторизации); + + ИначеЕсли ЗначениеЗаполнено(ГруппаНовогоВнешнегоПользователя) Тогда + + НазначениеГруппыВнешнихПользователей = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ГруппаНовогоВнешнегоПользователя, "Назначение").Выгрузить(); + + ОдинТипПользователей = НазначениеГруппыВнешнихПользователей.Количество() = 1; + + Если ОдинТипПользователей Тогда + Объект.ОбъектАвторизации = НазначениеГруппыВнешнихПользователей[0].ТипПользователей; + КонецЕсли; + + Элементы.ОбъектАвторизации.ВыбиратьТип = Не ОдинТипПользователей; + КонецЕсли; + + // Чтение начальных значений свойств пользователя ИБ. + ПрочитатьПользователяИБ(); + + Если Не ЗначениеЗаполнено(Параметры.ИдентификаторПользователяИБ) Тогда + ПользовательИБАутентификацияСтандартная = Истина; + + Если УровеньДоступа.ИзменениеРазрешенияНаВход Тогда + ВходВПрограммуРазрешен = Истина; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если УровеньДоступа.УправлениеСписком + И Объект.ОбъектАвторизации <> Неопределено Тогда + + ПользовательИБИмя = ПользователиСлужебныйКлиентСервер.ПолучитьКраткоеИмяПользователяИБ( + ТекущееПредставлениеОбъектаАвторизации); + + ПользовательИБПолноеИмя = Объект.Наименование; + КонецЕсли; + Иначе + // Открытие существующего элемента. + ПрочитатьПользователяИБ(); + КонецЕсли; + + УстановитьПривилегированныйРежим(Ложь); + + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриСозданииФормы", Истина); + НачальноеОписаниеПользователяИБ = НачальноеОписаниеПользователяИБ(); + + НастроитьФорму(Объект, Истина); + + Если ОбъектАвторизацииЗаданПриОткрытии Тогда + ОбъектАвторизацииПриИзмененииНаКлиентеНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + Элементы.ГруппаШапка.ТолькоПросмотр = Истина; + Элементы.СтраницаДополнительныеРеквизиты.ТолькоПросмотр = Истина; + Элементы.СтраницаКомментарий.ТолькоПросмотр = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "СтраницаДополнительныеРеквизиты"); + ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина); + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры); + КонецЕсли; + + ПарольДляПодтвержденияИзмененияПочты = Неопределено; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + + Если МодульУправлениеКонтактнойИнформацией.СодержитКонтактнуюИнформацию(Объект.ОбъектАвторизации) Тогда + ИмяРеквизитаОбъектАвторизации = ИмяРеквизитаОбъектАвторизации(ТипЗнч(Объект.ОбъектАвторизации)); + + МодульУправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, ЭтотОбъект[ИмяРеквизитаОбъектАвторизации]); + + Если ПользователиСлужебный.ДоступнаНастройкаВосстановленияПароля(УровеньДоступа) Тогда + + Если Не ПользователиСлужебный.ИнтерактивноЗапрашиватьВводПароля(УровеньДоступа, Объект) Тогда + ПарольДляПодтвержденияИзмененияПочты = ""; + КонецЕсли; + + ИмяРеквизитаСПочтойДляВосстановленияПароля = МодульУправлениеКонтактнойИнформацией.ОпределитьЭлементСПочтойДляВосстановленияПароля( + ЭтотОбъект, + ПользовательИБАдресЭлектроннойПочты, + ПользователиСлужебный.ДоступноРедактированиеПочтыДляВосстановленияПароля(УровеньДоступа, Объект), + Истина); + + КонецЕсли; + + Элементы.ГруппаКонтактнаяИнформация.Доступность = Пользователи.ЭтоПолноправныйПользователь(); + + КонецЕсли; + КонецЕсли; + + Если Не ПользователиСлужебныйПовтИсп.Настройки().ОбщиеНастройкиВхода Тогда + Элементы.ГруппаИзменитьОграничение.Видимость = Ложь; + КонецЕсли; + + Если Не ПользователиСлужебныйПовтИсп.ВерсияПредприятияПоддерживаетВосстановлениеПаролей() + Или ОбщегоНазначения.РазделениеВключено() Тогда + Элементы.ПользовательИБЗапрещеноВосстанавливатьПароль.Видимость = Ложь; + КонецЕсли; + + Элементы.ПотребоватьСменуПароляПриВходе.РасширеннаяПодсказка.Заголовок = + ПользователиСлужебный.ПодсказкаПотребоватьСменуПароляПриВходе(Истина); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ФормаЗаписатьИЗакрыть.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + Если МодульУправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда + ОбновитьЭлементыДополнительныхРеквизитов(); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + + НастроитьФорму(ТекущийОбъект); + + ТекущееПредставлениеОбъектаАвторизации = Строка(Объект.ОбъектАвторизации); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + // СтандартныеПодсистемы.КонтактнаяИнформация + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + Если МодульУправлениеКонтактнойИнформацией.СодержитКонтактнуюИнформацию(Объект.ОбъектАвторизации) Тогда + ИмяРеквизитаОбъектАвторизации = ИмяРеквизитаОбъектАвторизации(ТипЗнч(Объект.ОбъектАвторизации)); + МодульУправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ЭтотОбъект[ИмяРеквизитаОбъектАвторизации]); + + Если ТипЗнч(УровеньДоступа) = Тип("Структура") И ПользователиСлужебный.ДоступнаНастройкаВосстановленияПароля(УровеньДоступа) Тогда + ИмяРеквизитаСПочтойДляВосстановленияПароля = МодульУправлениеКонтактнойИнформацией.ОпределитьЭлементСПочтойДляВосстановленияПароля( + ЭтотОбъект, + ПользовательИБАдресЭлектроннойПочты, + ПользователиСлужебный.ДоступноРедактированиеПочтыДляВосстановленияПароля(УровеньДоступа, Объект.ОбъектАвторизации), Истина); + КонецЕсли; + + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.КонтактнаяИнформация + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + ОчиститьСообщения(); + ЗаголовокВопросов = НСтр("ru = 'Запись пользователя информационной базы'"); + + // Копирование прав пользователя. + Если ЗначениеЗаполнено(ЗначениеКопирования) + И Не ЗначениеЗаполнено(Объект.Ссылка) + И ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") + И (Не ПараметрыЗаписи.Свойство("НеКопироватьПраваПользователя") + И Не ПараметрыЗаписи.Свойство("КопироватьПраваПользователя")) Тогда + + Отказ = Истина; + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросОКопированииПрав", ЭтотОбъект, ПараметрыЗаписи), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Скопировать также права пользователя ""%1""?'"), Строка(ЗначениеКопирования)), + РежимДиалогаВопрос.ДаНет, + , + , + ЗаголовокВопросов); + Возврат; + КонецЕсли; + + Если ДействияВФорме.Роли = "Редактирование" + И Объект.УстановитьРолиНепосредственно + И ПользовательИБРоли.Количество() = 0 Тогда + + Если НЕ ПараметрыЗаписи.Свойство("СПустымСпискомРолей") Тогда + Отказ = Истина; + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросОЗаписиСПустымСпискомРолей", ЭтотОбъект, ПараметрыЗаписи), + НСтр("ru = 'Пользователю информационной базы не установлено ни одной роли. Продолжить?'"), + РежимДиалогаВопрос.ДаНет, + , + , + НСтр("ru = 'Запись пользователя информационной базы'")); + Возврат; + КонецЕсли; + КонецЕсли; + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + Если ЗначениеЗаполнено(ИмяРеквизитаСПочтойДляВосстановленияПароля) + И ПользовательИБАдресЭлектроннойПочты <> ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля] Тогда + + Если ПарольДляПодтвержденияИзмененияПочты = Неопределено Тогда + + Отказ = Истина; + + ДополнительныеПараметры = Новый Структура("ПараметрыЗаписи", ПараметрыЗаписи); + Оповещение = Новый ОписаниеОповещения("ПослеЗапросаПароляДляИзмененияПочты", ЭтотОбъект, ДополнительныеПараметры); + ОткрытьФорму("Справочник.Пользователи.Форма.ВводПароля",, ЭтотОбъект,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + + Возврат; + + КонецЕсли; + + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ТекущийОбъект.ДополнительныеСвойства.Вставить("ЗначениеКопирования", ЗначениеКопирования); + + ОбновитьОтображаемыйТипПользователя(); + // Автообновление наименования внешнего пользователя. + УстановитьПривилегированныйРежим(Истина); + ТекущееПредставлениеОбъектаАвторизации = Строка(ТекущийОбъект.ОбъектАвторизации); + УстановитьПривилегированныйРежим(Ложь); + Объект.Наименование = ТекущееПредставлениеОбъектаАвторизации; + ТекущийОбъект.Наименование = ТекущееПредставлениеОбъектаАвторизации; + + Если ТребуетсяЗаписьПользователяИБ(ЭтотОбъект) Тогда + + Если ПользователиСлужебный.ДоступнаНастройкаВосстановленияПароля(УровеньДоступа) Тогда + + Если ПользовательИБЗапрещеноИзменятьПароль Тогда + ПользовательИБЗапрещеноВосстанавливатьПароль = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + Если ПользователиСлужебный.ДоступноРедактированиеПочтыДляВосстановленияПароля(УровеньДоступа, Объект) Тогда + + Если ЗначениеЗаполнено(ИмяРеквизитаСПочтойДляВосстановленияПароля) + И ПользовательИБАдресЭлектроннойПочты <> ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля] Тогда + + Если ЗначениеЗаполнено(ТекущийОбъект.Ссылка) Тогда + Подготовлен = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийОбъект.Ссылка, "Подготовлен"); + Иначе + Подготовлен = УровеньДоступа.УправлениеСписком; + КонецЕсли; + + ИзменятьПочтуБезПодтвержденияПаролем = Пользователи.ЭтоПолноправныйПользователь() Или Подготовлен; + + Если Не ИзменятьПочтуБезПодтвержденияПаролем Тогда + + ПарольСовпадаетССохраненным = Ложь; + + Если ТипЗнч(ПарольДляПодтвержденияИзмененияПочты) = Тип("Строка") Тогда + УстановитьПривилегированныйРежим(Истина); + ПарольСовпадаетССохраненным = ПользователиСлужебный.СтарыйПарольСовпадаетССохраненным( + ПарольДляПодтвержденияИзмененияПочты, Объект.ИдентификаторПользователяИБ); + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + + // проверка пароля + Если Не ПарольСовпадаетССохраненным Тогда + ПарольДляПодтвержденияИзмененияПочты = Неопределено; + ВызватьИсключение НСтр("ru = 'Пароль указан неверно'"); + КонецЕсли; + КонецЕсли; + + ПользовательИБАдресЭлектроннойПочты = ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля]; + + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ОписаниеПользователяИБ = ОписаниеПользователяИБ(); + + Если ЗначениеЗаполнено(Объект.ИдентификаторПользователяИБ) Тогда + ОписаниеПользователяИБ.Вставить("УникальныйИдентификатор", Объект.ИдентификаторПользователяИБ); + КонецЕсли; + ОписаниеПользователяИБ.Вставить("Действие", "Записать"); + + ТекущийОбъект.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ); + КонецЕсли; + + Если ДействияВФорме.СвойстваЭлемента <> "Редактирование" Тогда + ЗаполнитьЗначенияСвойств(ТекущийОбъект, ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + ТекущийОбъект.Ссылка, "ПометкаУдаления")); + КонецЕсли; + + ТекущийОбъект.ДополнительныеСвойства.Вставить( + "ГруппаНовогоВнешнегоПользователя", ГруппаНовогоВнешнегоПользователя); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + + // СтандартныеПодсистемы.КонтактнаяИнформация + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + ИмяРеквизитаОбъектАвторизации = ИмяРеквизитаОбъектАвторизации(ТипЗнч(Объект.ОбъектАвторизации)); + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + МодульУправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтотОбъект, ЭтотОбъект[ИмяРеквизитаОбъектАвторизации]); + КонецЕсли; + // Конец СтандартныеПодсистемы.КонтактнаяИнформация + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.КонтактнаяИнформация + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") + И Пользователи.ЭтоПолноправныйПользователь() Тогда + + ИмяРеквизитаОбъектАвторизации = ИмяРеквизитаОбъектАвторизации(ТипЗнч(Объект.ОбъектАвторизации)); + + ОбъектАвторизацииОбъект = РеквизитФормыВЗначение(ИмяРеквизитаОбъектАвторизации); + Если Не ОбъектАвторизацииОбъект.Ссылка.Пустая() Тогда + ОбъектАвторизацииОбъект.Записать(); + ЗначениеВРеквизитФормы(ОбъектАвторизацииОбъект, ИмяРеквизитаОбъектАвторизации); + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.КонтактнаяИнформация + + УстановитьПривилегированныйРежим(Истина); + ПользователиСлужебный.ЗаписатьСведенияОПользователе(ЭтотОбъект, ТекущийОбъект); + + Если ПараметрыЗаписи.Свойство("КопироватьПраваПользователя") Тогда + Источник = ЗначениеКопирования; + Приемник = ТекущийОбъект.Ссылка; + МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПриКопированииПравНовомуПользователю(Источник, Приемник); + ПользователиСлужебный.СкопироватьГруппыПользователя(Источник, Приемник); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + Если ТребуетсяЗаписьПользователяИБ(ЭтотОбъект) Тогда + ПараметрыЗаписи.Вставить( + ТекущийОбъект.ДополнительныеСвойства.ОписаниеПользователяИБ.РезультатДействия); + КонецЕсли; + + НастроитьФорму(ТекущийОбъект, , ПараметрыЗаписи); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_ВнешниеПользователи", Новый Структура, Объект.Ссылка); + ОповеститьОбИзменении(Объект.ОбъектАвторизации); + + Если ПараметрыЗаписи.Свойство("ДобавленПользовательИБ") Тогда + Оповестить("ДобавленПользовательИБ", ПараметрыЗаписи.ДобавленПользовательИБ, ЭтотОбъект); + + ИначеЕсли ПараметрыЗаписи.Свойство("ИзмененПользовательИБ") Тогда + Оповестить("ИзмененПользовательИБ", ПараметрыЗаписи.ИзмененПользовательИБ, ЭтотОбъект); + + ИначеЕсли ПараметрыЗаписи.Свойство("УдаленПользовательИБ") Тогда + Оповестить("УдаленПользовательИБ", ПараметрыЗаписи.УдаленПользовательИБ, ЭтотОбъект); + + ИначеЕсли ПараметрыЗаписи.Свойство("ОчищеноСопоставлениеСНесуществующимПользователемИБ") Тогда + + Оповестить( + "ОчищеноСопоставлениеСНесуществующимПользователемИБ", + ПараметрыЗаписи.ОчищеноСопоставлениеСНесуществующимПользователемИБ, ЭтотОбъект); + КонецЕсли; + + Если ЗначениеЗаполнено(ГруппаНовогоВнешнегоПользователя) Тогда + ОповеститьОбИзменении(ГруппаНовогоВнешнегоПользователя); + + Оповестить( + "Запись_ГруппыВнешнихПользователей", + Новый Структура, + ГруппаНовогоВнешнегоПользователя); + + ГруппаНовогоВнешнегоПользователя = Неопределено; + КонецЕсли; + + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + + Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда + ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + ТекстОшибки = ""; + Если ПользователиСлужебный.ОбъектАвторизацииИспользуется( + Объект.ОбъектАвторизации, Объект.Ссылка, , , ТекстОшибки) Тогда + + ОбщегоНазначения.СообщитьПользователю( + ТекстОшибки, , "Объект.ОбъектАвторизации", , Отказ); + КонецЕсли; + + Если ВходВПрограммуРазрешен + И ЗначениеЗаполнено(СрокДействия) + И СрокДействия <= НачалоДня(ТекущаяДатаСеанса()) Тогда + + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Ограничение должно быть до завтра или более.'"),, "ВходВПрограммуРазрешен",, Отказ); + КонецЕсли; + + Если ТребуетсяЗаписьПользователяИБ(ЭтотОбъект) Тогда + ОписаниеПользователяИБ = ОписаниеПользователяИБ(); + ОписаниеПользователяИБ.Вставить("ИдентификаторПользователяИБ", Объект.ИдентификаторПользователяИБ); + ПользователиСлужебный.ПроверитьОписаниеПользователяИБ(ОписаниеПользователяИБ, Отказ, Истина); + + ТекстСообщения = ""; + Если ПользователиСлужебный.ТребуетсяСоздатьПервогоАдминистратора(Неопределено, ТекстСообщения) Тогда + ОбщегоНазначения.СообщитьПользователю( + ТекстСообщения, , "ВходВПрограммуРазрешен", , Отказ); + КонецЕсли; + КонецЕсли; + + // Проверка наличия ролей в метаданных. + Если Не Элементы.Роли.ТолькоПросмотр Тогда + Ошибки = Неопределено; + ЭлементыДерева = Роли.ПолучитьЭлементы(); + Для Каждого Строка Из ЭлементыДерева Цикл + Если Не Строка.Пометка Тогда + Продолжить; + КонецЕсли; + Если Строка.ЭтоНесуществующаяРоль Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Роли[%1].РолиСиноним", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним), + "Роли", + ЭлементыДерева.Индекс(Строка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1")); + КонецЕсли; + Если Строка.ЭтоНедоступнаяРоль Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Роли[%1].РолиСиноним", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для внешних пользователей.'"), Строка.Синоним), + "Роли", + ЭлементыДерева.Индекс(Строка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для внешних пользователей.'"), Строка.Синоним, "%1")); + КонецЕсли; + КонецЦикла; + ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты); + КонецЕсли; + + // СтандартныеПодсистемы.КонтактнаяИнформация + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + Если МодульУправлениеКонтактнойИнформацией.СодержитКонтактнуюИнформацию(Объект.ОбъектАвторизации) Тогда + ИмяРеквизитаОбъектАвторизации = ИмяРеквизитаОбъектАвторизации(ТипЗнч(Объект.ОбъектАвторизации)); + ОбъектАвторизацииОбъект = РеквизитФормыВЗначение(ИмяРеквизитаОбъектАвторизации); + МодульУправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, ОбъектАвторизацииОбъект, Отказ); + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.КонтактнаяИнформация + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЗагрузкеНастроек", Настройки); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ОбъектАвторизацииПриИзменении(Элемент) + + ОбъектАвторизацииПриИзмененииНаКлиентеНаСервере(ЭтотОбъект, Объект); + ИзменитьРеквизитОбъектАвторизации(); + +КонецПроцедуры + +&НаКлиенте +Процедура НедействителенПриИзменении(Элемент) + + Если Объект.Недействителен Тогда + ВходВПрограммуРазрешен = Ложь; + Если Не ПользовательИБАутентификацияOpenID + И Не ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения + И ПользовательИБАутентификацияСтандартная Тогда + + ПользовательИБАутентификацияСтандартная = Ложь; + КонецЕсли; + ИначеЕсли ВходВПрограммуРазрешенЗначениеПрямогоИзменения Тогда + Если Не ПользовательИБАутентификацияСтандартная + И Не ПользовательИБАутентификацияOpenID Тогда + ПользовательИБАутентификацияСтандартная = Истина; + КонецЕсли; + ВходВПрограммуРазрешен = Истина; + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ВходВПрограммуРазрешенПриИзменении(Элемент) + + Если Объект.ПометкаУдаления И ВходВПрограммуРазрешен Тогда + ВходВПрограммуРазрешен = Ложь; + ПоказатьПредупреждение(, + НСтр("ru = 'Чтобы разрешить вход в программу, требуется снять + |пометку на удаление с этого внешнего пользователя.'")); + Возврат; + КонецЕсли; + + Если Не ВходВПрограммуРазрешен + И Не ПользовательИБАутентификацияOpenID + И Не ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения + И ПользовательИБАутентификацияСтандартная Тогда + + ПользовательИБАутентификацияСтандартная = Ложь; + КонецЕсли; + + ОбновитьИмяДляВхода(ЭтотОбъект); + + Если ВходВПрограммуРазрешен + И НЕ ПользовательИБАутентификацияOpenID + И НЕ ПользовательИБАутентификацияСтандартная Тогда + + ПользовательИБАутентификацияСтандартная = Истина; + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + + Если Не УровеньДоступа.ИзменениеРазрешенияНаВход + И Не ВходВПрограммуРазрешен Тогда + + ПоказатьПредупреждение(, + НСтр("ru = 'После записи вход в программу сможет разрешить только администратор.'")); + КонецЕсли; + + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = ВходВПрограммуРазрешен; + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьОграничениеНаВходВПрограмму(Команда) + + ОткрытьФорму("Справочник.Пользователи.Форма.ОграничениеНаВходВПрограмму",, ЭтотОбъект,,,, + Новый ОписаниеОповещения("ИзменитьОграничениеНаВходВПрограммуЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБИмяПриИзменении(Элемент) + + ПользовательИБИмя = СокрЛП(ПользовательИБИмя); + ПользовательИБИмяЗначениеПрямогоИзменения = ПользовательИБИмя; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБАутентификацияСтандартнаяПриИзменении(Элемент) + + АутентификацияПриИзменении(); + ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения = ПользовательИБАутентификацияСтандартная; + +КонецПроцедуры + +&НаКлиенте +Процедура ПотребоватьСменуПароляПриВходеПриИзменении(Элемент) + + Если ПотребоватьСменуПароляПриВходе Тогда + ПользовательИБЗапрещеноИзменятьПароль = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБЗапрещеноИзменятьПарольПриИзменении(Элемент) + + Если ПользовательИБЗапрещеноИзменятьПароль Тогда + ПотребоватьСменуПароляПриВходе = Ложь; + ПользовательИБЗапрещеноВосстанавливатьПароль = Истина; + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБАутентификацияOpenIDПриИзменении(Элемент) + + АутентификацияПриИзменении(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБЯзыкПриИзменении(Элемент) + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьРолиНепосредственноПриИзменении(Элемент) + + Если Не Объект.УстановитьРолиНепосредственно Тогда + ПрочитатьРолиПользователяИБ(); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + ОбработатьИнтерфейсРолейУстановитьТолькоПросмотрРолей(); + +КонецПроцедуры + +&НаКлиенте +Процедура СтраницыГлавноеИКомментарийПриСменеСтраницы(Элемент, ТекущаяСтраница) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") + И ТекущаяСтраница.Имя = "СтраницаДополнительныеРеквизиты" + И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда + + СвойстваВыполнитьОтложеннуюИнициализацию(); + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПотребоватьСменуПароляПриВходеРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПоказатьНастройкиВнешнихПользователей", Истина); + + ОткрытьФорму("ОбщаяФорма.НастройкиВходаПользователей", ПараметрыФормы, ЭтотОбъект); +КонецПроцедуры + +// СтандартныеПодсистемы.КонтактнаяИнформация + +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент) + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка) + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка); +КонецПроцедуры + +// Параметры: +// Элемент - ПолеФормы +// СтандартнаяОбработка - Булево +// +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка) + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя); +КонецПроцедуры + +// Параметры: +// Команда - КомандаФормы +// +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда) + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.АвтоПодборАдреса(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка); + +КонецПроцедуры + +// Параметры: +// Элемент - ПолеФормы +// ВыбранноеЗначение - Произвольный +// СтандартнаяОбработка -Булево +// +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.ОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, Элемент.Имя, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьОбработкуНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт + ОбновитьКонтактнуюИнформацию(Результат); +КонецПроцедуры + +&НаСервере +Процедура ОбновитьКонтактнуюИнформацию(Результат) + МодульУправлениеКонтактнойИнформацией = + ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + МодульУправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.КонтактнаяИнформация + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыРоли + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаКлиенте +Процедура РолиПометкаПриИзменении(Элемент) + + Если Элементы.Роли.ТекущиеДанные <> Неопределено Тогда + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей"); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Поддержка дополнительных реквизитов. + +&НаКлиенте +Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + Записать(Новый Структура("ЗаписатьИЗакрыть")); + +КонецПроцедуры + +&НаКлиенте +Процедура СменитьПароль(Команда) + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ВернутьПарольБезУстановки", Истина); + ДополнительныеПараметры.Вставить("СтарыйПароль", ПользовательИБСтарыйПароль); + + ПользователиСлужебныйКлиент.ОткрытьФормуСменыПароля(Объект.Ссылка, Новый ОписаниеОповещения( + "СменитьПарольПослеПолученияПароля", ЭтотОбъект), ДополнительныеПараметры); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаКлиенте +Процедура ПоказатьТолькоВыбранныеРоли(Команда) + + ОбработатьИнтерфейсРолей("ТолькоВыбранныеРоли"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппировкаРолейПоПодсистемам(Команда) + + ОбработатьИнтерфейсРолей("ГруппировкаПоПодсистемам"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьРоли(Команда) + + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе"); + + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключитьРоли(Команда) + + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВсе"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура СоздатьРеквизитОбъектАвторизации() + + ЗначениеОбъектаАвторизации = ОбъектАвторизации("ОбъектАвторизации"); + + Если ЗначениеОбъектаАвторизации = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущийТипОбъектАвторизации = ТипЗнч(ЗначениеОбъектаАвторизации); + + ИмяРеквизитаОбъектАвторизации = ИмяРеквизитаОбъектАвторизации(ТекущийТипОбъектАвторизации); + + ОписаниеТипаНаФорме = Неопределено; + РеквизитыФормы = ПолучитьРеквизиты(); + Для каждого РеквизитФормы Из РеквизитыФормы Цикл + Если РеквизитФормы.Имя = ИмяРеквизитаОбъектАвторизации Тогда + ОписаниеТипаНаФорме = РеквизитФормы.ТипЗначения.Типы()[0]; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ТекущийТипОбъектАвторизации <> ОписаниеТипаНаФорме Тогда + + ДобавляемыеРеквизиты = Новый Массив; + + МассивТипов = Новый Массив; + МассивТипов.Добавить(ТекущийТипОбъектАвторизации); + + ОписаниеТипа = Новый ОписаниеТипов(МассивТипов); + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяРеквизитаОбъектАвторизации, ОписаниеТипа)); + ИзменитьРеквизиты(ДобавляемыеРеквизиты); + КонецЕсли; + + ЗначениеВРеквизитФормы(ЗначениеОбъектаАвторизации, ИмяРеквизитаОбъектАвторизации); + +КонецПроцедуры + +&НаСервере +Функция ОбъектАвторизации(ИмяРеквизитаОбъектАвторизации) + + Если ТипЗнч(Объект[ИмяРеквизитаОбъектАвторизации])= Тип("Строка") + Или Не ЗначениеЗаполнено(Объект[ИмяРеквизитаОбъектАвторизации]) Тогда + Возврат Неопределено; + КонецЕсли; + + ЗначениеОбъектаАвторизации = Объект[ИмяРеквизитаОбъектАвторизации].ПолучитьОбъект(); + + Возврат ЗначениеОбъектаАвторизации; + +КонецФункции + +&НаСервереБезКонтекста +Функция ИмяРеквизитаОбъектАвторизации(ТипОбъектАвторизации) + Префикс = Метаданные.НайтиПоТипу(ТипОбъектАвторизации).Имя; + Возврат "ОбъектАвторизацииВнешнегоПользователя" + Префикс; +КонецФункции + +&НаСервере +Процедура ИзменитьРеквизитОбъектАвторизации() + + // СтандартныеПодсистемы.КонтактнаяИнформация + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + СоздатьРеквизитОбъектАвторизации(); + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + + Если Не ЗначениеЗаполнено(Объект.ОбъектАвторизации) + Или Не МодульУправлениеКонтактнойИнформацией.СодержитКонтактнуюИнформацию(Объект.ОбъектАвторизации) Тогда + Возврат; + КонецЕсли; + + ИмяРеквизитаОбъектАвторизации = ИмяРеквизитаОбъектАвторизации(ТипЗнч(Объект.ОбъектАвторизации)); + + Если Элементы.ГруппаКонтактнаяИнформация.ПодчиненныеЭлементы.Количество() = 0 Тогда + + Если МодульУправлениеКонтактнойИнформацией.СодержитКонтактнуюИнформацию(Объект.ОбъектАвторизации) Тогда + МодульУправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, ЭтотОбъект[ИмяРеквизитаОбъектАвторизации]); + КонецЕсли; + + Иначе + + МодульУправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ЭтотОбъект[ИмяРеквизитаОбъектАвторизации]); + + КонецЕсли; + + ПарольДляПодтвержденияИзмененияПочты = Неопределено; + Если Пользователи.ЭтоПолноправныйПользователь() Тогда + + Если Не ПользователиСлужебный.ИнтерактивноЗапрашиватьВводПароля(УровеньДоступа, Объект) Тогда + ПарольДляПодтвержденияИзмененияПочты = ""; + КонецЕсли; + + ИмяРеквизитаСПочтойДляВосстановленияПароля = МодульУправлениеКонтактнойИнформацией.ОпределитьЭлементСПочтойДляВосстановленияПароля( + ЭтотОбъект, + ПользовательИБАдресЭлектроннойПочты, + ПользователиСлужебный.ДоступноРедактированиеПочтыДляВосстановленияПароля(УровеньДоступа, Объект), + Истина); + + Элементы.ГруппаКонтактнаяИнформация.Доступность = Истина; + + Иначе + + Элементы.ГруппаКонтактнаяИнформация.Доступность = Ложь; + + КонецЕсли; + + + КонецЕсли; + // Конец СтандартныеПодсистемы.КонтактнаяИнформация + +КонецПроцедуры + +&НаСервере +Процедура ОбработатьИнтерфейсРолейУстановитьТолькоПросмотрРолей(ТекущийОбъект = Неопределено) + + Если ТекущийОбъект = Неопределено Тогда + ТекущийОбъект = Объект; + КонецЕсли; + + ОбработатьИнтерфейсРолей("УстановитьТолькоПросмотрРолей", + ЗапретРедактированияРолей + Или ДействияВФорме.Роли <> "Редактирование" + Или Не УровеньДоступа.НастройкиДляВхода + Или Не ТекущийОбъект.УстановитьРолиНепосредственно); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьФорму(ТекущийОбъект, ПриСозданииНаСервере = Ложь, ПараметрыЗаписи = Неопределено) + + СоздатьРеквизитОбъектАвторизации(); + + Если НачальноеОписаниеПользователяИБ = Неопределено Тогда + Возврат; // Вызов ПриЧтенииНаСервере до вызова ПриСозданииНаСервере. + КонецЕсли; + + Если Не ПриСозданииНаСервере Тогда + ПрочитатьПользователяИБ(); + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + ПользователиСлужебный.ПрочитатьСведенияОПользователе(ЭтотОбъект); + УстановитьПривилегированныйРежим(Ложь); + + УровеньДоступа = ПользователиСлужебный.УровеньДоступаКСвойствамПользователя(ТекущийОбъект); + + ОпределитьДействияВФорме(); + + ОпределитьНесоответствияПользователяСПользователемИБ(ПараметрыЗаписи); + + ОбработатьИнтерфейсРолейУстановитьТолькоПросмотрРолей(ТекущийОбъект); + + // Установка постоянной доступности свойств. + Элементы.СвойстваПользователяИБ.Видимость = + ЗначениеЗаполнено(ДействияВФорме.СвойстваПользователяИБ); + + Элементы.ОтображениеРолей.Видимость = + ЗначениеЗаполнено(ДействияВФорме.Роли); + + Элементы.УстановитьРолиНепосредственно.Видимость = + ЗначениеЗаполнено(ДействияВФорме.Роли) И НЕ ПользователиСлужебный.ЗапретРедактированияРолей(); + + ОбновитьОтображаемыйТипПользователя(); + + ТолькоПросмотр = ТолькоПросмотр + ИЛИ ДействияВФорме.Роли <> "Редактирование" + И ДействияВФорме.СвойстваЭлемента <> "Редактирование" + И ДействияВФорме.СвойстваПользователяИБ <> "Редактирование"; + + + ДоступностьКнопки = Не ТолькоПросмотр И ПравоДоступа("Редактирование", + Метаданные.Справочники.ВнешниеПользователи); + + Если Элементы.ФормаЗаписатьИЗакрыть.Доступность <> ДоступностьКнопки Тогда + Элементы.ФормаЗаписатьИЗакрыть.Доступность = ДоступностьКнопки; + КонецЕсли; + + Если Элементы.ИзменитьОграничениеНаВходВПрограмму.Доступность <> ДоступностьКнопки Тогда + Элементы.ИзменитьОграничениеНаВходВПрограмму.Доступность = ДоступностьКнопки; + КонецЕсли; + + Если Элементы.СменитьПароль.Доступность <> ДоступностьКнопки Тогда + Элементы.СменитьПароль.Доступность = ДоступностьКнопки; + КонецЕсли; + + Элементы.РекомендуетсяПроверитьНастройкиДляВхода.Видимость = + УровеньДоступа.ИзменениеРазрешенияНаВход + И ТекущийОбъект.Подготовлен + И Не ПриЧтенииВходВПрограммуРазрешен; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьИмяДляВхода(Форма, ПриИзмененииНаименования = Ложь) + + Элементы = Форма.Элементы; + + // Настройка необходимости заполнения. + Если ТребуетсяЗаписьПользователяИБ(Форма, Ложь) Тогда + НоваяСтраница = Элементы.ИмяСОтметкойНезаполненного; + Иначе + НоваяСтраница = Элементы.ИмяБезОтметкиНезаполненного; + КонецЕсли; + + Если Элементы.ИмяПереключениеОтметкиНезаполненного.ТекущаяСтраница <> НоваяСтраница Тогда + Элементы.ИмяПереключениеОтметкиНезаполненного.ТекущаяСтраница = НоваяСтраница; + КонецЕсли; + + Если Форма.ПользовательИБСуществует Тогда + Возврат; + КонецЕсли; + + КраткоеИмя = ПользователиСлужебныйКлиентСервер.ПолучитьКраткоеИмяПользователяИБ( + Форма.ТекущееПредставлениеОбъектаАвторизации); + + Если Элементы.ИмяПереключениеОтметкиНезаполненного.ТекущаяСтраница = Элементы.ИмяБезОтметкиНезаполненного Тогда + + Если (Не ЗначениеЗаполнено(Форма.ПользовательИБИмяЗначениеПрямогоИзменения) + Или Форма.ПользовательИБИмяЗначениеПрямогоИзменения = КраткоеИмя) + И Форма.ПользовательИБИмя = КраткоеИмя Тогда + + Форма.ПользовательИБИмя = ""; + КонецЕсли; + Иначе + Если ПриИзмененииНаименования + Или Не ЗначениеЗаполнено(Форма.ПользовательИБИмя) Тогда + + Форма.ПользовательИБИмя = КраткоеИмя; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура АутентификацияПриИзменении() + + Если НЕ ПользовательИБАутентификацияOpenID + И НЕ ПользовательИБАутентификацияСтандартная Тогда + + ВходВПрограммуРазрешен = Ложь; + + ИначеЕсли Не ВходВПрограммуРазрешен Тогда + ВходВПрограммуРазрешен = ВходВПрограммуРазрешенЗначениеПрямогоИзменения; + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +// Продолжение процедуры СменитьПароль. +&НаКлиенте +Процедура СменитьПарольПослеПолученияПароля(Результат, Контекст) Экспорт + + Если Не ЗначениеЗаполнено(Результат) Тогда + Возврат; + КонецЕсли; + + Модифицированность = Истина; + + ПользовательИБПароль = Результат.НовыйПароль; + ПользовательИБСтарыйПароль = Результат.СтарыйПароль; + + УстановитьНаличиеПароля(ЭтотОбъект, ЗначениеЗаполнено(ПользовательИБПароль), + ПользователиКлиент.АвторизованныйПользователь()); + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьНаличиеПароля(Форма, ПарольУстановлен, АвторизованныйПользователь) + + ПользователиСлужебныйКлиентСервер.УстановитьНаличиеПароля(Форма, ПарольУстановлен, АвторизованныйПользователь); + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьДействияВФорме() + + ДействияВФорме = Новый Структура; + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("Роли", ""); + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("СвойстваПользователяИБ", ""); + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("СвойстваЭлемента", "Просмотр"); + + Если УровеньДоступа.ИзменениеТекущего Или УровеньДоступа.УправлениеСписком Тогда + ДействияВФорме.СвойстваПользователяИБ = "Редактирование"; + КонецЕсли; + + Если УровеньДоступа.УправлениеСписком Тогда + ДействияВФорме.СвойстваЭлемента = "Редактирование"; + КонецЕсли; + + Если УровеньДоступа.ПолныеПрава Тогда + ДействияВФорме.Роли = "Редактирование"; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) + И НЕ ЗначениеЗаполнено(Объект.ОбъектАвторизации) Тогда + + ДействияВФорме.СвойстваЭлемента = "Редактирование"; + КонецЕсли; + + ПользователиСлужебный.ПриОпределенииДействийВФорме(Объект.Ссылка, ДействияВФорме); + + // Проверка имен действий в форме. + Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.Роли + ",") = 0 Тогда + ДействияВФорме.Роли = ""; + + ИначеЕсли ДействияВФорме.Роли = "Редактирование" + И ПользователиСлужебный.ЗапретРедактированияРолей() Тогда + + ДействияВФорме.Роли = "Просмотр"; + КонецЕсли; + + Если СтрНайти(", Просмотр, ПросмотрВсех, Редактирование, РедактированиеСвоих, РедактированиеВсех,", + ", " + ДействияВФорме.СвойстваПользователяИБ + ",") = 0 Тогда + + ДействияВФорме.СвойстваПользователяИБ = ""; + + Иначе // Поддержка обратной совместимости. + Если СтрНайти(ДействияВФорме.СвойстваПользователяИБ, "Просмотр") Тогда + ДействияВФорме.СвойстваПользователяИБ = "Просмотр"; + + ИначеЕсли СтрНайти(ДействияВФорме.СвойстваПользователяИБ, "Редактирование") Тогда + ДействияВФорме.СвойстваПользователяИБ = "Редактирование"; + КонецЕсли; + КонецЕсли; + + Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СвойстваЭлемента + ",") = 0 Тогда + ДействияВФорме.СвойстваЭлемента = ""; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ОписаниеПользователяИБ() + + Если УровеньДоступа.УправлениеСписком + И ДействияВФорме.СвойстваЭлемента = "Редактирование" Тогда + + ПользовательИБПолноеИмя = Объект.Наименование; + КонецЕсли; + + Если УровеньДоступа.АдминистраторСистемы + Или УровеньДоступа.ПолныеПрава Тогда + + Результат = Пользователи.НовоеОписаниеПользователяИБ(); + Пользователи.СкопироватьСвойстваПользователяИБ( + Результат, + ЭтотОбъект, + , + "УникальныйИдентификатор, + |Роли", + "ПользовательИБ"); + + Результат.Вставить("ВходВПрограммуРазрешен", ВходВПрограммуРазрешен); + + Иначе + Результат = Новый Структура; + + Если УровеньДоступа.ИзменениеТекущего Тогда + Результат.Вставить("Пароль", ПользовательИБПароль); + Результат.Вставить("Язык", ПользовательИБЯзык); + КонецЕсли; + + Если УровеньДоступа.УправлениеСписком Тогда + Результат.Вставить("ВходВПрограммуРазрешен", ВходВПрограммуРазрешен); + Результат.Вставить("ЗапрещеноИзменятьПароль", ПользовательИБЗапрещеноИзменятьПароль); + Результат.Вставить("Язык", ПользовательИБЯзык); + Результат.Вставить("ПолноеИмя", ПользовательИБПолноеИмя); + КонецЕсли; + + Если УровеньДоступа.НастройкиДляВхода Тогда + Результат.Вставить("АутентификацияСтандартная", ПользовательИБАутентификацияСтандартная); + Результат.Вставить("Пароль", ПользовательИБПароль); + Результат.Вставить("Имя", ПользовательИБИмя); + Результат.Вставить("АутентификацияOpenID", ПользовательИБАутентификацияOpenID); + КонецЕсли; + КонецЕсли; + + Если УровеньДоступа.НастройкиДляВхода + И Не ПользователиСлужебный.ЗапретРедактированияРолей() + И Объект.УстановитьРолиНепосредственно Тогда + + ТекущиеРоли = ПользовательИБРоли.Выгрузить(, "Роль").ВыгрузитьКолонку("Роль"); + Результат.Вставить("Роли", ТекущиеРоли); + КонецЕсли; + + Если УровеньДоступа.УправлениеСписком Тогда + Результат.Вставить("ПоказыватьВСпискеВыбора", Ложь); + Результат.Вставить("РежимЗапуска", "Авто"); + КонецЕсли; + + Если УровеньДоступа.ПолныеПрава Тогда + Результат.Вставить("АутентификацияОС", Ложь); + Результат.Вставить("ПользовательОС", ""); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбъектАвторизацииПриИзмененииНаКлиентеНаСервере(Форма, Объект) + + Если Объект.ОбъектАвторизации = Неопределено Тогда + Объект.ОбъектАвторизации = Форма.ТипОбъектовАвторизации; + КонецЕсли; + + Если Форма.ТекущееПредставлениеОбъектаАвторизации <> Строка(Объект.ОбъектАвторизации) Тогда + Форма.ТекущееПредставлениеОбъектаАвторизации = Строка(Объект.ОбъектАвторизации); + ОбновитьИмяДляВхода(Форма, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьОтображаемыйТипПользователя() + + Если ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Объект.ОбъектАвторизации)) Тогда + Элементы.ОбъектАвторизации.Заголовок = Метаданные.НайтиПоТипу(ТипЗнч(Объект.ОбъектАвторизации)).ПредставлениеОбъекта; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОтветаНаВопросОЗаписиСПустымСпискомРолей(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ПараметрыЗаписи.Вставить("СПустымСпискомРолей"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОтветаНаВопросОКопированииПрав(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ПараметрыЗаписи.Вставить("КопироватьПраваПользователя"); + Иначе + ПараметрыЗаписи.Вставить("НеКопироватьПраваПользователя"); + КонецЕсли; + Записать(ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму() + + Закрыть(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Поддержка дополнительных реквизитов. + +&НаСервере +Процедура СвойстваВыполнитьОтложеннуюИнициализацию() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьЗависимостиДополнительныхРеквизитов() + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьЭлементыДополнительныхРеквизитов() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +// Продолжение обработчика события ПередЗаписью. +&НаКлиенте +Процедура ПослеЗапросаПароляДляИзмененияПочты(Результат, ДополнительныеПараметры) Экспорт + + Если ТипЗнч(Результат) = Тип("Строка") Тогда + ПарольДляПодтвержденияИзмененияПочты = Результат; + Записать(ДополнительныеПараметры.ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработка пользователя ИБ + +&НаСервере +Процедура ПрочитатьРолиПользователяИБ() + + СвойстваПользователяИБ = Пользователи.СвойстваПользователяИБ(Объект.ИдентификаторПользователяИБ); + Если СвойстваПользователяИБ = Неопределено Тогда + СвойстваПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ(); + КонецЕсли; + ОбработатьИнтерфейсРолей("ЗаполнитьРоли", СвойстваПользователяИБ.Роли); + +КонецПроцедуры + +&НаСервере +Функция НачальноеОписаниеПользователяИБ() + + Если НачальноеОписаниеПользователяИБ <> Неопределено Тогда + НачальноеОписаниеПользователяИБ.Роли = Новый Массив; + Возврат НачальноеОписаниеПользователяИБ; + КонецЕсли; + + ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ(); + ОписаниеПользователяИБ.ПоказыватьВСпискеВыбора = Ложь; + ОписаниеПользователяИБ.Роли = Новый Массив; + + Возврат ОписаниеПользователяИБ; + +КонецФункции + +&НаСервере +Процедура ПрочитатьПользователяИБ(ПриКопированииЭлемента = Ложь) + + УстановитьПривилегированныйРежим(Истина); + + ОписаниеПользователяИБ = НачальноеОписаниеПользователяИБ(); + ПользовательИБСуществует = Ложь; + ПользовательИБОсновной = Ложь; + ВходВПрограммуРазрешен = Ложь; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Ложь; + + Если ПриКопированииЭлемента Тогда + + ПрочитанныеСвойства = Пользователи.СвойстваПользователяИБ(Параметры.ЗначениеКопирования.ИдентификаторПользователяИБ); + Если ПрочитанныеСвойства <> Неопределено Тогда + + // Сопоставление пользователя ИБ с пользователем в справочнике. + Если Пользователи.ВходВПрограммуРазрешен(ПрочитанныеСвойства) Тогда + ВходВПрограммуРазрешен = Истина; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина; + ОписаниеПользователяИБ.АутентификацияСтандартная = Истина; + КонецЕсли; + + // Копирование свойств и ролей пользователяИБ. + ЗаполнитьЗначенияСвойств( + ОписаниеПользователяИБ, + ПрочитанныеСвойства, + "ЗапрещеноИзменятьПароль, + |ОсновнойИнтерфейс, + |РежимЗапуска" + ?(Не Элементы.ПользовательИБЯзык.Видимость, "", ", + |Язык") + ?(ПользователиСлужебный.ЗапретРедактированияРолей(), "", ", + |Роли")); + КонецЕсли; + Объект.ИдентификаторПользователяИБ = Неопределено; + УстановитьНаличиеПароля(ЭтотОбъект, Ложь, Пользователи.АвторизованныйПользователь()); + Иначе + ПрочитанныеСвойства = Пользователи.СвойстваПользователяИБ(Объект.ИдентификаторПользователяИБ); + Если ПрочитанныеСвойства <> Неопределено Тогда + + ПользовательИБСуществует = Истина; + ПользовательИБОсновной = Истина; + + ИначеЕсли Параметры.Свойство("ИдентификаторПользователяИБ") + И ЗначениеЗаполнено(Параметры.ИдентификаторПользователяИБ) Тогда + + Объект.ИдентификаторПользователяИБ = Параметры.ИдентификаторПользователяИБ; + ПрочитанныеСвойства = Пользователи.СвойстваПользователяИБ(Объект.ИдентификаторПользователяИБ); + Если ПрочитанныеСвойства <> Неопределено Тогда + + ПользовательИБСуществует = Истина; + Если Объект.Наименование <> ПрочитанныеСвойства.ПолноеИмя Тогда + ПрочитанныеСвойства.ПолноеИмя = Объект.Наименование; + Модифицированность = Истина; + КонецЕсли; + Если ПрочитанныеСвойства.АутентификацияОС Тогда + ПрочитанныеСвойства.АутентификацияОС = Ложь; + Модифицированность = Истина; + КонецЕсли; + Если ЗначениеЗаполнено(ПрочитанныеСвойства.ПользовательОС) Тогда + ПрочитанныеСвойства.ПользовательОС = ""; + Модифицированность = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ПользовательИБСуществует Тогда + + Если Не Элементы.ПользовательИБЯзык.Видимость Тогда + ПрочитанныеСвойства.Язык = ОписаниеПользователяИБ.Язык; + КонецЕсли; + + Если Пользователи.ВходВПрограммуРазрешен(ПрочитанныеСвойства) Тогда + ВходВПрограммуРазрешен = Истина; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина; + КонецЕсли; + + ЗаполнитьЗначенияСвойств( + ОписаниеПользователяИБ, + ПрочитанныеСвойства, + "Имя, + |ПолноеИмя, + |АутентификацияOpenID, + |АутентификацияСтандартная, + |ПоказыватьВСпискеВыбора, + |ЗапрещеноИзменятьПароль, + |АутентификацияОС, + |ПользовательОС, + |ОсновнойИнтерфейс, + |РежимЗапуска" + ?(Не Элементы.ПользовательИБЯзык.Видимость, "", ", + |Язык") + ?(ПользователиСлужебный.ЗапретРедактированияРолей(), "", ", + |Роли") + ПользователиСлужебный.ПоляВосстановленияПаролей()); + КонецЕсли; + + Если ПрочитанныеСвойства = Неопределено Тогда + УстановитьНаличиеПароля(ЭтотОбъект, Ложь, + Пользователи.АвторизованныйПользователь()); + Иначе + УстановитьНаличиеПароля(ЭтотОбъект, ПрочитанныеСвойства.ПарольУстановлен, + Пользователи.АвторизованныйПользователь()); + КонецЕсли; + КонецЕсли; + + Пользователи.СкопироватьСвойстваПользователяИБ( + ЭтотОбъект, + ОписаниеПользователяИБ, + , + "УникальныйИдентификатор, + |Роли", + "ПользовательИБ"); + + Если ПользовательИБОсновной И Не ВходВПрограммуРазрешен Тогда + ХранимыеСвойства = ПользователиСлужебный.ХранимыеСвойстваПользователяИБ(Объект.Ссылка); + ПользовательИБАутентификацияOpenID = ХранимыеСвойства.АутентификацияOpenID; + ПользовательИБАутентификацияСтандартная = ХранимыеСвойства.АутентификацияСтандартная; + КонецЕсли; + + Если ПользовательИБСуществует Тогда + ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения + = ПользовательИБАутентификацияСтандартная; + КонецЕсли; + + ОбработатьИнтерфейсРолей("ЗаполнитьРоли", ОписаниеПользователяИБ.Роли); + + ПриЧтенииВходВПрограммуРазрешен = ВходВПрограммуРазрешен; + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьНесоответствияПользователяСПользователемИБ(ПараметрыЗаписи = Неопределено) + + // Проверка соответствия свойства ПолноеИмя пользователяИБ и + // реквизита Наименование внешнего пользователя. А также значений свойств по умолчанию. + + ПоказатьНесоответствие = Истина; + ПоказатьКомандыУстраненияРазличий = Ложь; + + Если НЕ ПользовательИБСуществует Тогда + ПоказатьНесоответствие = Ложь; + + ИначеЕсли Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + ПользовательИБПолноеИмя = Объект.Наименование; + ПоказатьНесоответствие = Ложь; + + ИначеЕсли УровеньДоступа.УправлениеСписком Тогда + + УточнениеСвойств = Новый Массив; + ЕстьРазличияУстранимыеБезАдминистратора = Ложь; + + Если ПользовательИБАутентификацияОС <> Ложь Тогда + УточнениеСвойств.Добавить(НСтр("ru = 'Аутентификация ОС (включена)'")); + КонецЕсли; + + Если ЗначениеЗаполнено(УточнениеСвойств) Тогда + ПоказатьКомандыУстраненияРазличий = + УровеньДоступа.НастройкиДляВхода + И ДействияВФорме.СвойстваПользователяИБ = "Редактирование"; + КонецЕсли; + + Если ПользовательИБПолноеИмя <> Объект.Наименование Тогда + ЕстьРазличияУстранимыеБезАдминистратора = Истина; + + УточнениеСвойств.Вставить(0, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Полное имя ""%1""'"), + ПользовательИБПолноеИмя)); + КонецЕсли; + + Если ПользовательИБПользовательОС <> "" Тогда + УточнениеСвойств.Добавить(НСтр("ru = 'Пользователь ОС (указан)'")); + КонецЕсли; + + Если ПользовательИБПоказыватьВСпискеВыбора Тогда + ЕстьРазличияУстранимыеБезАдминистратора = Истина; + УточнениеСвойств.Добавить(НСтр("ru = 'Показывать в списке выбора (включено)'")); + КонецЕсли; + + Если ПользовательИБРежимЗапуска <> "Авто" Тогда + ЕстьРазличияУстранимыеБезАдминистратора = Истина; + УточнениеСвойств.Добавить(НСтр("ru = 'Режим запуска (не Авто)'")); + КонецЕсли; + + Если УточнениеСвойств.Количество() > 0 Тогда + СтрокаУточненияСвойств = ""; + ТекущаяСтрока = ""; + Для каждого УточнениеСвойства Из УточнениеСвойств Цикл + Если СтрДлина(ТекущаяСтрока + УточнениеСвойства) > 90 Тогда + СтрокаУточненияСвойств = СтрокаУточненияСвойств + СокрП(ТекущаяСтрока) + ", " + Символы.ПС; + ТекущаяСтрока = ""; + КонецЕсли; + ТекущаяСтрока = ТекущаяСтрока + ?(ЗначениеЗаполнено(ТекущаяСтрока), ", ", "") + УточнениеСвойства; + КонецЦикла; + Если ЗначениеЗаполнено(ТекущаяСтрока) Тогда + СтрокаУточненияСвойств = СтрокаУточненияСвойств + ТекущаяСтрока; + КонецЕсли; + Если ПоказатьКомандыУстраненияРазличий + Или ЕстьРазличияУстранимыеБезАдминистратора + И ДействияВФорме.СвойстваЭлемента = "Редактирование" Тогда + + Рекомендация = Символы.ПС + + НСтр("ru = 'Нажмите ""Записать"", чтобы устранить различия и не выводить это предупреждение.'"); + + ИначеЕсли Не Пользователи.ЭтоПолноправныйПользователь() Тогда + Рекомендация = Символы.ПС + + НСтр("ru = 'Обратитесь к администратору, чтобы устранить различия.'"); + Иначе + Рекомендация = ""; + КонецЕсли; + Элементы.СвойстваПояснениеНесоответствия.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Следующие свойства пользователя информационной базы отличаются от указанных в этой форме: + |%1.'"), + СтрокаУточненияСвойств) + Рекомендация; + Иначе + ПоказатьНесоответствие = Ложь; + КонецЕсли; + Иначе + ПоказатьНесоответствие = Ложь; + КонецЕсли; + + Элементы.СвойстваОбработкаНесоответствия.Видимость = ПоказатьНесоответствие; + Элементы.СвойстваПояснениеНесоответствия.ВертикальноеПоложение = ?(ЗначениеЗаполнено(Рекомендация), + ВертикальноеПоложениеЭлемента.Верх, ВертикальноеПоложениеЭлемента.Центр); + + // Определение сопоставления несуществующего пользователя ИБ с пользователем в справочнике. + ЕстьНовоеСопоставлениеСНесуществующимПользователемИБ = + НЕ ПользовательИБСуществует И ЗначениеЗаполнено(Объект.ИдентификаторПользователяИБ); + + Если ПараметрыЗаписи <> Неопределено + И ЕстьСопоставлениеСНесуществующимПользователемИБ + И НЕ ЕстьНовоеСопоставлениеСНесуществующимПользователемИБ Тогда + + ПараметрыЗаписи.Вставить("ОчищеноСопоставлениеСНесуществующимПользователемИБ", Объект.Ссылка); + КонецЕсли; + ЕстьСопоставлениеСНесуществующимПользователемИБ = ЕстьНовоеСопоставлениеСНесуществующимПользователемИБ; + + Если УровеньДоступа.УправлениеСписком Тогда + Элементы.СопоставлениеОбработкаНесоответствия.Видимость = ЕстьСопоставлениеСНесуществующимПользователемИБ; + Иначе + // Сопоставление не может быть изменено. + Элементы.СопоставлениеОбработкаНесоответствия.Видимость = Ложь; + КонецЕсли; + + Если ДействияВФорме.СвойстваЭлемента = "Редактирование" Тогда + Рекомендация = Символы.ПС + + НСтр("ru = 'Нажмите ""Записать"", чтобы устранить проблему и не выводить это предупреждение.'"); + + ИначеЕсли Не Пользователи.ЭтоПолноправныйПользователь() Тогда + Рекомендация = Символы.ПС + + НСтр("ru = 'Обратитесь к администратору, чтобы устранить различия.'"); + Иначе + Рекомендация = ""; + КонецЕсли; + + Элементы.СопоставлениеПояснениеНесоответствия.Заголовок = + НСтр("ru = 'Несуществующий пользователь информационной базы.'") + Рекомендация; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Начальное заполнение, проверка заполнения, доступность свойств. + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьСвойств(Форма) + + Элементы = Форма.Элементы; + Объект = Форма.Объект; + ДействияВФорме = Форма.ДействияВФорме; + УровеньДоступа = Форма.УровеньДоступа; + + // Настройка возможности изменения. + Элементы.ОбъектАвторизации.ТолькоПросмотр + = ДействияВФорме.СвойстваЭлемента <> "Редактирование" + Или Форма.ОбъектАвторизацииЗаданПриОткрытии + Или ЗначениеЗаполнено(Объект.Ссылка) + И ЗначениеЗаполнено(Объект.ОбъектАвторизации); + + Элементы.Недействителен.ТолькоПросмотр = + Не (ДействияВФорме.СвойстваЭлемента = "Редактирование" И УровеньДоступа.УправлениеСписком); + + Элементы.ОсновныеСвойства.ТолькоПросмотр = + Не ( ДействияВФорме.СвойстваПользователяИБ = "Редактирование" + И (УровеньДоступа.УправлениеСписком Или УровеньДоступа.ИзменениеТекущего)); + + Элементы.ВходВПрограммуРазрешен.ТолькоПросмотр = + Не ( Элементы.ОсновныеСвойства.ТолькоПросмотр = Ложь + И ( УровеньДоступа.ИзменениеРазрешенияНаВход + Или УровеньДоступа.ОтключениеРазрешенияНаВход И Форма.ПриЧтенииВходВПрограммуРазрешен)); + + Элементы.ПользовательИБИмя1.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.ПользовательИБИмя2.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.ПользовательИБАутентификацияСтандартная.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.ПользовательИБАутентификацияOpenID.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.УстановитьРолиНепосредственно.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + + Элементы.ПотребоватьСменуПароляПриВходе.ТолькоПросмотр = Не УровеньДоступа.УправлениеСписком; + Элементы.ПользовательИБЗапрещеноИзменятьПароль.ТолькоПросмотр = Не УровеньДоступа.УправлениеСписком; + Элементы.ПользовательИБЗапрещеноВосстанавливатьПароль.ТолькоПросмотр = Не УровеньДоступа.УправлениеСписком; + + Элементы.ПользовательИБЗапрещеноВосстанавливатьПароль.Доступность = Не Форма.ПользовательИБЗапрещеноИзменятьПароль; + + Элементы.СменитьПароль.Доступность = + ( УровеньДоступа.НастройкиДляВхода + Или УровеньДоступа.ИзменениеТекущего + И Не Форма.ПользовательИБЗапрещеноИзменятьПароль); + + Элементы.Комментарий.ТолькоПросмотр = + Не (ДействияВФорме.СвойстваЭлемента = "Редактирование" И УровеньДоступа.УправлениеСписком); + + ОбновитьИмяДляВхода(Форма); + + // Настройка доступности связанных элементов. + Элементы.ВходВПрограммуРазрешен.Доступность = Не Объект.Недействителен; + Элементы.ОсновныеСвойства.Доступность = Не Объект.Недействителен; + Элементы.РедактированиеИлиПросмотрРолей.Доступность = Не Объект.Недействителен; + Элементы.ГруппаИзменитьОграничение.Доступность = Не Объект.Недействителен + И Не Элементы.Недействителен.ТолькоПросмотр; + + Элементы.ПараметрыАутентификации1СПредприятия.Доступность = + Форма.ПользовательИБАутентификацияСтандартная; + + ПользователиСлужебныйКлиентСервер.ОбновитьОграничениеСрокаДействия(Форма); + +КонецПроцедуры + +// Продолжение процедуры ИзменитьОграничениеНаВходВПрограмму. +&НаКлиенте +Процедура ИзменитьОграничениеНаВходВПрограммуЗавершение(Результат, Контекст) Экспорт + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ТребуетсяЗаписьПользователяИБ(Форма, УчитыватьСтандартноеИмя = Истина) + + Если Форма.ДействияВФорме.СвойстваПользователяИБ <> "Редактирование" Тогда + Возврат Ложь; + КонецЕсли; + + Шаблон = Форма.НачальноеОписаниеПользователяИБ; + + ТекущееИмя = ""; + Если Не УчитыватьСтандартноеИмя Тогда + КраткоеИмя = ПользователиСлужебныйКлиентСервер.ПолучитьКраткоеИмяПользователяИБ( + Форма.ТекущееПредставлениеОбъектаАвторизации); + + Если Форма.ПользовательИБИмя = КраткоеИмя Тогда + ТекущееИмя = КраткоеИмя; + КонецЕсли; + КонецЕсли; + + Если Форма.ПользовательИБСуществует + ИЛИ Форма.ВходВПрограммуРазрешен + ИЛИ Форма.ПользовательИБИмя <> ТекущееИмя + ИЛИ Форма.ПользовательИБАутентификацияСтандартная <> Шаблон.АутентификацияСтандартная + ИЛИ Форма.ПользовательИБЗапрещеноИзменятьПароль <> Шаблон.ЗапрещеноИзменятьПароль + ИЛИ Форма.ПользовательИБПароль <> Неопределено + ИЛИ Форма.ПользовательИБАутентификацияOpenID <> Шаблон.АутентификацияOpenID + ИЛИ Форма.ПользовательИБЯзык <> Шаблон.Язык + ИЛИ Форма.ПользовательИБРоли.Количество() <> 0 Тогда + + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаСервере +Процедура ОбработатьИнтерфейсРолей(Действие, ОсновнойПараметр = Неопределено) + + ПараметрыДействия = Новый Структура; + ПараметрыДействия.Вставить("ОсновнойПараметр", ОсновнойПараметр); + ПараметрыДействия.Вставить("Форма", ЭтотОбъект); + ПараметрыДействия.Вставить("КоллекцияРолей", ПользовательИБРоли); + ПараметрыДействия.Вставить("НазначениеРолей", "ДляВнешнихПользователей"); + + ПользователиСлужебный.ОбработатьИнтерфейсРолей(Действие, ПараметрыДействия); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Help/ru.html" new file mode 100644 index 00000000..bed59710 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Help/ru.html" @@ -0,0 +1,69 @@ + +

Предназначен для ведения пользователей, которые работают с программой "извне". Их доступ, как правило, сильно ограничен. Внешние пользователи не принимают активного участия в процессах учета, работают обособленно, не взаимодействуют между собой. Например, это сотрудники в кадровой базе, покупатели в интернет-магазине, респонденты в базе для анкетирования.

+

Открыть список внешних пользователей можно из раздела Администрирование - Настройки пользователей и прав. Также можно его открыть из раздела Анкетирование (Управление доступом).

+

Внешние пользователи программы разного типа, поэтому информация о них хранится в различных списках программы, например, Контрагенты, Физические лица и т.д.

+

Ведение списка внешних пользователей может осуществлять как администратор, так и ответственный за список внешних пользователей.

+

Вход в программу разрешает только администратор.

+

Ответственный за список внешних пользователей (с правом добавления новых внешних пользователей) может выполнять ограниченное ведение списка внешних пользователей, настройку внешнего пользователя до разрешения входа в программу администратором. Ответственный за список может использовать команду Внешний доступ, редактировать списки Внешние пользователи и Группы внешних пользователей.

+

Внешний пользователь, которого ввел ответственный за список, получает статус Подготовлен. Администратор программы может отобрать таких пользователей по этому признаку, проверить правильность заполнения сведений и разрешить вход в программу.

+

После того как администратор разрешит вход в программу, ответственный за список более не сможет изменить настройки для входа, кроме отключения разрешения на вход в программу.

+

Всем внешним пользователям доступен просмотр сведений о себе, а также изменение ряда свойств, таких как: пароль, язык программы и контактная информация.

+

В распределенной информационной базе вход в программу настраивается отдельно для каждой из информационных баз программы.

+

Ввод внешнего пользователя

+
  • Основной способ ввода и редактирования внешних пользователей - с помощью кнопки Внешний доступ, которая размещается в командной панели списков программы. При выполнении команды сразу создается внешний пользователь, связанный с этим объектом, или открывается существующий внешний пользователь. +
  • +
  • Также можно ввести внешнего пользователя в списке. Нажмите Создать. В этом случае необходимо самостоятельно заполнить Объект, с которым связан этот внешний пользователь.

Отбор внешних пользователей

+
  • +
    В списке можно отобрать внешних пользователей определенного вида (например, партнеров).
    +
  • +
  • +
    В поле Вид с помощью кнопки  откройте окно выбора, с помощью флажков укажите, какие виды внешних пользователей вывести в список.

Просмотр внешних пользователей нижестоящих групп

+
  • Для того чтобы увидеть всех внешних пользователей, включенных в дочерние группы с учетом иерархии, необходимо установить флажок Показывать пользователей нижестоящих групп в нижней части списка. По умолчанию флажок включен.

Просмотр недействительных внешних пользователей

+
  • Внешние пользователи могут быть отмечены как недействительные. Для того чтобы посмотреть таких внешних пользователей, включите флажок Показывать недействительных пользователей в нижней части списка. По умолчанию флажок выключен.

Просмотр пользователей информационной базы

+
  • Для контроля правильности ввода или в случае некорректного ввода внешних пользователей по команде Еще - Пользователи информационной базы можно перейти к синхронизации списка внешних пользователей со списком пользователей информационной базы.

Группировка внешних пользователей

+
  • В случае если в программе разрешено использовать группы пользователей, список состоит из двух частей: в левой части необходимое количество групп, в правой - список внешних пользователей. При выборе группы в правой части отображаются внешние пользователи, входящие в группу. +
  • +
  • Если в программе много внешних пользователей, список можно сгруппировать, например, по видам отношений с ними: партнеры, контрагенты и т.д. +
  • +
  • Один и тот же внешний пользователь может одновременно входить в разные группы. +
  • +
  • Включить внешнего пользователя в группы можно несколькими способами: +
    • При вводе внешнего пользователя в списке можно сначала выбрать группу, затем нажать кнопку Создать. +
    • +
    • Для добавления в группу большого числа внешних пользователей можно открыть окно группы и нажать Подобрать. При этом для подбора используется список Внешние пользователи, состоящий из трех частей. +
    • +
    • Выделить внешнего пользователя в списке, с помощью команды меню Еще - Назначить группы включить его в одну или несколько групп. Также можно найти эту команду в контекстном меню по правой кнопке мыши. +
    • +
    • Перетащить одного или нескольких внешних пользователей мышью в нужную группу. Для использования этой возможности флажок Показывать внешних пользователей нижестоящих групп необходимо отключить.

Ввод группы внешних пользователей

+
  • Нажмите Создать группу внешних пользователей, введите необходимые поля. +
  • +
  • Также можно воспользоваться командой Создать контекстного меню по правой кнопке мыши в левой части списка.

Включение группы внешних пользователей в другую группу

+
  • +
    Выберите группу в левой части списка, воспользуйтесь командой контекстного меню по правой кнопке мыши Переместить в группу.
    +
  • +
  • +
    Выберите группу для перемещения.

Подбор участников группы внешних пользователей

+
  • В случае если из списка внешних пользователей производится подбор участников группы, он состоит из трех частей.Слева в верхней части списка отображаются группы, в нижней части - внешние пользователи выбранной группы. В правой части списка отображаются выбранные пользователи. +
  • +
  • +
    Для удобства подбора в верхней левой части списка показаны уже имеющиеся группы внешних пользователей. Выбрав нужную группу, можно просмотреть пользователей этой группы в нижней левой части списка.
    +
  • +
  • +
    Выделите одного или нескольких пользователей в левой нижней части списка, с помощью стрелки переместите в правую часть Выбранные пользователи и группы.Также можно перенести внешнего пользователя из левой нижней части в правую с помощью двойного щелчка мышью.
    +
  • +
  • +
    Для того чтобы отменить свой выбор, уберите одного или нескольких ненужных пользователей из правой части списка аналогичными действиями.
    +
  • +
  • +
    С помощью двойной стрелки << можно убрать из Выбранных сразу всех внешних пользователей.
    +
  • +
  • +
    Программа ведет подсчет выбранных внешних пользователей.

Просмотр отчета Сведения о внешних пользователях

+
  • Отчет позволяет выполнить анализ настроек для входа (свойств пользователя ИБ) совместно с остальными свойствами внешнего пользователя в справочнике. Включает 3 варианта отчета - о пользователях, внешних пользователях и всех пользователях программы. +
  • +
  • +
    Нажмите Еще - Сведения о внешних пользователях, сформируйте отчет.

Установка пароля

+

Доступно только для администратора

+
  • +
    Нажмите Еще - Установить пароль, заполните необходимые поля.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ManagerModule.bsl" new file mode 100644 index 00000000..e59ebdf0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ManagerModule.bsl" @@ -0,0 +1,173 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + НеРедактируемыеРеквизиты = Новый Массив; + НеРедактируемыеРеквизиты.Добавить("ОбъектАвторизации"); + НеРедактируемыеРеквизиты.Добавить("УстановитьРолиНепосредственно"); + НеРедактируемыеРеквизиты.Добавить("ИдентификаторПользователяИБ"); + НеРедактируемыеРеквизиты.Добавить("ИдентификаторПользователяСервиса"); + НеРедактируемыеРеквизиты.Добавить("СвойстваПользователяИБ"); + + Возврат НеРедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.ТекстДляВнешнихПользователей = + "РазрешитьЧтение + |ГДЕ + | ЗначениеРазрешено(Ссылка) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ЭтоАвторизованныйПользователь(Ссылка)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + Если НЕ Параметры.Отбор.Свойство("Недействителен") Тогда + Параметры.Отбор.Вставить("Недействителен", Ложь); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + + Если ВидФормы = "ФормаОбъекта" И Параметры.Свойство("ОбъектАвторизации") Тогда + + СтандартнаяОбработка = Ложь; + ВыбраннаяФорма = "ФормаЭлемента"; + + НайденныйВнешнийПользователь = Неопределено; + ЕстьПравоДобавленияВнешнегоПользователя = Ложь; + + ОбъектАвторизацииИспользуется = ПользователиСлужебный.ОбъектАвторизацииИспользуется( + Параметры.ОбъектАвторизации, + Неопределено, + НайденныйВнешнийПользователь, + ЕстьПравоДобавленияВнешнегоПользователя); + + Если ОбъектАвторизацииИспользуется Тогда + Параметры.Вставить("Ключ", НайденныйВнешнийПользователь); + + ИначеЕсли ЕстьПравоДобавленияВнешнегоПользователя Тогда + + Параметры.Вставить( + "ОбъектАвторизацииНовогоВнешнегоПользователя", Параметры.ОбъектАвторизации); + Иначе + ОписаниеОшибкиКакПредупреждения = + НСтр("ru = 'Разрешение на вход в программу не предоставлялось.'"); + + ВызватьИсключение ОписаниеОшибкиКакПредупреждения; + КонецЕсли; + + Параметры.Удалить("ОбъектАвторизации"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + Возврат; + КонецЕсли; + + СписокВнешнихПользователей = ПользователиСлужебный.ВнешниеПользователиДляВключенияВосстановленияПароля(); + + Если СписокВнешнихПользователей.Количество() > 0 Тогда + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, СписокВнешнихПользователей); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + Параметры.ОбработкаЗавершена = Истина; + Возврат; + КонецЕсли; + + ВнешнийПользовательСсылка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ВнешниеПользователи"); + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + СписокОшибок = Новый Массив; + + Пока ВнешнийПользовательСсылка.Следующий() Цикл + + ОбъектАвторизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВнешнийПользовательСсылка.Ссылка, "ОбъектАвторизации"); + Результат = ПользователиСлужебный.ОбновитьПочтуДляВосстановленияПароля(ВнешнийПользовательСсылка.Ссылка, ОбъектАвторизации); + + Если Результат.Статус = "Ошибка" Тогда + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + СписокОшибок.Добавить(Результат.ТекстОшибки); + Иначе + ОбъектовОбработано = ОбъектовОбработано + 1; + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ВнешнийПользовательСсылка.Ссылка); + КонецЕсли; + + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ВнешниеПользователи"); + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторых внешних пользователей (пропущены): %1 + |%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС)); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.Справочники.ВнешниеПользователи,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию внешних пользователей: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..ca0349ea --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ObjectModule.bsl" @@ -0,0 +1,166 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +Перем ПараметрыОбработкиПользователяИБ; // Параметры, заполняемые при обработке пользователя ИБ. + // Используются в обработчике события ПриЗаписи. + +Перем ЭтоНовый; // Показывает, что был записан новый объект. + // Используются в обработчике события ПриЗаписи. + +Перем СтарыйОбъектАвторизации; // Значений объекта авторизации до изменения. + // Используются в обработчике события ПриЗаписи. + +#КонецОбласти + +// *Область ПрограммныйИнтерфейс. +// +// Программный интерфейс объекта реализован через ДополнительныеСвойства: +// +// ОписаниеПользователяИБ - Структура, как и в модуле объекта справочника Пользователи. +// +// *КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ЭтоНовый = ЭтоНовый(); + + Если НЕ ЗначениеЗаполнено(ОбъектАвторизации) Тогда + ВызватьИсключение НСтр("ru = 'У внешнего пользователя не задан объект авторизации.'"); + Иначе + ТекстОшибки = ""; + Если ПользователиСлужебный.ОбъектАвторизацииИспользуется( + ОбъектАвторизации, Ссылка, , , ТекстОшибки) Тогда + + ВызватьИсключение ТекстОшибки; + КонецЕсли; + КонецЕсли; + + // Проверка, что объект авторизации не изменен. + Если ЭтоНовый Тогда + СтарыйОбъектАвторизации = NULL; + Иначе + СтарыйОбъектАвторизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Ссылка, "ОбъектАвторизации"); + + Если ЗначениеЗаполнено(СтарыйОбъектАвторизации) + И СтарыйОбъектАвторизации <> ОбъектАвторизации Тогда + + ВызватьИсключение НСтр("ru = 'Невозможно изменить ранее указанный объект авторизации.'"); + КонецЕсли; + КонецЕсли; + + ПользователиСлужебный.НачатьОбработкуПользователяИБ(ЭтотОбъект, ПараметрыОбработкиПользователяИБ); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + // Обновление состава группы нового внешнего пользователя (если задана). + Если ДополнительныеСвойства.Свойство("ГруппаНовогоВнешнегоПользователя") + И ЗначениеЗаполнено(ДополнительныеСвойства.ГруппаНовогоВнешнегоПользователя) Тогда + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить("Справочник.ГруппыВнешнихПользователей"); + Блокировка.Заблокировать(); + + ОбъектГруппы = ДополнительныеСвойства.ГруппаНовогоВнешнегоПользователя.ПолучитьОбъект(); // СправочникСсылка.ГруппыВнешнихПользователей + ОбъектГруппы.Состав.Добавить().ВнешнийПользователь = Ссылка; + ОбъектГруппы.Записать(); + КонецЕсли; + + // Обновление состава автоматической группы "Все внешние пользователи". + УчастникиИзменений = Новый Соответствие; + ИзмененныеГруппы = Новый Соответствие; + + ПользователиСлужебный.ОбновитьСоставыГруппВнешнихПользователей( + Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи, + Ссылка, + УчастникиИзменений, + ИзмененныеГруппы); + + ПользователиСлужебный.ОбновитьИспользуемостьСоставовГруппПользователей( + Ссылка, УчастникиИзменений, ИзмененныеГруппы); + + ПользователиСлужебный.ЗавершитьОбработкуПользователяИБ( + ЭтотОбъект, ПараметрыОбработкиПользователяИБ); + + ПользователиСлужебный.ПослеОбновленияСоставовГруппВнешнихПользователей( + УчастникиИзменений, + ИзмененныеГруппы); + + Если СтарыйОбъектАвторизации <> ОбъектАвторизации Тогда + ИнтеграцияПодсистемБСП.ПослеИзмененияОбъектаАвторизацииВнешнегоПользователя( + Ссылка, СтарыйОбъектАвторизации, ОбъектАвторизации); + КонецЕсли; + + ПользователиСлужебный.ВключитьЗаданиеКонтрольАктивностиПользователейПриНеобходимости(Ссылка); + + ИнтеграцияПодсистемБСП.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый); + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ОбщиеДействияПередУдалениемВОбычномРежимеИПриОбменеДанными(); + +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + + ДополнительныеСвойства.Вставить("ЗначениеКопирования", ОбъектКопирования.Ссылка); + + ИдентификаторПользователяИБ = Неопределено; + ИдентификаторПользователяСервиса = Неопределено; + Подготовлен = Ложь; + + Комментарий = ""; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Только для внутреннего использования. +Процедура ОбщиеДействияПередУдалениемВОбычномРежимеИПриОбменеДанными() Экспорт + + // Требуется удалить пользователя ИБ, иначе он попадет в список ошибок в форме ПользователиИБ, + // кроме того, вход под этим пользователем ИБ приведет к ошибке. + + ОписаниеПользователяИБ = Новый Структура; + ОписаниеПользователяИБ.Вставить("Действие", "Удалить"); + ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ); + + ПользователиСлужебный.НачатьОбработкуПользователяИБ(ЭтотОбъект, ПараметрыОбработкиПользователяИБ, Истина); + ПользователиСлужебный.ЗавершитьОбработкуПользователяИБ(ЭтотОбъект, ПараметрыОбработкиПользователяИБ); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.mdo" new file mode 100644 index 00000000..68374a6b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.mdo" @@ -0,0 +1,441 @@ + + + + + + + + + + ВнешниеПользователи + + ru + Внешние пользователи + + АПК:413 - №744.2.1.1 Допустимо не отключать историю выбора, так как она используется, а переопределение отбора фиксированное, то есть служебные и недействительные пользователи в нее не попадут, но если как-то попали, то это не является проблемой + true + Catalog.ВнешниеПользователи.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Catalog.ВнешниеПользователи.EmptyRef + + Use + + + + + Use + Description + + ru + Представление + + + ru + Представление объекта информационной базы, которому соответствует внешний пользователь + + + Use + + + + + Use + Code + + Use + + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.ИмяПредопределенногоНабора + + Справочник_ВнешниеПользователи + + Catalog.ВнешниеПользователи.TabularSection.ДополнительныеРеквизиты + Catalog.ВнешниеПользователи.TabularSection.ДополнительныеРеквизиты.StandardAttribute.Ref + Catalog.ВнешниеПользователи.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.ВнешниеПользователи.TabularSection.ДополнительныеРеквизиты.Attribute.Значение + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.ИмяПредопределенногоНабора + + Справочник_ВнешниеПользователи + + InformationRegister.ДополнительныеСведения + InformationRegister.ДополнительныеСведения.Dimension.Объект + InformationRegister.ДополнительныеСведения.Dimension.Свойство + InformationRegister.ДополнительныеСведения.Resource.Значение + + Use + true + + + ru + + + Catalog.ВнешниеПользователи.Attribute.ИдентификаторПользователяИБ + Managed + Use + + ru + Внешний пользователь + + 2 + 100 + String + Variable + AsDescription + InDialog + BothWays + Catalog.ВнешниеПользователи.Form.ФормаЭлемента + Catalog.ВнешниеПользователи.Form.ФормаСписка + Catalog.ВнешниеПользователи.Form.ФормаСписка + + Недействителен + + ru + Недействителен + + + Boolean + + + ru + Внешний пользователь больше не работает в программе, но сведения о нем сохранены. +Недействительные внешние пользователи скрываются из всех списков +при выборе или подборе в документах и других местах программы. + + + + + Index + Use + Use + + + ОбъектАвторизации + + ru + Объект + + + DefinedType.ВнешнийПользователь + + + ru + Объект, которому соответствует внешний пользователь, например, контрагент + + + + ShowError + + Use + Use + + + УстановитьРолиНепосредственно + + ru + Установить роли непосредственно + + Используется, если не встроена подсистема "Управление доступом" + + Boolean + + + ru + Установить роли непосредственно без использования ролей, заданных в группах внешних пользователей + + + + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Произвольная строка + + true + + + + + + Use + Use + + + Подготовлен + + ru + Подготовлен + + + Boolean + + + ru + Пользователь подготовлен ответственным за список внешних пользователей. + + + + + Use + Use + + + ИдентификаторПользователяИБ + + ru + Идентификатор пользователя ИБ + + + UUID + + + ru + Уникальный идентификатор пользователя информационной базы, с которым сопоставлен этот элемент справочника. + + + + + Index + Use + + + ИдентификаторПользователяСервиса + + ru + Идентификатор пользователя сервиса + + + UUID + + + ru + Уникальный идентификатор пользователя сервиса, с которым сопоставлен этот элемент справочника. + + + + + Index + Use + + + СвойстваПользователяИБ + + ru + Свойства пользователя ИБ + + + ValueStorage + + + ru + Служебное хранилище некоторых свойств пользователя ИБ + + + + + Use + Use + + + + + + + ДополнительныеРеквизиты + + ru + Дополнительные реквизиты + + + ru + Дополнительные реквизиты объекта + + + Use + LineNumber + + Use + + + + + Свойство + + ru + Свойство + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + ru + Дополнительный реквизит + + + + DontUse + Use + Use + Use + + + Значение + + ru + Значение + + + Characteristic.ДополнительныеРеквизитыИСведения + + + ru + Значение дополнительного реквизита + + + + + Отбор.Владелец + Catalog.ВнешниеПользователи.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + + DontUse + Use + Use + Use + + + ТекстоваяСтрока + + ru + Текстовая строка + + + String + + + + ru + Полный текст строкового дополнительного реквизита + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ВнешнийДоступ + + ru + Внешний доступ + + Внешний пользователь объекта авторизации + FormCommandBarImportant + + Picture + + ru + Внешний пользователь (для входа в программу) + + + CommonPicture.СостояниеПользователя08 + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..9a8489e1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/ManagerModule.bsl" @@ -0,0 +1,155 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Обязательный"); + Результат.Добавить("Заметки"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики обновления. + +// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, +// которые необходимо обновить на новую версию. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ВопросыШаблонаАнкеты.Ссылка + |ИЗ + | Справочник.ВопросыШаблонаАнкеты КАК ВопросыШаблонаАнкеты + |ГДЕ + | ВопросыШаблонаАнкеты.СпособОтображенияПодсказки = &ПустаяСсылка"; + Запрос.Параметры.Вставить("ПустаяСсылка", Перечисления.СпособыОтображенияПодсказок.ПустаяСсылка()); + + Результат = Запрос.Выполнить().Выгрузить(); + МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); + +КонецПроцедуры + +// Заполнить значение нового реквизита СпособОтображенияПодсказки у справочника ВопросыШаблонаАнкеты. +// +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ВопросыШаблонаАнкеты"); + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + + Пока Выборка.Следующий() Цикл + + Попытка + + ЗаполнитьРеквизитСпособОтображенияПодсказки(Выборка); + ОбъектовОбработано = ОбъектовОбработано + 1; + + Исключение + // Если не удалось обработать объект, повторяем попытку снова. + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать вопрос шаблона анкеты: %1 по причине: + |%2'"), + Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.Справочники.ВопросыШаблонаАнкеты, Выборка.Ссылка, ТекстСообщения); + КонецПопытки; + + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ВопросыШаблонаАнкеты"); + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре ЗаполнитьРеквизитСпособОтображенияПодсказки не удалось обработать некоторые вопросы шаблона анкеты (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.Справочники.ВопросыШаблонаАнкеты,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьРеквизитСпособОтображенияПодсказки обработала очередную порцию вопросов шаблона анкеты: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Заполняет значение нового реквизита СпособОтображенияПодсказки у переданного объекта. +// +Процедура ЗаполнитьРеквизитСпособОтображенияПодсказки(Выборка) + + НачатьТранзакцию(); + Попытка + + // Блокируем объект от изменения другими сеансами. + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВопросыШаблонаАнкеты"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); + Блокировка.Заблокировать(); + + СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект(); + + // Если объект ранее был удален или обработан другими сеансами, пропускаем его. + Если СправочникОбъект = Неопределено Тогда + ОтменитьТранзакцию(); + Возврат; + КонецЕсли; + Если СправочникОбъект.СпособОтображенияПодсказки <> Перечисления.СпособыОтображенияПодсказок.ПустаяСсылка() Тогда + ОтменитьТранзакцию(); + Возврат; + КонецЕсли; + + // Обработка объекта. + СправочникОбъект.СпособОтображенияПодсказки = Перечисления.СпособыОтображенияПодсказок.КонтекстнаяПодсказка; + + // Запись обработанного объекта. + ОбновлениеИнформационнойБазы.ЗаписатьДанные(СправочникОбъект); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..4f0e3acf --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/ObjectModule.bsl" @@ -0,0 +1,27 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213.mdo" new file mode 100644 index 00000000..81f27c80 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\250\320\260\320\261\320\273\320\276\320\275\320\260\320\220\320\275\320\272\320\265\321\202\321\213.mdo" @@ -0,0 +1,461 @@ + + + + + + + + + + ВопросыШаблонаАнкеты + + ru + Вопросы шаблона анкеты + + true + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Description + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + + ru + Шаблон анкеты + + + ru + Шаблон анкеты, которому принадлежит данный вопрос + + true + + Catalog.ШаблоныАнкет.EmptyRef + + ShowError + Use + + + + + Use + Parent + + ru + Раздел + + + ru + Раздел, в который входит вопрос шаблона анкеты + + true + + Catalog.ВопросыШаблонаАнкеты.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование вопроса шаблона анкеты, не выводится респондентам. + + + ShowError + Use + + + + + Use + Code + + ru + Порядковый номер раздела или вопроса в разделе шаблона анкеты + + + Use + + + + Use + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Owner + Managed + Use + + ru + Вопрос шаблона анкеты + + true + 2 + true + Catalog.ШаблоныАнкет + 9 + 150 + Variable + WithinSubordination + true + true + AsDescription + InDialog + BothWays + + Формулировка + + ru + Формулировка + + + String + + + + ru + Формулировка вопроса. Выводится респонденту + + + + + + + Use + ForFolderAndItem + Use + + + Обязательный + + ru + Обязательный + + + Boolean + + + ru + Признак того, что данный вопрос является обязательным для ответа респондентом при заполнении анкеты + + + + + Use + Use + + + ТипВопроса + + ru + Тип вопроса + + + EnumRef.ТипыВопросовШаблонаАнкеты + + + ru + Тип вопроса - простой, табличный или условный + + + + + Enum.ТипыВопросовШаблонаАнкеты.EmptyRef + + Use + Use + + + ТипТабличногоВопроса + + ru + Тип табличного вопроса + + + EnumRef.ТипыТабличныхВопросов + + + ru + Определяет возможную структуру и внешний вид табличного вопроса + + + + + Enum.ТипыТабличныхВопросов.EmptyRef + + Use + Use + + + ЭлементарныйВопрос + + ru + Элементарный вопрос + + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + ru + Подобранный для анкет вопрос из общего списка вопроса. Позволяет анализировать ответы на данный вопрос в различных опросах по разным шаблонам анкет. + + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.EmptyRef + + Use + Use + + + РодительВопрос + + ru + Вопрос родитель + + + CatalogRef.ВопросыШаблонаАнкеты + + + ru + Условный вопрос, который определяет необходимость ответа на данный вопрос + + + + + Use + Use + + + Заметки + + ru + Заметки + + + String + + + + ru + Возможность указать поясняющую информацию по вопросу. Предназначено для составителей анкеты и не выводится пользователю + + + + + + + Use + ForFolderAndItem + Use + + + Подсказка + + ru + Подсказка + + + String + + + + ru + Текст подсказки + + + + + + + Use + Use + + + СпособОтображенияПодсказки + + ru + Способ отображения подсказки + + + EnumRef.СпособыОтображенияПодсказок + + + ru + Способ отображения подсказки в форме анкеты + + + + + Use + Use + + + + + + + СоставТабличногоВопроса + + ru + Состав табличного вопроса + + + Use + LineNumber + + Use + + + + + ЭлементарныйВопрос + + ru + Элементарный вопрос + + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + ru + Элементарный вопрос, являющийся составной частью табличного вопроса + + + + Use + Use + + + + + + + + ПредопределенныеОтветы + + ru + Предопределенные ответы + + + Use + LineNumber + + Use + + + + + ЭлементарныйВопрос + + ru + Элементарный вопрос + + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + ru + Является составной частью табличного вопроса, при этом на данный вопрос уже дан предопределенный вопрос + + + + Use + Use + + + Ответ + + ru + Ответ + + + Characteristic.ВопросыДляАнкетирования + + + ru + Предопределенный ответ на один из вопросов табличного вопроса. Используется при заполнении первой колонки или шапки табличного вопроса + + + + Use + Use + + + + + + + + СоставКомплексногоВопроса + + ru + Состав комплексного вопроса + + + Use + LineNumber + + Use + + + + + ЭлементарныйВопрос + + ru + Элементарный вопрос + + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + ru + Элементарный вопрос, являющийся составной частью комплексного вопроса + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..7ef684af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(ВладелецФайла)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..da48f831 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\222\321\201\321\202\321\200\320\265\321\207\320\260\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,836 @@ + + + + + + + + + + ВстречаПрисоединенныеФайлы + + ru + Присоединенные файлы (Встреча) + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла + + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ВладелецФайла + Managed + Use + + ru + Присоединенный файл (Встреча) + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Автор + + ru + Автор + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил файл в список + + + + ShowError + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Размещение + + + DocumentRef.Встреча + + + ru + Место размещения файла (объект) + + + + + Index + Use + + + ДатаЗаема + + ru + Дата заема + + + Date + + + + ru + ДЛФ=ДВ + + + ru + ДЛФ=ДВ + + + ru + Дата, когда файл был занят для редактирования + + false + + + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата изменения (универсальное время) + + + Date + + + + ru + Дата изменения данных файла (универсальное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления файла в список + + + + ShowError + + 0001-01-01T00:00:00 + + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Use + + + Изменил + + ru + Отредактировал + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Последний пользователь, который отредактировал файл + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ИндексКартинки + + ru + Индекс значка + + + Number + + 10 + + + + ru + Индекс значка файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Краткое описание файла + + true + + + + + + Use + Use + + + ПодписанЭП + + ru + Подписан электронно + + + Boolean + + + ru + Признак того, что файл подписан электронно + + + + + Use + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + + + Use + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + + + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который занял файл для редактирования + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или в информационной базе) + + + + ShowError + + Index + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (когда файл хранится в томе) + + + + + Index + Use + + + ФайлХранилище + + ru + Временное хранилище файла + + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + ХранитьВерсии + + ru + Хранить версии + + + Boolean + + + ru + Добавлять версии файла при окончании редактирования. Если отключить, тогда будет хранится только последняя версия. + + false + + + + Use + Use + + + + + + + УдалитьЭлектронныеПодписи + + ru + (не используется) электронные подписи + + + ru + Хранение электронных подписей файла + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Index + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + ДатаПроверкиПодписи + + ru + Дата проверки подписи + + + Date + + + + ru + Дата последней проверки подписи. + + + + Use + Use + + + ПодписьВерна + + ru + Подпись верна + + + Boolean + + + ru + Результат последней проверки подписи. + + + + Use + Use + + + + + + + + УдалитьСертификатыШифрования + + ru + (не используется) Сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\265\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\265\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/CommandModule.bsl" new file mode 100644 index 00000000..d680f390 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\265\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/CommandModule.bsl" @@ -0,0 +1,25 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Пользователь", ПараметрКоманды); + + ОткрытьФорму("ОбщаяФорма.ГруппыПользователей", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..d8bfc5de --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,552 @@ + + + + ГруппаПользовательскихНастроек + 19 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 17 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Комментарий + 6 + true + true + + + + Список.Комментарий + + + + КомментарийExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Ссылка + 11 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 12 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + OnChange + СписокПриИзменении + + + true + true + + true + + СписокСтрокаПоиска + 21 + + СписокСтрокаПоискаРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 22 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 24 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 25 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 27 + + СписокУправлениеПоискомРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 28 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + + Список.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
+ + ПолеКомментарий + 14 + true + true + + true + + + + Items.Список.CurrentData.Комментарий + + + + ПолеКомментарийРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + ПолеКомментарийКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ + ГруппыВнешнихПользователей.Ссылка, + ГруппыВнешнихПользователей.ПометкаУдаления, + ГруппыВнешнихПользователей.Предопределенный, + ГруппыВнешнихПользователей.Родитель, + ГруппыВнешнихПользователей.Наименование, + ГруппыВнешнихПользователей.Комментарий, + ВЫБОР + КОГДА ГруппыВнешнихПользователей.ПометкаУдаления + ТОГДА 8 + ИНАЧЕ 9 + КОНЕЦ КАК НомерКартинки +ИЗ + Справочник.ГруппыВнешнихПользователей КАК ГруппыВнешнихПользователей + Catalog.ГруппыВнешнихПользователей + true + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..8ad4773b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,95 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + НастроитьПорядокГруппыВсеВнешниеПользователи(Список); + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + + // Исключение выбора группы Все внешние пользователи в качестве родителя. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи, + ВидСравненияКомпоновкиДанных.НеРавно, , Параметры.Свойство("ВыборРодителя")); + + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + // Режим подбора. + Заголовок = НСтр("ru = 'Подбор групп внешних пользователей'"); + Элементы.Список.МножественныйВыбор = Истина; + Элементы.Список.РежимВыделения = РежимВыделенияТаблицы.Множественный; + Иначе + Заголовок = НСтр("ru = 'Выбор группы внешних пользователей'"); + КонецЕсли; + + АвтоЗаголовок = Ложь; + Иначе + Элементы.Список.РежимВыбора = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПриИзменении(Элемент) + + СписокПриИзмененииНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура НастроитьПорядокГруппыВсеВнешниеПользователи(Список) + + Перем Порядок; + + // Порядок. + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Предопределенный"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриИзмененииНаСервере() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..bddebec4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,2569 @@ + + + + ГруппаШапка + 241 + + Наименование + 4 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 153 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 40 + true + true + true + true + true + + Style.BorderColor + + + + + Родитель + 40 + + <key>ru</key> + <value>В группе</value> + + true + true + + true + + + + Объект.Parent + + + + OnChange + РодительПриИзменении + + + РодительExtendedTooltip + 184 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 41 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + РодительНачалоВыбора + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 242 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + СоставИРоли + 9 + + ВнешниеПользователиГруппы + 55 + + ТипПользователей + 124 + + УчастникиГруппы + 147 + + <key>ru</key> + <value>В группу включены</value> + + true + true + + true + + + + УчастникиГруппы + + + None + + OnChange + СоставУчастниковПриИзменении + + + УчастникиГруппыExtendedTooltip + 157 + true + true + + true + + Label + true + true + + Left + + + + УчастникиГруппыКонтекстноеМеню + 148 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + false + true + true + true + true + + + ru + Выбранные пользователи указанных видов + + + ВыбранныеПользователиУказанныхВидов + + + + + ru + Все пользователи указанных видов + + + ВсеПользователиУказанныхВидов + + + + Style.ФонУправляющегоПоля + + + + + ГруппаНазначение + 239 + + ЗаголовокНазначение + 236 + + <key>ru</key> + <value>Вид:</value> + + true + true + + true + + + ЗаголовокНазначениеРасширеннаяПодсказка + 238 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокНазначениеКонтекстноеМеню + 237 + true + true + + true + + true + + Label + true + + Left + + + + ВыбратьНазначение + 234 + true + true + + true + + + ВыбратьНазначениеРасширеннаяПодсказка + 235 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ВыбратьНазначение + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Назначение</value> + + + ГруппаНазначениеРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Тип пользователей</value> + + + ТипПользователейExtendedTooltip + 156 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Состав + 10 + + <key>ru</key> + <value>Участники</value> + + true + true + + true + + + Объект.Состав + + false + None + Copy + MoveDown + MoveUp + SortListAsc + SortListDesc + + СоставВнешнийПользователь + 53 + true + true + + true + + + + Объект.Состав.ВнешнийПользователь + + + + СоставВнешнийПользовательExtendedTooltip + 172 + true + true + + true + + Label + true + true + + Left + + + + СоставВнешнийПользовательКонтекстноеМеню + 54 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + СоставВнешнийПользовательНачалоВыбора + + true + true + true + true + true + true + + + + Недействителен + 150 + true + + true + + + + Объект.Состав.Недействителен + + + + НедействителенExtendedTooltip + 173 + true + true + + true + + Label + true + true + + Left + + + + НедействителенКонтекстноеМеню + 151 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + СоставКоманднаяПанель + 12 + + СоставПодобрать + 31 + true + true + + true + + false + + СоставПодобратьExtendedTooltip + 163 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодобратьВнешнихПользователей + Auto + true + true + UserCmds + Auto + + + СоставДобавить + 32 + true + true + + true + + false + + СоставДобавитьExtendedTooltip + 164 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Add + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СоставИзменить + 214 + true + true + + true + + + СоставИзменитьРасширеннаяПодсказка + 215 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + СоставСкопировать + 49 + true + true + + true + + false + + СоставСкопироватьExtendedTooltip + 165 + true + true + + true + + Label + true + true + + Left + + + 10:0ae4bea5-23be-42a7-b69e-97b11b29c453 + Auto + true + true + UserCmds + Auto + + + СоставУдалить + 33 + true + true + + true + + false + + СоставУдалитьExtendedTooltip + 166 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + СоставПереместитьВверх + 202 + true + true + + true + + + СоставПереместитьВверхРасширеннаяПодсказка + 203 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВверх + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СоставПереместитьВниз + 204 + true + true + + true + + + СоставПереместитьВнизРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВниз + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СоставСортироватьПоВозрастанию + 198 + true + true + + true + + + СоставСортироватьПоВозрастаниюРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СортироватьПоВозрастанию + Auto + true + true + UserCmds + Auto + + + СоставСортироватьПоУбыванию + 200 + true + true + + true + + + СоставСортироватьПоУбываниюРасширеннаяПодсказка + 201 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СортироватьПоУбыванию + Auto + true + true + UserCmds + Auto + + + СоставСтандартныеКоманды + 194 + + ПоказыватьНедействительныхПользователей + 149 + true + true + + true + + + ПоказыватьНедействительныхПользователейExtendedTooltip + 152 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьНедействительныхПользователей + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Состав стандартные команды</value> + + + СоставСтандартныеКомандыРасширеннаяПодсказка + 195 + true + true + + true + + Label + true + true + + Left + + + + Item.Состав + + + true + true + + true + + Left + + + Drag + СоставПеретаскивание + + + ChoiceProcessing + СоставОбработкаВыбора + + + OnChange + СоставПриИзменении + + + true + true + + true + + СоставСтрокаПоиска + 216 + + СоставСтрокаПоискаРасширеннаяПодсказка + 218 + true + true + + true + + Label + true + true + + Left + + + + СоставСтрокаПоискаКонтекстноеМеню + 217 + true + true + + true + + true + + + true + + + + true + true + + true + + СоставСостояниеПросмотра + 219 + + СоставСостояниеПросмотраРасширеннаяПодсказка + 221 + true + true + + true + + Label + true + true + + Left + + + + СоставСостояниеПросмотраКонтекстноеМеню + 220 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СоставУправлениеПоиском + 222 + + СоставУправлениеПоискомРасширеннаяПодсказка + 224 + true + true + + true + + Label + true + true + + Left + + + + СоставУправлениеПоискомКонтекстноеМеню + 223 + true + true + + true + + true + + SearchControlAddition + + true + + + + СоставExtendedTooltip + 171 + true + true + + true + + Label + true + true + + Left + + + + СоставКонтекстноеМеню + 11 + + СоставКонтекстноеМенюПодобрать + 42 + true + true + + true + + false + + СоставКонтекстноеМенюПодобратьРасширеннаяПодсказка + 159 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодобратьВнешнихПользователей + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюДобавить + 45 + true + true + + true + + false + + СоставКонтекстноеМенюДобавитьРасширеннаяПодсказка + 160 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюИзменить + 212 + true + true + + true + + + СоставКонтекстноеМенюИзменитьРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюСкопировать + 50 + true + true + + true + + false + + СоставКонтекстноеМенюСкопироватьРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + 10:0ae4bea5-23be-42a7-b69e-97b11b29c453 + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюУдалить + 46 + true + true + + true + + false + + СоставКонтекстноеМенюУдалитьРасширеннаяПодсказка + 162 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюПереместитьВверх + 206 + true + true + + true + + + СоставКонтекстноеМенюПереместитьВверхРасширеннаяПодсказка + 207 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВверх + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюПереместитьВниз + 208 + true + true + + true + + + СоставКонтекстноеМенюПереместитьВнизРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВниз + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюСтандартныеКоманды + 186 + true + true + + true + + + <key>ru</key> + <value>Состав контекстное меню стандартные команды</value> + + + СоставКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 187 + true + true + + true + + Label + true + true + + Left + + + + Item.Состав + + + true + true + + true + + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Участники группы</value> + + + ВнешниеПользователиГруппыExtendedTooltip + 155 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + РолиГруппы + 56 + + ОтображениеРолей + 64 + + Роли + 131 + + <key>ru</key> + <value>Роли</value> + + true + true + + true + + + Роли + + false + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + РолиКолонок + 134 + + РолиПометка + 142 + true + true + + true + + + + Роли.Пометка + + + + OnChange + РолиПометкаПриИзменении + + + РолиПометкаExtendedTooltip + 182 + true + true + + true + + Label + true + true + + Left + + + + РолиПометкаКонтекстноеМеню + 143 + true + true + + true + + true + + CheckBoxField + Left + true + + + + РолиСиноним + 144 + true + true + + true + + + + Роли.Синоним + + + + РолиСинонимExtendedTooltip + 183 + true + true + + true + + Label + true + true + + Left + + + + РолиСинонимКонтекстноеМеню + 145 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Роли колонок</value> + + + РолиКолонокExtendedTooltip + 181 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + РолиКоманднаяПанель + 133 + + РолиУстановитьФлажки + 139 + true + true + + true + + false + + РолиУстановитьФлажкиExtendedTooltip + 176 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьРоли + Auto + true + true + UserCmds + Auto + + + РолиСнятьФлажки + 140 + true + true + + true + + false + + РолиСнятьФлажкиExtendedTooltip + 177 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИсключитьРоли + Auto + true + true + UserCmds + Auto + + + РолиПоказатьТолькоВыбранныеРоли + 141 + true + true + + true + + false + + РолиПоказатьТолькоВыбранныеРолиExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьТолькоВыбранныеРоли + Auto + true + true + UserCmds + Auto + + + РолиПоказатьПодсистемыРолей + 146 + true + true + + true + + + РолиПоказатьПодсистемыРолейExtendedTooltip + 179 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ГруппировкаРолейПоПодсистемам + Picture + true + true + UserCmds + Auto + InAdditionalSubmenu + + + РолиСтандартныеКоманды + 210 + true + true + + true + + + <key>ru</key> + <value>Роли стандартные команды</value> + + + РолиСтандартныеКомандыРасширеннаяПодсказка + 211 + true + true + + true + + Label + true + true + + Left + + + + Item.Роли + + + true + true + + true + + Left + + + true + true + + true + + РолиСтрокаПоиска + 225 + + РолиСтрокаПоискаРасширеннаяПодсказка + 227 + true + true + + true + + Label + true + true + + Left + + + + РолиСтрокаПоискаКонтекстноеМеню + 226 + true + true + + true + + true + + + true + + + + true + true + + true + + РолиСостояниеПросмотра + 228 + + РолиСостояниеПросмотраРасширеннаяПодсказка + 230 + true + true + + true + + Label + true + true + + Left + + + + РолиСостояниеПросмотраКонтекстноеМеню + 229 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РолиУправлениеПоиском + 231 + + РолиУправлениеПоискомРасширеннаяПодсказка + 233 + true + true + + true + + Label + true + true + + Left + + + + РолиУправлениеПоискомКонтекстноеМеню + 232 + true + true + + true + + true + + SearchControlAddition + + true + + + + РолиExtendedTooltip + 180 + true + true + + true + + Label + true + true + + Left + + + + РолиКонтекстноеМеню + 132 + true + true + + true + + true + + Tree + true + true + true + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true + + Роли.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + + true + true + + true + + + <key>ru</key> + <value>Отображение ролей</value> + + + ОтображениеРолейExtendedTooltip + 175 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Разрешенные действия (роли)</value> + + + РолиГруппыExtendedTooltip + 174 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ГруппаКомментарий + 196 + + Комментарий + 38 + true + true + + true + + + + Объект.Комментарий + + + None + + КомментарийExtendedTooltip + 185 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 39 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ГруппаКомментарийРасширеннаяПодсказка + 197 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Состав и роли</value> + + + СоставИРолиExtendedTooltip + 154 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + Top + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + Use + true + true + Vertical + true + true + true + true + true + + Объект + 2 + + CatalogObject.ГруппыВнешнихПользователей + + + true + + + true + +
true
+ true + + + Объект.Состав + + + Недействителен + + <key>ru</key> + <value>Недействителен</value> + + 1 + + Boolean + + + true + + + true + + + + + + Объект.Роли + + +
+ + ДействияВФорме + 5 + + + true + + + true + + + + ТипыОбъектовАвторизации + 7 + + ValueList + + + true + + + true + + + + + + + Роли + + <key>ru</key> + <value>Роли</value> + + 3 + + ValueTree + + + true + + + true + + true + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 1 + + Boolean + + + true + + + true + + + + Синоним + + <key>ru</key> + <value>Разрешенное действие (роль)</value> + + 2 + + String + + + + true + + + true + + + + НомерКартинки + 3 + + Number + + 1 + true + + + + true + + + true + + + + Имя + 4 + + String + + + + true + + + true + + + + ЭтоРоль + 5 + + Boolean + + + true + + + true + + + + ЭтоНедоступнаяРоль + 6 + + Boolean + + + true + + + true + + + + ЭтоНесуществующаяРоль + 7 + + Boolean + + + true + + + true + + + + + ПоказатьПодсистемыРолей + 4 + + Boolean + + + true + + + true + + + ПоказатьПодсистемыРолей + + + + КоллекцияРолей + 1 + + ValueTable + + + true + + + true + + + Роль + 1 + + String + + + + true + + + true + + + + + УчастникиГруппы + + <key>ru</key> + <value>Участники группы</value> + + 8 + + String + + + + true + + + true + + + + ЭтоГруппаВсеВнешниеПользователи + 9 + + Boolean + + + true + + + true + + + + ПодобратьВнешнихПользователей + + <key>ru</key> + <value>Подобрать</value> + + 1 + + ru + Подбор пользователей + + + true + + + + ПодобратьВнешнихПользователей + + + true + DontUse + + + ПоказатьТолькоВыбранныеРоли + + <key>ru</key> + <value>Только выбранные</value> + + 2 + + ru + Показать только выбранные роли + + + true + + + CommonPicture.ПоказатьТолькоВыбранныеРоли + + + + ПоказатьТолькоВыбранныеРоли + + + TextPicture + DontUse + + + ИсключитьРоли + + <key>ru</key> + <value>Исключить роли</value> + + 3 + + ru + Исключить роли + + + true + + + StdPicture.UncheckAll + + + + ИсключитьРоли + + + true + DontUse + + + ВключитьРоли + + <key>ru</key> + <value>Включить роли</value> + + 4 + + ru + Включить роли + + + true + + + StdPicture.CheckAll + + + + ВключитьРоли + + + true + DontUse + + + ГруппировкаРолейПоПодсистемам + + <key>ru</key> + <value>По подсистемам</value> + + 5 + + ru + Группировать список ролей по подсистемам + + + true + + + CommonPicture.Подсистема + + + + ГруппировкаРолейПоПодсистемам + + + TextPicture + DontUse + + + ПоказыватьНедействительныхПользователей + + <key>ru</key> + <value>Показывать недействительных пользователей</value> + + 6 + + ru + Показывать недействительных пользователей + + + true + + + + ПоказыватьНедействительныхПользователей + + + DontUse + + + СортироватьПоВозрастанию + + <key>ru</key> + <value>Сортировать по возрастанию</value> + + 7 + + ru + Упорядочить список по возрастанию + + + true + + + StdPicture.SortListAsc + + + + СортироватьПоВозрастанию + + + Picture + true + DontUse + + + СортироватьПоУбыванию + + <key>ru</key> + <value>Сортировать по убыванию</value> + + 8 + + ru + Упорядочить список по убыванию + + + true + + + StdPicture.SortListDesc + + + + СортироватьПоУбыванию + + + Picture + true + DontUse + + + ПереместитьВниз + + <key>ru</key> + <value>Переместить вниз</value> + + 9 + + true + + + StdPicture.MoveDown + + + + ПереместитьВниз + + + Picture + true + DontUse + + + ПереместитьВверх + + <key>ru</key> + <value>Переместить вверх</value> + + 10 + + true + + + StdPicture.MoveUp + + + + ПереместитьВверх + + + Picture + true + DontUse + + + ВыбратьНазначение + + <key>ru</key> + <value><Не указан></value> + + 11 + + ru + Виды пользователей группы + + + true + + + + ВыбратьНазначение + + + true + DontUse + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..e8c067c2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,28 @@ + +

Группа внешних пользователей

+

Просмотр и редактирование свойств группы внешних пользователей.

+

Внешних пользователей можно объединять в группы по разным признакам. Группа внешних пользователей может включать однородных пользователей, например, контрагентов или физические лица. Также можно создать группу внешних пользователей, которая включает различных внешних пользователей со сходными свойствами, например, респондентов или участников опроса. Так удобнее настраивать права доступа.

+

Ввод группы внешних пользователей

+
При редактировании состава внешних пользователей группы нужно учитывать, что они входят в состав групп-родителей.
+
  • +
    Введите Наименование группы.
    +
  • +
    На вкладке Участники группы для группы внешних пользователей установите способ выбора внешних пользователей. Группа может включать:
    +
    • +
      Всех внешних пользователей указанных видов (например, контрагентов) - в этом случае кнопка Подобрать становится недоступной, так как все внешние пользователи из указанного списка входят в такую группу автоматически.
      +
    • +
      Выбранных внешних пользователей указанных видов (например, партнеров) - в этом случае нужно будет подобрать нужных пользователей, установлено по умолчанию;
      +
      • +
        С помощью ссылки Вид укажите, какие виды внешних пользователей будут включены в группу. В окне выбора с помощью флажков укажите виды внешних пользователей.
        +
      • +
        С помощью кнопки Подобрать выделите нескольких внешних пользователей одновременно и включите их в группу.
        +
      • +
        При использовании команды Еще - Добавить можно включить в группу только одного внешнего пользователя.
  • +
    Можно подчинить новую группу одной из существующих групп. Для этого в поле В группе выберите нужную группу из списка.
    +
  • +
    На вкладке Комментарий можно написать подробное описание данной группы.

Права доступа группы внешних пользователей

+

В зависимости от состава программы настраиваются одним из способов:

+
  • Нажмите Права доступа на панели навигации группы. Нажмите Включить в группу, выберите группу доступа из списка. +
  • Если используется непосредственное назначение ролей, их можно назначать не только для внешнего пользователя, но и для группы внешних пользователей.

Просмотр недействительных внешних пользователей

+
  • Внешние пользователи могут быть отмечены как недействительные. Они по умолчанию скрываются в списках. Для того чтобы посмотреть таких внешних пользователей, выполните команду Еще - Показывать недействительных внешних пользователей.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..fa2c943c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,771 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не ПользователиСлужебный.ВнешниеПользователиВнедрены() Тогда + ВызватьИсключение НСтр("ru = 'Внешние пользователи не предусмотрены в данной версии программы.'"); + КонецЕсли; + + УстановитьУсловноеОформление(); + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбработатьИнтерфейсРолей("ЗаполнитьРоли", Объект.Роли); + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриСозданииФормы", Ложь); + КонецЕсли; + + // Подготовка вспомогательных данных. + + Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + ВсеОбъектыАвторизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Родитель, + "ВсеОбъектыАвторизации"); + ВсеОбъектыАвторизации = ?(ВсеОбъектыАвторизации = Неопределено, Ложь, ВсеОбъектыАвторизации); + + Если ВсеОбъектыАвторизации + Или Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + + Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ПустаяСсылка(); + КонецЕсли; + + КонецЕсли; + + ОтобратьДоступныеДляВыбораТипыУчастниковГруппы(); + + ОпределитьДействияВФорме(); + + // Установка постоянной доступности свойств. + + Элементы.Наименование.Видимость = ЗначениеЗаполнено(ДействияВФорме.СвойстваЭлемента); + Элементы.Родитель.Видимость = ЗначениеЗаполнено(ДействияВФорме.СвойстваЭлемента); + Элементы.Комментарий.Видимость = ЗначениеЗаполнено(ДействияВФорме.СвойстваЭлемента); + Элементы.Состав.Видимость = ЗначениеЗаполнено(ДействияВФорме.СоставГруппы); + Элементы.ОтображениеРолей.Видимость = ЗначениеЗаполнено(ДействияВФорме.Роли); + + УчастникиГруппы = ?(Объект.ВсеОбъектыАвторизации, "ВсеПользователиУказанныхВидов", "ВыбранныеПользователиУказанныхВидов"); + + ЭтоГруппаВсеВнешниеПользователи = + Объект.Ссылка = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи; + + Если ЭтоГруппаВсеВнешниеПользователи Тогда + Элементы.Наименование.ТолькоПросмотр = Истина; + Элементы.Родитель.ТолькоПросмотр = Истина; + Элементы.Комментарий.ТолькоПросмотр = Истина; + Элементы.ВнешниеПользователиГруппы.ТолькоПросмотр = Истина; + КонецЕсли; + + Если ТолькоПросмотр + ИЛИ НЕ ЭтоГруппаВсеВнешниеПользователи + И ДействияВФорме.Роли <> "Редактирование" + И ДействияВФорме.СоставГруппы <> "Редактирование" + И ДействияВФорме.СвойстваЭлемента <> "Редактирование" + ИЛИ ЭтоГруппаВсеВнешниеПользователи + И ПользователиСлужебный.ЗапретРедактированияРолей() Тогда + + ТолькоПросмотр = Истина; + КонецЕсли; + + Если ДействияВФорме.СвойстваЭлемента <> "Редактирование" Тогда + Элементы.Наименование.ТолькоПросмотр = Истина; + Элементы.Родитель.ТолькоПросмотр = Истина; + Элементы.Комментарий.ТолькоПросмотр = Истина; + КонецЕсли; + + Если ДействияВФорме.СоставГруппы <> "Редактирование" Тогда + Элементы.ВнешниеПользователиГруппы.ТолькоПросмотр = Истина; + КонецЕсли; + + ОбработатьИнтерфейсРолей( + "УстановитьТолькоПросмотрРолей", + ПользователиСлужебный.ЗапретРедактированияРолей() + ИЛИ ДействияВФорме.Роли <> "Редактирование"); + + ОбновитьСписокНедействительныхПользователей(Истина); + ЗаполнитьСтатусПользователей(); + + Если ЗначениеЗаполнено(Объект.Родитель) И РеквизитФормыВЗначение("Объект").ЭтоНовый() Тогда + Объект.Назначение.Загрузить(Объект.Родитель.Назначение.Выгрузить()); + КонецЕсли; + ПользователиСлужебный.ОбновитьНазначениеПриСозданииНаСервере(ЭтотОбъект, Ложь); + + УстановитьДоступностьСвойств(ЭтотОбъект); + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ГруппаШапка.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + ОбработатьИнтерфейсРолей("ЗаполнитьРоли", Объект.Роли); + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЧтенииНаСервере", Истина); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + // Заполнение ролей объекта из коллекции. + ТекущийОбъект.Роли.Очистить(); + Для каждого Строка Из КоллекцияРолей Цикл + ТекущийОбъект.Роли.Добавить().Роль = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( + "Роль." + Строка.Роль); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + ЗаполнитьСтатусПользователей(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_ГруппыВнешнихПользователей", Новый Структура, Объект.Ссылка); + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + НепроверяемыеРеквизиты = Новый Массив; + ПроверенныеРеквизитыОбъекта = Новый Массив; + Ошибки = Неопределено; + + // Проверка наличия ролей в метаданных. + ПроверенныеРеквизитыОбъекта.Добавить("Роли.Роль"); + Если Не Элементы.Роли.ТолькоПросмотр Тогда + ЭлементыДерева = Роли.ПолучитьЭлементы(); + Для Каждого Строка Из ЭлементыДерева Цикл + Если Не Строка.Пометка Тогда + Продолжить; + КонецЕсли; + Если Строка.ЭтоНесуществующаяРоль Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Роли[%1].РолиСиноним", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним), + "Роли", + ЭлементыДерева.Индекс(Строка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1")); + КонецЕсли; + Если Строка.ЭтоНедоступнаяРоль Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Роли[%1].РолиСиноним", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для внешних пользователей.'"), Строка.Синоним), + "Роли", + ЭлементыДерева.Индекс(Строка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для внешних пользователей.'"), Строка.Синоним, "%1")); + КонецЕсли; + КонецЦикла; + КонецЕсли; + ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ); + + НепроверяемыеРеквизиты.Добавить("Объект"); + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты); + + ТекущийОбъект = РеквизитФормыВЗначение("Объект"); + + ТекущийОбъект.ДополнительныеСвойства.Вставить( + "ПроверенныеРеквизитыОбъекта", ПроверенныеРеквизитыОбъекта); + + Если НЕ ТекущийОбъект.ПроверитьЗаполнение() Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЗагрузкеНастроек", Настройки); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СоставУчастниковПриИзменении(Элемент) + + Объект.ВсеОбъектыАвторизации = (УчастникиГруппы = "ВсеПользователиУказанныхВидов"); + Если Объект.ВсеОбъектыАвторизации Тогда + Объект.Состав.Очистить(); + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура РодительПриИзменении(Элемент) + + Объект.ВсеОбъектыАвторизации = Ложь; + ОтобратьДоступныеДляВыбораТипыУчастниковГруппы(); + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура РодительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + ПараметрыФормы.Вставить("ВыборРодителя"); + + ОткрытьФорму("Справочник.ГруппыВнешнихПользователей.ФормаВыбора", ПараметрыФормы, Элементы.Родитель); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыРоли + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаКлиенте +Процедура РолиПометкаПриИзменении(Элемент) + + Если Элементы.Роли.ТекущиеДанные <> Неопределено Тогда + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСостав + +&НаКлиенте +Процедура СоставОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Объект.Состав.Очистить(); + Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда + Для каждого Значение Из ВыбранноеЗначение Цикл + ОбработкаВыбораВнешнегоПользователя(Значение); + КонецЦикла; + Иначе + ОбработкаВыбораВнешнегоПользователя(ВыбранноеЗначение); + КонецЕсли; + ЗаполнитьСтатусПользователей(); + Элементы.Состав.Обновить(); + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура СоставПриИзменении(Элемент) + УстановитьДоступностьСвойств(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура СоставВнешнийПользовательНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ВыбратьПодобратьПользователей(Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура СоставПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + СообщениеПользователю = ПеремещениеПользователяВГруппу(ПараметрыПеретаскивания.Значение, Объект.Ссылка); + Если СообщениеПользователю <> Неопределено Тогда + ПоказатьОповещениеПользователя( + НСтр("ru = 'Перемещение пользователей'"), , СообщениеПользователю, БиблиотекаКартинок.Информация32); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПодобратьВнешнихПользователей(Команда) + + ВыбратьПодобратьПользователей(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНедействительныхПользователей(Команда) + + ОбновитьСписокНедействительныхПользователей(Ложь); + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура СортироватьПоВозрастанию(Команда) + СоставСортироватьСтроки("ПоВозрастанию"); +КонецПроцедуры + +&НаКлиенте +Процедура СортироватьПоУбыванию(Команда) + СоставСортироватьСтроки("ПоУбыванию"); +КонецПроцедуры + +&НаКлиенте +Процедура ПереместитьВверх(Команда) + СоставПереместитьСтроку("Вверх"); +КонецПроцедуры + +&НаКлиенте +Процедура ПереместитьВниз(Команда) + СоставПереместитьСтроку("Вниз"); +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьНазначение(Команда) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораНазначения", ЭтотОбъект); + ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, НСтр("ru = 'Выбор вида пользователей'"), Ложь, Ложь, ОписаниеОповещения); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаКлиенте +Процедура ПоказатьТолькоВыбранныеРоли(Команда) + + ОбработатьИнтерфейсРолей("ТолькоВыбранныеРоли"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппировкаРолейПоПодсистемам(Команда) + + ОбработатьИнтерфейсРолей("ГруппировкаПоПодсистемам"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьРоли(Команда) + + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе"); + + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключитьРоли(Команда) + + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВсе"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СоставВнешнийПользователь.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Состав.Недействителен"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый); + +КонецПроцедуры + +&НаСервере +Функция ПеремещениеПользователяВГруппу(МассивПользователей, НоваяГруппаВладелец) + + МассивПеремещенныхПользователей = Новый Массив; + МассивНеПеремещенныхПользователей = Новый Массив; + Для Каждого ПользовательСсылка Из МассивПользователей Цикл + + ПараметрыОтбора = Новый Структура("ВнешнийПользователь", ПользовательСсылка); + Если ТипЗнч(ПользовательСсылка) = Тип("СправочникСсылка.ВнешниеПользователи") + И Объект.Состав.НайтиСтроки(ПараметрыОтбора).Количество() = 0 Тогда + Объект.Состав.Добавить().ВнешнийПользователь = ПользовательСсылка; + МассивПеремещенныхПользователей.Добавить(ПользовательСсылка); + КонецЕсли; + + КонецЦикла; + + Возврат ПользователиСлужебный.ФормированиеСообщенияПользователю( + МассивПеремещенныхПользователей, НоваяГруппаВладелец, Ложь, МассивНеПеремещенныхПользователей); + +КонецФункции + +&НаСервере +Процедура ОтобратьДоступныеДляВыбораТипыУчастниковГруппы() + + Если ЗначениеЗаполнено(Объект.Родитель) + И Объект.Родитель <> Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + + Элементы.ТипПользователей.Доступность = Ложь; + УчастникиГруппы = Элементы.УчастникиГруппы.СписокВыбора.НайтиПоЗначению("ВыбранныеПользователиУказанныхВидов").Значение; + + Иначе + + Элементы.ТипПользователей.Доступность = Истина; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьДействияВФорме() + + ДействияВФорме = Новый Структура; + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("Роли", ""); + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("СоставГруппы", ""); + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("СвойстваЭлемента", ""); + + Если Пользователи.ЭтоПолноправныйПользователь() + ИЛИ ПравоДоступа("Добавление", Метаданные.Справочники.Пользователи) Тогда + // Администратор. + ДействияВФорме.Роли = "Редактирование"; + ДействияВФорме.СоставГруппы = "Редактирование"; + ДействияВФорме.СвойстваЭлемента = "Редактирование"; + + ИначеЕсли ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыВнешнихПользователей) Тогда + // Менеджер внешних пользователей. + ДействияВФорме.Роли = ""; + ДействияВФорме.СоставГруппы = "Редактирование"; + ДействияВФорме.СвойстваЭлемента = "Редактирование"; + + Иначе + // Читатель внешних пользователей. + ДействияВФорме.Роли = ""; + ДействияВФорме.СоставГруппы = "Просмотр"; + ДействияВФорме.СвойстваЭлемента = "Просмотр"; + КонецЕсли; + + ПользователиСлужебный.ПриОпределенииДействийВФорме(Объект.Ссылка, ДействияВФорме); + + // Проверка имен действий в форме. + Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.Роли + ",") = 0 Тогда + ДействияВФорме.Роли = ""; + ИначеЕсли ПользователиСлужебный.ЗапретРедактированияРолей() Тогда + ДействияВФорме.Роли = ""; + КонецЕсли; + Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СоставГруппы + ",") = 0 Тогда + ДействияВФорме.СвойстваПользователяИБ = ""; + КонецЕсли; + Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СвойстваЭлемента + ",") = 0 Тогда + ДействияВФорме.СвойстваЭлемента = ""; + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьСвойств(Форма) + + Элементы = Форма.Элементы; + + Элементы.Состав.ТолькоПросмотр = Форма.Объект.ВсеОбъектыАвторизации; + + ДоступностьКоманд = + НЕ Форма.ТолькоПросмотр + И НЕ Элементы.ВнешниеПользователиГруппы.ТолькоПросмотр + И НЕ Элементы.Состав.ТолькоПросмотр + И Элементы.Состав.Доступность + И Форма.Объект.Назначение.Количество() <> 0; + + СоставГруппы = Форма.Объект.Состав; + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Недействителен", Ложь); + ЕстьДействительныеПользователи = СоставГруппы.НайтиСтроки(ПараметрыОтбора).Количество() > 0; + + ПараметрыОтбора.Вставить("Недействителен", Истина); + ЕстьНедействительныеПользователи = СоставГруппы.НайтиСтроки(ПараметрыОтбора).Количество() > 0; + + ДоступностьКомандПеремещения = + ЕстьДействительныеПользователи + Или (ЕстьНедействительныеПользователи + И Элементы.ПоказыватьНедействительныхПользователей.Пометка); + + Элементы.Состав.ТолькоПросмотр = Не ДоступностьКоманд; + + Элементы.СоставПодобрать.Доступность = ДоступностьКоманд; + Элементы.СоставКонтекстноеМенюПодобрать.Доступность = ДоступностьКоманд; + + Элементы.СоставСортироватьПоВозрастанию.Доступность = ДоступностьКоманд; + Элементы.СоставСортироватьПоУбыванию.Доступность = ДоступностьКоманд; + + Элементы.СоставПереместитьВверх.Доступность = ДоступностьКоманд И ДоступностьКомандПеремещения; + Элементы.СоставПереместитьВниз.Доступность = ДоступностьКоманд И ДоступностьКомандПеремещения; + Элементы.СоставКонтекстноеМенюПереместитьВверх.Доступность = ДоступностьКоманд И ДоступностьКомандПеремещения; + Элементы.СоставКонтекстноеМенюПереместитьВниз.Доступность = ДоступностьКоманд И ДоступностьКомандПеремещения; + +КонецПроцедуры + +&НаСервере +Процедура УдалитьНеТипичныеВнешниеПользователи() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ВыбранныеВнешниеПользователи", Объект.Состав.Выгрузить().ВыгрузитьКолонку("ВнешнийПользователь")); + Запрос.УстановитьПараметр("ТипыПользователей", Объект.Назначение.Выгрузить()); + + Запрос.Текст = + "ВЫБРАТЬ + | ТипыПользователей.ТипПользователей + |ПОМЕСТИТЬ ТипыПользователей + |ИЗ + | &ТипыПользователей КАК ТипыПользователей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВнешниеПользователи.Ссылка + |ИЗ + | Справочник.ВнешниеПользователи КАК ВнешниеПользователи + |ГДЕ + | НЕ ЛОЖЬ В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ЛОЖЬ + | ИЗ + | ТипыПользователей КАК ТипыПользователей + | ГДЕ + | ТИПЗНАЧЕНИЯ(ТипыПользователей.ТипПользователей) = ТИПЗНАЧЕНИЯ(ВнешниеПользователи.ОбъектАвторизации)) + | И ВнешниеПользователи.Ссылка В(&ВыбранныеВнешниеПользователи)"; + + НачатьТранзакцию(); + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + + НайденныеСтроки = Объект.Состав.НайтиСтроки( + Новый Структура("ВнешнийПользователь", Выборка.Ссылка)); + + Для каждого НайденнаяСтрока Из НайденныеСтроки Цикл + Объект.Состав.Удалить(Объект.Состав.Индекс(НайденнаяСтрока)); + КонецЦикла; + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьПодобратьПользователей(Подобрать) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + ПараметрыФормы.Вставить("ТекущаяСтрока", ?( + Элементы.Состав.ТекущиеДанные = Неопределено, + Неопределено, + Элементы.Состав.ТекущиеДанные.ВнешнийПользователь)); + + Если Подобрать Тогда + ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь); + ПараметрыФормы.Вставить("МножественныйВыбор", Истина); + ПараметрыФормы.Вставить("РасширенныйПодбор", Истина); + ПараметрыФормы.Вставить("ПараметрыРасширеннойФормыПодбора", ПараметрыРасширеннойФормыПодбора()); + КонецЕсли; + + МассивПустыхСсылок = Новый Массив; + Для Каждого СтрокаНазначения Из Объект.Назначение Цикл + МассивПустыхСсылок.Добавить(СтрокаНазначения.ТипПользователей); + КонецЦикла; + + ПараметрыФормы.Вставить("Назначение", МассивПустыхСсылок); + + ОткрытьФорму( + "Справочник.ВнешниеПользователи.ФормаВыбора", + ПараметрыФормы, + ?(Подобрать, + Элементы.Состав, + Элементы.СоставВнешнийПользователь)); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбораВнешнегоПользователя(ВыбранноеЗначение) + + Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда + Объект.Состав.Добавить().ВнешнийПользователь = ВыбранноеЗначение; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПараметрыРасширеннойФормыПодбора() + + ВыбранныеПользователи = Новый ТаблицаЗначений; + ВыбранныеПользователи.Колонки.Добавить("Пользователь"); + ВыбранныеПользователи.Колонки.Добавить("НомерКартинки"); + + УчастникиГруппыВнешнихПользователей = Объект.Состав.Выгрузить(, "ВнешнийПользователь"); + + Для каждого Элемент Из УчастникиГруппыВнешнихПользователей Цикл + + СтрокаВыбранныеПользователи = ВыбранныеПользователи.Добавить(); + СтрокаВыбранныеПользователи.Пользователь = Элемент.ВнешнийПользователь; + + КонецЦикла; + + ЗаголовокФормыПодбора = НСтр("ru = 'Подбор участников группы внешних пользователей'"); + ПараметрыРасширеннойФормыПодбора = + Новый Структура("ЗаголовокФормыПодбора, ВыбранныеПользователи, ПодборГруппНевозможен", + ЗаголовокФормыПодбора, ВыбранныеПользователи, Истина); + АдресХранилища = ПоместитьВоВременноеХранилище(ПараметрыРасширеннойФормыПодбора); + Возврат АдресХранилища; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьСтатусПользователей() + + Для Каждого СтрокаСоставаГруппы Из Объект.Состав Цикл + СтрокаСоставаГруппы.Недействителен = + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаСоставаГруппы.ВнешнийПользователь, "Недействителен"); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокНедействительныхПользователей(ПередОткрытиемФормы) + + Элементы.ПоказыватьНедействительныхПользователей.Пометка = ?(ПередОткрытиемФормы, Ложь, + НЕ Элементы.ПоказыватьНедействительныхПользователей.Пометка); + + Отбор = Новый Структура; + + Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда + Отбор.Вставить("Недействителен", Ложь); + Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор); + Иначе + Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СоставСортироватьСтроки(ТипСортировки) + Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда + Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(); + КонецЕсли; + + Если ТипСортировки = "ПоВозрастанию" Тогда + Объект.Состав.Сортировать("ВнешнийПользователь Возр"); + Иначе + Объект.Состав.Сортировать("ВнешнийПользователь Убыв"); + КонецЕсли; + + Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда + Отбор = Новый Структура; + Отбор.Вставить("Недействителен", Ложь); + Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура СоставПереместитьСтроку(НаправлениеПеремещения) + + Строка = Объект.Состав.НайтиПоИдентификатору(Элементы.Состав.ТекущаяСтрока); + Если Строка = Неопределено Тогда + Возврат; + КонецЕсли; + + ИндексТекущейСтроки = Строка.НомерСтроки - 1; + Сдвиг = 0; + + Пока Истина Цикл + Сдвиг = Сдвиг + ?(НаправлениеПеремещения = "Вверх", -1, 1); + + Если ИндексТекущейСтроки + Сдвиг < 0 + Или ИндексТекущейСтроки + Сдвиг >= Объект.Состав.Количество() Тогда + Возврат; + КонецЕсли; + + Если Элементы.ПоказыватьНедействительныхПользователей.Пометка + Или Объект.Состав[ИндексТекущейСтроки + Сдвиг].Недействителен = Ложь Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + Объект.Состав.Сдвинуть(ИндексТекущейСтроки, Сдвиг); + Элементы.Состав.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораНазначения(МассивТипов, ДополнительныеПараметры) Экспорт + + Модифицированность = Истина; + УдалитьНеТипичныеВнешниеПользователи(); + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаСервере +Процедура ОбработатьИнтерфейсРолей(Действие, ОсновнойПараметр = Неопределено) + + ПараметрыДействия = Новый Структура; + ПараметрыДействия.Вставить("ОсновнойПараметр", ОсновнойПараметр); + ПараметрыДействия.Вставить("Форма", ЭтотОбъект); + ПараметрыДействия.Вставить("КоллекцияРолей", КоллекцияРолей); + ПараметрыДействия.Вставить("НазначениеРолей", "ДляВнешнихПользователей"); + + ПользователиСлужебный.ОбработатьИнтерфейсРолей(Действие, ПараметрыДействия); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" new file mode 100644 index 00000000..0b80e8f7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" @@ -0,0 +1,23 @@ + +

Предназначен для ведения групп внешних пользователей.

+

Удобно использовать группы, когда в программе много внешних пользователей: 

+
  • +
    для группировки большого количества внешних пользователей (например, при выборе внешнего пользователя);
    +
  • +
    для групповой настройки прав доступа сразу для всех внешних пользователей группы.

Группы создаются плоским списком (в котором группы не зависят друг от друга) или иерархическим. В иерархическом списке внешние пользователи вложенных групп входят в вышестоящие группы (родительские).

+

Существует предопределенная группа Все внешние пользователи, которая включает всех внешних пользователей.

+

Когда используется непосредственное назначение ролей, их можно назначать не только для каждого внешнего пользователя, но и для группы внешних пользователей.

+

Группировка внешних пользователей

+

Группы внешних пользователей могут формироваться, например, в зависимости от принадлежности к объектам программы:

+
  • +
    Контрагенты:
    +
    • +
      Доверенные партнеры;
      +
    • Основные покупатели; +
    • Основные поставщики; +
    • Участники опроса;
  • Физические лица.
+

Так удобнее настраивать права доступа.

+

Ввод группы

+

См. также

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..df014c31 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + НеРедактируемыеРеквизиты = Новый Массив; + НеРедактируемыеРеквизиты.Добавить("ТипОбъектовАвторизации"); + НеРедактируемыеРеквизиты.Добавить("ВсеОбъектыАвторизации"); + + Возврат НеРедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.ТекстДляВнешнихПользователей = + "РазрешитьЧтениеИзменение + |ГДЕ + | Ссылка = Значение(Справочник.ГруппыВнешнихПользователей.ВсеВнешниеПользователи)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ВсеВнешниеПользователи"; + Элемент.Наименование = НСтр("ru = 'Все внешние пользователи'", ОбщегоНазначения.КодОсновногоЯзыка()); + + ПустыеСсылки = ПользователиСлужебныйПовтИсп.ПустыеСсылкиТиповОбъектовАвторизации(); + Для Каждого ПустаяСсылка Из ПустыеСсылки Цикл + ТаблицаНазначение = ТабличныеЧасти.Назначение; // ТаблицаЗначений + НоваяСтрока = ТаблицаНазначение.Добавить(); + НоваяСтрока.ТипПользователей = ПустаяСсылка; + КонецЦикла; + Элемент.Назначение = ТабличныеЧасти.Назначение; + +КонецПроцедуры + +#КонецОбласти + + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..3f48e266 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" @@ -0,0 +1,420 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +Перем СтарыйРодитель; // Значение родителя группы до изменения для использования + // в обработчике события ПриЗаписи. + +Перем СтарыйСоставГруппыВнешнихПользователей; // Состав внешних пользователей группы внешних + // пользователей до изменения для использования + // в обработчике события ПриЗаписи. + +Перем СтарыйСоставРолейГруппыВнешнихПользователей; // Состав ролей группы внешних пользователей + // до изменения для использования в обработчике + // события ПриЗаписи. + +Перем СтароеЗначениеВсеОбъектыАвторизации; // Значение реквизита ВсеОбъектыАвторизации + // до изменения для использования в обработчике + // события ПриЗаписи. + +Перем ЭтоНовый; // Показывает, что был записан новый объект. + // Используются в обработчике события ПриЗаписи. + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если ДополнительныеСвойства.Свойство("ПроверенныеРеквизитыОбъекта") Тогда + ПроверенныеРеквизитыОбъекта = ДополнительныеСвойства.ПроверенныеРеквизитыОбъекта; + Иначе + ПроверенныеРеквизитыОбъекта = Новый Массив; + КонецЕсли; + + Ошибки = Неопределено; + + // Проверка использования родителя. + ТекстОшибки = ТекстОшибкиПроверкиРодителя(); + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Объект.Родитель", ТекстОшибки, ""); + КонецЕсли; + + // Проверка незаполненных и повторяющихся внешних пользователей. + ПроверенныеРеквизитыОбъекта.Добавить("Состав.ВнешнийПользователь"); + + // Проверка назначения группы. + ТекстОшибки = ТекстОшибкиПроверкиНазначения(); + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Объект.Назначение", ТекстОшибки, ""); + КонецЕсли; + ПроверенныеРеквизитыОбъекта.Добавить("Назначение"); + + Для каждого ТекущаяСтрока Из Состав Цикл + НомерСтроки = Состав.Индекс(ТекущаяСтрока); + + // Проверка заполнения значения. + Если НЕ ЗначениеЗаполнено(ТекущаяСтрока.ВнешнийПользователь) Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Объект.Состав[%1].ВнешнийПользователь", + НСтр("ru = 'Внешний пользователь не выбран.'"), + "Объект.Состав", + НомерСтроки, + НСтр("ru = 'Внешний пользователь в строке %1 не выбран.'")); + Продолжить; + КонецЕсли; + + // Проверка наличия повторяющихся значений. + НайденныеЗначения = Состав.НайтиСтроки(Новый Структура("ВнешнийПользователь", ТекущаяСтрока.ВнешнийПользователь)); + Если НайденныеЗначения.Количество() > 1 Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Объект.Состав[%1].ВнешнийПользователь", + НСтр("ru = 'Внешний пользователь повторяется.'"), + "Объект.Состав", + НомерСтроки, + НСтр("ru = 'Внешний пользователь в строке %1 повторяется.'")); + КонецЕсли; + КонецЦикла; + + ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ); + + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, ПроверенныеРеквизитыОбъекта); + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если НЕ ПользователиСлужебный.ЗапретРедактированияРолей() Тогда + РезультатЗапроса = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Роли"); + Если ТипЗнч(РезультатЗапроса) = Тип("РезультатЗапроса") Тогда + СтарыйСоставРолейГруппыВнешнихПользователей = РезультатЗапроса.Выгрузить(); + Иначе + СтарыйСоставРолейГруппыВнешнихПользователей = Роли.Выгрузить(Новый Массив); + КонецЕсли; + КонецЕсли; + + ЭтоНовый = ЭтоНовый(); + + Если Ссылка = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + ЗаполнитьНазначениеВсемиТипамиВнешнихПользователей(); + ВсеОбъектыАвторизации = Ложь; + КонецЕсли; + + ТекстОшибки = ТекстОшибкиПроверкиРодителя(); + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Если Ссылка = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + Если Состав.Количество() > 0 Тогда + ВызватьИсключение + НСтр("ru = 'Добавление участников в предопределенную группу ""Все внешние пользователи"" запрещено.'"); + КонецЕсли; + Иначе + ТекстОшибки = ТекстОшибкиПроверкиНазначения(); + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Ссылка, "ВсеОбъектыАвторизации, Родитель"); + + СтарыйРодитель = СтарыеЗначения.Родитель; + СтароеЗначениеВсеОбъектыАвторизации = СтарыеЗначения.ВсеОбъектыАвторизации; + + Если ЗначениеЗаполнено(Ссылка) + И Ссылка <> Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + + РезультатЗапроса = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Состав"); + Если ТипЗнч(РезультатЗапроса) = Тип("РезультатЗапроса") Тогда + СтарыйСоставГруппыВнешнихПользователей = РезультатЗапроса.Выгрузить(); + Иначе + СтарыйСоставГруппыВнешнихПользователей = Состав.Выгрузить(Новый Массив); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ПользователиСлужебный.ЗапретРедактированияРолей() Тогда + ИзменилсяСоставРолейГруппыВнешнихПользователей = Ложь; + + Иначе + ИзменилсяСоставРолейГруппыВнешнихПользователей = + ПользователиСлужебный.РазличияЗначенийКолонки( + "Роль", + Роли.Выгрузить(), + СтарыйСоставРолейГруппыВнешнихПользователей).Количество() <> 0; + КонецЕсли; + + УчастникиИзменений = Новый Соответствие; + ИзмененныеГруппы = Новый Соответствие; + + Если Ссылка <> Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + + Если ВсеОбъектыАвторизации + ИЛИ СтароеЗначениеВсеОбъектыАвторизации = Истина Тогда + + ПользователиСлужебный.ОбновитьСоставыГруппВнешнихПользователей( + Ссылка, , УчастникиИзменений, ИзмененныеГруппы); + Иначе + ИзмененияСостава = ПользователиСлужебный.РазличияЗначенийКолонки( + "ВнешнийПользователь", + Состав.Выгрузить(), + СтарыйСоставГруппыВнешнихПользователей); + + ПользователиСлужебный.ОбновитьСоставыГруппВнешнихПользователей( + Ссылка, ИзмененияСостава, УчастникиИзменений, ИзмененныеГруппы); + + Если СтарыйРодитель <> Родитель Тогда + + Если ЗначениеЗаполнено(Родитель) Тогда + ПользователиСлужебный.ОбновитьСоставыГруппВнешнихПользователей( + Родитель, , УчастникиИзменений, ИзмененныеГруппы); + КонецЕсли; + + Если ЗначениеЗаполнено(СтарыйРодитель) Тогда + ПользователиСлужебный.ОбновитьСоставыГруппВнешнихПользователей( + СтарыйРодитель, , УчастникиИзменений, ИзмененныеГруппы); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ПользователиСлужебный.ОбновитьИспользуемостьСоставовГруппПользователей( + Ссылка, УчастникиИзменений, ИзмененныеГруппы); + КонецЕсли; + + Если ИзменилсяСоставРолейГруппыВнешнихПользователей Тогда + ПользователиСлужебный.ОбновитьРолиВнешнихПользователей(Ссылка); + КонецЕсли; + + ПользователиСлужебный.ПослеОбновленияСоставовГруппВнешнихПользователей( + УчастникиИзменений, ИзмененныеГруппы); + + ИнтеграцияПодсистемБСП.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗаполнитьНазначениеВсемиТипамиВнешнихПользователей() + + Назначение.Очистить(); + + ПустыеСсылки = ПользователиСлужебныйПовтИсп.ПустыеСсылкиТиповОбъектовАвторизации(); + Для Каждого ПустаяСсылка Из ПустыеСсылки Цикл + НоваяСтрока = Назначение.Добавить(); + НоваяСтрока.ТипПользователей = ПустаяСсылка; + КонецЦикла; + +КонецПроцедуры + +Функция ТекстОшибкиПроверкиРодителя() + + Если Родитель = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + Возврат + НСтр("ru = 'Предопределенная группа ""Все внешние пользователи"" не может быть родителем.'"); + КонецЕсли; + + Если Ссылка = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + Если Не Родитель.Пустая() Тогда + Возврат + НСтр("ru = 'Предопределенная группа ""Все внешние пользователи"" не может быть перемещена.'"); + КонецЕсли; + Иначе + Если Родитель = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + Возврат + НСтр("ru = 'Невозможно добавить подгруппу к предопределенной группе ""Все внешние пользователи"".'"); + + ИначеЕсли Родитель.ВсеОбъектыАвторизации Тогда + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Невозможно добавить подгруппу к группе ""%1"", + |так как в число ее участников входят все пользователи.'"), Родитель); + КонецЕсли; + + Если ВсеОбъектыАвторизации И ЗначениеЗаполнено(Родитель) Тогда + Возврат + НСтр("ru = 'Невозможно переместить группу, в число участников которой входят все пользователи.'"); + КонецЕсли; + КонецЕсли; + + Возврат ""; + +КонецФункции + +Функция ТекстОшибкиПроверкиНазначения() + + // Проверка заполнения назначения группы. + Если Назначение.Количество() = 0 Тогда + Возврат НСтр("ru = 'Не указан вид участников группы.'"); + КонецЕсли; + + // Проверка уникальности группы всех объектов авторизации заданного типа. + Если ВсеОбъектыАвторизации Тогда + + // Проверка что назначение не совпадает с группой все внешние пользователи. + ГруппаВсеВнешниеПользователи = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи; + НазначениеВсеВнешниеПользователи = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ГруппаВсеВнешниеПользователи, "Назначение").Выгрузить().ВыгрузитьКолонку("ТипПользователей"); + МассивНазначения = Назначение.ВыгрузитьКолонку("ТипПользователей"); + + Если ОбщегоНазначенияКлиентСервер.СпискиЗначенийИдентичны(НазначениеВсеВнешниеПользователи, МассивНазначения) Тогда + Возврат + НСтр("ru = 'Невозможно создать группу, совпадающую по назначению + |с предопределенной группой ""Все внешние пользователи"".'"); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.УстановитьПараметр("ТипыПользователей", Назначение.Выгрузить()); + + Запрос.Текст = + "ВЫБРАТЬ + | ТипыПользователей.ТипПользователей + |ПОМЕСТИТЬ ТипыПользователей + |ИЗ + | &ТипыПользователей КАК ТипыПользователей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПРЕДСТАВЛЕНИЕ(ГруппыВнешнихПользователей.Ссылка) КАК СсылкаПредставление + |ИЗ + | Справочник.ГруппыВнешнихПользователей.Назначение КАК ГруппыВнешнихПользователей + |ГДЕ + | ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | ТипыПользователей КАК ТипыПользователей + | ГДЕ + | ГруппыВнешнихПользователей.Ссылка <> &Ссылка + | И ГруппыВнешнихПользователей.Ссылка.ВсеОбъектыАвторизации + | И ТИПЗНАЧЕНИЯ(ТипыПользователей.ТипПользователей) = ТИПЗНАЧЕНИЯ(ГруппыВнешнихПользователей.ТипПользователей))"; + + РезультатЗапроса = Запрос.Выполнить(); + Если НЕ РезультатЗапроса.Пустой() Тогда + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Уже существует группа ""%1"", + |в число участников которой входят все пользователи указанных видов.'"), + Выборка.СсылкаПредставление); + КонецЕсли; + КонецЕсли; + + // Проверка совпадения типа объектов авторизации с родителем + // (допустимо, если тип у родителя не задан). + Если ЗначениеЗаполнено(Родитель) Тогда + + ТипПользователейРодителя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Родитель, "Назначение").Выгрузить().ВыгрузитьКолонку("ТипПользователей"); + ТипПользователей = Назначение.ВыгрузитьКолонку("ТипПользователей"); + + Для Каждого ТипПользователя Из ТипПользователей Цикл + Если ТипПользователейРодителя.Найти(ТипПользователя) = Неопределено Тогда + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Вид участников группы должен быть как у вышестоящей + |группы внешних пользователей ""%1"".'"), Родитель); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + // Если группе внешних пользователей устанавливается тип участников "Все пользователи заданного типа", + // проверяем наличие подчиненных групп. + Если ВсеОбъектыАвторизации + И ЗначениеЗаполнено(Ссылка) Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | ПРЕДСТАВЛЕНИЕ(ГруппыВнешнихПользователей.Ссылка) КАК СсылкаПредставление + |ИЗ + | Справочник.ГруппыВнешнихПользователей КАК ГруппыВнешнихПользователей + |ГДЕ + | ГруппыВнешнихПользователей.Родитель = &Ссылка"; + + РезультатЗапроса = Запрос.Выполнить(); + Если НЕ РезультатЗапроса.Пустой() Тогда + Возврат + НСтр("ru = 'Невозможно изменить вид участников группы, + |так как у нее имеются подгруппы.'"); + КонецЕсли; + КонецЕсли; + + // Проверка, что при изменении типа объектов авторизации + // нет подчиненных элементов другого типа (очистка типа допустима). + Если ЗначениеЗаполнено(Ссылка) Тогда + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.УстановитьПараметр("ТипыПользователей", Назначение); + Запрос.Текст = + "ВЫБРАТЬ + | ТипыПользователей.ТипПользователей + |ПОМЕСТИТЬ ТипыПользователей + |ИЗ + | &ТипыПользователей КАК ТипыПользователей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПРЕДСТАВЛЕНИЕ(ГруппыВнешнихПользователейНазначение.Ссылка) КАК СсылкаПредставление + |ИЗ + | Справочник.ГруппыВнешнихПользователей.Назначение КАК ГруппыВнешнихПользователейНазначение + |ГДЕ + | ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | ТипыПользователей КАК ТипыПользователей + | ГДЕ + | ГруппыВнешнихПользователейНазначение.Ссылка.Родитель = &Ссылка + | И ТИПЗНАЧЕНИЯ(ГруппыВнешнихПользователейНазначение.ТипПользователей) <> ТИПЗНАЧЕНИЯ(ТипыПользователей.ТипПользователей))"; + + РезультатЗапроса = Запрос.Выполнить(); + Если НЕ РезультатЗапроса.Пустой() Тогда + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Невозможно изменить вид участников группы, + |так как у нее имеется подгруппа ""%1"" с другим назначением участников.'"), + Выборка.СсылкаПредставление); + КонецЕсли; + КонецЕсли; + + Возврат ""; + +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" new file mode 100644 index 00000000..dd12baa5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" @@ -0,0 +1,351 @@ + + + + + + + + + + ГруппыВнешнихПользователей + + ru + Группы внешних пользователей + + true + Catalog.ГруппыВнешнихПользователей.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Входит в группу + + + ru + Вышестоящая группа в иерархии + + true + + Catalog.ГруппыВнешнихПользователей.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование группы внешних пользователей + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Группа внешних пользователей + + + ru + Группы внешних пользователей, имеющих одинаковый доступ к данным системы + + true + HierarchyOfItems + 2 + true + 150 + String + Variable + AsDescription + + + ВсеВнешниеПользователи + Все внешние пользователи + + + + + + InDialog + BothWays + Catalog.ГруппыВнешнихПользователей.Form.ФормаЭлемента + Catalog.ГруппыВнешнихПользователей.Form.ФормаСписка + Catalog.ГруппыВнешнихПользователей.Form.ФормаСписка + + Комментарий + + ru + Комментарий + + + String + + + + ru + Произвольная строка + + true + + + + + + Use + Use + + + ВсеОбъектыАвторизации + + ru + Все + + + Boolean + + + ru + В группу должны быть включены все участники указанного вида + + + + + Use + Use + + + + + + + Состав + + ru + Участники группы + + + ru + Внешние пользователи, входящие в группу + + + Use + LineNumber + + Use + + + + + ВнешнийПользователь + + ru + Внешний пользователь + + + CatalogRef.ВнешниеПользователи + + + ru + Внешний пользователь, включенный в группу + + + + ShowError + DontUse + Use + Use + Use + + ForFolderAndItem + + + + + + + Роли + + ru + Роли + + + Use + LineNumber + + Use + + + + + Роль + + ru + Роль + + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Разрешенное действие (роль), заданное для группы внешних пользователей + + + + ShowError + Use + Index + Use + + + + + + + + Назначение + + ru + Назначение + + ShowError + + Use + LineNumber + + Use + + + + + ТипПользователей + + ru + Тип пользователей + + + DefinedType.ВнешнийПользователь + + + ru + Пустая ссылка на допустимый тип объектов авторизации + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ГруппыВнешнегоПользователя + + ru + Группы + + FormNavigationPanelGoTo + + CatalogRef.ВнешниеПользователи + + Auto + + ru + Группы пользователя + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274\321\203/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274\321\203/Form.form" new file mode 100644 index 00000000..d65402c4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274\321\203/Form.form" @@ -0,0 +1,559 @@ + + + + <key>ru</key> + <value>Группы доступа</value> + + + ГруппыДоступа + 1 + + <key>ru</key> + <value>Группы доступа</value> + + true + true + + true + + + ГруппыДоступа + + true + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + Наименование + 4 + true + true + + true + + + + ГруппыДоступа.Наименование + + + true + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ГруппыДоступаСсылка + 22 + true + true + + + + ГруппыДоступа.Ссылка + + + + ГруппыДоступаСсылкаРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + ГруппыДоступаСсылкаКонтекстноеМеню + 23 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + None + + ГруппыДоступаКоманднаяПанель + 3 + true + true + + true + + Left + + + Selection + ГруппыДоступаВыбор + + + true + true + + true + + ГруппыДоступаSearchString + 10 + + ГруппыДоступаSearchStringExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ГруппыДоступаSearchStringContextMenu + 11 + true + true + + true + + true + + + true + + + + true + true + + true + + ГруппыДоступаViewStatus + 13 + + ГруппыДоступаViewStatusExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + ГруппыДоступаViewStatusContextMenu + 14 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ГруппыДоступаSearchControl + 16 + + ГруппыДоступаSearchControlExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + ГруппыДоступаSearchControlContextMenu + 17 + true + true + + true + + true + + SearchControlAddition + + true + + + + ГруппыДоступаExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + ГруппыДоступаКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + ГруппыДоступа.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + + + ГруппыДоступаКомментарий + 19 + true + true + + true + + + + Items.ГруппыДоступа.CurrentData.Комментарий + + + Left + + ГруппыДоступаКомментарийРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + ГруппыДоступаКомментарийКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + Выбрать + 6 + true + true + + true + + + ВыбратьExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + PictureAndText + true + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ГруппыДоступа + + <key>ru</key> + <value>Группы доступа</value> + + 1 + + ValueTree + + + true + + + true + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 1 + + String + + + + true + + + true + + + + Ссылка + + <key>ru</key> + <value>Ссылка</value> + + 2 + + CatalogRef.ГруппыДоступа + + + true + + + true + + + + ЭтоГруппа + 3 + + Boolean + + + true + + + true + + + + НомерКартинки + 4 + + Number + + 10 + + + + true + + + true + + + + Комментарий + + <key>ru</key> + <value>Комментарий</value> + + 5 + + String + + + + true + + + true + + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + true + + + StdPicture.ChooseValue + + + + Выбрать + + + DontUse + + + Выбранные + + + + ПользовательГрупп + + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + true + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274\321\203/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274\321\203/Module.bsl" new file mode 100644 index 00000000..a0f15c67 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\236\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274\321\203/Module.bsl" @@ -0,0 +1,190 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Выбранные", Параметры.Выбранные); + Запрос.УстановитьПараметр("ПользовательГрупп", Параметры.ПользовательГрупп); + Запрос.УстановитьПараметр("Ответственный", Пользователи.АвторизованныйПользователь()); + Запрос.УстановитьПараметр("ПолноправныйОтветственный", Пользователи.ЭтоПолноправныйПользователь()); + + УстановитьПривилегированныйРежим(Истина); + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка, + | ГруппыДоступа.Наименование КАК Наименование, + | ГруппыДоступа.ЭтоГруппа КАК ЭтоГруппа, + | ВЫБОР + | КОГДА ГруппыДоступа.ЭтоГруппа + | И НЕ ГруппыДоступа.ПометкаУдаления + | ТОГДА 0 + | КОГДА ГруппыДоступа.ЭтоГруппа + | И ГруппыДоступа.ПометкаУдаления + | ТОГДА 1 + | КОГДА НЕ ГруппыДоступа.ЭтоГруппа + | И НЕ ГруппыДоступа.ПометкаУдаления + | ТОГДА 3 + | ИНАЧЕ 4 + | КОНЕЦ КАК НомерКартинки, + | ЛОЖЬ КАК Пометка, + | ГруппыДоступа.Комментарий КАК Комментарий + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ВЫБОР + | КОГДА ГруппыДоступа.ЭтоГруппа + | ТОГДА ИСТИНА + | КОГДА ГруппыДоступа.Ссылка В (&Выбранные) + | ТОГДА ЛОЖЬ + | КОГДА ГруппыДоступа.ПометкаУдаления + | ТОГДА ЛОЖЬ + | КОГДА ГруппыДоступа.Профиль.ПометкаУдаления + | ТОГДА ЛОЖЬ + | КОГДА ГруппыДоступа.Ссылка = ЗНАЧЕНИЕ(Справочник.ГруппыДоступа.Администраторы) + | ТОГДА &ПолноправныйОтветственный + | И ТИПЗНАЧЕНИЯ(&ПользовательГрупп) = ТИП(Справочник.Пользователи) + | КОГДА &ПолноправныйОтветственный = ЛОЖЬ + | И ГруппыДоступа.Ответственный <> &Ответственный + | ТОГДА ЛОЖЬ + | ИНАЧЕ ВЫБОР + | КОГДА ГруппыДоступа.Пользователь = НЕОПРЕДЕЛЕНО + | ТОГДА ИСТИНА + | КОГДА ГруппыДоступа.Пользователь = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) + | ТОГДА ИСТИНА + | КОГДА ГруппыДоступа.Пользователь = ЗНАЧЕНИЕ(Справочник.ВнешниеПользователи.ПустаяСсылка) + | ТОГДА ИСТИНА + | ИНАЧЕ ГруппыДоступа.Пользователь = &ПользовательГрупп + | КОНЕЦ + | И ВЫБОР + | КОГДА ТИПЗНАЧЕНИЯ(&ПользовательГрупп) = ТИП(Справочник.Пользователи) + | ИЛИ ТИПЗНАЧЕНИЯ(&ПользовательГрупп) = ТИП(Справочник.ГруппыПользователей) + | ТОГДА ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | Справочник.ПрофилиГруппДоступа.Назначение КАК ПрофилиГруппДоступаНазначение + | ГДЕ + | ПрофилиГруппДоступаНазначение.Ссылка = ГруппыДоступа.Профиль + | И ТИПЗНАЧЕНИЯ(ПрофилиГруппДоступаНазначение.ТипПользователей) = ТИП(Справочник.Пользователи)) + | КОГДА ТИПЗНАЧЕНИЯ(&ПользовательГрупп) = ТИП(Справочник.ВнешниеПользователи) + | ТОГДА ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | Справочник.ПрофилиГруппДоступа.Назначение КАК ПрофилиГруппДоступаНазначение, + | Справочник.ВнешниеПользователи КАК ВнешниеПользователи + | ГДЕ + | ВнешниеПользователи.Ссылка = &ПользовательГрупп + | И ПрофилиГруппДоступаНазначение.Ссылка = ГруппыДоступа.Профиль + | И ТИПЗНАЧЕНИЯ(ПрофилиГруппДоступаНазначение.ТипПользователей) = ТИПЗНАЧЕНИЯ(ВнешниеПользователи.ОбъектАвторизации)) + | КОГДА ТИПЗНАЧЕНИЯ(&ПользовательГрупп) = ТИП(Справочник.ГруппыВнешнихПользователей) + | ТОГДА ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | Справочник.ПрофилиГруппДоступа.Назначение КАК ПрофилиГруппДоступаНазначение, + | Справочник.ГруппыВнешнихПользователей.Назначение КАК ГруппыВнешнихПользователейНазначение + | ГДЕ + | ГруппыВнешнихПользователейНазначение.Ссылка = &ПользовательГрупп + | И ПрофилиГруппДоступаНазначение.Ссылка = ГруппыДоступа.Профиль + | И ТИПЗНАЧЕНИЯ(ПрофилиГруппДоступаНазначение.ТипПользователей) = ТИПЗНАЧЕНИЯ(ГруппыВнешнихПользователейНазначение.ТипПользователей)) + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ + | КОНЕЦ + | + |УПОРЯДОЧИТЬ ПО + | ГруппыДоступа.Ссылка ИЕРАРХИЯ"; + + НовоеДерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); + Папки = НовоеДерево.Строки.НайтиСтроки(Новый Структура("ЭтоГруппа", Истина), Истина); + + УдалитьПапки = Новый Соответствие; + НетПапок = Истина; + + Для каждого Папка Из Папки Цикл + Если Папка.Родитель = Неопределено + И Папка.Строки.Количество() = 0 + ИЛИ Папка.Строки.НайтиСтроки(Новый Структура("ЭтоГруппа", Ложь), Истина).Количество() = 0 Тогда + + УдалитьПапки.Вставить( + ?(Папка.Родитель = Неопределено, НовоеДерево.Строки, Папка.Родитель.Строки), + Папка); + Иначе + НетПапок = Ложь; + КонецЕсли; + КонецЦикла; + + Для Каждого КлючИЗначение Из УдалитьПапки Цикл + Строки = КлючИЗначение.Ключ; // КоллекцияСтрокДереваЗначений + Если Строки.Индекс(КлючИЗначение.Значение) > -1 Тогда + Строки.Удалить(КлючИЗначение.Значение); + КонецЕсли; + КонецЦикла; + + НовоеДерево.Строки.Сортировать("ЭтоГруппа Убыв, Наименование Возр", Истина); + ЗначениеВРеквизитФормы(НовоеДерево, "ГруппыДоступа"); + + Если НетПапок Тогда + Элементы.ГруппыДоступа.Отображение = ОтображениеТаблицы.Список; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыГруппыДоступа + +&НаКлиенте +Процедура ГруппыДоступаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ПриВыборе(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + + ПриВыборе(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПриВыборе() + + ТекущиеДанные = Элементы.ГруппыДоступа.ТекущиеДанные; + + Если ТекущиеДанные <> Неопределено Тогда + Если ТекущиеДанные.ЭтоГруппа Тогда + + Если Элементы.ГруппыДоступа.Развернут(Элементы.ГруппыДоступа.ТекущаяСтрока) Тогда + Элементы.ГруппыДоступа.Свернуть(Элементы.ГруппыДоступа.ТекущаяСтрока); + Иначе + Элементы.ГруппыДоступа.Развернуть(Элементы.ГруппыДоступа.ТекущаяСтрока); + КонецЕсли; + Иначе + ОповеститьОВыборе(ТекущиеДанные.Ссылка); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..3aff4362 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,407 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Create + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 20 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 21 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 8 + + СписокСтрокаПоискаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 9 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 11 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 12 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 14 + + СписокУправлениеПоискомРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 15 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Folders + + true + true + + + + Комментарий + 17 + true + true + + true + + + + Items.Список.CurrentData.Комментарий + + + Left + + КомментарийРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 2 + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Create + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ГруппыДоступа + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..470d3fd4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,9 @@ + +

Список предназначен для выбора папок групп доступа.

+

Т.к. групп доступа может быть очень много и с похожими настройками ограничений прав, предусмотрена возможность создавать папки для упрощения поиска нужной группы доступа и понимания ограничений прав доступа в целом.

+

Группы доступа можно сгруппировать по различным признакам.

+

Выбор папки групп доступа

+
  • Выделите папку, нажмите Выбрать. Также можно воспользоваться двойным щелчком левой кнопки мыши.

Ввод папки групп доступа

+
  • Нажмите Создать группу, введите наименование папки.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..ead8061c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Отбор только групп. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ЭтоГруппа", Истина, , , Истина); + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..5935514c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,178 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + ru + Наименование группы (папки) + + + НаименованиеExtendedTooltip + 5 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 3 + + <key>ru</key> + <value>Вышестоящая группа (папка)</value> + + true + true + + true + + + + Объект.Parent + + + 2 + + ru + Вышестоящая группа (папка), объединяющая группы (папки) для удобства поиска + + + РодительExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ГруппыДоступа + + + true + + + true + +
true
+ true +
+ + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..b61feadf --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,11 @@ + +

Описание свойств папки групп доступа.

+

Т.к. групп доступа может быть очень много и с похожими настройками ограничений прав, предусмотрена возможность создавать папки для упрощения поиска нужной группы доступа и понимания ограничений прав доступа в целом.

+

Группы доступа можно сгруппировать в папки по различным признакам.

+

Ввод папки групп доступа

+
  • +
    Введите Наименование папки;
    +
  • +
    Папку можно включить в Вышестоящую группу (папку). Выберите из списка нужную папку, нажмите кнопку Выбрать. Также можно выбрать вышестоящую папку двойным щелчком мыши.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..c2e7f25e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,77 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если НЕ ПравоДоступа("Изменение", Метаданные.Справочники.ГруппыДоступа) + + ИЛИ ПараметрыДоступа("Изменение", Метаданные.Справочники.ГруппыДоступа, + "Ссылка").ОграничениеУсловием Тогда + + ТолькоПросмотр = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ТекущийОбъект.Ссылка = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа(Истина) Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + НаименованиеПерсональныхГруппДоступа = Неопределено; + + РодительПерсональныхГруппДоступа = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа( + Истина, НаименованиеПерсональныхГруппДоступа); + + Если Объект.Ссылка <> РодительПерсональныхГруппДоступа + И Объект.Наименование = НаименованиеПерсональныхГруппДоступа Тогда + + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Это наименование зарезервировано.'"), + , + "Объект.Наименование", + , + Отказ); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..caaf12bb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,988 @@ + + + + ГруппаПользовательскихНастроек + 40 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 42 + + ФормаВыбрать + 21 + true + true + + true + + + ФормаВыбратьExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаСоздать + 12 + true + true + + true + + + ФормаСоздатьExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаСоздатьГруппу + 15 + true + true + + true + + + ФормаСоздатьГруппуExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 13 + true + true + + true + + + ФормаСкопироватьExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + КоманднаяПанельФормы + 14 + true + true + + true + + + <key>ru</key> + <value>Командная панель формы</value> + + + КоманднаяПанельФормыExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 20 + true + true + + true + + + ФормаСправкаExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + false + None + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 40 + true + true + true + true + true + + + + Профиль + 6 + true + true + + true + + + + Список.Профиль + + + + ПрофильExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + ПрофильКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + + + + Ответственный + 10 + true + true + + true + + + + Список.Ответственный + + + + ОтветственныйExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + ОтветственныйКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + true + + + + Ссылка + 37 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 38 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + ValueChoice + СписокВыборЗначения + + + BeforeAddRow + СписокПередНачаломДобавления + + + OnActivateRow + СписокПриАктивизацииСтроки + + + Drag + СписокПеретаскивание + + + BeforeRowChange + СписокПередНачаломИзменения + + + OnChange + СписокПриИзменении + + + true + true + + true + + СписокСтрокаПоиска + 44 + + СписокСтрокаПоискаРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 45 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 47 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 48 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 50 + + СписокУправлениеПоискомРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 51 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюСоздать + 17 + true + true + + true + + + СписокКонтекстноеМенюСоздатьExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюСоздатьГруппу + 18 + true + true + + true + + + СписокКонтекстноеМенюСоздатьГруппуExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюСкопировать + 19 + true + true + + true + + + СписокКонтекстноеМенюСкопироватьExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюСписка + 16 + true + true + + true + + + <key>ru</key> + <value>Контекстное меню списка</value> + + + КонтекстноеМенюСпискаExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + true + true + + true + + + HierarchicalList + true + true + true + true + true + true +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + Список.DefaultPicture + + + + OnGetDataAtServer + СписокПриПолученииДанныхНаСервере + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + Комментарий + 8 + true + true + + true + + + + Items.Список.CurrentData.Комментарий + + + Left + + КомментарийРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + 2 + true + false + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.IsFolder + + + Список.Ref + + + Список.Пользователь + +
true
+ + ВЫБРАТЬ + ГруппыДоступа.Ссылка, + ГруппыДоступа.ПометкаУдаления, + ГруппыДоступа.Предопределенный, + ГруппыДоступа.Родитель, + ГруппыДоступа.ЭтоГруппа, + ГруппыДоступа.Наименование, + ГруппыДоступа.Профиль, + ГруппыДоступа.Пользователь, + ГруппыДоступа.Комментарий, + ГруппыДоступа.Ответственный +ИЗ + Справочник.ГруппыДоступа КАК ГруппыДоступа +ГДЕ + ВЫБОР + КОГДА &Профиль = ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.ПустаяСсылка) + ТОГДА ИСТИНА + ИНАЧЕ ГруппыДоступа.Профиль = &Профиль + КОНЕЦ + Catalog.ГруппыДоступа + true + true + true + true + true + +
+ + РодительПерсональныхГруппДоступа + 2 + + CatalogRef.ГруппыДоступа + String + + + + true + + + true + + + + УпрощенныйИнтерфейсНастройкиПравДоступа + 3 + + Boolean + + + true + + + true + + + + РежимВыбора + 4 + + Boolean + + + true + + + true + + + + Профиль + + CatalogRef.ПрофилиГруппДоступа + + true + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Help/ru.html" new file mode 100644 index 00000000..e930833c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Help/ru.html" @@ -0,0 +1,18 @@ + +

Список групп доступа предназначен для ведения групп доступа и позволяет просмотреть имеющиеся настройки прав с ограничениями.

+

Список групп доступа открывается по команде Группы доступа из раздела Администрирование - Настройки пользователей и прав. Для быстрого перехода к списку групп доступа, созданных на базе профиля групп доступа, можно воспользоваться командой Группы доступа на панели навигации профиля групп доступа.

+

Группа доступа определяет совокупность действий с данными программы, которые могут выполнять участники этой группы. Как правило, группы доступа соответствуют различным должностным обязанностям (или видам деятельности) пользователей программы. Пользователь может входить одновременно в одну или несколько групп доступа, которые в совокупности образуют его персональные настройки прав доступа.

+

С помощью групп доступа можно задавать и администрировать общие настройки прав доступа для некоторой группы пользователей, выполняющих однотипные функции в программе, например, "Бухгалтеры центрального офиса" или "Менеджеры по продажам филиала в городе Н".

+

Для управления доступом необходимы права администратора. При этом пользователь, назначенный ответственным в группе доступа, может изменять состав своей группы доступа.

+

В списке выводятся сведения:

+
  • +
    Наименование - группы доступа выводятся в алфавитном порядке их наименований.
    +
  • +
    Профиль - для удобства в списке сделана возможность отображения профиля группы доступа.
    +
  • +
    Ответственный - в этой колонке выводится пользователь, ответственный за данную группу доступа.

Ввод группы доступа

+
  • Нажмите Создать, заполните необходимые поля.

Ввод папки групп доступа

+
  • В списке предусмотрена возможность создавать папки (группы) для упрощения поиска нужной группы доступа и понимания ограничений прав доступа в целом, т.к. групп доступа может быть очень много и с похожими настройками ограничений прав. +
  • Нажмите Создать группу, введите Наименование папки.

Изменение состава группы доступа

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..7a8166d6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,235 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + Иначе + Элементы.Список.РежимВыбора = Ложь; + КонецЕсли; + + РодительПерсональныхГруппДоступа = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа(Истина); + + УпрощенныйИнтерфейсНастройкиПравДоступа = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа(); + + Если УпрощенныйИнтерфейсНастройкиПравДоступа Тогда + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ФормаСоздать", "Видимость", Ложь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СписокКонтекстноеМенюСоздать", "Видимость", Ложь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ФормаСкопировать", "Видимость", Ложь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СписокКонтекстноеМенюСкопировать", "Видимость", Ложь); + КонецЕсли; + + Список.Параметры.УстановитьЗначениеПараметра("Профиль", Параметры.Профиль); + Если ЗначениеЗаполнено(Параметры.Профиль) Тогда + Элементы.Профиль.Видимость = Ложь; + Элементы.Список.Отображение = ОтображениеТаблицы.Список; + Автозаголовок = Ложь; + + Заголовок = НСтр("ru = 'Группы доступа'"); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ФормаСоздатьГруппу", "Видимость", Ложь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СписокКонтекстноеМенюСоздатьГруппу", "Видимость", Ложь); + КонецЕсли; + + Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ПрофилиГруппДоступа) Тогда + Элементы.Профиль.Видимость = Ложь; + КонецЕсли; + + Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда + // Скрытие группы доступа Администраторы. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.ГруппыДоступа.Администраторы, + ВидСравненияКомпоновкиДанных.НеРавно, , Истина); + КонецЕсли; + + РежимВыбора = Параметры.РежимВыбора; + + Если Параметры.РежимВыбора Тогда + + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + Элементы.Список.ВыборГруппИЭлементов = Параметры.ВыборГруппИЭлементов; + + АвтоЗаголовок = Ложь; + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + // Режим подбора. + Элементы.Список.МножественныйВыбор = Истина; + Элементы.Список.РежимВыделения = РежимВыделенияТаблицы.Множественный; + + Заголовок = НСтр("ru = 'Подбор групп доступа'"); + Иначе + Заголовок = НСтр("ru = 'Выбор группы доступа'"); + КонецЕсли; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПриИзменении(Элемент) + + СписокПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + Если Не СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(Элементы.Список) Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные = ТекущиеДанныеТаблицы(Элементы.Список); + ПереносДопустим = НЕ ЗначениеЗаполнено(ТекущиеДанные.Пользователь) + И ТекущиеДанные.Ссылка <> РодительПерсональныхГруппДоступа; + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ФормаПеренестиЭлемент", "Доступность", ПереносДопустим); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СписокКонтекстноеМенюПеренестиЭлемент", "Доступность", ПереносДопустим); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СписокПеренестиЭлемент", "Доступность", ПереносДопустим); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + Если Значение = РодительПерсональныхГруппДоступа Тогда + СтандартнаяОбработка = Ложь; + ПоказатьПредупреждение(, НСтр("ru = 'Эта группа только для персональных групп доступа.'")); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если Родитель = РодительПерсональныхГруппДоступа Тогда + + Отказ = Истина; + + Если Группа Тогда + ПоказатьПредупреждение(, НСтр("ru = 'В этой группе не используются подгруппы.'")); + + ИначеЕсли УпрощенныйИнтерфейсНастройкиПравДоступа Тогда + ПоказатьПредупреждение(, + НСтр("ru = 'Персональные группы доступа + |создаются только в форме ""Права доступа"".'")); + Иначе + ПоказатьПредупреждение(, НСтр("ru = 'Персональные группы доступа не используются.'")); + КонецЕсли; + + ИначеЕсли НЕ Группа + И УпрощенныйИнтерфейсНастройкиПравДоступа Тогда + + Отказ = Истина; + + ПоказатьПредупреждение(, + НСтр("ru = 'Используются только персональные группы доступа, + |которые создаются только в форме ""Права доступа"".'")); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломИзменения(Элемент, Отказ) + + ТекущиеДанные = Элемент.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено + Или ТекущиеДанные.ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + Отказ = Истина; + + ПараметрыФормы = Новый Структура("Ключ", ТекущиеДанные.Ссылка); + ОткрытьФорму("Справочник.ГруппыДоступа.ФормаОбъекта", ПараметрыФормы, Элемент); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + Для Каждого Строка Из Строки Цикл + Если ТипЗнч(Строка.Ключ) <> Тип("СправочникСсылка.ГруппыДоступа") Тогда + Продолжить; + КонецЕсли; + Данные = Строка.Значение.Данные; + + Если Данные.ЭтоГруппа + Или Не ЗначениеЗаполнено(Данные.Пользователь) Тогда + Продолжить; + КонецЕсли; + + Данные.Наименование = + УправлениеДоступомСлужебныйКлиентСервер.ПредставлениеГруппыДоступа(Данные); + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + Если Строка = РодительПерсональныхГруппДоступа Тогда + СтандартнаяОбработка = Ложь; + ПоказатьПредупреждение(, НСтр("ru = 'Эта папка только для персональных групп доступа.'")); + + ИначеЕсли ПараметрыПеретаскивания.Значение = РодительПерсональныхГруппДоступа Тогда + СтандартнаяОбработка = Ложь; + ПоказатьПредупреждение(, НСтр("ru = 'Папка персональных групп доступа не переносится.'")); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриИзмененииНаСервере() + + УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа(); + +КонецПроцедуры + +// Параметры: +// ТаблицаФормы - ДанныеФормыКоллекция +// +// Возвращаемое значение: +// ДанныеФормыСтруктура: +// * Ссылка - СправочникСсылка.ГруппыДоступа +// * Пользователь - СправочникСсылка.Пользователи +// - СправочникСсылка.ВнешниеПользователи +// +&НаКлиенте +Функция ТекущиеДанныеТаблицы(ТаблицаФормы) + Возврат ТаблицаФормы.ТекущиеДанные; +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..91a87d38 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,2632 @@ + + + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 336 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Родитель + 286 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 337 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 287 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаПрофильНазначение + 438 + + Профиль + 7 + true + true + + true + + + + Объект.Профиль + + + + OnChange + ПрофильПриИзменении + + + ПрофильExtendedTooltip + 338 + true + true + + true + + Label + true + true + + Left + + + + ПрофильКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Профиль назначение</value> + + + ГруппаПрофильНазначениеРасширеннаяПодсказка + 439 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ПользователиИДоступ + 11 + + ПользователиГруппы + 212 + + Пользователи + 298 + + <key>ru</key> + <value>Участники</value> + + true + true + + true + + + ПользователиГруппы + + None + Copy + HierarchicalList + List + Tree + + ru + Допустимые участники: + + ShowBottom + + Пользователь + 301 + true + true + + true + + + + ПользователиГруппы.Пользователь + + + + OnChange + ПользовательПриИзменении + + + ПользовательExtendedTooltip + 360 + true + true + + true + + Label + true + true + + Left + + + + ПользовательКонтекстноеМеню + 302 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + AutoComplete + ПользовательАвтоПодбор + + + StartChoice + ПользовательНачалоВыбора + + + Clearing + ПользовательОчистка + + + TextEditEnd + ПользовательОкончаниеВводаТекста + + 40 + true + true + true + true + true + + + + ПользователиКоманднаяПанель + 300 + + ПользователиПодобрать + 226 + true + true + + true + + false + + ПользователиПодобратьExtendedTooltip + 352 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подобрать + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ПользователиДобавить + 409 + true + true + + true + + + ПользователиДобавитьРасширеннаяПодсказка + 410 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Пользователи.StandardCommand.Add + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + Удалить + 440 + true + true + + true + + + УдалитьРасширеннаяПодсказка + 441 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Пользователи.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ПользователиСтандартныеКоманды + 405 + true + true + + true + + + <key>ru</key> + <value>Пользователи стандартные команды</value> + + + ПользователиСтандартныеКомандыРасширеннаяПодсказка + 406 + true + true + + true + + Label + true + true + + Left + + + + Item.Пользователи + + + true + true + + true + + Left + + + OnEditEnd + ПользователиПриОкончанииРедактирования + + + BeforeAddRow + ПользователиПередНачаломДобавления + + + BeforeDeleteRow + ПользователиПередУдалением + + + ChoiceProcessing + ПользователиОбработкаВыбора + + + BeforeRowChange + ПользователиПередНачаломИзменения + + + OnStartEdit + ПользователиПриНачалеРедактирования + + + AfterDeleteRow + ПользователиПослеУдаления + + + OnChange + ПользователиПриИзменении + + + true + true + + true + + ПользователиСтрокаПоиска + 411 + + ПользователиСтрокаПоискаРасширеннаяПодсказка + 413 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСтрокаПоискаКонтекстноеМеню + 412 + true + true + + true + + true + + + true + + + + true + true + + true + + ПользователиСостояниеПросмотра + 414 + + ПользователиСостояниеПросмотраРасширеннаяПодсказка + 416 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСостояниеПросмотраКонтекстноеМеню + 415 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПользователиУправлениеПоиском + 417 + + ПользователиУправлениеПоискомРасширеннаяПодсказка + 419 + true + true + + true + + Label + true + true + + Left + + + + ПользователиУправлениеПоискомКонтекстноеМеню + 418 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПользователиExtendedTooltip + 359 + true + true + + true + + Label + true + true + + Left + + + + ПользователиКонтекстноеМеню + 299 + + КонтекстноеМенюПользователиПодобрать + 245 + true + true + + true + + false + + КонтекстноеМенюПользователиПодобратьExtendedTooltip + 345 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подобрать + Auto + true + true + UserCmds + Auto + + + ПользователиКонтекстноеМенюСтандартныеКоманды + 403 + true + true + + true + + + <key>ru</key> + <value>Пользователи контекстное меню стандартные команды</value> + + + ПользователиКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 404 + true + true + + true + + Label + true + true + + Left + + + + Item.Пользователи + + + true + true + + true + + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true + + ПользователиГруппы.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + true + true + + true + + + <key>ru</key> + <value>Участники группы</value> + + + ПользователиГруппыExtendedTooltip + 344 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Доступ + 64 + + ВидыДоступа + 169 + + <key>ru</key> + <value>Ограничения доступа</value> + + true + true + + true + + + Объект.ВидыДоступа + + false + None + Add + CancelSearch + Copy + Delete + Find + MoveDown + MoveUp + SortListAsc + SortListDesc + + ВидыДоступаВидДоступаПредставление + 191 + true + true + + true + + + + Объект.ВидыДоступа.ВидДоступаПредставление + + + + ru + Вид доступа изменяется только в профиле + + + ВидыДоступаВидДоступаПредставлениеРасширеннаяПодсказка + 371 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаВидДоступаПредставлениеКонтекстноеМеню + 192 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 20 + true + false + true + true + true + true + + + + ВидыДоступаВсеРазрешеныПредставление + 193 + true + true + + true + + + + Объект.ВидыДоступа.ВсеРазрешеныПредставление + + + + ru + Способ определения разрешенных значений доступа + + + OnChange + ВидыДоступаВсеРазрешеныПредставлениеПриИзменении + + + ВидыДоступаВсеРазрешеныПредставлениеРасширеннаяПодсказка + 372 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаВсеРазрешеныПредставлениеКонтекстноеМеню + 194 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + ВидыДоступаВсеРазрешеныПредставлениеОбработкаВыбора + + 30 + true + true + true + true + true + true + true + + + + ВидыДоступаКоманднаяПанель + 171 + true + true + + true + + Left + + + OnEditEnd + ВидыДоступаПриОкончанииРедактирования + + + Selection + ВидыДоступаВыбор + + + OnActivateRow + ВидыДоступаПриАктивизацииСтроки + + + OnStartEdit + ВидыДоступаПриНачалеРедактирования + + + OnActivateCell + ВидыДоступаПриАктивизацииЯчейки + + + true + true + + true + + ВидыДоступаСтрокаПоиска + 420 + + ВидыДоступаСтрокаПоискаРасширеннаяПодсказка + 422 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаСтрокаПоискаКонтекстноеМеню + 421 + true + true + + true + + true + + + true + + + + true + true + + true + + ВидыДоступаСостояниеПросмотра + 423 + + ВидыДоступаСостояниеПросмотраРасширеннаяПодсказка + 425 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаСостояниеПросмотраКонтекстноеМеню + 424 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВидыДоступаУправлениеПоиском + 426 + + ВидыДоступаУправлениеПоискомРасширеннаяПодсказка + 428 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаУправлениеПоискомКонтекстноеМеню + 427 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВидыДоступаExtendedTooltip + 370 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаКонтекстноеМеню + 170 + + ВидыДоступаКонтекстноеМенюИзменить + 318 + true + true + + true + + + ВидыДоступаКонтекстноеМенюИзменитьExtendedTooltip + 363 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВидыДоступа.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ВидыДоступаКонтекстноеМенюЗакончитьРедактирование + 319 + true + true + + true + + + ВидыДоступаКонтекстноеМенюЗакончитьРедактированиеExtendedTooltip + 364 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВидыДоступа.StandardCommand.EndEdit + Auto + true + true + UserCmds + Auto + + + ВидыДоступаГруппаКнопокКонтекстногоМеню + 331 + + ВидыДоступаКонтекстноеМенюКопироватьВБуферОбмена + 327 + true + true + + true + + + ВидыДоступаКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip + 366 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВидыДоступа.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + + ВидыДоступаКонтекстноеМенюВывестиСписок + 326 + true + true + + true + + + ВидыДоступаКонтекстноеМенюВывестиСписокExtendedTooltip + 367 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВидыДоступа.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Виды доступа группа кнопок контекстного меню</value> + + + ВидыДоступаГруппаКнопокКонтекстногоМенюExtendedTooltip + 365 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + true + true + 2 + true + Row +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + +
+ + ЗначенияДоступаПоВидуДоступа + 268 + + ТекстВидДоступаНеИспользуется + 321 + + <key>ru</key> + <value>В данный момент не используется, т.к. эта возможность отключена в программе.</value> + + true + + true + + + ТекстВидДоступаНеИспользуетсяExtendedTooltip + 377 + true + true + + true + + Label + true + true + + Left + + + + ТекстВидДоступаНеИспользуетсяКонтекстноеМеню + 322 + true + true + + true + + true + + Label + true + + Left + + + + ЗначенияДоступа + 66 + + <key>ru</key> + <value>Значения доступа</value> + + true + true + + true + + + Объект.ЗначенияДоступа + + false + None + Copy + EndEdit + + ЗначенияДоступаНомерСтрокиПоВиду + 308 + + <key>ru</key> + <value>N</value> + + true + true + + true + + + + Объект.ЗначенияДоступа.НомерСтрокиПоВиду + + + + ЗначенияДоступаНомерСтрокиПоВидуРасширеннаяПодсказка + 393 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаНомерСтрокиПоВидуКонтекстноеМеню + 309 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + 3 + true + true + + + + ЗначенияДоступаЗначениеДоступа + 312 + true + true + + true + + + + Объект.ЗначенияДоступа.ЗначениеДоступа + + + + ЗначенияДоступаЗначениеДоступаРасширеннаяПодсказка + 394 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаЗначениеДоступаКонтекстноеМеню + 313 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + AutoComplete + ЗначениеДоступаАвтоПодбор + + + StartChoice + ЗначениеДоступаНачалоВыбора + + + Clearing + ЗначениеДоступаОчистка + + + TextEditEnd + ЗначениеДоступаОкончаниеВводаТекста + + + ChoiceProcessing + ЗначениеДоступаОбработкаВыбора + + true + true + true + true + true + true + + + + ЗначенияДоступаВключаяНижестоящие + 448 + true + true + + true + + + + Объект.ЗначенияДоступа.ВключаяНижестоящие + + + None + + ru + Включая нижестоящие (с иерархией) + + + ЗначенияДоступаВключаяНижестоящиеРасширеннаяПодсказка + 450 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаВключаяНижестоящиеКонтекстноеМеню + 449 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + + CommonPicture.ИерархическийСписок + + Left + true + + + + ЗначенияДоступаКоманднаяПанель + 68 + true + true + + true + + Left + true + + + OnEditEnd + ЗначенияДоступаПриОкончанииРедактирования + + + ChoiceProcessing + ЗначениеДоступаОбработкаВыбора + + + OnStartEdit + ЗначенияДоступаПриНачалеРедактирования + + + OnChange + ЗначенияДоступаПриИзменении + + + true + true + + true + + ЗначенияДоступаСтрокаПоиска + 429 + + ЗначенияДоступаСтрокаПоискаРасширеннаяПодсказка + 431 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаСтрокаПоискаКонтекстноеМеню + 430 + true + true + + true + + true + + + true + + + + true + true + + true + + ЗначенияДоступаСостояниеПросмотра + 432 + + ЗначенияДоступаСостояниеПросмотраРасширеннаяПодсказка + 434 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаСостояниеПросмотраКонтекстноеМеню + 433 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ЗначенияДоступаУправлениеПоиском + 435 + + ЗначенияДоступаУправлениеПоискомРасширеннаяПодсказка + 437 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаУправлениеПоискомКонтекстноеМеню + 436 + true + true + + true + + true + + SearchControlAddition + + true + + + + ЗначенияДоступаExtendedTooltip + 392 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаКонтекстноеМеню + 67 + true + true + + true + + true + + true + true + true + true + 2 + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Значения доступа по виду доступа</value> + + + ЗначенияДоступаПоВидуДоступаExtendedTooltip + 373 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + + НадписьВидДоступа + + Auto + Auto + +
+ true + true + + true + + + <key>ru</key> + <value>Ограничения доступа</value> + + + ДоступExtendedTooltip + 362 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + СтраницаКомментарий + 407 + + Комментарий + 219 + true + true + + true + + + + Объект.Комментарий + + + None + + OnChange + КомментарийПриИзменении + + + КомментарийРасширеннаяПодсказка + 402 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 220 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + СтраницаКомментарийРасширеннаяПодсказка + 408 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Пользователи и доступ</value> + + + ПользователиИДоступExtendedTooltip + 343 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
+ + СвойстваПерсональнойГруппы + 292 + + ИспользованиеПерсональногоДоступа + 296 + + <key>ru</key> + <value>Персональный доступ для:</value> + + true + true + + true + + + + ИспользованиеПерсональногоДоступа + + + Right + + ИспользованиеПерсональногоДоступаExtendedTooltip + 342 + true + true + + true + + Label + true + true + + Left + + + + ИспользованиеПерсональногоДоступаКонтекстноеМеню + 297 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПользовательВладелец + 303 + true + true + + true + + + + Объект.Пользователь + + + None + + ПользовательВладелецExtendedTooltip + 341 + true + true + + true + + Label + true + true + + Left + + + + ПользовательВладелецКонтекстноеМеню + 304 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ПользовательВладелецНачалоВыбора + + true + true + true + false + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Свойства персональной группы</value> + + + СвойстваПерсональнойГруппыExtendedTooltip + 340 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Ответственный + 314 + true + true + + true + + + + Объект.Ответственный + + + + ОтветственныйExtendedTooltip + 361 + true + true + + true + + Label + true + true + + Left + + + + ОтветственныйКонтекстноеМеню + 315 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 442 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 443 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + PictureAndText + true + true + true + UserCmds + Auto + + + КомандыФормы + 444 + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыРасширеннаяПодсказка + 445 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ПоказыватьНеиспользуемыеВидыДоступа + 334 + true + true + + true + + + ПоказыватьНеиспользуемыеВидыДоступаExtendedTooltip + 335 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьНеиспользуемыеВидыДоступа + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСправка + 446 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 447 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + WriteAndClose + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ГруппыДоступа + + + true + + + true + +
true
+ true + + + Объект.Пользователи + + + НомерКартинки + + <key>ru</key> + <value>Номер картинки</value> + + 1 + + Number + + 1 + + + + true + + + true + + + + + + Объект.ВидыДоступа + + + ВидДоступаПредставление + + <key>ru</key> + <value>Вид доступа</value> + + 4 + + String + + + + true + + + true + + + + ВсеРазрешеныПредставление + + <key>ru</key> + <value>Значения доступа</value> + + 5 + + String + + + + true + + + true + + + + + + Объект.ЗначенияДоступа + + + НомерСтрокиПоВиду + + <key>ru</key> + <value>Номер строки по виду</value> + + 1 + + Number + + 10 + true + + + + true + + + true + + + +
+ + ИзменилсяСоставВидовДоступаПриЧтении + 3 + + Boolean + + + true + + + true + + + + НадписьВидДоступа + 7 + + String + + + + true + + + true + + FunctionalOption.ОграничиватьДоступНаУровнеЗаписей + + + СписокТиповПользователей + 18 + + ValueList + + + true + + + true + + + + + + + ПредставлениеТипаПользователей + 19 + + String + + + + true + + + true + + true + + + ИспользованиеПерсональногоДоступа + + <key>ru</key> + <value>Использование персонального доступа</value> + + 25 + + Boolean + + + true + + + true + + true + + + ПользователиГруппы + + <key>ru</key> + <value>Пользователи группы</value> + + 26 + + ValueTree + + + true + + + true + + true + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + String + CatalogRef.Пользователи + + + + true + + + true + + + + НомерКартинки + 2 + + Number + + 1 + + + + true + + + true + + + + Ссылка + 3 + + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + + true + + + true + + + + + СправочникВнешниеПользователиДоступен + 27 + + Boolean + + + true + + + true + + + + ПарольПользователяСервиса + 2 + + + true + + + true + + + + РежимПодбора + 5 + + Boolean + + + true + + + true + + + + ИспользоватьВнешнихПользователей + 4 + + Boolean + + + true + + + true + + + + ВыполненаПроцедураПриСозданииНаСервере + 6 + + Boolean + + + true + + + true + + + + ОтветНаВопросПриОткрытииФормы + 8 + + String + + + + true + + + true + + + + Назначение + 29 + + ValueList + + + true + + + true + + + + + + + ПравоРедактированияОбъекта + 30 + + + true + + + true + + + + Подобрать + + <key>ru</key> + <value>Подобрать</value> + + 1 + + ru + Подобрать участников группы доступа + + + true + + + + Подобрать + + + Picture + true + DontUse + + + ПоказыватьНеиспользуемыеВидыДоступа + + <key>ru</key> + <value>Показывать неиспользуемые виды доступа</value> + + 2 + + ru + Показывать неиспользуемые виды доступа + + + true + + + + ПоказыватьНеиспользуемыеВидыДоступа + + + DontUse + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 3 + + ru + Записать объект и закрыть форму + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..9e02f761 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,36 @@ + +

Описание свойств группы доступа.

+

Группа доступа определяет совокупность действий с данными программы, которые могут выполнять участники этой группы. Как правило, группы доступа соответствуют различным должностным обязанностям (или видам деятельности) пользователей программы. Пользователь может входить одновременно в одну или несколько групп доступа, которые в совокупности образуют его персональные настройки прав доступа.

+

С помощью группы доступа можно задавать и администрировать общие настройки прав доступа для некоторой группы пользователей, выполняющих однотипные функции в программе, например, Бухгалтеры.

+

Для управления доступом нужны права администратора. При этом пользователь, назначенный ответственным в группе доступа, может изменять состав участников своей группы доступа на вкладке Участники.

+

Группа доступа всегда связана с одним из имеющихся профилей групп доступа, которые, как правило, объединяют в себе несколько ролей. При включении пользователя в группу доступа ему назначаются все роли, заданные в профиле группы доступа. Например, предопределенная группа доступа Администраторы связана с профилем Администратор, в состав которого входит роль Полные Права. Эта роль предоставляет неограниченный доступ ко всем данным и назначается всем администраторам программы, перечисленным в группе доступа Администраторы.

+

Ввод группы доступа

+

Для группы доступа задается профиль (рекомендуется с него начать заполнение), список участников и ограничения доступа.

+
  • Выберите Профиль. Он определяет права (списком ролей) и возможности ограничения прав по "разрезам" (видам доступа), например, ограничения по видам Организации, Склады и т.д. Виды доступа из профиля будут добавлены в группу доступа автоматически. +
  • Исходя из целей использования и ограничений, настраиваемых по имеющимся видам доступа, следует ввести Наименование группы доступа (подробнее о назначении групп доступа). +
    • Рекомендуется называть группу доступа во множественном числе таким образом, чтобы ее имя содержало указание на используемый в ней профиль (в поле Профиль) и однозначно характеризовало определенный в ней состав настроек прав доступа. Например, на базе профиля Менеджеры по продажам могут быть введены группы доступа Менеджеры по продажам в ООО "Далекая перспектива" и Менеджеры по продажам в ЗАО "Новые технологии".
  • Группа доступа может входить в одну из папок групп доступа. +
    • В поле Группа (папка) выберите папку из списка.
  • Допустимые участники группы доступа определяются в профиле в соответствии с выбранным назначением. +
  • На вкладке Участники заполните список участников группы доступа, укажите ответственного за группу доступа. +
  • На вкладке Ограничения доступа необходимо произвести дополнительные настройки прав доступа. +
  • На вкладке Комментарий можно ввести подробную информацию о группе доступа.

Участники группы

+
  • +
    Перечислите список пользователей (и групп пользователей), на которых должны распространяться настройки прав доступа. Списки, из которых можно выбрать участников группы, перечислены в поле Допустимые участники в нижней части вкладки.
    +
    • +
      Для добавления сразу нескольких участников нажмите Подобрать, для добавления одного участника нажмите Еще - Добавить. Выберите из предлагаемого списка нужных участников группы доступа.
      +
    • +
      Для удаления одного или нескольких ненужных участников группы доступа выделите их, нажмите Удалить.
  • +
    Заполните поле Ответственный (выберите из списка Пользователи). Пользователь, указанный в группе доступа как Ответственный, может изменять состав участников данной группы.

Ограничения доступа

+
  • На вкладке Ограничения доступа необходимо указать дополнительные настройки прав доступа. В зависимости от настроек профиля, в группе доступа ограничения доступа только уточняются. Иногда ограничения доступа в профиле настроены так, что уточнений не требуется. В таких случаях вкладка Ограничения доступа становится недоступной. +
  • Состав видов доступа, перечисленных на этой вкладке, зависит от профиля, выбранного в поле Профиль. Кроме того, профиль также определяет, как именно действует настройка вида доступа: она разрешает только просмотр или также включает возможность редактирования данных.Например, в случае если профиль групп доступа включает в себя роль для чтения документов Демо: Поступление товаров, то пользователи получают возможность просматривать документы по заданным организациям. Если же в профиле содержится роль для добавления и изменения, то появляется возможность редактировать такие документы. +
  • С помощью поля Вид доступа можно задать границы области данных, с которой разрешено работать участникам группы доступа. Вид доступа - это некоторое правило, по которому "разрешается" доступ к данным программы. Например, с помощью вида доступа Демо: Организации можно разрешить работать пользователям только с документамипо конкретным организациям, или наоборот, скрыть от них документы некоторых организаций. +
  • Для того чтобы настроить ограничения, нужно для каждого вида доступа определить список значений. +
  • +
    Для установки значений используйте двойной щелчок мыши (также можно выполнить команду Изменить контекстного меню по правой кнопке мыши). Для каждого Вида доступа установите Значения доступа. Для выбора предусмотрено два значения:
    +
    • Все запрещены. Для вида доступа можно указать список разрешенных значений. Такой способ настройки подходит в тех случаях, когда стоит задача предоставить доступ только к определенной области данных. +
    • +
      Все разрешены. Для вида доступа можно указать список тех значений, которые не должны быть доступны. Второй способ настройки удобен в случаях, когда требуется закрыть доступ к заранее известной области данных, а для всех новых значений, вводимых в программу, должны по умолчанию действовать разрешительные правила. Например, если с помощью вида доступа Демо: Организации задано правило, запрещающее работать с документами по организации "Далекая перспектива", то на новую организацию "Новые технологии", введенную в программу позднее, эти ограничения распространяться не будут. При этом следует учитывать, что разрешающие настройки имеют приоритет над запрещающими. Так, если в приведенном выше примере пользователю будет разрешен ввод документов по организации "Далекая перспектива" в какой-либо другой группе доступа с тем же профилем, то в итоге он получит доступ ко всем документам по этой организации
  • +
    При необходимости для каждого Вида доступа можно задать список значений или групп значений, которые будут исключениями. Для этого в списке Разрешенные(Запрещенные) значения нажмите Добавить. Выберите исключения из предлагаемых программой списков.
    +
    • В ряде случаев для упрощения настройки прав доступа, в списке разрешенных или запрещенных значений можно указывать не отдельные элементы, а целые группы элементов. Например, для вида доступа Демо: Группы Партнеров можно ограничить доступ в разрезе групп доступа партнеров, а не по каждому партнеру в отдельности. Для этого необходимо определить список групп доступа партнеров, и у каждого партнера задать принадлежность к той или иной группе. Эти действия могут быть выполнены не только администратором, но и любым пользователем с соответствующими правами на редактирование списка партнеров.
  • В некоторых группах доступа предусмотрена настройка прав с помощью вида доступа Пользователи (аналогично, вид доступа Внешние пользователи для внешних пользователей). Настройка может учитываться только в тех документах (и других объектах программы), в полях которых могут быть указаны пользователи, получающие доступ к этим документам ("Ответственный", "Автор", "Исполнитель" и т.п.). +
    • Для того чтобы дать участникам группы права доступа ко всем ограниченным данным, с которыми работает тот или иной пользователь, необходимо включить его в список разрешенных значений для вида доступа Пользователи. +
    • Например, если доступ к документам Поступление товаров и услуг зависит от того, кто указан в поле Ответственный, тогда пользователь сможет записывать документы, у которых Ответственный совпадает с пользователем, или добавлен в список разрешенных для вида доступа Пользователи. Аналогично действует запрещающая настройка.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..5c8f80eb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,1550 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Подготовка вспомогательных данных. + УправлениеДоступомСлужебный.ПриСозданииНаСервереФормыРедактированияРазрешенныхЗначений(ЭтотОбъект); + + НачальнаяНастройкаПриЧтенииИСоздании(Объект); + + СправочникВнешниеПользователиДоступен = ПравоДоступа( + "Просмотр", Метаданные.Справочники.ВнешниеПользователи); + + СписокТиповПользователей.Добавить(Тип("СправочникСсылка.Пользователи")); + СписокТиповПользователей.Добавить(Тип("СправочникСсылка.ВнешниеПользователи")); + + // Установка постоянной доступности свойств. + + // Определение необходимости настройки ограничений доступа. + Если НЕ УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписей() Тогда + Элементы.Доступ.Видимость = Ложь; + КонецЕсли; + + // Установка доступности при открытии формы только для просмотра. + Элементы.ПользователиПодобрать.Доступность = НЕ ТолькоПросмотр; + Элементы.КонтекстноеМенюПользователиПодобрать.Доступность = НЕ ТолькоПросмотр; + + Если ОбщегоНазначения.РазделениеВключено() + И Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда + + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + ДействияСПользователемСервиса = МодульПользователиСлужебныйВМоделиСервиса.ПолучитьДействияСПользователемСервиса(); + + Если НЕ ДействияСПользователемСервиса.ИзменениеАдминистративногоДоступа Тогда + ВызватьИсключение + НСтр("ru = 'Недостаточно прав доступа для изменения состава администраторов.'"); + КонецЕсли; + КонецЕсли; + + ОбновитьНазначение(); + + ВыполненаПроцедураПриСозданииНаСервере = Истина; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + Если Не Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы + И Не УправлениеДоступомСлужебный.ЭтоПрофильОткрытиеВнешнихОтчетовИОбработок(Объект.Профиль) Тогда + + ТолькоПросмотр = Истина; + Иначе + ЗапретитьИзменениеВсегоКромеСоставаУчастников(); + КонецЕсли; + КонецЕсли; + + Элементы.ФормаЗаписатьИЗакрыть.Доступность = Не ТолькоПросмотр + И ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыДоступа); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОтветНаВопросПриОткрытииФормы = "УстановитьТолькоПросмотр" Тогда + ОтветНаВопросПриОткрытииФормы = ""; + ТолькоПросмотр = Истина; + Элементы.ФормаЗаписатьИЗакрыть.Доступность = Ложь; + КонецЕсли; + + Если ОтветНаВопросПриОткрытииФормы = "УстановитьПрофильАдминистратор" Тогда + ОтветНаВопросПриОткрытииФормы = Неопределено; + Объект.Профиль = ПредопределенноеЗначение("Справочник.ПрофилиГруппДоступа.Администратор"); + Модифицированность = Истина; + + ИначеЕсли Не ТолькоПросмотр + И Объект.Ссылка = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") + И Объект.Профиль <> ПредопределенноеЗначение("Справочник.ПрофилиГруппДоступа.Администратор") Тогда + + Отказ = Истина; + ПоказатьВопрос( + Новый ОписаниеОповещения("ПриОткрытииПослеПодтвержденияУстановкиПрофиляАдминистратор", ЭтотОбъект), + НСтр("ru = 'У группы доступа Администраторы должен быть профиль Администратор. + | + |Установить профиль в группе доступа (нет - открыть только для просмотра)?'"), + РежимДиалогаВопрос.ДаНет, + , + КодВозвратаДиалога.Нет); + Иначе + Если ОтветНаВопросПриОткрытииФормы = "ОбновитьСоставВидовДоступа" Тогда + ОтветНаВопросПриОткрытииФормы = ""; + ОбновитьСоставВидовДоступа(); + ИзменилсяСоставВидовДоступаПриЧтении = Ложь; + + ИначеЕсли НЕ ТолькоПросмотр И ИзменилсяСоставВидовДоступаПриЧтении Тогда + + Отказ = Истина; + ПоказатьВопрос( + Новый ОписаниеОповещения("ПриОткрытииПослеПодтвержденияОбновленияВидовДоступа", ЭтотОбъект), + НСтр("ru = 'Изменился состав видов доступа профиля этой группы доступа. + | + |Обновить виды доступа в группе доступа (нет - открыть только для просмотра)?'"), + РежимДиалогаВопрос.ДаНет, + , + КодВозвратаДиалога.Нет); + + ИначеЕсли НЕ ТолькоПросмотр + И НЕ ЗначениеЗаполнено(Объект.Ссылка) + И ТипЗнч(ВладелецФормы) = Тип("ТаблицаФормы") + И ВладелецФормы.Родитель.Параметры.Свойство("Профиль") Тогда + + Если ЗначениеЗаполнено(ВладелецФормы.Родитель.Параметры.Профиль) Тогда + Объект.Профиль = ВладелецФормы.Родитель.Параметры.Профиль; + ПодключитьОбработчикОжидания("ОбработчикОжиданияПрофильПриИзменении", 0.1, Истина); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если НЕ ВыполненаПроцедураПриСозданииНаСервере Тогда + Возврат; + КонецЕсли; + + УправлениеДоступомСлужебный.ПриПовторномЧтенииНаСервереФормыРедактированияРазрешенныхЗначений(ЭтотОбъект, ТекущийОбъект); + + НачальнаяНастройкаПриЧтенииИСоздании(ТекущийОбъект); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + Если СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().РазделениеВключено + И Объект.Ссылка = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") + И ПарольПользователяСервиса = Неопределено Тогда + + Отказ = Истина; + ПользователиСлужебныйКлиент.ЗапроситьПарольДляАутентификацииВСервисе( + Новый ОписаниеОповещения("ПередЗаписьюПродолжение", ЭтотОбъект, ПараметрыЗаписи), + ЭтотОбъект, + ПарольПользователяСервиса); + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда + // Ответственный не может менять что-либо, кроме состава пользователей. + // В целях предотвращения изменения группы доступа на клиенте в запрещенных + // частях, выполняется повторное чтение объекта. + ВосстановитьОбъектБезУчастниковГруппы(ТекущийОбъект); + КонецЕсли; + + ТекущийОбъект.Пользователи.Очистить(); + + Если ТекущийОбъект.Ссылка <> Справочники.ГруппыДоступа.Администраторы + И ЗначениеЗаполнено(ТекущийОбъект.Пользователь) Тогда + + Если ИспользованиеПерсональногоДоступа Тогда + ТекущийОбъект.Пользователи.Добавить().Пользователь = ТекущийОбъект.Пользователь; + КонецЕсли; + Иначе + Для каждого Элемент Из ПользователиГруппы.ПолучитьЭлементы() Цикл + ТекущийОбъект.Пользователи.Добавить().Пользователь = Элемент.Пользователь; + КонецЦикла; + КонецЕсли; + + Если ТекущийОбъект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда + Объект.Родитель = Неопределено; + Объект.Ответственный = Неопределено; + КонецЕсли; + + Если ОбщегоНазначения.РазделениеВключено() + И Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда + + ТекущийОбъект.ДополнительныеСвойства.Вставить( + "ПарольПользователяСервиса", ПарольПользователяСервиса); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + УстановитьПривилегированныйРежим(Истина); + + ПрофильПомеченНаУдаление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Профиль, "ПометкаУдаления"); + ПрофильПомеченНаУдаление = ?(ПрофильПомеченНаУдаление = Неопределено, Ложь, ПрофильПомеченНаУдаление); + + УстановитьПривилегированныйРежим(Ложь); + + Если НЕ Объект.ПометкаУдаления И ПрофильПомеченНаУдаление Тогда + ПараметрыЗаписи.Вставить("ПредупредитьЧтоПрофильПомеченНаУдаление"); + КонецЕсли; + + УправлениеДоступомСлужебный.ПослеЗаписиНаСервереФормыРедактированияРазрешенныхЗначений( + ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + + ОбновитьКартинкуКомментария(Элементы.СтраницаКомментарий, Объект.Комментарий); + + УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_ГруппыДоступа", Новый Структура, Объект.Ссылка); + + Если ПараметрыЗаписи.Свойство("ПредупредитьЧтоПрофильПомеченНаУдаление") Тогда + + ПоказатьПредупреждение( + Новый ОписаниеОповещения("ПослеЗаписиЗавершение", ЭтотОбъект, ПараметрыЗаписи), + НСтр("ru = 'Группа доступа не влияет на права участников + |так как ее профиль помечен на удаление.'")); + Иначе + ПослеЗаписиЗавершение(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + ПроверенныеРеквизитыОбъекта = Новый Массив; + Ошибки = Неопределено; + + // Проверка незаполненных и повторяющихся пользователей. + ПроверенныеРеквизитыОбъекта.Добавить("Пользователи.Пользователь"); + ДеревоПользователейСтроки = РеквизитФормыВЗначение("ПользователиГруппы").Строки; + КоличествоОшибок = ?(Ошибки = Неопределено, 0, Ошибки.Количество()); + + // Подготовка данных для проверки соответствия типов объектов авторизации. + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Пользователи", ДеревоПользователейСтроки.ВыгрузитьКолонку("Пользователь")); + Запрос.УстановитьПараметр("Родитель", Объект.Профиль); + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступаНазначение.ТипПользователей + |ПОМЕСТИТЬ ПрофилиГруппДоступаНазначение + |ИЗ + | Справочник.ПрофилиГруппДоступа.Назначение КАК ПрофилиГруппДоступаНазначение + |ГДЕ + | ПрофилиГруппДоступаНазначение.Ссылка = &Родитель + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВнешниеПользователи.Ссылка + |ИЗ + | Справочник.ВнешниеПользователи КАК ВнешниеПользователи + |ГДЕ + | НЕ ЛОЖЬ В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ЛОЖЬ + | ИЗ + | ПрофилиГруппДоступаНазначение КАК ПрофилиГруппДоступаНазначение + | ГДЕ + | ТИПЗНАЧЕНИЯ(ПрофилиГруппДоступаНазначение.ТипПользователей) = ТИПЗНАЧЕНИЯ(ВнешниеПользователи.ОбъектАвторизации)) + | И ВнешниеПользователи.Ссылка В(&Пользователи) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ГруппыВнешнихПользователейНазначение.Ссылка + |ИЗ + | Справочник.ГруппыВнешнихПользователей.Назначение КАК ГруппыВнешнихПользователейНазначение + |ГДЕ + | НЕ ЛОЖЬ В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ЛОЖЬ + | ИЗ + | ПрофилиГруппДоступаНазначение КАК ПрофилиГруппДоступаНазначение + | ГДЕ + | ТИПЗНАЧЕНИЯ(ПрофилиГруппДоступаНазначение.ТипПользователей) = ТИПЗНАЧЕНИЯ(ГруппыВнешнихПользователейНазначение.ТипПользователей)) + | И ГруппыВнешнихПользователейНазначение.Ссылка В(&Пользователи) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | Пользователи.Ссылка + |ИЗ + | Справочник.Пользователи КАК Пользователи + |ГДЕ + | НЕ ЛОЖЬ В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ЛОЖЬ + | ИЗ + | ПрофилиГруппДоступаНазначение КАК ПрофилиГруппДоступаНазначение + | ГДЕ + | ТИПЗНАЧЕНИЯ(ПрофилиГруппДоступаНазначение.ТипПользователей) = ТИП(Справочник.Пользователи)) + | И Пользователи.Ссылка В(&Пользователи) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ГруппыПользователей.Ссылка + |ИЗ + | Справочник.ГруппыПользователей КАК ГруппыПользователей + |ГДЕ + | НЕ ЛОЖЬ В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ЛОЖЬ + | ИЗ + | ПрофилиГруппДоступаНазначение КАК ПрофилиГруппДоступаНазначение + | ГДЕ + | ТИПЗНАЧЕНИЯ(ПрофилиГруппДоступаНазначение.ТипПользователей) = ТИП(Справочник.Пользователи)) + | И ГруппыПользователей.Ссылка В(&Пользователи)"; + + УстановитьПривилегированныйРежим(Истина); + НедопустимыеПользователи = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + УстановитьПривилегированныйРежим(Ложь); + + Для Каждого ТекущаяСтрока Из ДеревоПользователейСтроки Цикл + НомерСтроки = ДеревоПользователейСтроки.Индекс(ТекущаяСтрока); + Участник = ТекущаяСтрока.Пользователь; + + // Проверка заполнения значения. + Если НЕ ЗначениеЗаполнено(Участник) Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "ПользователиГруппы[%1].Пользователь", + УточнитьСообщение(НСтр("ru = 'Пользователь не выбран.'"), Участник), + "ПользователиГруппы", + НомерСтроки, + УточнитьСообщение(НСтр("ru = 'Пользователь в строке %1 не выбран.'"), Участник)); + Продолжить; + КонецЕсли; + + // Проверка наличия повторяющихся значений. + НайденныеЗначения = ДеревоПользователейСтроки.НайтиСтроки( + Новый Структура("Пользователь", ТекущаяСтрока.Пользователь)); + + Если НайденныеЗначения.Количество() > 1 Тогда + + Если ТипЗнч(ТекущаяСтрока.Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда + ТекстДляОднойОшибки = НСтр("ru = 'Пользователь ""%2"" повторяется.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Пользователь ""%2"" в строке %1 повторяется.'"); + + ИначеЕсли ТипЗнч(ТекущаяСтрока.Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда + ТекстДляОднойОшибки = НСтр("ru = 'Внешний пользователь ""%2"" повторяется.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Внешний пользователь ""%2"" в строке %1 повторяется.'"); + + ИначеЕсли ТипЗнч(ТекущаяСтрока.Пользователь) = Тип("СправочникСсылка.ГруппыПользователей") Тогда + ТекстДляОднойОшибки = НСтр("ru = 'Группа пользователей ""%2"" повторяется.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Группа пользователей ""%2"" в строке %1 повторяется.'"); + Иначе + ТекстДляОднойОшибки = НСтр("ru = 'Группа внешних пользователей ""%2"" повторяется.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Группа внешних пользователей ""%2"" в строке %1 повторяется.'"); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "ПользователиГруппы[%1].Пользователь", + УточнитьСообщение(ТекстДляОднойОшибки, Участник), + "ПользователиГруппы", + НомерСтроки, + УточнитьСообщение(ТекстДляНесколькихОшибок, Участник)); + КонецЕсли; + + // Проверка наличия только пользователей в предопределенной группе Администраторы. + Если Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы + И ТипЗнч(ТекущаяСтрока.Пользователь) <> Тип("СправочникСсылка.Пользователи") Тогда + + Если ТипЗнч(ТекущаяСтрока.Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда + ТекстДляОднойОшибки = НСтр("ru = 'Внешний пользователь ""%2"" недопустим в предопределенной группе доступа Администраторы.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Внешний пользователь ""%2"" в строке %1 недопустим в предопределенной группе доступа Администраторы.'"); + + ИначеЕсли ТипЗнч(ТекущаяСтрока.Пользователь) = Тип("СправочникСсылка.ГруппыПользователей") Тогда + ТекстДляОднойОшибки = НСтр("ru = 'Группа пользователей ""%2"" недопустима в предопределенной группе доступа Администраторы.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Группа пользователей ""%2"" в строке %1 недопустима в предопределенной группе доступа Администраторы.'"); + Иначе + ТекстДляОднойОшибки = НСтр("ru = 'Группа внешних пользователей ""%2"" недопустима в предопределенной группе доступа Администраторы.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Группа внешних пользователей ""%2"" в строке %1 недопустима в предопределенной группе доступа Администраторы.'"); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "ПользователиГруппы[%1].Пользователь", + УточнитьСообщение(ТекстДляОднойОшибки, Участник), + "ПользователиГруппы", + НомерСтроки, + УточнитьСообщение(ТекстДляНесколькихОшибок, Участник)); + КонецЕсли; + + Если НедопустимыеПользователи.Найти(ТекущаяСтрока.Пользователь) <> Неопределено Тогда + + Если ТипЗнч(ТекущаяСтрока.Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда + ТекстДляОднойОшибки = НСтр("ru = 'Пользователь ""%2"" недопустим для указанного типа участников.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Пользователь ""%2"" в строке %1 недопустим для указанного типа участников.'"); + ИначеЕсли ТипЗнч(ТекущаяСтрока.Пользователь) = Тип("СправочникСсылка.ГруппыПользователей") Тогда + ТекстДляОднойОшибки = НСтр("ru = 'Группа пользователей ""%2"" недопустима для указанного типа участников.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Группа пользователей ""%2"" в строке %1 недопустима для указанного типа участников.'"); + ИначеЕсли ТипЗнч(ТекущаяСтрока.Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда + ТекстДляОднойОшибки = НСтр("ru = 'Внешний пользователь ""%2"" недопустим для указанного типа участников.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Внешний пользователь ""%2"" в строке %1 недопустим для указанного типа участников.'"); + Иначе // Группа внешних пользователей. + ТекстДляОднойОшибки = НСтр("ru = 'Группа внешних пользователей ""%2"" недопустима для указанного типа участников.'"); + ТекстДляНесколькихОшибок = НСтр("ru = 'Группа внешних пользователей ""%2"" в строке %1 недопустима для указанного типа участников.'"); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "ПользователиГруппы[%1].Пользователь", + УточнитьСообщение(ТекстДляОднойОшибки, Участник), + "ПользователиГруппы", + НомерСтроки, + УточнитьСообщение(ТекстДляНесколькихОшибок, Участник)); + + КонецЕсли; + + КонецЦикла; + + Если НЕ ОбщегоНазначения.РазделениеВключено() + И Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда + + ОписаниеОшибки = ""; + УправлениеДоступомСлужебный.ПроверитьНаличиеПользователяИБВГруппеДоступаАдминистраторы( + ПользователиГруппы.ПолучитьЭлементы(), ОписаниеОшибки); + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "ПользователиГруппы", ОписаниеОшибки, ""); + КонецЕсли; + КонецЕсли; + + // Проверка незаполненных и повторяющихся значений доступа. + ПропуститьПроверкуВидовИЗначений = Ложь; + Если КоличествоОшибок <> ?(Ошибки = Неопределено, 0, Ошибки.Количество()) Тогда + ПропуститьПроверкуВидовИЗначений = Истина; + Элементы.ПользователиИДоступ.ТекущаяСтраница = Элементы.ПользователиГруппы; + КонецЕсли; + + УправлениеДоступомСлужебныйКлиентСервер.ОбработкаПроверкиЗаполненияНаСервереФормыРедактированияРазрешенныхЗначений( + ЭтотОбъект, Отказ, ПроверенныеРеквизитыОбъекта, Ошибки, ПропуститьПроверкуВидовИЗначений); + + ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ); + + ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Объект")); + ТекущийОбъект = РеквизитФормыВЗначение("Объект"); + + ТекущийОбъект.ДополнительныеСвойства.Вставить( + "ПроверенныеРеквизитыОбъекта", ПроверенныеРеквизитыОбъекта); + + Если НЕ ТекущийОбъект.ПроверитьЗаполнение() Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПрофильПриИзменении(Элемент) + + ПрофильПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательВладелецНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура КомментарийПриИзменении(Элемент) + + ОбновитьКартинкуКомментария(Элементы.СтраницаКомментарий, Объект.Комментарий); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователи + +&НаКлиенте +Процедура ПользователиПриИзменении(Элемент) + + Модифицированность = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если Копирование Тогда + + Если Элемент.ТекущиеДанные.ПолучитьРодителя() <> Неопределено Тогда + Отказ = Истина; + + Элементы.Пользователи.ТекущаяСтрока = + Элемент.ТекущиеДанные.ПолучитьРодителя().ПолучитьИдентификатор(); + + Элементы.Пользователи.СкопироватьСтроку(); + КонецЕсли; + + ИначеЕсли Элементы.Пользователи.ТекущаяСтрока <> Неопределено Тогда + Отказ = Истина; + Элементы.Пользователи.СкопироватьСтроку(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиПередНачаломИзменения(Элемент, Отказ) + + Если Элемент.ТекущиеДанные.ПолучитьРодителя() <> Неопределено Тогда + Отказ = Истина; + + Элементы.Пользователи.ТекущаяСтрока = + Элемент.ТекущиеДанные.ПолучитьРодителя().ПолучитьИдентификатор(); + + Элементы.Пользователи.ИзменитьСтроку(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиПередУдалением(Элемент, Отказ) + + СтрокаРодителя = Элемент.ТекущиеДанные.ПолучитьРодителя(); + + Если СтрокаРодителя <> Неопределено Тогда + Отказ = Истина; + + Если ТипЗнч(СтрокаРодителя.Пользователь) = + Тип("СправочникСсылка.ГруппыПользователей") Тогда + + ПоказатьПредупреждение(, + НСтр("ru = 'Пользователи групп отображаются для сведения, + |что они получают доступ групп пользователей. + |Их нельзя удалить в этом списке.'")); + Иначе + ПоказатьПредупреждение(, + НСтр("ru = 'Внешние пользователи групп отображаются для сведения, + |что они получают доступ групп внешних пользователей. + |Их нельзя удалить в этом списке.'")); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + + Если Копирование Тогда + Элемент.ТекущиеДанные.Пользователь = Неопределено; + КонецЕсли; + + Если Элемент.ТекущиеДанные.Пользователь = Неопределено Тогда + Элемент.ТекущиеДанные.НомерКартинки = -1; + Элемент.ТекущиеДанные.Пользователь = ПредопределенноеЗначение( + "Справочник.Пользователи.ПустаяСсылка"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + Если НоваяСтрока + И Элемент.ТекущиеДанные <> Неопределено + И Элемент.ТекущиеДанные.Пользователь = ПредопределенноеЗначение( + "Справочник.Пользователи.ПустаяСсылка") Тогда + + Элемент.ТекущиеДанные.Пользователь = Неопределено; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Если РежимПодбора Тогда + ПользователиГруппы.ПолучитьЭлементы().Очистить(); + КонецЕсли; + ИзмененныеСтроки = Новый Массив; + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда + Для каждого Значение Из ВыбранноеЗначение Цикл + ЗначениеНеНайдено = Истина; + Для каждого Элемент Из ПользователиГруппы.ПолучитьЭлементы() Цикл + Если Элемент.Пользователь = Значение Тогда + ЗначениеНеНайдено = Ложь; + Прервать; + КонецЕсли; + КонецЦикла; + Если ЗначениеНеНайдено Тогда + НовыйЭлемент = ПользователиГруппы.ПолучитьЭлементы().Добавить(); + НовыйЭлемент.Пользователь = Значение; + ИзмененныеСтроки.Добавить(НовыйЭлемент.ПолучитьИдентификатор()); + КонецЕсли; + КонецЦикла; + + ИначеЕсли Элемент.ТекущиеДанные.Пользователь <> ВыбранноеЗначение Тогда + Элемент.ТекущиеДанные.Пользователь = ВыбранноеЗначение; + ИзмененныеСтроки.Добавить(Элемент.ТекущаяСтрока); + КонецЕсли; + + Если ИзмененныеСтроки.Количество() > 0 Тогда + ОбновленныеСтроки = Неопределено; + ОбновитьПользователейГрупп(ИзмененныеСтроки, ОбновленныеСтроки); + Для каждого ИдентификаторСтроки Из ОбновленныеСтроки Цикл + Элементы.Пользователи.Развернуть(ИдентификаторСтроки); + КонецЦикла; + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиПослеУдаления(Элемент) + + // Установка отображения дерева. + ЕстьВложенные = Ложь; + Для каждого Элемент Из ПользователиГруппы.ПолучитьЭлементы() Цикл + Если Элемент.ПолучитьЭлементы().Количество() > 0 Тогда + ЕстьВложенные = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Элементы.Пользователи.Отображение = + ?(ЕстьВложенные, ОтображениеТаблицы.Дерево, ОтображениеТаблицы.Список); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательПриИзменении(Элемент) + + Если ЗначениеЗаполнено(Элементы.Пользователи.ТекущиеДанные.Пользователь) Тогда + ОбновитьПользователейГрупп(Элементы.Пользователи.ТекущаяСтрока); + Элементы.Пользователи.Развернуть(Элементы.Пользователи.ТекущаяСтрока); + Иначе + Элементы.Пользователи.ТекущиеДанные.НомерКартинки = -1; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ВыбратьПодобратьПользователей(Ложь); + РежимПодбора = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Элементы.Пользователи.ТекущиеДанные.НомерКартинки = -1; + Элементы.Пользователи.ТекущиеДанные.Пользователь = ПредопределенноеЗначение( + "Справочник.Пользователи.ПустаяСсылка"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Текст) Тогда + СтандартнаяОбработка = Ложь; + Если Объект.Ссылка = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда + ДанныеВыбора = УправлениеДоступомСлужебныйВызовСервера.СформироватьДанныеВыбораПользователя( + Текст, Ложь, Ложь); + Иначе + ДанныеВыбора = УправлениеДоступомСлужебныйВызовСервера.СформироватьДанныеВыбораПользователя( + Текст); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Текст) Тогда + СтандартнаяОбработка = Ложь; + Если Объект.Ссылка = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда + ДанныеВыбора = УправлениеДоступомСлужебныйВызовСервера.СформироватьДанныеВыбораПользователя( + Текст, Ложь, Ложь); + Иначе + ДанныеВыбора = УправлениеДоступомСлужебныйВызовСервера.СформироватьДанныеВыбораПользователя( + Текст); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыВидыДоступа + +&НаКлиенте +Процедура ВидыДоступаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Если Не ТолькоПросмотр + И Не Элементы.Доступ.ТолькоПросмотр Тогда + + Элементы.ВидыДоступа.ИзменитьСтроку(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПриАктивизацииСтроки(Элемент) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПриАктивизацииСтроки( + ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПриАктивизацииЯчейки(Элемент) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПриАктивизацииЯчейки( + ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПриНачалеРедактирования( + ЭтотОбъект, Элемент, НоваяСтрока, Копирование); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПриОкончанииРедактирования( + ЭтотОбъект, Элемент, НоваяСтрока, ОтменаРедактирования); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий элемента ВсеРазрешеныПредставление таблицы формы ВидыДоступа. + +&НаКлиенте +Процедура ВидыДоступаВсеРазрешеныПредставлениеПриИзменении(Элемент) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаВсеРазрешеныПредставлениеПриИзменении( + ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаВсеРазрешеныПредставлениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаВсеРазрешеныПредставлениеОбработкаВыбора( + ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыЗначенияДоступа + +&НаКлиенте +Процедура ЗначенияДоступаПриИзменении(Элемент) + + УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПриИзменении( + ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияДоступаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + + УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПриНачалеРедактирования( + ЭтотОбъект, Элемент, НоваяСтрока, Копирование); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияДоступаПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПриОкончанииРедактирования( + ЭтотОбъект, Элемент, НоваяСтрока, ОтменаРедактирования); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаНачалоВыбора( + ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОбработкаВыбора( + ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаОчистка(Элемент, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОчистка( + ЭтотОбъект, Элемент, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаАвтоПодбор( + ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОкончаниеВводаТекста( + ЭтотОбъект, Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + Записать(Новый Структура("ЗаписатьИЗакрыть")); + +КонецПроцедуры + +&НаКлиенте +Процедура Подобрать(Команда) + + ВыбратьПодобратьПользователей(Истина); + РежимПодбора = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНеиспользуемыеВидыДоступа(Команда) + + ПоказыватьНеИспользуемыеВидыДоступаНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Продолжение обработчика события ПриОткрытии. +&НаКлиенте +Процедура ПриОткрытииПослеПодтвержденияУстановкиПрофиляАдминистратор(Ответ, Контекст) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ОтветНаВопросПриОткрытииФормы = "УстановитьПрофильАдминистратор"; + Иначе + ОтветНаВопросПриОткрытииФормы = "УстановитьТолькоПросмотр"; + КонецЕсли; + + Открыть(); + +КонецПроцедуры + +// Продолжение обработчика события ПриОткрытии. +&НаКлиенте +Процедура ПриОткрытииПослеПодтвержденияОбновленияВидовДоступа(Ответ, Контекст) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ОтветНаВопросПриОткрытииФормы = "ОбновитьСоставВидовДоступа"; + Иначе + ОтветНаВопросПриОткрытииФормы = "УстановитьТолькоПросмотр"; + КонецЕсли; + + Открыть(); + +КонецПроцедуры + +// Продолжение обработчика события ПередЗаписью. +&НаКлиенте +Процедура ПередЗаписьюПродолжение(НовыйПарольПользователяСервиса, ПараметрыЗаписи) Экспорт + + Если НовыйПарольПользователяСервиса = Неопределено Тогда + Возврат; + КонецЕсли; + + ПарольПользователяСервиса = НовыйПарольПользователяСервиса; + + Попытка + Записать(ПараметрыЗаписи); + Исключение + ПарольПользователяСервиса = Неопределено; + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Продолжение обработчика события ПослеЗаписи. +&НаКлиенте +Процедура ПослеЗаписиЗавершение(ПараметрыЗаписи) Экспорт + + Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда + ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму() + + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияПрофильПриИзменении() + + ПрофильПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаСервере +Процедура ЗапретитьИзменениеВсегоКромеСоставаУчастников() + + Элементы.Наименование.ТолькоПросмотр = Истина; + Элементы.Родитель.Видимость = Ложь; + Элементы.Профиль.ТолькоПросмотр = Истина; + Элементы.СвойстваПерсональнойГруппы.Видимость = Ложь; + Элементы.Комментарий.ТолькоПросмотр = Истина; + +КонецПроцедуры + +&НаСервере +Процедура НачальнаяНастройкаПриЧтенииИСоздании(ТекущийОбъект) + + Если ТекущийОбъект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда + ЗапретитьИзменениеВсегоКромеСоставаУчастников(); + + Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда + ТолькоПросмотр = Истина; + Элементы.ФормаЗаписатьИЗакрыть.Доступность = Ложь; + КонецЕсли; + Иначе + Если ЗначениеЗаполнено(ТекущийОбъект.Пользователь) Тогда + // Подготовка к режиму персональной группы доступа. + АвтоЗаголовок = Ложь; + Заголовок = УправлениеДоступомСлужебныйКлиентСервер.ПредставлениеГруппыДоступа(ТекущийОбъект) + + " " + НСтр("ru = '(Группа доступа)'"); + + Отбор = Новый Структура("Пользователь", ТекущийОбъект.Пользователь); + НайденныеСтроки = ТекущийОбъект.Пользователи.НайтиСтроки(Отбор); + ИспользованиеПерсональногоДоступа = НайденныеСтроки.Количество() > 0; + Иначе + АвтоЗаголовок = Истина; + КонецЕсли; + + ПользовательЗаполнен = ЗначениеЗаполнено(ТекущийОбъект.Пользователь); + + Элементы.Наименование.ТолькоПросмотр = ПользовательЗаполнен; + Элементы.Родитель.ТолькоПросмотр = ПользовательЗаполнен; + Элементы.Профиль.ТолькоПросмотр = ПользовательЗаполнен; + Элементы.СвойстваПерсональнойГруппы.Видимость = ПользовательЗаполнен; + Элементы.ПользователиГруппы.Видимость = НЕ ПользовательЗаполнен; + + Элементы.ПользователиИДоступ.ОтображениеСтраниц = + ?(ПользовательЗаполнен, + ОтображениеСтраницФормы.Нет, + ОтображениеСтраницФормы.ЗакладкиСверху); + + Элементы.ВидыДоступа.ПоложениеЗаголовка = + ?(ПользовательЗаполнен, + ПоложениеЗаголовкаЭлементаФормы.Верх, + ПоложениеЗаголовкаЭлементаФормы.Нет); + + Элементы.ПользовательВладелец.ТолькоПросмотр + = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа(); + + // Подготовка к режиму редактирования пользователей ответственным за участников. + Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда + Элементы.Наименование.ТолькоПросмотр = Истина; + Элементы.Родитель.ТолькоПросмотр = Истина; + Элементы.Профиль.ТолькоПросмотр = Истина; + Элементы.Доступ.ТолькоПросмотр = Истина; + Элементы.Ответственный.ТолькоПросмотр = Истина; + Элементы.Комментарий.ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + + ОбновитьСоставВидовДоступа(Истина); + + // Подготовка дерева пользователей. + ДеревоПользователей = ПользователиГруппы.ПолучитьЭлементы(); + ДеревоПользователей.Очистить(); + Для каждого СтрокаТЧ Из ТекущийОбъект.Пользователи Цикл + ДеревоПользователей.Добавить().Пользователь = СтрокаТЧ.Пользователь; + КонецЦикла; + ОбновитьПользователейГрупп(); + + ОбновитьКартинкуКомментария(Элементы.СтраницаКомментарий, Объект.Комментарий); + +КонецПроцедуры + +&НаСервере +Процедура ПрофильПриИзмененииНаСервере() + + ОбновитьНазначение(); + УдалитьНеТипичныхПользователей(); + ОбновитьСоставВидовДоступа(); + УправлениеДоступомСлужебныйКлиентСервер.ЗаполнитьСвойстваВидовДоступаВФорме(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьНазначение() + + Назначение.Очистить(); + НазначениеПредставление = ""; + Для Каждого Участник Из Объект.Профиль.Назначение Цикл + Если Участник.ТипПользователей <> Неопределено Тогда + Назначение.Добавить(Участник.ТипПользователей); + ПредставлениеТипа = Участник.ТипПользователей.Метаданные().Синоним; + НазначениеПредставление = ?(ПустаяСтрока(НазначениеПредставление), + ПредставлениеТипа, НазначениеПредставление + ", " + ПредставлениеТипа); + КонецЕсли; + КонецЦикла; + Элементы.Пользователи.Подсказка = НСтр("ru = 'Допустимые участники:'") + " " + НазначениеПредставление; + +КонецПроцедуры + +&НаСервере +Процедура УдалитьНеТипичныхПользователей() + + МассивТипов = Новый Массив; + Для Каждого Элемент Из Назначение Цикл + МассивТипов.Добавить(ТипЗнч(Элемент.Значение)); + КонецЦикла; + + ДеревоПользователей = ПользователиГруппы.ПолучитьЭлементы(); + + Индекс = ДеревоПользователей.Количество() - 1; + + Пока Индекс >= 0 Цикл + + СтрокаДерева = ДеревоПользователей.Получить(Индекс); + УдалитьСтроку = Ложь; + + Если (ТипЗнч(СтрокаДерева.Пользователь) = Тип("СправочникСсылка.Пользователи") + Или ТипЗнч(СтрокаДерева.Пользователь) = Тип("СправочникСсылка.ГруппыПользователей")) + И МассивТипов.Найти(Тип("СправочникСсылка.Пользователи")) = Неопределено Тогда + + УдалитьСтроку = Истина; + + ИначеЕсли ТипЗнч(СтрокаДерева.Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") + И МассивТипов.Найти(ТипЗнч(СтрокаДерева.Пользователь.ОбъектАвторизации)) = Неопределено Тогда + + ДеревоПользователей.Удалить(Индекс); + + ИначеЕсли ТипЗнч(СтрокаДерева.Пользователь) = Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда + + Для Каждого УчастникГруппы Из СтрокаДерева.ПолучитьЭлементы() Цикл + + Если МассивТипов.Найти(ТипЗнч(УчастникГруппы.Пользователь.ОбъектАвторизации)) = Неопределено Тогда + УдалитьСтроку = Истина; + Прервать; + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + Если УдалитьСтроку Тогда + ДеревоПользователей.Удалить(Индекс); + КонецЕсли; + + Индекс = Индекс - 1; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСоставВидовДоступа(Знач ПриЧтенииНаСервере = Ложь) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ВидыДоступаПрофиля.ВидДоступа, + | ВидыДоступаПрофиля.Предустановленный, + | ВидыДоступаПрофиля.ВсеРазрешены + |ИЗ + | Справочник.ПрофилиГруппДоступа.ВидыДоступа КАК ВидыДоступаПрофиля + |ГДЕ + | ВидыДоступаПрофиля.Ссылка = &Ссылка + | И НЕ ВидыДоступаПрофиля.Предустановленный"; + + Запрос.УстановитьПараметр("Ссылка", Объект.Профиль); + + УстановитьПривилегированныйРежим(Истина); + ВидыДоступаПрофиля = Запрос.Выполнить().Выгрузить(); + УстановитьПривилегированныйРежим(Ложь); + + ИзменилсяСоставВидовДоступа = Ложь; + + // Добавление недостающих видов доступа. + Индекс = ВидыДоступаПрофиля.Количество() - 1; + Пока Индекс >= 0 Цикл + Строка = ВидыДоступаПрофиля[Индекс]; + + Отбор = Новый Структура("ВидДоступа", Строка.ВидДоступа); + СвойстваВидаДоступа = УправлениеДоступомСлужебный.СвойстваВидаДоступа(Строка.ВидДоступа); + + Если СвойстваВидаДоступа = Неопределено Тогда + ВидыДоступаПрофиля.Удалить(Строка); + + ИначеЕсли Объект.ВидыДоступа.НайтиСтроки(Отбор).Количество() = 0 Тогда + ИзменилсяСоставВидовДоступа = Истина; + + Если ПриЧтенииНаСервере Тогда + Прервать; + Иначе + НоваяСтрока = Объект.ВидыДоступа.Добавить(); + НоваяСтрока.ВидДоступа = Строка.ВидДоступа; + НоваяСтрока.ВсеРазрешены = Строка.ВсеРазрешены; + КонецЕсли; + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + + // Удаление лишних видов доступа. + Индекс = Объект.ВидыДоступа.Количество() - 1; + Пока Индекс >= 0 Цикл + + ВидДоступа = Объект.ВидыДоступа[Индекс].ВидДоступа; + Отбор = Новый Структура("ВидДоступа", ВидДоступа); + СвойстваВидаДоступа = УправлениеДоступомСлужебный.СвойстваВидаДоступа(ВидДоступа); + + Если СвойстваВидаДоступа = Неопределено + ИЛИ ВидыДоступаПрофиля.НайтиСтроки(Отбор).Количество() = 0 Тогда + + ИзменилсяСоставВидовДоступа = Истина; + Если ПриЧтенииНаСервере Тогда + Прервать; + Иначе + Объект.ВидыДоступа.Удалить(Индекс); + Для каждого ЭлементКоллекции Из Объект.ЗначенияДоступа.НайтиСтроки(Отбор) Цикл + Объект.ЗначенияДоступа.Удалить(ЭлементКоллекции); + КонецЦикла; + КонецЕсли; + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + + Модифицированность = Модифицированность + ИЛИ ИзменилсяСоставВидовДоступа И НЕ ПриЧтенииНаСервере; + + // Установка флажка для запроса у пользователя решения обновить состав видов доступа. + Если ПриЧтенииНаСервере + И НЕ Объект.Ссылка.Пустая() // Это новый. + И ИзменилсяСоставВидовДоступа + И Пользователи.ЭтоПолноправныйПользователь() // Только администратор может обновлять виды доступа. + И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Профиль") = Объект.Профиль Тогда + + ИзменилсяСоставВидовДоступаПриЧтении = Истина; + КонецЕсли; + + Элементы.Доступ.Доступность = Объект.ВидыДоступа.Количество() > 0; + + // Установка порядка видов доступа по профилю. + Если НЕ ИзменилсяСоставВидовДоступаПриЧтении Тогда + Для каждого СтрокаТЧ Из ВидыДоступаПрофиля Цикл + Отбор = Новый Структура("ВидДоступа", СтрокаТЧ.ВидДоступа); + Индекс = Объект.ВидыДоступа.Индекс(Объект.ВидыДоступа.НайтиСтроки(Отбор)[0]); + Объект.ВидыДоступа.Сдвинуть(Индекс, ВидыДоступаПрофиля.Индекс(СтрокаТЧ) - Индекс); + КонецЦикла; + КонецЕсли; + + УправлениеДоступомСлужебныйКлиентСервер.ЗаполнитьСвойстваВидовДоступаВФорме(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПоказыватьНеИспользуемыеВидыДоступаНаСервере() + + УправлениеДоступомСлужебный.ОбновитьОтображениеНеиспользуемыхВидовДоступа(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьВыборТипаПользователиИлиВнешниеПользователи(ОбработкаПродолжения) + + ВыборИПодборВнешнихПользователей = Ложь; + + Если Объект.Ссылка = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда + ВыполнитьОбработкуОповещения(ОбработкаПродолжения, ВыборИПодборВнешнихПользователей); + Возврат; + КонецЕсли; + + Если Назначение.Количество() <> 0 Тогда + + Если Назначение.НайтиПоЗначению(ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка")) <> Неопределено Тогда + + Если Назначение.Количество() <> 1 Тогда + + Если ИспользоватьВнешнихПользователей Тогда + + СписокТиповПользователей.ПоказатьВыборЭлемента( + Новый ОписаниеОповещения( + "ПоказатьВыборТипаПользователиИлиВнешниеПользователиЗавершение", + ЭтотОбъект, + ОбработкаПродолжения), + НСтр("ru = 'Выбор типа данных'"), + СписокТиповПользователей[0]); + Иначе + ВыполнитьОбработкуОповещения(ОбработкаПродолжения, ВыборИПодборВнешнихПользователей); + КонецЕсли; + + Возврат; + + КонецЕсли; + + Иначе // только для внешних пользователей. + + ВыборИПодборВнешнихПользователей = Истина; + + КонецЕсли; + + КонецЕсли; + + ВыполнитьОбработкуОповещения(ОбработкаПродолжения, ВыборИПодборВнешнихПользователей); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьВыборТипаПользователиИлиВнешниеПользователиЗавершение(ВыбранныйЭлемент, ОбработкаПродолжения) Экспорт + + Если ВыбранныйЭлемент <> Неопределено Тогда + ВыборИПодборВнешнихПользователей = + ВыбранныйЭлемент.Значение = Тип("СправочникСсылка.ВнешниеПользователи"); + + ВыполнитьОбработкуОповещения(ОбработкаПродолжения, ВыборИПодборВнешнихПользователей); + Иначе + ВыполнитьОбработкуОповещения(ОбработкаПродолжения, Неопределено); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьПодобратьПользователей(Подобрать) + + ТекущийПользователь = ?(Элементы.Пользователи.ТекущиеДанные = Неопределено, + Неопределено, Элементы.Пользователи.ТекущиеДанные.Пользователь); + + Если НЕ Подобрать + И ЗначениеЗаполнено(ТекущийПользователь) + И ( ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.Пользователи") + ИЛИ ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ГруппыПользователей") ) Тогда + + ВыборИПодборВнешнихПользователей = Ложь; + + ИначеЕсли НЕ Подобрать + И ИспользоватьВнешнихПользователей + И ЗначениеЗаполнено(ТекущийПользователь) + И ( ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ВнешниеПользователи") + ИЛИ ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ГруппыВнешнихПользователей") ) Тогда + + ВыборИПодборВнешнихПользователей = Истина; + Иначе + ПоказатьВыборТипаПользователиИлиВнешниеПользователи( + Новый ОписаниеОповещения("ВыбратьПодобратьПользователейЗавершение", ЭтотОбъект, Подобрать)); + Возврат; + КонецЕсли; + + ВыбратьПодобратьПользователейЗавершение(ВыборИПодборВнешнихПользователей, Подобрать); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьПодобратьПользователейЗавершение(ВыборИПодборВнешнихПользователей, Подобрать) Экспорт + + Если ВыборИПодборВнешнихПользователей = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + ПараметрыФормы.Вставить("ТекущаяСтрока", ?( + Элементы.Пользователи.ТекущиеДанные = Неопределено, + Неопределено, + Элементы.Пользователи.ТекущиеДанные.Пользователь)); + + Если Подобрать Тогда + ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь); + ПараметрыФормы.Вставить("МножественныйВыбор", Истина); + ПараметрыФормы.Вставить("РасширенныйПодбор", Истина); + ПараметрыФормы.Вставить("ПараметрыРасширеннойФормыПодбора", ПараметрыРасширеннойФормыПодбора()); + ПараметрыФормы.Вставить("ВыборГруппПользователей", Истина); + ИначеЕсли Объект.Ссылка <> ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда + Если ВыборИПодборВнешнихПользователей Тогда + ПараметрыФормы.Вставить("ВыборГруппВнешнихПользователей", Истина); + Иначе + ПараметрыФормы.Вставить("ВыборГруппПользователей", Истина); + КонецЕсли; + КонецЕсли; + + Если ВыборИПодборВнешнихПользователей Тогда + + ПараметрыФормы.Вставить("Назначение", Назначение.ВыгрузитьЗначения()); + + Если Не ИспользоватьВнешнихПользователей Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Ведение внешних пользователей отключено в настройках программы.'")); + ИначеЕсли СправочникВнешниеПользователиДоступен Тогда + ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаВыбора", ПараметрыФормы, Элементы.Пользователи); + Иначе + ПоказатьПредупреждение(, НСтр("ru = 'Недостаточно прав для выбора внешних пользователей.'")); + КонецЕсли; + Иначе + ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", ПараметрыФормы, Элементы.Пользователи); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПараметрыРасширеннойФормыПодбора() + + ЭлементыКоллекции = ПользователиГруппы.ПолучитьЭлементы(); + + ВыбранныеПользователи = Новый ТаблицаЗначений; + ВыбранныеПользователи.Колонки.Добавить("Пользователь"); + ВыбранныеПользователи.Колонки.Добавить("НомерКартинки"); + + Для каждого Элемент Из ЭлементыКоллекции Цикл + + СтрокаВыбранныеПользователи = ВыбранныеПользователи.Добавить(); + СтрокаВыбранныеПользователи.Пользователь = Элемент.Пользователь; + СтрокаВыбранныеПользователи.НомерКартинки = Элемент.НомерКартинки; + + КонецЦикла; + + ЗаголовокФормыПодбора = НСтр("ru = 'Подбор участников группы доступа'"); + ПараметрыРасширеннойФормыПодбора = Новый Структура; + ПараметрыРасширеннойФормыПодбора.Вставить("ЗаголовокФормыПодбора", ЗаголовокФормыПодбора); + ПараметрыРасширеннойФормыПодбора.Вставить("ВыбранныеПользователи", ВыбранныеПользователи); + Если Объект.Ссылка = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда + ПараметрыРасширеннойФормыПодбора.Вставить("ПодборГруппНевозможен"); + КонецЕсли; + + АдресХранилища = ПоместитьВоВременноеХранилище(ПараметрыРасширеннойФормыПодбора); + Возврат АдресХранилища; + +КонецФункции + +&НаСервере +Процедура ОбновитьПользователейГрупп(ИдентификаторСтроки = Неопределено, + ИзмененныеСтроки = Неопределено) + + УстановитьПривилегированныйРежим(Истина); + ИзмененныеСтроки = Новый Массив; + + Если ИдентификаторСтроки = Неопределено Тогда + ЭлементыКоллекции = ПользователиГруппы.ПолучитьЭлементы(); + + ИначеЕсли ТипЗнч(ИдентификаторСтроки) = Тип("Массив") Тогда + ЭлементыКоллекции = Новый Массив; + Для каждого Идентификатор Из ИдентификаторСтроки Цикл + ЭлементыКоллекции.Добавить(ПользователиГруппы.НайтиПоИдентификатору(Идентификатор)); + КонецЦикла; + Иначе + ЭлементыКоллекции = Новый Массив; + ЭлементыКоллекции.Добавить(ПользователиГруппы.НайтиПоИдентификатору(ИдентификаторСтроки)); + КонецЕсли; + + УчастникиГруппыПользователей = Новый Массив; + Для каждого Элемент Из ЭлементыКоллекции Цикл + + Если ТипЗнч(Элемент.Пользователь) = Тип("СправочникСсылка.ГруппыПользователей") + ИЛИ ТипЗнч(Элемент.Пользователь) = Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда + + УчастникиГруппыПользователей.Добавить(Элемент.Пользователь); + КонецЕсли; + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("УчастникиГруппыПользователей", УчастникиГруппыПользователей); + Запрос.Текст = + "ВЫБРАТЬ + | СоставыГруппПользователей.ГруппаПользователей, + | СоставыГруппПользователей.Пользователь + |ИЗ + | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + |ГДЕ + | СоставыГруппПользователей.ГруппаПользователей В(&УчастникиГруппыПользователей) + | И СоставыГруппПользователей.Пользователь.Недействителен <> ИСТИНА"; + + ПользователиГрупп = Запрос.Выполнить().Выгрузить(); + ПользователиГрупп.Индексы.Добавить("ГруппаПользователей"); + + Для каждого Элемент Из ЭлементыКоллекции Цикл + Элемент.Ссылка = Элемент.Пользователь; + + Если ТипЗнч(Элемент.Пользователь) = Тип("СправочникСсылка.ГруппыПользователей") + ИЛИ ТипЗнч(Элемент.Пользователь) = Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда + + // Заполнение пользователей группы. + СтарыеПользователи = Элемент.ПолучитьЭлементы(); + Отбор = Новый Структура("ГруппаПользователей", Элемент.Пользователь); + НовыеПользователи = ПользователиГрупп.НайтиСтроки(Отбор); + + ЕстьИзменения = Ложь; + + Если СтарыеПользователи.Количество() <> НовыеПользователи.Количество() Тогда + СтарыеПользователи.Очистить(); + Для каждого Строка Из НовыеПользователи Цикл + НовыйЭлемент = СтарыеПользователи.Добавить(); + НовыйЭлемент.Ссылка = Строка.Пользователь; + НовыйЭлемент.Пользователь = Строка.Пользователь; + КонецЦикла; + ЕстьИзменения = Истина; + Иначе + Индекс = 0; + Для каждого Строка Из СтарыеПользователи Цикл + + Если Строка.Ссылка <> НовыеПользователи[Индекс].Пользователь + ИЛИ Строка.Пользователь <> НовыеПользователи[Индекс].Пользователь Тогда + + Строка.Ссылка = НовыеПользователи[Индекс].Пользователь; + Строка.Пользователь = НовыеПользователи[Индекс].Пользователь; + ЕстьИзменения = Истина; + КонецЕсли; + Индекс = Индекс + 1; + КонецЦикла; + КонецЕсли; + + Если ЕстьИзменения Тогда + ИзмененныеСтроки.Добавить(Элемент.ПолучитьИдентификатор()); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Пользователи.ЗаполнитьНомераКартинокПользователей( + ПользователиГруппы, "Ссылка", "НомерКартинки", ИдентификаторСтроки, Истина); + + // Установка отображения дерева. + ЕстьДерево = Ложь; + Для каждого Элемент Из ПользователиГруппы.ПолучитьЭлементы() Цикл + Если Элемент.ПолучитьЭлементы().Количество() > 0 Тогда + ЕстьДерево = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + Элементы.Пользователи.Отображение = ?(ЕстьДерево, ОтображениеТаблицы.Дерево, ОтображениеТаблицы.Список); + +КонецПроцедуры + +&НаСервере +Процедура ВосстановитьОбъектБезУчастниковГруппы(ТекущийОбъект) + + УстановитьПривилегированныйРежим(Истина); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.ПометкаУдаления КАК ПометкаУдаления, + | ГруппыДоступа.Предопределенный КАК Предопределенный, + | ГруппыДоступа.Родитель КАК Родитель, + | ГруппыДоступа.ЭтоГруппа КАК ЭтоГруппа, + | ГруппыДоступа.Наименование КАК Наименование, + | ГруппыДоступа.Профиль КАК Профиль, + | ГруппыДоступа.Ответственный КАК Ответственный, + | ГруппыДоступа.Пользователь КАК Пользователь, + | ГруппыДоступа.Комментарий КАК Комментарий + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ГруппыДоступа.Ссылка = &Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ГруппыДоступаВидыДоступа.ВидДоступа КАК ВидДоступа, + | ГруппыДоступаВидыДоступа.ВсеРазрешены КАК ВсеРазрешены + |ИЗ + | Справочник.ГруппыДоступа.ВидыДоступа КАК ГруппыДоступаВидыДоступа + |ГДЕ + | ГруппыДоступаВидыДоступа.Ссылка = &Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ГруппыДоступаЗначенияДоступа.ВидДоступа КАК ВидДоступа, + | ГруппыДоступаЗначенияДоступа.ЗначениеДоступа КАК ЗначениеДоступа + |ИЗ + | Справочник.ГруппыДоступа.ЗначенияДоступа КАК ГруппыДоступаЗначенияДоступа + |ГДЕ + | ГруппыДоступаЗначенияДоступа.Ссылка = &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", ТекущийОбъект.Ссылка); + РезультатыЗапросов = Запрос.ВыполнитьПакет(); + + // Восстановление реквизитов. + ЗаполнитьЗначенияСвойств(ТекущийОбъект, РезультатыЗапросов[0].Выгрузить()[0]); + + // Восстановление табличной части ВидыДоступа. + ТекущийОбъект.ВидыДоступа.Загрузить(РезультатыЗапросов[1].Выгрузить()); + + // Восстановление табличной части ЗначенияДоступа. + ТекущийОбъект.ЗначенияДоступа.Загрузить(РезультатыЗапросов[2].Выгрузить()); + +КонецПроцедуры + +&НаСервере +Функция УточнитьСообщение(Строка, Значение) + + Возврат СтрЗаменить(Строка, "%2", Значение); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьКартинкуКомментария(Элемент, Комментарий) + + Элемент.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Комментарий); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Help/ru.html" new file mode 100644 index 00000000..b820b3e2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Help/ru.html" @@ -0,0 +1,16 @@ + +

Группы доступа предназначены для настройки прав и ограничений прав доступа конкретным пользователям и группам пользователей программы.

+

Программа позволяет настроить доступ пользователей к различным функциям, спискам и документам. Предусмотрены предопределенные наборы ролей. Кроме этого, имеется возможность самостоятельной настройки доступа. Управление доступом осуществляет администратор. При этом пользователь, назначенный ответственным в группе доступа, может изменять состав своей группы доступа.

+

Набор прав и возможности по их ограничению определяются заданным профилем групп доступа.

+

Например, группа доступа "Менеджеры по продажам ПО делового назначения" с пользователями Иванов и Петров может ссылаться на профиль "Менеджер по продажам", в котором предусмотрена возможность ограничения по виду доступа Виды номенклатуры. Тогда если по этому виду доступа для всех значений указать вариант "Запрещены", а в список добавить вид номенклатуры "ПО делового назначения", то Иванову и Петрову будут доступны только те данные и операции, которые связаны с ПО делового назначения.

+

Рекомендуется задавать наименования групп таким образом, чтобы название отражало как суть профиля, так и смысл ограничений, заданных в группе.

+

В состав группы доступа могут быть включены как отдельные пользователи (внешние пользователи), так и группы пользователей (группы внешних пользователей). В случае большого количества пользователей, участвующих сразу в нескольких группах доступа, рекомендуется объединять пользователей в группы. Включение таких групп пользователей в группы доступа позволит избежать рутинного пересмотра состава пользователей в нескольких группах доступа.

+

Состав ролей пользователя

+
  • Состав ролей пользователя определяется программой автоматически, исходя из того, в какие группы доступа он входит явно или косвенно (посредством групп пользователей), и обновляется каждый раз при изменении состава группы доступа или состава группы пользователей (группы внешних пользователей). +
  • Не рекомендуется изменять состав ролей пользователей каким-либо другим способом (например, с помощью Конфигуратора), т.к. в этом случае состав ролей будет восстановлен при очередной записи группы доступа.

Объединение прав доступа

+
  • Пользователь может быть включен сразу в несколько групп доступа. +
  • В этом случае его совокупные права доступа складываются (объединяются по "или") из прав доступа каждой группы. Например, в группе доступа "Менеджеры по закупкам" пользователю разрешен просмотр документов "Поступления товаров" по организации "Далекая перспектива". В группе доступа "Менеджеры по продажам" ему разрешен ввод документов "Заказ покупателя" по организации "Новые технологии". +
  • При этом следует учитывать, что объединяются не списки разрешенных значений, указанные в группах, а именно права доступа. Т.е. ошибочно считать, что в приведенном примере пользователь получит доступ на просмотр документов поступления товаров и на ввод документов "Заказы покупателей" одновременно по обеим организациям.

Группа доступа для администрирования

+
  • Для целей администрирования программы предусмотрена предопределенная группа доступа Администраторы с профилем Администратор. При добавлении пользователя в эту группу ему автоматически устанавливается роль Полные права. При этом если в программе имеются другие пользователи с этой ролью, которые не входят в группу Администраторы, то у таких пользователей роль Полные права будет снята.

Предупреждение

+
  • Не следует для настройки прав доступа использовать режим конфигурирования 1С:Предприятия.

См. также

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ManagerModule.bsl" new file mode 100644 index 00000000..a0018bea --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ManagerModule.bsl" @@ -0,0 +1,1093 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + НеРедактируемыеРеквизиты = Новый Массив; + НеРедактируемыеРеквизиты.Добавить("ТипПользователей"); + НеРедактируемыеРеквизиты.Добавить("Пользователь"); + НеРедактируемыеРеквизиты.Добавить("ОсновнаяГруппаДоступаПоставляемогоПрофиля"); + НеРедактируемыеРеквизиты.Добавить("ВидыДоступа.*"); + НеРедактируемыеРеквизиты.Добавить("ЗначенияДоступа.*"); + + Возврат НеРедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЭтоГруппа + | ИЛИ Профиль <> Значение(Справочник.ПрофилиГруппДоступа.Администратор) + | И ЭтоАвторизованныйПользователь(Ответственный)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Подключается в ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриРегистрацииОбработчиковВыгрузкиДанных. +// +// Параметры: +// Контейнер - ОбработкаОбъект.ВыгрузкаЗагрузкаДанныхМенеджерКонтейнера +// МенеджерВыгрузкиОбъекта - ОбработкаОбъект.ВыгрузкаЗагрузкаДанныхМенеджерВыгрузкиДанныхИнформационнойБазы +// Сериализатор - СериализаторXDTO +// Объект - КонстантаМенеджерЗначения +// - СправочникОбъект +// - ДокументОбъект +// - БизнесПроцессОбъект +// - ЗадачаОбъект +// - ПланСчетовОбъект +// - ПланОбменаОбъект +// - ПланВидовХарактеристикОбъект +// - ПланВидовРасчетаОбъект +// - РегистрСведенийНаборЗаписей +// - РегистрНакопленияНаборЗаписей +// - РегистрБухгалтерииНаборЗаписей +// - РегистрРасчетаНаборЗаписей +// - ПоследовательностьНаборЗаписей +// - ПерерасчетНаборЗаписей +// Артефакты - Массив из ОбъектXDTO +// Отказ - Булево +// +Процедура ПередВыгрузкойОбъекта(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ) Экспорт + + УправлениеДоступомСлужебный.ПередВыгрузкойОбъекта(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ); + +КонецПроцедуры + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Поля.Добавить("Наименование"); + Поля.Добавить("Пользователь"); + +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + + Если Не ЗначениеЗаполнено(Данные.Пользователь) Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + + Представление = УправлениеДоступомСлужебныйКлиентСервер.ПредставлениеГруппыДоступа(Данные); + +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +// Устанавливает пометку удаления группам доступа, если установлена +// пометка удаления у профиля группы доступа. Требуется, например, +// при удалении предопределенных профилей групп доступа, +// т.к. платформа не вызывает обработчики объектов при +// установке пометки удаления бывшим предопределенным +// элементам в процессе обновления конфигурации базы данных. +// +// Параметры: +// ЕстьИзменения - Булево - (возвращаемое значение) - если производилась запись, +// устанавливается Истина, иначе не изменяется. +// +Процедура ПометитьНаУдалениеГруппыДоступаПомеченныхПрофилей(ЕстьИзменения = Неопределено) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ГруппыДоступа.Профиль <> ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.Администратор) + | И ГруппыДоступа.Профиль.ПометкаУдаления + | И НЕ ГруппыДоступа.ПометкаУдаления + | И НЕ ГруппыДоступа.Предопределенный"; + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + ГруппаДоступаОбъект = Выборка.Ссылка.ПолучитьОбъект(); + ГруппаДоступаОбъект.ПометкаУдаления = Истина; + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ГруппаДоступаОбъект); + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(Выборка.Ссылка); + РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(Выборка.Ссылка); + ПользователиДляОбновления = ПользователиДляОбновленияРолей(Неопределено, ГруппаДоступаОбъект); + УправлениеДоступом.ОбновитьРолиПользователей(ПользователиДляОбновления); + ЕстьИзменения = Истина; + КонецЦикла; + +КонецПроцедуры + +// Выполняет обновление видов доступа групп доступа указанного профиля. +// При этом возможно не удалять виды доступа из группы доступа, +// которые удалены в профиле этой группы доступа, в случае +// когда в группе доступа назначены значения доступа по +// удаляемому виду доступа. +// +// Параметры: +// Профиль - СправочникСсылка.ПрофилиГруппДоступа - профиль групп доступа. +// +// ОбновлятьГруппыДоступаСУстаревшимиНастройками - Булево - обновлять группы доступа. +// +// Возвращаемое значение: +// Булево - когда Истина, группа доступа была изменена, +// когда Ложь никаких изменений не было выполнено. +// +Функция ОбновитьГруппыДоступаПрофиля(Профиль, ОбновлятьГруппыДоступаСУстаревшимиНастройками = Ложь) Экспорт + + ГруппаДоступаОбновлена = Ложь; + + ВидыДоступаПрофиля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Профиль, "ВидыДоступа").Выгрузить(); + Индекс = ВидыДоступаПрофиля.Количество() - 1; + Пока Индекс >= 0 Цикл + Строка = ВидыДоступаПрофиля[Индекс]; + СвойстваВидаДоступа = УправлениеДоступомСлужебный.СвойстваВидаДоступа(Строка.ВидДоступа); + + Если СвойстваВидаДоступа = Неопределено Тогда + ВидыДоступаПрофиля.Удалить(Строка); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | НЕ(ГруппыДоступа.Профиль <> &Профиль + | И НЕ(&Профиль = ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.Администратор) + | И ГруппыДоступа.Ссылка = ЗНАЧЕНИЕ(Справочник.ГруппыДоступа.Администраторы)))"; + + Запрос.УстановитьПараметр("Профиль", Профиль.Ссылка); + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + // Проверка необходимости/возможности обновления группы доступа. + ГруппаДоступа = Выборка.Ссылка.ПолучитьОбъект(); + + Если ГруппаДоступа.Ссылка = Администраторы + И ГруппаДоступа.Профиль <> Справочники.ПрофилиГруппДоступа.Администратор Тогда + // Установка профиля Администратор, если не задан. + ГруппаДоступа.Профиль = Справочники.ПрофилиГруппДоступа.Администратор; + КонецЕсли; + + // Проверка состава видов доступа. + СоставВидовДоступаИзменен = Ложь; + ЕстьУдаляемыеВидыДоступаСЗаданнымиЗначениямиДоступа = Ложь; + Если ГруппаДоступа.ВидыДоступа.Количество() <> ВидыДоступаПрофиля.НайтиСтроки(Новый Структура("Предустановленный", Ложь)).Количество() Тогда + СоставВидовДоступаИзменен = Истина; + Иначе + Для каждого СтрокаВидаДоступа Из ГруппаДоступа.ВидыДоступа Цикл + Если ВидыДоступаПрофиля.НайтиСтроки(Новый Структура("ВидДоступа, Предустановленный", СтрокаВидаДоступа.ВидДоступа, Ложь)).Количество() = 0 Тогда + СоставВидовДоступаИзменен = Истина; + Если ГруппаДоступа.ЗначенияДоступа.Найти(СтрокаВидаДоступа.ВидДоступа, "ВидДоступа") <> Неопределено Тогда + ЕстьУдаляемыеВидыДоступаСЗаданнымиЗначениямиДоступа = Истина; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если СоставВидовДоступаИзменен + И ( ОбновлятьГруппыДоступаСУстаревшимиНастройками + ИЛИ НЕ ЕстьУдаляемыеВидыДоступаСЗаданнымиЗначениямиДоступа ) Тогда + // Обновление группы доступа. + // 1. Удаление лишних видов доступа и значений доступа (если есть). + ТекущийНомерСтроки = ГруппаДоступа.ВидыДоступа.Количество()-1; + Пока ТекущийНомерСтроки >= 0 Цикл + ТекущийВидДоступа = ГруппаДоступа.ВидыДоступа[ТекущийНомерСтроки].ВидДоступа; + Если ВидыДоступаПрофиля.НайтиСтроки(Новый Структура("ВидДоступа, Предустановленный", ТекущийВидДоступа, Ложь)).Количество() = 0 Тогда + СтрокиЗначенийВидаДоступа = ГруппаДоступа.ЗначенияДоступа.НайтиСтроки(Новый Структура("ВидДоступа", ТекущийВидДоступа)); + Для каждого СтрокаЗначения Из СтрокиЗначенийВидаДоступа Цикл + ГруппаДоступа.ЗначенияДоступа.Удалить(СтрокаЗначения); + КонецЦикла; + ГруппаДоступа.ВидыДоступа.Удалить(ТекущийНомерСтроки); + КонецЕсли; + ТекущийНомерСтроки = ТекущийНомерСтроки - 1; + КонецЦикла; + // 2. Добавление новых видов доступа (если есть). + Для каждого СтрокаВидаДоступа Из ВидыДоступаПрофиля Цикл + Если НЕ СтрокаВидаДоступа.Предустановленный + И ГруппаДоступа.ВидыДоступа.Найти(СтрокаВидаДоступа.ВидДоступа, "ВидДоступа") = Неопределено Тогда + + НоваяСтрока = ГруппаДоступа.ВидыДоступа.Добавить(); + НоваяСтрока.ВидДоступа = СтрокаВидаДоступа.ВидДоступа; + НоваяСтрока.ВсеРазрешены = СтрокаВидаДоступа.ВсеРазрешены; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если ГруппаДоступа.Модифицированность() Тогда + + Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() + И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + + ЗаблокироватьДанныеДляРедактирования(ГруппаДоступа.Ссылка, ГруппаДоступа.ВерсияДанных); + КонецЕсли; + + ГруппаДоступа.ДополнительныеСвойства.Вставить("НеОбновлятьРолиПользователей"); + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ГруппаДоступа); + ГруппаДоступаОбновлена = Истина; + + Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() + И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + + РазблокироватьДанныеДляРедактирования(ГруппаДоступа.Ссылка); + КонецЕсли; + + КонецЕсли; + КонецЦикла; + + Возврат ГруппаДоступаОбновлена; + +КонецФункции + +// Возвращает ссылку на группу-родителя персональных групп доступа. +// Если родитель не найден он будет создан. +// +// Параметры: +// НеСоздавать - Булево - если задан Истина, родитель не будет автоматически создан, +// а функция вернет Неопределено, если родитель не найден. +// +// НаименованиеГруппыЭлементов - Строка +// +// Возвращаемое значение: +// СправочникСсылка.ГруппыДоступа - ссылка на группу-родителя. +// +Функция РодительПерсональныхГруппДоступа(Знач НеСоздавать = Ложь, НаименованиеГруппыЭлементов = "") Экспорт + + УстановитьПривилегированныйРежим(Истина); + + НаименованиеГруппыЭлементов = НСтр("ru = 'Персональные группы доступа'"); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("НаименованиеГруппыЭлементов", НаименованиеГруппыЭлементов); + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ГруппыДоступа.Наименование ПОДОБНО &НаименованиеГруппыЭлементов + | И ГруппыДоступа.ЭтоГруппа"; + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + ГруппаЭлементов = Выборка.Ссылка; + ИначеЕсли НеСоздавать Тогда + ГруппаЭлементов = Неопределено; + Иначе + ГруппаЭлементовОбъект = СоздатьГруппу(); + ГруппаЭлементовОбъект.Наименование = НаименованиеГруппыЭлементов; + ГруппаЭлементовОбъект.Записать(); + ГруппаЭлементов = ГруппаЭлементовОбъект.Ссылка; + КонецЕсли; + + Возврат ГруппаЭлементов; + +КонецФункции + +Функция ИзменилисьВидыИлиЗначенияДоступа(СтарыеЗначения, ТекущийОбъект) Экспорт + + Если СтарыеЗначения.Ссылка <> ТекущийОбъект.Ссылка Тогда + Возврат Истина; + КонецЕсли; + + ВидыДоступа = СтарыеЗначения.ВидыДоступа.Выгрузить(); + ЗначенияДоступа = СтарыеЗначения.ЗначенияДоступа.Выгрузить(); + + Если ВидыДоступа.Количество() <> ТекущийОбъект.ВидыДоступа.Количество() + Или ЗначенияДоступа.Количество() <> ТекущийОбъект.ЗначенияДоступа.Количество() Тогда + + Возврат Истина; + КонецЕсли; + + Отбор = Новый Структура("ВидДоступа, ВсеРазрешены"); + Для Каждого Строка Из ТекущийОбъект.ВидыДоступа Цикл + ЗаполнитьЗначенияСвойств(Отбор, Строка); + Если ВидыДоступа.НайтиСтроки(Отбор).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Отбор = Новый Структура("ВидДоступа, ЗначениеДоступа, ВключаяНижестоящие"); + Для Каждого Строка Из ТекущийОбъект.ЗначенияДоступа Цикл + ЗаполнитьЗначенияСвойств(Отбор, Строка); + Если ЗначенияДоступа.НайтиСтроки(Отбор).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +Функция ПользователиДляОбновленияРолей(СтарыеЗначения, ЭлементДанных) Экспорт + + Если СтарыеЗначения = Неопределено Тогда + СтарыеЗначения = Новый Структура("Ссылка, Профиль, ПометкаУдаления") + КонецЕсли; + + // Обновление ролей для добавленных, оставшихся и удаленных пользователей. + Запрос = Новый Запрос; + + Запрос.УстановитьПараметр("НовыеУчастники", ?(ТипЗнч(ЭлементДанных) <> Тип("УдалениеОбъекта"), + ЭлементДанных.Пользователи.ВыгрузитьКолонку("Пользователь"), Новый Массив)); + + Запрос.УстановитьПараметр("СтарыеУчастники", ?(ЭлементДанных.Ссылка = СтарыеЗначения.Ссылка, + СтарыеЗначения.Пользователи.Выгрузить().ВыгрузитьКолонку("Пользователь"), Новый Массив)); + + Если ТипЗнч(ЭлементДанных) = Тип("УдалениеОбъекта") + Или ЭлементДанных.Профиль <> СтарыеЗначения.Профиль + Или ЭлементДанных.ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления Тогда + + // Выбор всех новых и старых участников группы доступа. + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | СоставыГруппПользователей.Пользователь КАК Пользователь + |ИЗ + | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + |ГДЕ + | (СоставыГруппПользователей.ГруппаПользователей В (&СтарыеУчастники) + | ИЛИ СоставыГруппПользователей.ГруппаПользователей В (&НовыеУчастники))"; + Иначе + // Выбор изменений участников группы доступа. + Запрос.Текст = + "ВЫБРАТЬ + | Данные.Пользователь КАК Пользователь + |ИЗ + | (ВЫБРАТЬ РАЗЛИЧНЫЕ + | СоставыГруппПользователей.Пользователь КАК Пользователь, + | -1 КАК ВидИзмененияСтроки + | ИЗ + | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ГДЕ + | СоставыГруппПользователей.ГруппаПользователей В(&СтарыеУчастники) + | + | ОБЪЕДИНИТЬ ВСЕ + | + | ВЫБРАТЬ РАЗЛИЧНЫЕ + | СоставыГруппПользователей.Пользователь, + | 1 + | ИЗ + | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ГДЕ + | СоставыГруппПользователей.ГруппаПользователей В(&НовыеУчастники)) КАК Данные + | + |СГРУППИРОВАТЬ ПО + | Данные.Пользователь + | + |ИМЕЮЩИЕ + | СУММА(Данные.ВидИзмененияСтроки) <> 0"; + КонецЕсли; + + Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Пользователь"); + +КонецФункции + +Функция ПользователиДляОбновленияРолейПоПрофилю(Профили) Экспорт + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Профили", Профили); + + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | СоставыГруппПользователей.Пользователь КАК Пользователь + |ИЗ + | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи + | ПО СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь + | И (ГруппыДоступаПользователи.Ссылка.Профиль В (&Профили))"; + + Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Пользователь"); + +КонецФункции + +Функция ГруппыДоступаПрофиля(Профили) Экспорт + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Профили", Профили); + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ГруппыДоступа.Профиль В(&Профили) + | И НЕ ГруппыДоступа.ЭтоГруппа"; + РезультатЗапроса = Запрос.Выполнить(); + + Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка"); + +КонецФункции + +Процедура ЗарегистрироватьСсылки(ВидСсылок, Знач ДобавляемыеСсылки) Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + Возврат; + КонецЕсли; + + СвойстваВидаСсылок = СвойстваВидаСсылок(ВидСсылок); + + УстановитьПривилегированныйРежим(Истина); + Ссылки = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы( + СвойстваВидаСсылок.ИмяПараметраРаботыПрограммы); + УстановитьПривилегированныйРежим(Ложь); + + Если ТипЗнч(Ссылки) <> Тип("Массив") Тогда + Ссылки = Новый Массив; + КонецЕсли; + + ЕстьИзменения = Ложь; + Если ДобавляемыеСсылки = Null Тогда + Если Ссылки.Количество() > 0 Тогда + Ссылки = Новый Массив; + ЕстьИзменения = Истина; + КонецЕсли; + + ИначеЕсли Ссылки.Количество() = 1 + И Ссылки[0] = Неопределено Тогда + + Возврат; // Ранее было добавлено более 300 ссылок. + Иначе + Если ТипЗнч(ДобавляемыеСсылки) <> Тип("Массив") Тогда + ДобавляемыеСсылки = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДобавляемыеСсылки); + КонецЕсли; + Для Каждого ДобавляемаяСсылка Из ДобавляемыеСсылки Цикл + Если Ссылки.Найти(ДобавляемаяСсылка) <> Неопределено Тогда + Продолжить; + КонецЕсли; + Ссылки.Добавить(ДобавляемаяСсылка); + ЕстьИзменения = Истина; + КонецЦикла; + Если Ссылки.Количество() > 300 Тогда + Ссылки = Новый Массив; + Ссылки.Добавить(Неопределено); + ЕстьИзменения = Истина; + КонецЕсли; + КонецЕсли; + + Если Не ЕстьИзменения Тогда + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + СтандартныеПодсистемыСервер.УстановитьПараметрРаботыПрограммы( + СвойстваВидаСсылок.ИмяПараметраРаботыПрограммы, Ссылки); + УстановитьПривилегированныйРежим(Ложь); + +КонецПроцедуры + +Функция ЗарегистрированныеСсылки(ВидСсылок) Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + Возврат Новый Массив; + КонецЕсли; + + СвойстваВидаСсылок = СвойстваВидаСсылок(ВидСсылок); + + УстановитьПривилегированныйРежим(Истина); + Ссылки = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы( + СвойстваВидаСсылок.ИмяПараметраРаботыПрограммы); + УстановитьПривилегированныйРежим(Ложь); + + Если ТипЗнч(Ссылки) <> Тип("Массив") Тогда + Ссылки = Новый Массив; + КонецЕсли; + + Если Ссылки.Количество() = 1 + И Ссылки[0] = Неопределено Тогда + + Возврат Ссылки; + КонецЕсли; + + ПроверенныеСсылки = Новый Массив; + Для Каждого Ссылка Из Ссылки Цикл + Если СвойстваВидаСсылок.ДопустимыеТипы.СодержитТип(ТипЗнч(Ссылка)) Тогда + ПроверенныеСсылки.Добавить(Ссылка); + КонецЕсли; + КонецЦикла; + + Возврат ПроверенныеСсылки; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции для поддержки обмена данными в РИБ. + +// Только для внутреннего использования. +Процедура ВосстановитьСоставУчастниковГруппыДоступаАдминистраторы(ЭлементДанных) Экспорт + + Если ЭлементДанных.ИмяПредопределенныхДанных <> "Администраторы" Тогда + Возврат; + КонецЕсли; + + ЭлементДанных.Пользователи.Очистить(); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИмяПредопределенныхДанных", "Администраторы"); + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | ГруппыДоступаПользователи.Пользователь + |ИЗ + | Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи + |ГДЕ + | ГруппыДоступаПользователи.Ссылка.ИмяПредопределенныхДанных = &ИмяПредопределенныхДанных"; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Если ЭлементДанных.Пользователи.Найти(Выборка.Пользователь, "Пользователь") = Неопределено Тогда + ЭлементДанных.Пользователи.Добавить().Пользователь = Выборка.Пользователь; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура УдалитьУчастниковГруппыДоступаАдминистраторыБезПользователяИБ() Экспорт + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыДоступа"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Администраторы); + Блокировка.Заблокировать(); + + ГруппаДоступаАдминистраторы = Администраторы.ПолучитьОбъект(); + + Индекс = ГруппаДоступаАдминистраторы.Пользователи.Количество() - 1; + Пока Индекс >= 0 Цикл + ТекущийПользователь = ГруппаДоступаАдминистраторы.Пользователи[Индекс].Пользователь; + Если ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.Пользователи") Тогда + ИдентификаторПользователяИБ = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийПользователь, + "ИдентификаторПользователяИБ"); + Иначе + ИдентификаторПользователяИБ = Неопределено; + КонецЕсли; + Если ТипЗнч(ИдентификаторПользователяИБ) = Тип("УникальныйИдентификатор") Тогда + ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( + ИдентификаторПользователяИБ); + Иначе + ПользовательИБ = Неопределено; + КонецЕсли; + Если ПользовательИБ = Неопределено Тогда + ГруппаДоступаАдминистраторы.Пользователи.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + + Если ГруппаДоступаАдминистраторы.Модифицированность() Тогда + ГруппаДоступаАдминистраторы.Записать(); + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + + +// Только для внутреннего использования. +// +// Параметры: +// ЭлементДанных - СправочникОбъект.ГруппыДоступа +// +Процедура ЗарегистрироватьГруппуДоступаИзмененнуюПриЗагрузке(ЭлементДанных) Экспорт + + СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭлементДанных.Ссылка, + "Ссылка, Профиль, ПометкаУдаления, Пользователи, ВидыДоступа, ЗначенияДоступа"); + + ТребуетсяРегистрация = Ложь; + ГруппаДоступа = ЭлементДанных.Ссылка; + + Если ТипЗнч(ЭлементДанных) = Тип("УдалениеОбъекта") Тогда + ТребуетсяРегистрация = Истина; + + ИначеЕсли СтарыеЗначения.Ссылка <> ЭлементДанных.Ссылка Тогда + ТребуетсяРегистрация = Истина; + ГруппаДоступа = ПользователиСлужебный.СсылкаОбъекта(ЭлементДанных); + + ИначеЕсли ЭлементДанных.ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления + Или ЭлементДанных.Профиль <> СтарыеЗначения.Профиль Тогда + + ТребуетсяРегистрация = Истина; + Иначе + НаличиеУчастников = ЭлементДанных.Пользователи.Количество() <> 0; + СтароеНаличиеУчастников = Не СтарыеЗначения.Пользователи.Пустой(); + + Если НаличиеУчастников <> СтароеНаличиеУчастников + Или ИзменилисьВидыИлиЗначенияДоступа(СтарыеЗначения, ЭлементДанных) Тогда + + ТребуетсяРегистрация = Истина; + КонецЕсли; + КонецЕсли; + + Если ТребуетсяРегистрация Тогда + ЗарегистрироватьСсылки("ГруппыДоступа", ГруппаДоступа); + КонецЕсли; + + ПользователиДляОбновления = ПользователиДляОбновленияРолей(СтарыеЗначения, ЭлементДанных); + + ЗарегистрироватьСсылки("Пользователи", ПользователиДляОбновления); + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура ОбновитьВспомогательныеДанныеГруппДоступаИзмененныхПриЗагрузке() Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + // Изменения групп доступа в АРМ заблокированы и не загружаются в область данных. + Возврат; + КонецЕсли; + + ИзмененныеГруппыДоступа = ЗарегистрированныеСсылки("ГруппыДоступа"); + Если ИзмененныеГруппыДоступа.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Если ИзмененныеГруппыДоступа.Количество() = 1 + И ИзмененныеГруппыДоступа[0] = Неопределено Тогда + + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(); + РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(); + Иначе + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(ИзмененныеГруппыДоступа); + РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(ИзмененныеГруппыДоступа); + КонецЕсли; + + Если УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально() Тогда + УправлениеДоступомСлужебный.ЗапланироватьОбновлениеНаборовГруппДоступа( + "ОбновитьВспомогательныеДанныеГруппДоступаИзмененныхПриЗагрузке"); + КонецЕсли; + + ЗарегистрироватьСсылки("ГруппыДоступа", Null); + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура ЗарегистрироватьПользователейГруппыПользователейИзмененнойПриЗагрузке(ЭлементДанных) Экспорт + + СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭлементДанных.Ссылка, + "Ссылка, ПометкаУдаления, Состав"); + + ИмяРеквизита = ?(ТипЗнч(ЭлементДанных.Ссылка) = Тип("СправочникСсылка.ГруппыВнешнихПользователей"), + "ВнешнийПользователь", "Пользователь"); + + Если СтарыеЗначения.Ссылка = ЭлементДанных.Ссылка Тогда + СтарыеПользователи = СтарыеЗначения.Состав.Выгрузить().ВыгрузитьКолонку(ИмяРеквизита); + Иначе + СтарыеПользователи = Новый Массив; + КонецЕсли; + + Если ТипЗнч(ЭлементДанных) = Тип("УдалениеОбъекта") Тогда + ПользователиДляОбновления = СтарыеПользователи; + Иначе + НовыеПользователи = ЭлементДанных.Состав.ВыгрузитьКолонку(ИмяРеквизита); + + Если СтарыеЗначения.Ссылка <> ЭлементДанных.Ссылка Тогда + ПользователиДляОбновления = НовыеПользователи; + Иначе + ПользователиДляОбновления = Новый Массив; + Все = ЭлементДанных.ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления; + + Для Каждого Пользователь Из СтарыеПользователи Цикл + Если Все Или НовыеПользователи.Найти(Пользователь) = Неопределено Тогда + ПользователиДляОбновления.Добавить(Пользователь); + КонецЕсли; + КонецЦикла; + + Для Каждого Пользователь Из НовыеПользователи Цикл + Если Все Или СтарыеПользователи.Найти(Пользователь) = Неопределено Тогда + ПользователиДляОбновления.Добавить(Пользователь); + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Если ПользователиДляОбновления.Количество() > 0 Тогда + ЗарегистрироватьСсылки("ГруппыПользователей", + ПользователиСлужебный.СсылкаОбъекта(ЭлементДанных)); + КонецЕсли; + + ЗарегистрироватьСсылки("Пользователи", ПользователиДляОбновления); + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура ОбновитьВспомогательныеДанныеГруппПользователейИзмененныхПриЗагрузке() Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + // Изменения групп доступа в АРМ заблокированы и не загружаются в область данных. + Возврат; + КонецЕсли; + + ИзмененныеГруппыПользователей = ЗарегистрированныеСсылки("ГруппыПользователей"); + Если ИзмененныеГруппыПользователей.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Если УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально() Тогда + УправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступаПриКосвенномИзмененииУчастниковГруппыДоступа( + ИзмененныеГруппыПользователей, Истина); + КонецЕсли; + + ЗарегистрироватьСсылки("ГруппыПользователей", Null); + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура ЗарегистрироватьПользователяИзмененногоПриЗагрузке(ЭлементДанных) Экспорт + + СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭлементДанных.Ссылка, + "Ссылка, ПометкаУдаления, Недействителен"); + + ТребуетсяРегистрация = Ложь; + Пользователь = ЭлементДанных.Ссылка; + + Если ТипЗнч(ЭлементДанных) = Тип("УдалениеОбъекта") Тогда + ТребуетсяРегистрация = Истина; + + ИначеЕсли СтарыеЗначения.Ссылка <> ЭлементДанных.Ссылка Тогда + ТребуетсяРегистрация = Истина; + Пользователь = ПользователиСлужебный.СсылкаОбъекта(ЭлементДанных); + + ИначеЕсли ЭлементДанных.Недействителен <> СтарыеЗначения.Недействителен + Или ЭлементДанных.ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления Тогда + + ТребуетсяРегистрация = Истина; + КонецЕсли; + + Если Не ТребуетсяРегистрация Тогда + Возврат; + КонецЕсли; + + ЗарегистрироватьСсылки("ГруппыПользователей", + ?(ТипЗнч(ЭлементДанных.Ссылка) = Тип("СправочникСсылка.Пользователи"), + Справочники.ГруппыПользователей.ВсеПользователи, + Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи)); + + ЗарегистрироватьСсылки("Пользователи", Пользователь); + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура ОбновитьРолиПользователейИзмененныхПриЗагрузке() Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + // Изменения профилей в АРМ заблокированы и не загружаются в область данных. + Возврат; + КонецЕсли; + + ИзмененныеПользователи = ЗарегистрированныеСсылки("Пользователи"); + Если ИзмененныеПользователи.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Если ИзмененныеПользователи.Количество() = 1 + И ИзмененныеПользователи[0] = Неопределено Тогда + + ИзмененныеПользователи = Неопределено; + КонецЕсли; + УправлениеДоступом.ОбновитьРолиПользователей(ИзмененныеПользователи); + + Если УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально() Тогда + УправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступаПриКосвенномИзмененииУчастниковГруппыДоступа( + ИзмененныеПользователи, Истина); + КонецЕсли; + + ЗарегистрироватьСсылки("Пользователи", Null); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Начальное заполнение + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "Администраторы"; + Элемент.Наименование = НСтр("ru = 'Администраторы'", ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.Профиль = Справочники.ПрофилиГруппДоступа.Администратор; + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// Обновление информационной базы. + +Процедура ЗаполнитьПрофильГруппыДоступаАдминистраторы() Экспорт + + Объект = Администраторы.ПолучитьОбъект(); + Если Объект.Профиль <> Справочники.ПрофилиГруппДоступа.Администратор Тогда + Объект.Профиль = Справочники.ПрофилиГруппДоступа.Администратор; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); + КонецЕсли; + +КонецПроцедуры + +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа"; + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, + Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ОбработкаЗавершена = Истина; + + ПараметрыОбновления = Новый Структура; + Если Параметры.Свойство("ГруппыДоступа") Тогда + ГруппыДоступа = Параметры.ГруппыДоступа; + ПараметрыОбновления.Вставить("ВызыватьИсключение"); + Иначе + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ГруппыДоступа"); + ГруппыДоступа = Новый Массив; + Пока Выборка.Следующий() Цикл + ГруппыДоступа.Добавить(Выборка.Ссылка); + КонецЦикла; + КонецЕсли; + ПараметрыОбновления.Вставить("ГруппыДоступа", ГруппыДоступа); + + Если Справочники.ВерсииРасширений.РасширенияИзмененыДинамически() + И (Не ОбщегоНазначения.ИнформационнаяБазаФайловая() + Или ТекущийРежимЗапуска() <> Неопределено) Тогда + + АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено); + ПараметрыОбновления.Вставить("АдресРезультата", АдресРезультата); + НаименованиеЗадания = + НСтр("ru = 'Обновление вспомогательных данных групп доступа'", + ОбщегоНазначения.КодОсновногоЯзыка()); + ФоновоеЗадание = РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных( + "УправлениеДоступомСлужебный.ОбновитьВспомогательныеДанныеГруппДоступа", + ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ПараметрыОбновления),, + НаименованиеЗадания); + ФоновоеЗадание = ФоновоеЗадание.ОжидатьЗавершенияВыполнения(); + Если ФоновоеЗадание.Состояние <> СостояниеФоновогоЗадания.Завершено Тогда + Если ФоновоеЗадание.ИнформацияОбОшибке <> Неопределено Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Фоновое задание ""%1"" завершилось с ошибкой: + |%2'"), + НаименованиеЗадания, + ПодробноеПредставлениеОшибки(ФоновоеЗадание.ИнформацияОбОшибке)); + Иначе + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Фоновое задание ""%1"" не завершилось.'"), НаименованиеЗадания); + КонецЕсли; + ВызватьИсключение ТекстОшибки; + КонецЕсли; + Результат = ПолучитьИзВременногоХранилища(АдресРезультата); + Если ТипЗнч(Результат) <> Тип("Структура") Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Фоновое задание ""%1"" не вернуло результат.'"), НаименованиеЗадания); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + Иначе + ОбновитьВспомогательныеДанныеГруппДоступа(ПараметрыОбновления); + Результат = ПараметрыОбновления.Результат; + КонецЕсли; + Для Каждого ГруппаДоступа Из Результат.ОбработанныеГруппыДоступа Цикл + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ГруппаДоступа); + КонецЦикла; + ОбъектовОбработано = Результат.ОбработанныеГруппыДоступа.Количество(); + ПроблемныхОбъектов = Результат.ПроблемныхОбъектов; + + Если Параметры.Свойство("ГруппыДоступа") Тогда + Возврат; + КонецЕсли; + + Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ГруппыДоступа") Тогда + ОбработкаЗавершена = Ложь; + КонецЕсли; + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре Справочники.ГруппыДоступа.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось + |обновить вспомогательные данные некоторых групп доступа (пропущены): %1'"), + ПроблемныхОбъектов); + + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, + Метаданные.НайтиПоПолномуИмени("Справочник.ГруппыДоступа"),, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедура Справочники.ГруппыДоступа.ОбработатьДанныеДляПереходаНаНовуюВерсию + |обработала очередную порцию групп доступа: %1'"), + ОбъектовОбработано)); + КонецЕсли; + + Параметры.ОбработкаЗавершена = ОбработкаЗавершена; + +КонецПроцедуры + +Процедура ОбновитьВспомогательныеДанныеГруппДоступа(Параметры) Экспорт + + ШаблонОшибкиОбработкиГруппыДоступа = + НСтр("ru = 'Не удалось обработать группу доступа ""%1"" по причине: + |%2'"); + ШаблонОшибкиОбновленияТаблицГруппДоступа = + НСтр("ru = 'Не удалось обновить таблицы группы доступа ""%1"" по причине: + |%2'"); + ШаблонОшибкиОбновленияЗначенийГруппДоступа = + НСтр("ru = 'Не удалось обновить значения доступа группы доступа ""%1"" по причине: + |%2'"); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыДоступа"); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; + + ПроблемныхОбъектов = 0; + ОбработанныеГруппыДоступа = Новый Массив; + + Для Каждого ГруппаДоступа Из Параметры.ГруппыДоступа Цикл + ЭлементБлокировки.УстановитьЗначение("Ссылка", ГруппаДоступа); + + НачатьТранзакцию(); + Попытка + ШаблонОшибки = ШаблонОшибкиОбработкиГруппыДоступа; + Блокировка.Заблокировать(); + + ШаблонОшибки = ШаблонОшибкиОбновленияТаблицГруппДоступа; + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(ГруппаДоступа); + + ШаблонОшибки = ШаблонОшибкиОбновленияЗначенийГруппДоступа; + РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(ГруппаДоступа); + + ШаблонОшибки = ШаблонОшибкиОбработкиГруппыДоступа; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Если Параметры.Свойство("ВызыватьИсключение") Тогда + ВызватьИсключение; + КонецЕсли; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, + Строка(ГруппаДоступа), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения); + Продолжить; + КонецПопытки; + + ОбработанныеГруппыДоступа.Добавить(ГруппаДоступа); + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("ПроблемныхОбъектов", ПроблемныхОбъектов); + Результат.Вставить("ОбработанныеГруппыДоступа", ОбработанныеГруппыДоступа); + + Если Параметры.Свойство("АдресРезультата") Тогда + ПоместитьВоВременноеХранилище(Результат, Параметры.АдресРезультата); + Иначе + Параметры.Вставить("Результат", Результат); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры и функции. + +// Для функции ЗарегистрированныеСсылки и процедуры ЗарегистрироватьСсылки. +Функция СвойстваВидаСсылок(ВидСсылок) + + Если ВидСсылок = "Профили" Тогда + ДопустимыеТипы = Новый ОписаниеТипов("СправочникСсылка.ПрофилиГруппДоступа"); + ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ПрофилиИзмененныеПриЗагрузке"; + + ИначеЕсли ВидСсылок = "ГруппыДоступа" Тогда + ДопустимыеТипы = Новый ОписаниеТипов("СправочникСсылка.ГруппыДоступа"); + ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ГруппыДоступаИзмененныеПриЗагрузке"; + + ИначеЕсли ВидСсылок = "ГруппыПользователей" Тогда + ДопустимыеТипы = Новый ОписаниеТипов("СправочникСсылка.ГруппыПользователей,СправочникСсылка.ГруппыВнешнихПользователей"); + ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ГруппыПользователейИзмененныеПриЗагрузке"; + + ИначеЕсли ВидСсылок = "Пользователи" Тогда + ДопустимыеТипы = Новый ОписаниеТипов("СправочникСсылка.Пользователи,СправочникСсылка.ВнешниеПользователи"); + ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ПользователиИзмененныеПриЗагрузке"; + Иначе + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение ""%1"" параметра ВидСсылок функции СвойстваВидаСсылок.'"), + ВидСсылок); + КонецЕсли; + + Возврат Новый Структура("ДопустимыеТипы, ИмяПараметраРаботыПрограммы", ДопустимыеТипы, ИмяПараметраРаботыПрограммы); + +КонецФункции + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ObjectModule.bsl" new file mode 100644 index 00000000..a34b6e90 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ObjectModule.bsl" @@ -0,0 +1,298 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +Перем СтарыеЗначения; // Значения некоторых реквизитов и табличных частей группы доступа + // до ее изменения для использования в обработчике события ПриЗаписи. + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы(); + РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра(); + + СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, + "Ссылка, Профиль, ПометкаУдаления, Пользователи, ВидыДоступа, ЗначенияДоступа"); + + // Удаление пустых участников группы доступа. + Индекс = Пользователи.Количество() - 1; + Пока Индекс >= 0 Цикл + Если Не ЗначениеЗаполнено(Пользователи[Индекс].Пользователь) Тогда + Пользователи.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + + Если Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда + + // Всегда предопределенный профиль Администратор. + Профиль = Справочники.ПрофилиГруппДоступа.Администратор; + + // Не может быть персональной группой доступа. + Пользователь = Неопределено; + + // Не может иметь обычного ответственного (только полноправные пользователи). + Ответственный = Неопределено; + + // Изменение разрешено только полноправному пользователю. + Если НЕ ПривилегированныйРежим() + И НЕ УправлениеДоступом.ЕстьРоль("ПолныеПрава") Тогда + + ВызватьИсключение + НСтр("ru = 'Предопределенную группу доступа Администраторы + |можно изменять, либо в привилегированном режиме, + |либо при наличии роли ""Полные права"".'"); + КонецЕсли; + + // Проверка наличия только пользователей. + Для каждого ТекущаяСтрока Из Пользователи Цикл + Если ТипЗнч(ТекущаяСтрока.Пользователь) <> Тип("СправочникСсылка.Пользователи") Тогда + ВызватьИсключение + НСтр("ru = 'Предопределенная группа доступа Администраторы + |может содержать только пользователей. + | + |Группы пользователей, внешние пользователи и + |группы внешних пользователей недопустимы.'"); + КонецЕсли; + КонецЦикла; + + // Нельзя устанавливать предопределенный профиль Администратор произвольной группе доступа. + ИначеЕсли Профиль = Справочники.ПрофилиГруппДоступа.Администратор Тогда + ВызватьИсключение + НСтр("ru = 'Предопределенный профиль Администратор может быть только + |у предопределенной группы доступа Администраторы.'"); + КонецЕсли; + + Если Не ЭтоГруппа Тогда + + // Автоматическая установка реквизитов для персональной группы доступа. + Если ЗначениеЗаполнено(Пользователь) Тогда + Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа(); + Иначе + Пользователь = Неопределено; + Если Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа(Истина) Тогда + Родитель = Неопределено; + КонецЕсли; + КонецЕсли; + + // При снятии пометки удаления с группы доступа выполняется + // снятие пометки удаления с профиля этой группы доступа. + Если Не ПометкаУдаления И СтарыеЗначения.ПометкаУдаления = Истина Тогда + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ПрофилиГруппДоступа"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Профиль); + Блокировка.Заблокировать(); + + ПометкаУдаленияПрофиля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Профиль, "ПометкаУдаления"); + ПометкаУдаленияПрофиля = ?(ПометкаУдаленияПрофиля = Неопределено, Ложь, ПометкаУдаленияПрофиля); + Если ПометкаУдаленияПрофиля Тогда + ЗаблокироватьДанныеДляРедактирования(Профиль); + ПрофильОбъект = Профиль.ПолучитьОбъект(); + ПрофильОбъект.ПометкаУдаления = Ложь; + ПрофильОбъект.Записать(); + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Обновляет: +// - роли добавленных, оставшихся и удаленных пользователей; +// - РегистрСведений.ТаблицыГруппДоступа; +// - РегистрСведений.ЗначенияГруппДоступа. +// +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + Если Не ДополнительныеСвойства.Свойство("НеОбновлятьРолиПользователей") Тогда + ОбновитьРолиПользователейПриИзмененииГруппыДоступа(); + КонецЕсли; + + НаличиеУчастников = Пользователи.Количество() <> 0; + СтароеНаличиеУчастников = СтарыеЗначения.Ссылка = Ссылка И Не СтарыеЗначения.Пользователи.Пустой(); + + Если Профиль <> СтарыеЗначения.Профиль + Или ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления + Или НаличиеУчастников <> СтароеНаличиеУчастников Тогда + + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(Ссылка); + КонецЕсли; + + Если Справочники.ГруппыДоступа.ИзменилисьВидыИлиЗначенияДоступа(СтарыеЗначения, ЭтотОбъект) + Или ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления + Или НаличиеУчастников <> СтароеНаличиеУчастников Тогда + + РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(Ссылка); + КонецЕсли; + + Справочники.ПрофилиГруппДоступа.ОбновитьВспомогательныеДанныеПрофилейИзмененныхПриЗагрузке(); + Справочники.ГруппыДоступа.ОбновитьВспомогательныеДанныеГруппДоступаИзмененныхПриЗагрузке(); + Справочники.ГруппыДоступа.ОбновитьВспомогательныеДанныеГруппПользователейИзмененныхПриЗагрузке(); + Справочники.ГруппыДоступа.ОбновитьРолиПользователейИзмененныхПриЗагрузке(); + + Если УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально() Тогда + ТипыИзмененныхУчастников = ТипыИзмененныхУчастников(Пользователи, СтарыеЗначения.Пользователи); + УправлениеДоступомСлужебный.ЗапланироватьОбновлениеНаборовГруппДоступа( + "ГруппыДоступаПриИзмененииУчастников", + ТипыИзмененныхУчастников.Пользователи, + ТипыИзмененныхУчастников.ВнешниеПользователи); + + Если Не ПометкаУдаления Тогда + УправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступаПриИзмененииУчастниковГруппыДоступа(Ссылка, + ТипыИзмененныхУчастников); + КонецЕсли; + Если ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления Тогда + УправлениеДоступомСлужебный.ОбновитьГруппыДоступаРазрешенногоКлючаДоступа(Ссылка); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если ДополнительныеСвойства.Свойство("ПроверенныеРеквизитыОбъекта") Тогда + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива( + ПроверяемыеРеквизиты, ДополнительныеСвойства.ПроверенныеРеквизитыОбъекта); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Параметры: +// НовыеУчастники - СправочникТабличнаяЧасть.ГруппыДоступа.Пользователи +// СтарыеУчастники - РезультатЗапроса +// Возвращаемое значение: +// Структура: +// * ВнешниеПользователи - Булево +// * Пользователи - Булево +// +Функция ТипыИзмененныхУчастников(НовыеУчастники, СтарыеУчастники) + + ТипыИзмененныхУчастников = Новый Структура; + ТипыИзмененныхУчастников.Вставить("Пользователи", Ложь); + ТипыИзмененныхУчастников.Вставить("ВнешниеПользователи", Ложь); + + ВсеУчастники = НовыеУчастники.Выгрузить(, "Пользователь"); + ВсеУчастники.Колонки.Добавить("ВидИзмененияСтроки", Новый ОписаниеТипов("Число")); + ВсеУчастники.ЗаполнитьЗначения(1, "ВидИзмененияСтроки"); + Если СтарыеУчастники <> Неопределено Тогда + Выборка = СтарыеУчастники.Выбрать(); + Пока Выборка.Следующий() Цикл + НоваяСтрока = ВсеУчастники.Добавить(); + НоваяСтрока.Пользователь = Выборка.Пользователь; + НоваяСтрока.ВидИзмененияСтроки = -1; + КонецЦикла; + КонецЕсли; + ВсеУчастники.Свернуть("Пользователь", "ВидИзмененияСтроки"); + Для Каждого Строка Из ВсеУчастники Цикл + Если Строка.ВидИзмененияСтроки = 0 Тогда + Продолжить; + КонецЕсли; + Если ТипЗнч(Строка.Пользователь) = Тип("СправочникСсылка.Пользователи") + Или ТипЗнч(Строка.Пользователь) = Тип("СправочникСсылка.ГруппыПользователей") Тогда + ТипыИзмененныхУчастников.Пользователи = Истина; + КонецЕсли; + Если ТипЗнч(Строка.Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") + Или ТипЗнч(Строка.Пользователь) = Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда + ТипыИзмененныхУчастников.ВнешниеПользователи = Истина; + КонецЕсли; + КонецЦикла; + + Возврат ТипыИзмененныхУчастников; + +КонецФункции + +Процедура ОбновитьРолиПользователейПриИзмененииГруппыДоступа() + + Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда + МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); + СеансЗапущенБезРазделителей = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей(); + Иначе + СеансЗапущенБезРазделителей = Истина; + КонецЕсли; + + Если ОбщегоНазначения.РазделениеВключено() + И Ссылка = Справочники.ГруппыДоступа.Администраторы + И Не СеансЗапущенБезРазделителей + И ДополнительныеСвойства.Свойство("ПарольПользователяСервиса") Тогда + + ПарольПользователяСервиса = ДополнительныеСвойства.ПарольПользователяСервиса; + Иначе + ПарольПользователяСервиса = Неопределено; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + + ПользователиДляОбновления = + Справочники.ГруппыДоступа.ПользователиДляОбновленияРолей(СтарыеЗначения, ЭтотОбъект); + + Если Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда + // Добавление пользователей, связанных с пользователямиИБ, имеющих роль ПолныеПрава. + + Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл + Если ПользовательИБ.Роли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда + + НайденныйПользователь = Справочники.Пользователи.НайтиПоРеквизиту( + "ИдентификаторПользователяИБ", ПользовательИБ.УникальныйИдентификатор); + + Если НЕ ЗначениеЗаполнено(НайденныйПользователь) Тогда + НайденныйПользователь = Справочники.ВнешниеПользователи.НайтиПоРеквизиту( + "ИдентификаторПользователяИБ", ПользовательИБ.УникальныйИдентификатор); + КонецЕсли; + + Если ЗначениеЗаполнено(НайденныйПользователь) + И ПользователиДляОбновления.Найти(НайденныйПользователь) = Неопределено Тогда + + ПользователиДляОбновления.Добавить(НайденныйПользователь); + КонецЕсли; + + КонецЕсли; + КонецЦикла; + КонецЕсли; + + УправлениеДоступом.ОбновитьРолиПользователей(ПользователиДляОбновления, ПарольПользователяСервиса); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" new file mode 100644 index 00000000..4267bf95 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" @@ -0,0 +1,488 @@ + + + + + + + + + + ГруппыДоступа + + ru + Группы доступа + + true + Catalog.ГруппыДоступа.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа (папка) + + + ru + Группа (папка), объединяющая группы доступа для удобства поиска + + true + + Catalog.ГруппыДоступа.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование группы доступа + + + + + ShowError + Use + + + + + Use + Code + + + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Группа доступа + + true + 2 + true + 150 + String + AsDescription + + + Администраторы + Администраторы + + + + + + InDialog + BothWays + Catalog.ГруппыДоступа.Form.ФормаЭлемента + Catalog.ГруппыДоступа.Form.ФормаГруппы + Catalog.ГруппыДоступа.Form.ФормаСписка + Catalog.ГруппыДоступа.Form.ФормаСписка + Catalog.ГруппыДоступа.Form.ФормаВыбораГруппы + + Профиль + + ru + Профиль + + + CatalogRef.ПрофилиГруппДоступа + + + ru + Профиль группы доступа + + + + ShowError + + Catalog.ПрофилиГруппДоступа.EmptyRef + + Index + Use + Use + + + Пользователь + + ru + Пользователь + + Только для персональных групп доступа + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + ru + Владелец персональной группы доступа + + + + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Произвольная строка + + + + + + + Use + Use + + + Ответственный + + ru + Ответственный + + + CatalogRef.Пользователи + + + ru + Пользователь, которой может изменять состав участников группы доступа + + + + + Use + Use + + + ОсновнаяГруппаДоступаПоставляемогоПрофиля + + ru + Основная группа доступа поставляемого профиля + + + Boolean + + + ru + Определяет основную группу доступа поставляемого профиля без видов доступа для программного управления составом пользователей. + + + + + Use + Use + + + + + + + Пользователи + + ru + Пользователи + + + Use + LineNumber + + Use + + + + + Пользователь + + ru + Пользователь + + + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + + ru + Участник группы доступа + + + + ShowError + Use + Index + Use + + + + + + + + ВидыДоступа + + ru + Виды доступа + + + Use + LineNumber + + Use + + + + + ВидДоступа + + ru + Вид доступа + + Представлен пустой ссылкой основного типа значений + + DefinedType.ЗначениеДоступа + + + ru + Возможный "разрез" ограничения прав доступа +в заданном списке разрешенных действий (ролей), +указанных в профиле этой группы доступа. + + + + Use + Index + Use + + + ВсеРазрешены + + ru + Все разрешены + + + Boolean + + + ru + Способ определения разрешенных значений доступа + + + + Use + + + + + + + + ЗначенияДоступа + + ru + Значения доступа + + + Use + LineNumber + + Use + + + + + ВидДоступа + + ru + Вид доступа + + Представлен пустой ссылкой основного типа значений + + DefinedType.ЗначениеДоступа + + + ru + Вид доступа, по которому задано значение доступа + + + + Use + Index + Use + + + ЗначениеДоступа + + ru + Значение доступа + + + DefinedType.ЗначениеДоступа + + + ru + Разрешенное или запрещенное значение доступа + + + + Use + Index + Use + + + ВключаяНижестоящие + + ru + Включая нижестоящие + + + Boolean + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаВыбораГруппы + + ru + Форма выбора группы + + + + ru + + + PersonalComputer + MobileDevice + + + ВыборПоОтветственному + + ru + Выбор по ответственному + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/ManagerModule.bsl" new file mode 100644 index 00000000..bf7db4a8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/ManagerModule.bsl" @@ -0,0 +1,37 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("*"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/ObjectModule.bsl" new file mode 100644 index 00000000..d4196a22 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/ObjectModule.bsl" @@ -0,0 +1,67 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(РольИсполнителя) Тогда + + Наименование = Строка(РольИсполнителя); + + Если ЗначениеЗаполнено(ОсновнойОбъектАдресации) Тогда + Наименование = Наименование + ", " + Строка(ОсновнойОбъектАдресации); + КонецЕсли; + + Если ЗначениеЗаполнено(ДополнительныйОбъектАдресации) Тогда + Наименование = Наименование + ", " + Строка(ДополнительныйОбъектАдресации); + КонецЕсли; + Иначе + Наименование = НСтр("ru = 'Без ролевой адресации'"); + КонецЕсли; + + // Проверка дубля. + Запрос = Новый Запрос( + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ГруппыИсполнителейЗадач.Ссылка + |ИЗ + | Справочник.ГруппыИсполнителейЗадач КАК ГруппыИсполнителейЗадач + |ГДЕ + | ГруппыИсполнителейЗадач.РольИсполнителя = &РольИсполнителя + | И ГруппыИсполнителейЗадач.ОсновнойОбъектАдресации = &ОсновнойОбъектАдресации + | И ГруппыИсполнителейЗадач.ДополнительныйОбъектАдресации = &ДополнительныйОбъектАдресации + | И ГруппыИсполнителейЗадач.Ссылка <> &Ссылка"); + Запрос.УстановитьПараметр("РольИсполнителя", РольИсполнителя); + Запрос.УстановитьПараметр("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации); + Запрос.УстановитьПараметр("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации); + Запрос.УстановитьПараметр("Ссылка", Ссылка); + + Если НЕ Запрос.Выполнить().Пустой() Тогда + ВызватьИсключение(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Уже есть группа исполнителей задач, для которой заданы: + |роль исполнителя ""%1"", + |основной объект адресации ""%2"" + |и дополнительный объект адресации ""%3""'"), + Строка(РольИсполнителя), + Строка(ОсновнойОбъектАдресации), + Строка(ДополнительныйОбъектАдресации))); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207.mdo" new file mode 100644 index 00000000..703db6b0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207/\320\223\321\200\321\203\320\277\320\277\321\213\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271\320\227\320\260\320\264\320\260\321\207.mdo" @@ -0,0 +1,181 @@ + + + + + + + + + + ГруппыИсполнителейЗадач + + ru + Группы исполнителей задач + + Служебный, не редактируется пользователем + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Внутреннее представление группы исполнителей задач (служебный реквизит) + + + + + + + Use + Code + + Use + + + + Use + true + Catalog.ГруппыИсполнителейЗадач.Attribute.ОсновнойОбъектАдресации + Catalog.ГруппыИсполнителейЗадач.Attribute.РольИсполнителя + Catalog.ГруппыИсполнителейЗадач.Attribute.ДополнительныйОбъектАдресации + Managed + Use + + ru + Группа исполнителей задач + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + РольИсполнителя + + ru + Роль исполнителя + + + CatalogRef.РолиИсполнителей + + + ru + Роль исполнителей задач + + + + + Catalog.РолиИсполнителей.EmptyRef + + Index + Use + Use + + + ОсновнойОбъектАдресации + + ru + Основной объект адресации + + + Characteristic.ОбъектыАдресацииЗадач + + + ru + Основной объект адресации данной группы + + + + + 1d77bf72-cd0f-4f63-a0fd-fe083a1d6b57.00000000-0000-0000-0000-000000000000 + + Index + Use + Use + + + ДополнительныйОбъектАдресации + + ru + Дополнительный объект адресации + + + Characteristic.ОбъектыАдресацииЗадач + + + ru + Дополнительный объект адресации данной группы + + + + + 01e1981b-f237-461c-8b09-90dd8f319985.00000000-0000-0000-0000-000000000000 + + Index + Use + Use + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/CommandModule.bsl" new file mode 100644 index 00000000..d680f390 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/CommandModule.bsl" @@ -0,0 +1,25 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Пользователь", ПараметрКоманды); + + ОткрытьФорму("ОбщаяФорма.ГруппыПользователей", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..d23398b0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,556 @@ + + + + ГруппаПользовательскихНастроек + 19 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 17 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + CopyToClipboard + Delete + OutputList + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Комментарий + 6 + true + true + + + + Список.Комментарий + + + + КомментарийExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + Ссылка + 11 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 12 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + OnChange + СписокПриИзменении + + + true + true + + true + + СписокСтрокаПоиска + 21 + + СписокСтрокаПоискаРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 22 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 24 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 25 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 27 + + СписокУправлениеПоискомРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 28 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + + Список.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
+ + ПолеКомментарий + 14 + true + true + + true + + + + Items.Список.CurrentData.Комментарий + + + Left + + ПолеКомментарийРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + ПолеКомментарийКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ + СправочникГруппыПользователей.Ссылка, + СправочникГруппыПользователей.ПометкаУдаления, + СправочникГруппыПользователей.Предопределенный, + СправочникГруппыПользователей.Родитель, + СправочникГруппыПользователей.Наименование, + СправочникГруппыПользователей.Комментарий, + ВЫБОР + КОГДА СправочникГруппыПользователей.ПометкаУдаления + ТОГДА 2 + ИНАЧЕ 3 + КОНЕЦ КАК НомерКартинки +ИЗ + Справочник.ГруппыПользователей КАК СправочникГруппыПользователей + Catalog.ГруппыПользователей + true + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..10fa0227 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,95 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + НастроитьПорядокГруппыВсеПользователи(Список); + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + + // Исключение выбора группы Все внешние пользователи в качестве родителя. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.ГруппыПользователей.ВсеПользователи, + ВидСравненияКомпоновкиДанных.НеРавно, , Параметры.Свойство("ВыборРодителя")); + + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + // Режим подбора. + Заголовок = НСтр("ru = 'Подбор групп пользователей'"); + Элементы.Список.МножественныйВыбор = Истина; + Элементы.Список.РежимВыделения = РежимВыделенияТаблицы.Множественный; + Иначе + Заголовок = НСтр("ru = 'Выбор группы пользователей'"); + КонецЕсли; + + АвтоЗаголовок = Ложь; + Иначе + Элементы.Список.РежимВыбора = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПриИзменении(Элемент) + + СписокПриИзмененииНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура НастроитьПорядокГруппыВсеПользователи(Список) + + Перем Порядок; + + // Порядок. + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Предопределенный"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриИзмененииНаСервере() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..73b5f1e5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1404 @@ + + + + ГруппаШапка + 117 + + Наименование + 4 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 40 + true + true + true + true + true + + Style.BorderColor + + + + + Родитель + 40 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 72 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 41 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + РодительНачалоВыбора + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 118 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + СтраницыУчастникиГруппыКомментарий + 78 + + УчастникиГруппы + 80 + + Состав + 10 + + <key>ru</key> + <value>Состав</value> + + true + true + + true + + + Объект.Состав + + false + None + Copy + MoveDown + MoveUp + SortListAsc + SortListDesc + + Пользователь + 15 + true + true + + true + + + + Объект.Состав.Пользователь + + + + ПользовательExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + + ПользовательКонтекстноеМеню + 16 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + Недействителен + 52 + true + + true + + + + Объект.Состав.Недействителен + + + + НедействителенExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + + НедействителенКонтекстноеМеню + 53 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + СоставКоманднаяПанель + 12 + + СоставПодобрать + 31 + true + true + + true + + false + + СоставПодобратьExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодобратьПользователей + Auto + true + true + UserCmds + Auto + + + СоставДобавить + 32 + true + true + + true + + false + + СоставДобавитьExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Add + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СоставИзменить + 106 + true + true + + true + + + СоставИзменитьРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + СоставСкопировать + 49 + true + true + + true + + false + + СоставСкопироватьExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + 10:0ae4bea5-23be-42a7-b69e-97b11b29c453 + Auto + true + true + UserCmds + Auto + + + СоставУдалить + 33 + true + true + + true + + false + + СоставУдалитьExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + СоставПереместитьВверх + 96 + true + true + + true + + + СоставПереместитьВверхРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВверх + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СоставПереместитьВниз + 98 + true + true + + true + + + СоставПереместитьВнизРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВниз + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СоставСортироватьПоВозрастанию + 84 + true + true + + true + + + СоставСортироватьПоВозрастаниюРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СортироватьПоВозрастанию + Auto + true + true + UserCmds + Auto + + + СоставСортироватьПоУбыванию + 86 + true + true + + true + + + СоставСортироватьПоУбываниюРасширеннаяПодсказка + 87 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СортироватьПоУбыванию + Auto + true + true + UserCmds + Auto + + + ПоказыватьНедействительныхПользователей + 51 + true + true + + true + + + ПоказыватьНедействительныхПользователейExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьНедействительныхПользователей + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СоставСтандартныеКоманды + 76 + true + true + + true + + + <key>ru</key> + <value>Состав стандартные команды</value> + + + СоставСтандартныеКомандыРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + + Item.Состав + + + true + true + + true + + Left + + + Drag + СоставПеретаскивание + + + ChoiceProcessing + СоставОбработкаВыбора + + + OnChange + СоставПриИзменении + + + true + true + + true + + СоставСтрокаПоиска + 108 + + СоставСтрокаПоискаРасширеннаяПодсказка + 110 + true + true + + true + + Label + true + true + + Left + + + + СоставСтрокаПоискаКонтекстноеМеню + 109 + true + true + + true + + true + + + true + + + + true + true + + true + + СоставСостояниеПросмотра + 111 + + СоставСостояниеПросмотраРасширеннаяПодсказка + 113 + true + true + + true + + Label + true + true + + Left + + + + СоставСостояниеПросмотраКонтекстноеМеню + 112 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СоставУправлениеПоиском + 114 + + СоставУправлениеПоискомРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + + СоставУправлениеПоискомКонтекстноеМеню + 115 + true + true + + true + + true + + SearchControlAddition + + true + + + + СоставExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + + СоставКонтекстноеМеню + 11 + + СоставКонтекстноеМенюПодобратьПользователей + 42 + true + true + + true + + false + + СоставКонтекстноеМенюПодобратьПользователейРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодобратьПользователей + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюДобавить + 45 + true + true + + true + + false + + СоставКонтекстноеМенюДобавитьРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюИзменить + 104 + true + true + + true + + + СоставКонтекстноеМенюИзменитьРасширеннаяПодсказка + 105 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюСкопировать + 50 + true + true + + true + + false + + СоставКонтекстноеМенюСкопироватьРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + 10:0ae4bea5-23be-42a7-b69e-97b11b29c453 + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюУдалить + 46 + true + true + + true + + false + + СоставКонтекстноеМенюУдалитьРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Состав.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюПереместитьВверх + 100 + true + true + + true + + + СоставКонтекстноеМенюПереместитьВверхРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВверх + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюПереместитьВниз + 102 + true + true + + true + + + СоставКонтекстноеМенюПереместитьВнизРасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВниз + Auto + true + true + UserCmds + Auto + + + СоставКонтекстноеМенюСтандартныеКоманды + 74 + true + true + + true + + + <key>ru</key> + <value>Состав контекстное меню стандартные команды</value> + + + СоставКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + + Item.Состав + + + true + true + + true + + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + + Style.BorderColor + + SelectionPresentationAndChoice + + + true + true + + true + + + <key>ru</key> + <value>Участники группы</value> + + + УчастникиГруппыРасширеннаяПодсказка + 81 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ГруппаКомментарий + 82 + + Комментарий + 38 + true + true + + true + + + + Объект.Комментарий + + + None + + КомментарийExtendedTooltip + 73 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 39 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ГруппаКомментарийРасширеннаяПодсказка + 83 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы участники группы комментарий</value> + + + СтраницыУчастникиГруппыКомментарийРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + Top + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ГруппыПользователей + + + true + + + true + +
true
+ true + + + Объект.Состав + + + Недействителен + + <key>ru</key> + <value>Недействителен</value> + + 1 + + Boolean + + + true + + + true + + + +
+ + ПодобратьПользователей + + <key>ru</key> + <value>Подобрать</value> + + 1 + + ru + Подбор пользователей + + + true + + + + ПодобратьПользователей + + + true + DontUse + + + ПоказыватьНедействительныхПользователей + + <key>ru</key> + <value>Показывать недействительных пользователей</value> + + 2 + + ru + Показывать недействительных пользователей + + + true + + + + ПоказыватьНедействительныхПользователей + + + DontUse + + + СортироватьПоВозрастанию + + <key>ru</key> + <value>Сортировать по возрастанию</value> + + 3 + + ru + Упорядочить список по возрастанию + + + true + + + StdPicture.SortListAsc + + + + СортироватьПоВозрастанию + + + Picture + true + DontUse + + + СортироватьПоУбыванию + + <key>ru</key> + <value>Сортировать по убыванию</value> + + 4 + + ru + Упорядочить список по убыванию + + + true + + + StdPicture.SortListDesc + + + + СортироватьПоУбыванию + + + Picture + true + DontUse + + + ПереместитьВверх + + <key>ru</key> + <value>Переместить вверх</value> + + 5 + + true + + + StdPicture.MoveUp + + + + ПереместитьВверх + + + Picture + true + DontUse + + + ПереместитьВниз + + <key>ru</key> + <value>Переместить вниз</value> + + 6 + + true + + + StdPicture.MoveDown + + + + ПереместитьВниз + + + Picture + true + DontUse + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..f8aef3df --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,22 @@ + +

Предназначена для просмотра и редактирования свойств группы пользователей.

+

Открывается с помощью кнопки  в списке Пользователи.

+

Пользователей можно объединять в группы по разным признакам, например, по должностям или в соответствии со структурой предприятия. Это ускоряет настройку прав доступа - можно настроить их одновременно нескольким пользователям, которые выполняют сходные функции.

+

Ввод группы пользователей

+
  • +
    Введите Наименование группы.
    +
    +
  • +
    Можно подчинить новую группу одной из уже существующих. Для этого в поле Входит в группу выберите нужную группу из списка.
    +
    • +
      +
      При редактировании состава пользователей подчиненных групп нужно учитывать, что они входят в состав групп-родителей, т.е. вышестоящих групп, и контролировать изменения прав доступа пользователей при переводе из группы в группу или при исключении из группы.
    +
  • +
    На вкладке Участники группы можно ввести пользователей в группу. 
    +
    • Для добавления большого числа пользователей можно использовать команду Подобрать. В этом случае можно одновременно выделить несколько пользователей в спискеи включить их в группу. +
    • +
      При использовании команды Еще - Добавить можно включить в группу только одного пользователя.
  • На вкладке Комментарий можно написать подробное описание данной группы.

Права доступа группы пользователей

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..7152fb4b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,342 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Объект.Ссылка = Справочники.ГруппыПользователей.ПустаяСсылка() + И Объект.Родитель = Справочники.ГруппыПользователей.ВсеПользователи Тогда + + Объект.Родитель = Справочники.ГруппыПользователей.ПустаяСсылка(); + КонецЕсли; + + Если Объект.Ссылка = Справочники.ГруппыПользователей.ВсеПользователи Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + ЗаполнитьСтатусПользователей(); + + ОбновитьСписокНедействительныхПользователей(Истина); + УстановитьДоступностьСвойств(ЭтотОбъект); + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ГруппаШапка.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + ЗаполнитьСтатусПользователей(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Запись_ГруппыПользователей", Новый Структура, Объект.Ссылка); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура РодительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + ПараметрыФормы.Вставить("ВыборРодителя"); + + ОткрытьФорму("Справочник.ГруппыПользователей.ФормаВыбора", ПараметрыФормы, Элементы.Родитель); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСостав + +&НаКлиенте +Процедура СоставОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Объект.Состав.Очистить(); + Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда + Для каждого Значение Из ВыбранноеЗначение Цикл + ОбработкаВыбораПользователя(Значение); + КонецЦикла; + Иначе + ОбработкаВыбораПользователя(ВыбранноеЗначение); + КонецЕсли; + ЗаполнитьСтатусПользователей(); + Элементы.Состав.Обновить(); + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура СоставПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + СообщениеПользователю = ПеремещениеПользователяВГруппу(ПараметрыПеретаскивания.Значение, Объект.Ссылка); + Если СообщениеПользователю <> Неопределено Тогда + ПоказатьОповещениеПользователя( + НСтр("ru = 'Перемещение пользователей'"), , СообщениеПользователю, БиблиотекаКартинок.Информация32); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СоставПриИзменении(Элемент) + УстановитьДоступностьСвойств(ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПодобратьПользователей(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь); + ПараметрыФормы.Вставить("МножественныйВыбор", Истина); + ПараметрыФормы.Вставить("РасширенныйПодбор", Истина); + ПараметрыФормы.Вставить("ПараметрыРасширеннойФормыПодбора", ПараметрыРасширеннойФормыПодбора()); + + ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", ПараметрыФормы, Элементы.Состав); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНедействительныхПользователей(Команда) + ОбновитьСписокНедействительныхПользователей(Ложь); + УстановитьДоступностьСвойств(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура СортироватьПоВозрастанию(Команда) + СоставСортироватьСтроки("ПоВозрастанию"); +КонецПроцедуры + +&НаКлиенте +Процедура СортироватьПоУбыванию(Команда) + СоставСортироватьСтроки("ПоУбыванию"); +КонецПроцедуры + +&НаКлиенте +Процедура ПереместитьВверх(Команда) + СоставПереместитьСтроку("Вверх"); +КонецПроцедуры + +&НаКлиенте +Процедура ПереместитьВниз(Команда) + СоставПереместитьСтроку("Вниз"); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьСвойств(Форма) + + Элементы = Форма.Элементы; + + СоставГруппы = Форма.Объект.Состав; + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Недействителен", Ложь); + ЕстьДействительныеПользователи = СоставГруппы.НайтиСтроки(ПараметрыОтбора).Количество() > 0; + + ПараметрыОтбора.Вставить("Недействителен", Истина); + ЕстьНедействительныеПользователи = СоставГруппы.НайтиСтроки(ПараметрыОтбора).Количество() > 0; + + ДоступностьКомандПеремещения = + ЕстьДействительныеПользователи + Или (ЕстьНедействительныеПользователи + И Элементы.ПоказыватьНедействительныхПользователей.Пометка); + + Элементы.СоставПереместитьВверх.Доступность = ДоступностьКомандПеремещения; + Элементы.СоставПереместитьВниз.Доступность = ДоступностьКомандПеремещения; + Элементы.СоставКонтекстноеМенюПереместитьВверх.Доступность = ДоступностьКомандПеремещения; + Элементы.СоставКонтекстноеМенюПереместитьВниз.Доступность = ДоступностьКомандПеремещения; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Пользователь.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Состав.Недействителен"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбораПользователя(ВыбранноеЗначение) + + Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.Пользователи") Тогда + Объект.Состав.Добавить().Пользователь = ВыбранноеЗначение; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПеремещениеПользователяВГруппу(МассивПользователей, НоваяГруппаВладелец) + + МассивПеремещенныхПользователей = Новый Массив; + МассивНеПеремещенныхПользователей = Новый Массив; + Для Каждого ПользовательСсылка Из МассивПользователей Цикл + + ПараметрыОтбора = Новый Структура("Пользователь", ПользовательСсылка); + Если ТипЗнч(ПользовательСсылка) = Тип("СправочникСсылка.Пользователи") + И Объект.Состав.НайтиСтроки(ПараметрыОтбора).Количество() = 0 Тогда + Объект.Состав.Добавить().Пользователь = ПользовательСсылка; + МассивПеремещенныхПользователей.Добавить(ПользовательСсылка); + КонецЕсли; + + КонецЦикла; + + Возврат ПользователиСлужебный.ФормированиеСообщенияПользователю( + МассивПеремещенныхПользователей, НоваяГруппаВладелец, Ложь, МассивНеПеремещенныхПользователей); + +КонецФункции + +&НаСервере +Функция ПараметрыРасширеннойФормыПодбора() + + ВыбранныеПользователи = Новый ТаблицаЗначений; + ВыбранныеПользователи.Колонки.Добавить("Пользователь"); + ВыбранныеПользователи.Колонки.Добавить("НомерКартинки"); + + УчастникиГруппы = Объект.Состав.Выгрузить(, "Пользователь"); + + Для каждого Элемент Из УчастникиГруппы Цикл + + СтрокаВыбранныеПользователи = ВыбранныеПользователи.Добавить(); + СтрокаВыбранныеПользователи.Пользователь = Элемент.Пользователь; + + КонецЦикла; + + ЗаголовокФормыПодбора = НСтр("ru = 'Подбор участников группы пользователей'"); + ПараметрыРасширеннойФормыПодбора = + Новый Структура("ЗаголовокФормыПодбора, ВыбранныеПользователи, ПодборГруппНевозможен", + ЗаголовокФормыПодбора, ВыбранныеПользователи, Истина); + АдресХранилища = ПоместитьВоВременноеХранилище(ПараметрыРасширеннойФормыПодбора); + Возврат АдресХранилища; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьСтатусПользователей() + + Для Каждого СтрокаСоставаГруппы Из Объект.Состав Цикл + СтрокаСоставаГруппы.Недействителен = + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаСоставаГруппы.Пользователь, "Недействителен"); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокНедействительныхПользователей(ПередОткрытиемФормы) + + Элементы.ПоказыватьНедействительныхПользователей.Пометка = ?(ПередОткрытиемФормы, Ложь, + НЕ Элементы.ПоказыватьНедействительныхПользователей.Пометка); + + Отбор = Новый Структура; + + Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда + Отбор.Вставить("Недействителен", Ложь); + Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор); + Иначе + Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(); + КонецЕсли; + + Элементы.Состав.Обновить(); + +КонецПроцедуры + +&НаСервере +Процедура СоставСортироватьСтроки(ТипСортировки) + + Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда + Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(); + КонецЕсли; + + Если ТипСортировки = "ПоВозрастанию" Тогда + Объект.Состав.Сортировать("Пользователь Возр"); + Иначе + Объект.Состав.Сортировать("Пользователь Убыв"); + КонецЕсли; + + Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда + Отбор = Новый Структура; + Отбор.Вставить("Недействителен", Ложь); + Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СоставПереместитьСтроку(НаправлениеПеремещения) + + Строка = Объект.Состав.НайтиПоИдентификатору(Элементы.Состав.ТекущаяСтрока); + Если Строка = Неопределено Тогда + Возврат; + КонецЕсли; + + ИндексТекущейСтроки = Строка.НомерСтроки - 1; + Сдвиг = 0; + + Пока Истина Цикл + Сдвиг = Сдвиг + ?(НаправлениеПеремещения = "Вверх", -1, 1); + + Если ИндексТекущейСтроки + Сдвиг < 0 + Или ИндексТекущейСтроки + Сдвиг >= Объект.Состав.Количество() Тогда + Возврат; + КонецЕсли; + + Если Элементы.ПоказыватьНедействительныхПользователей.Пометка + Или Объект.Состав[ИндексТекущейСтроки + Сдвиг].Недействителен = Ложь Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + Объект.Состав.Сдвинуть(ИндексТекущейСтроки, Сдвиг); + Элементы.Состав.Обновить(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" new file mode 100644 index 00000000..6a013983 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" @@ -0,0 +1,53 @@ + +

Предназначен для ведения групп пользователей.

+

Удобно использовать группы, когда в программе много пользователей:

+
  • +
    для группировки большого числа пользователей (например, при выборе пользователя);
    +
  • +
    для групповой настройки прав доступа сразу для всех пользователей, входящих в группу (например, бухгалтеров включают в группу Бухгалтерия, затем группе настраивают права доступа к спискам и документам);
    +
  • +
    для групповой настройки в других случаях, например, в ролях исполнителей задач бизнес-процессов и др.

Группы создаются плоским списком (в нем группы существуют независимо друг от друга) или иерархическим, в котором одна группа может подчиняться другой. В иерархическом списке пользователи вложенных групп входят в вышестоящие (родительские) группы.

+

В списке существует предопределенная группа Все пользователи, которая включает всех пользователей программы.

+

Когда используется непосредственное назначение ролей, их можно назначать не только для каждого пользователя, но и для группы пользователей.

+

Группировка пользователей

+

Можно создать группы пользователей, которые будут включать участников одного типа. Так удобнее настраивать права доступа. Например, группы можно вести по структуре предприятия, должностям и проектным командам, например:

+
  • +
    Предприятие
    +
    • +
      Администрация
      +
      • +
        Отдел 1
        +
      • +
        Отдел 2
    • +
      Руководители Администрации
      +
    • +
      Инженерно-технические службы
      +
      • +
        Отдел 1
        +
      • +
        Отдел 2
        +
        • +
          Группа 1
          +
        • +
          Группа 2
      • +
        Руководители инженерно-технических служб
    • +
      Производство
      +
      • +
        Цех 1
        +
        • +
          Участок 1
          +
        • +
          Участок 2
      • +
        Цех 2
        +
        • +
          Участок 1
          +
        • +
          Участок 2
          +
        • +
          Участок 3
      • +
        Руководители производства
    • +
      Руководители предприятия
      +
    • +
      Группа общей инвентаризации

Ввод группы пользователей

+

См. также:

+

 

\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..e20c782f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" @@ -0,0 +1,42 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ВсеПользователи"; + Элемент.Наименование = НСтр("ru = 'Все пользователи'", ОбщегоНазначения.КодОсновногоЯзыка()); + +КонецПроцедуры + +#КонецОбласти + + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..379e6887 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" @@ -0,0 +1,208 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +Перем СтарыйРодитель; // Значение родителя группы до изменения для использования + // в обработчике события ПриЗаписи. + +Перем СтарыйСоставГруппыПользователей; // Состав пользователей группы пользователей + // до изменения для использования в обработчике + // события ПриЗаписи. + +Перем ЭтоНовый; // Показывает, что был записан новый объект. + // Используются в обработчике события ПриЗаписи. + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + ПроверенныеРеквизитыОбъекта = Новый Массив; + Ошибки = Неопределено; + + // Проверка использования родителя. + Если Родитель = Справочники.ГруппыПользователей.ВсеПользователи Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Объект.Родитель", + НСтр("ru = 'Предопределенная группа ""Все пользователи"" не может быть родителем.'"), + ""); + КонецЕсли; + + // Проверка незаполненных и повторяющихся пользователей. + ПроверенныеРеквизитыОбъекта.Добавить("Состав.Пользователь"); + + Для каждого ТекущаяСтрока Из Состав Цикл; + НомерСтроки = Состав.Индекс(ТекущаяСтрока); + + // Проверка заполнения значения. + Если НЕ ЗначениеЗаполнено(ТекущаяСтрока.Пользователь) Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Объект.Состав[%1].Пользователь", + НСтр("ru = 'Пользователь не выбран.'"), + "Объект.Состав", + НомерСтроки, + НСтр("ru = 'Пользователь в строке %1 не выбран.'")); + Продолжить; + КонецЕсли; + + // Проверка наличия повторяющихся значений. + НайденныеЗначения = Состав.НайтиСтроки(Новый Структура("Пользователь", ТекущаяСтрока.Пользователь)); + Если НайденныеЗначения.Количество() > 1 Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Объект.Состав[%1].Пользователь", + НСтр("ru = 'Пользователь повторяется.'"), + "Объект.Состав", + НомерСтроки, + НСтр("ru = 'Пользователь в строке %1 повторяется.'")); + КонецЕсли; + КонецЦикла; + + ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ); + + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, ПроверенныеРеквизитыОбъекта); + +КонецПроцедуры + +// Блокирует недопустимые действия с предопределенной группой "Все пользователи". +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ЭтоНовый = ЭтоНовый(); + + Если Ссылка = Справочники.ГруппыПользователей.ВсеПользователи Тогда + Если НЕ Родитель.Пустая() Тогда + ВызватьИсключение + НСтр("ru = 'Предопределенная группа ""Все пользователи"" + |может быть только в корне.'"); + КонецЕсли; + Если Состав.Количество() > 0 Тогда + ВызватьИсключение + НСтр("ru = 'Добавление пользователей в группу + |""Все пользователи"" не поддерживается.'"); + КонецЕсли; + Иначе + Если Родитель = Справочники.ГруппыПользователей.ВсеПользователи Тогда + ВызватьИсключение + НСтр("ru = 'Предопределенная группа ""Все пользователи"" + |не может быть родителем.'"); + КонецЕсли; + + СтарыйРодитель = ?( + Ссылка.Пустая(), + Неопределено, + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Родитель")); + + Если ЗначениеЗаполнено(Ссылка) + И Ссылка <> Справочники.ГруппыПользователей.ВсеПользователи Тогда + + СтарыйСоставГруппыПользователей = + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Состав").Выгрузить(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + УчастникиИзменений = Новый Соответствие; + ИзмененныеГруппы = Новый Соответствие; + + Если Ссылка <> Справочники.ГруппыПользователей.ВсеПользователи Тогда + + ИзмененияСостава = ПользователиСлужебный.РазличияЗначенийКолонки( + "Пользователь", + Состав.Выгрузить(), + СтарыйСоставГруппыПользователей); + + ПользователиСлужебный.ОбновитьСоставыГруппПользователей( + Ссылка, ИзмененияСостава, УчастникиИзменений, ИзмененныеГруппы); + + Если СтарыйРодитель <> Родитель Тогда + + Если ЗначениеЗаполнено(Родитель) Тогда + ПользователиСлужебный.ОбновитьСоставыГруппПользователей( + Родитель, , УчастникиИзменений, ИзмененныеГруппы); + КонецЕсли; + + Если ЗначениеЗаполнено(СтарыйРодитель) Тогда + ПользователиСлужебный.ОбновитьСоставыГруппПользователей( + СтарыйРодитель, , УчастникиИзменений, ИзмененныеГруппы); + КонецЕсли; + КонецЕсли; + + ПользователиСлужебный.ОбновитьИспользуемостьСоставовГруппПользователей( + Ссылка, УчастникиИзменений, ИзмененныеГруппы); + + Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда + ПроверитьПравоИзмененияСостава(ИзмененияСостава); + КонецЕсли; + КонецЕсли; + + ПользователиСлужебный.ПослеОбновленияСоставовГруппПользователей( + УчастникиИзменений, ИзмененныеГруппы); + + ИнтеграцияПодсистемБСП.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПроверитьПравоИзмененияСостава(ИзмененияСостава) + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Пользователи", ИзмененияСостава); + Запрос.Текст = + "ВЫБРАТЬ + | Пользователи.Наименование КАК Наименование + |ИЗ + | Справочник.Пользователи КАК Пользователи + |ГДЕ + | Пользователи.Ссылка В(&Пользователи) + | И НЕ Пользователи.Подготовлен"; + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + ТекстОшибки = + НСтр("ru = 'Недостаточно прав доступа. + | + |В состав участников групп пользователей можно добавлять и удалять только + |новых (добавленных) пользователей, у которых включен признак Подготовлен. + | + |Запрещено добавлять и удалять существующих пользователей:'"); + + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + ТекстОшибки = ТекстОшибки + Символы.ПС + Выборка.Наименование; + КонецЦикла; + + ВызватьИсключение ТекстОшибки; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" new file mode 100644 index 00000000..d1a91768 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" @@ -0,0 +1,263 @@ + + + + + + + + + + ГруппыПользователей + + ru + Группы пользователей + + true + Catalog.ГруппыПользователей.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Входит в группу + + + ru + Вышестоящая группа в иерархии + + true + + Catalog.ГруппыПользователей.EmptyRef + + Use + + + + + Use + Description + + ru + Название группы + + + + + ShowError + Use + + + + + Use + Code + + ru + Код, идентифицирующий группу + + + + + Use + + + + Use + true + + + ru + + + Use + + ru + Группа пользователей + + + ru + Группы пользователей, имеющих одинаковый доступ к данным системы + + true + HierarchyOfItems + 2 + true + 150 + String + Variable + AsDescription + + + ВсеПользователи + Все пользователи + + 000000001 + + + + InDialog + BothWays + Catalog.ГруппыПользователей.Form.ФормаЭлемента + Catalog.ГруппыПользователей.Form.ФормаСписка + Catalog.ГруппыПользователей.Form.ФормаСписка + + Комментарий + + ru + Комментарий + + + String + + + + ru + Произвольная строка + + true + + + + + + Use + Use + + + + + + + Состав + + ru + Участники группы + + + ru + Пользователи, входящие в группу + + + Use + LineNumber + + Use + + + + + Пользователь + + ru + Пользователь + + + CatalogRef.Пользователи + + + ru + Пользователь, включенный в группу + + + + ShowError + DontUse + Use + Use + Index + Use + + ForFolderAndItem + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ГруппыПользователя + + ru + Группы + + FormNavigationPanelGoTo + + CatalogRef.Пользователи + + Auto + + ru + Группы пользователя + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\221\321\213\321\201\321\202\321\200\321\213\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\232\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\236\321\202\321\207\320\265\321\202\320\260\320\274\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\274/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\221\321\213\321\201\321\202\321\200\321\213\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\232\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\236\321\202\321\207\320\265\321\202\320\260\320\274\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\274/Form.form" new file mode 100644 index 00000000..5ff139f8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\221\321\213\321\201\321\202\321\200\321\213\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\232\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\236\321\202\321\207\320\265\321\202\320\260\320\274\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\274/Form.form" @@ -0,0 +1,1109 @@ + + + + ГруппаПользователи + 12 + + ВсеПользователи + 1 + + <key>ru</key> + <value>Все пользователи</value> + + true + true + + true + + + ВсеПользователи + + false + Top + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + ПользователиСсылка + 4 + true + true + + true + + + + ВсеПользователи.Пользователь + + + + ПользователиСсылкаExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСсылкаКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ВсеПользователиКоманднаяПанель + 3 + + ПользователиНайти + 8 + true + true + + true + + false + + ПользователиНайтиExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВсеПользователи.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ПользователиОтменитьПоиск + 9 + true + true + + true + + false + + ПользователиОтменитьПоискExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВсеПользователи.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + DragCheck + ВсеПользователиПроверкаПеретаскивания + + + Drag + ВсеПользователиПеретаскивание + + + true + true + + true + + ВсеПользователиСтрокаПоиска + 48 + + ВсеПользователиСтрокаПоискаРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + ВсеПользователиСтрокаПоискаКонтекстноеМеню + 49 + true + true + + true + + true + + + true + + + + true + true + + true + + ВсеПользователиСостояниеПросмотра + 51 + + ВсеПользователиСостояниеПросмотраРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + ВсеПользователиСостояниеПросмотраКонтекстноеМеню + 52 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВсеПользователиУправлениеПоиском + 54 + + ВсеПользователиУправлениеПоискомРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + + ВсеПользователиУправлениеПоискомКонтекстноеМеню + 55 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВсеПользователиExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + ВсеПользователиКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + + + + КомандыУправленияСписком + 20 + + УстановитьКомандуДляВыделенныхПользователей + 28 + true + true + + true + + + УстановитьКомандуДляВыделенныхПользователейExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УстановитьКомандуДляВыделенныхПользователей + Auto + true + true + UserCmds + Auto + + + УстановитьДоступДляВсехПользователей + 27 + true + true + + true + + + УстановитьДоступДляВсехПользователейExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УстановитьДоступДляВсехПользователей + Auto + true + true + UserCmds + Auto + + + УбратьДоступККомандеУВсехПользователей + 29 + true + true + + true + + + УбратьДоступККомандеУВсехПользователейExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УбратьДоступККомандеУВсехПользователей + Auto + true + true + UserCmds + Auto + + + УбратьДоступККомандеУВыделенныхПользователей + 30 + true + true + + true + + + УбратьДоступККомандеУВыделенныхПользователейExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УбратьДоступККомандеУВыделенныхПользователей + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды управления списком</value> + + true + Center + + КомандыУправленияСпискомExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ПользователиКороткогоСписка + 13 + + <key>ru</key> + <value>Пользователи, для которых видна команда</value> + + true + true + + true + + + ПользователиКороткогоСписка + + false + Top + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + ПользователиКороткогоСпискаПользователь + 16 + true + true + + true + + + + ПользователиКороткогоСписка.Пользователь + + + + ПользователиКороткогоСпискаПользовательExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + + ПользователиКороткогоСпискаПользовательКонтекстноеМеню + 17 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ПользователиКороткогоСпискаКоманднаяПанель + 15 + + ПользователиКороткогоСпискаНайти + 18 + true + true + + true + + false + + ПользователиКороткогоСпискаНайтиExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиКороткогоСписка.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ПользователиКороткогоСпискаОтменитьПоиск + 19 + true + true + + true + + false + + ПользователиКороткогоСпискаОтменитьПоискExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиКороткогоСписка.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + DragCheck + ПользователиКороткогоСпискаПроверкаПеретаскивания + + + Drag + ПользователиКороткогоСпискаПеретаскивание + + + true + true + + true + + ПользователиКороткогоСпискаСтрокаПоиска + 57 + + ПользователиКороткогоСпискаСтрокаПоискаРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + ПользователиКороткогоСпискаСтрокаПоискаКонтекстноеМеню + 58 + true + true + + true + + true + + + true + + + + true + true + + true + + ПользователиКороткогоСпискаСостояниеПросмотра + 60 + + ПользователиКороткогоСпискаСостояниеПросмотраРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + + ПользователиКороткогоСпискаСостояниеПросмотраКонтекстноеМеню + 61 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПользователиКороткогоСпискаУправлениеПоиском + 63 + + ПользователиКороткогоСпискаУправлениеПоискомРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + + ПользователиКороткогоСпискаУправлениеПоискомКонтекстноеМеню + 64 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПользователиКороткогоСпискаExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + + ПользователиКороткогоСпискаКонтекстноеМеню + 14 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пользователи</value> + + + ГруппаПользователиExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ОК + 10 + true + true + + true + + true + false + + ОКExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + Отмена + 11 + true + true + + true + + false + + ОтменаExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ВсеПользователи + + <key>ru</key> + <value>Все пользователи</value> + + 1 + + ValueTable + + + true + + + true + + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 2 + + CatalogRef.Пользователи + + + true + + + true + + + + + ПользователиКороткогоСписка + + <key>ru</key> + <value>Пользователи короткого списка</value> + + 2 + + ValueTable + + + true + + + true + + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + CatalogRef.Пользователи + + + true + + + true + + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + УстановитьДоступДляВсехПользователей + + <key>ru</key> + <value>>></value> + + 2 + + ru + Добавить всех пользователей + + + true + + + + УстановитьДоступДляВсехПользователей + + + DontUse + + + УстановитьКомандуДляВыделенныхПользователей + + <key>ru</key> + <value>></value> + + 3 + + ru + Добавить выделенных пользователей + + + true + + + + УстановитьКомандуДляВыделенныхПользователей + + + DontUse + + + УбратьДоступККомандеУВсехПользователей + + <key>ru</key> + <value><<</value> + + 4 + + ru + Удалить всех пользователей + + + true + + + + УбратьДоступККомандеУВсехПользователей + + + DontUse + + + УбратьДоступККомандеУВыделенныхПользователей + + <key>ru</key> + <value><</value> + + 5 + + ru + Удалить выделенных пользователей + + + true + + + + УбратьДоступККомандеУВыделенныхПользователей + + + DontUse + + + ПользователиСБыстрымДоступом + + ValueList + + + + ПредставлениеКоманды + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\221\321\213\321\201\321\202\321\200\321\213\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\232\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\236\321\202\321\207\320\265\321\202\320\260\320\274\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\274/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\221\321\213\321\201\321\202\321\200\321\213\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\232\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\236\321\202\321\207\320\265\321\202\320\260\320\274\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\274/Module.bsl" new file mode 100644 index 00000000..f114f6c2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\221\321\213\321\201\321\202\321\200\321\213\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\232\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\236\321\202\321\207\320\265\321\202\320\260\320\274\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\274/Module.bsl" @@ -0,0 +1,166 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Быстрый доступ к команде ""%1""'"), Параметры.ПредставлениеКоманды); + + ЗаполнитьТаблицы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыВсеПользователи + +&НаКлиенте +Процедура ВсеПользователиПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + Если ТипЗнч(ПараметрыПеретаскивания.Значение[0]) = Тип("Число") Тогда + Возврат; + КонецЕсли; + + ПеренестиПользователей(ВсеПользователи, ПользователиКороткогоСписка, ПараметрыПеретаскивания.Значение); + +КонецПроцедуры + +&НаКлиенте +Процедура ВсеПользователиПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователиКороткогоСписка + +&НаКлиенте +Процедура ПользователиКороткогоСпискаПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + Если ТипЗнч(ПараметрыПеретаскивания.Значение[0]) = Тип("Число") Тогда + Возврат; + КонецЕсли; + + ПеренестиПользователей(ПользователиКороткогоСписка, ВсеПользователи, ПараметрыПеретаскивания.Значение); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиКороткогоСпискаПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура УбратьДоступККомандеУВсехПользователей(Команда) + + МассивПеретаскиваемыхЭлементов = Новый Массив; + + Для Каждого ОписаниеСтроки Из ПользователиКороткогоСписка Цикл + МассивПеретаскиваемыхЭлементов.Добавить(ОписаниеСтроки); + КонецЦикла; + + ПеренестиПользователей(ВсеПользователи, ПользователиКороткогоСписка, МассивПеретаскиваемыхЭлементов); + +КонецПроцедуры + +&НаКлиенте +Процедура УбратьДоступККомандеУВыделенныхПользователей(Команда) + + МассивПеретаскиваемыхЭлементов = Новый Массив; + + Для Каждого ВыделеннаяСтрока Из Элементы.ПользователиКороткогоСписка.ВыделенныеСтроки Цикл + МассивПеретаскиваемыхЭлементов.Добавить(Элементы.ПользователиКороткогоСписка.ДанныеСтроки(ВыделеннаяСтрока)); + КонецЦикла; + + ПеренестиПользователей(ВсеПользователи, ПользователиКороткогоСписка, МассивПеретаскиваемыхЭлементов); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьДоступДляВсехПользователей(Команда) + + МассивПеретаскиваемыхЭлементов = Новый Массив; + + Для Каждого ОписаниеСтроки Из ВсеПользователи Цикл + МассивПеретаскиваемыхЭлементов.Добавить(ОписаниеСтроки); + КонецЦикла; + + ПеренестиПользователей(ПользователиКороткогоСписка, ВсеПользователи, МассивПеретаскиваемыхЭлементов); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьКомандуДляВыделенныхПользователей(Команда) + + МассивПеретаскиваемыхЭлементов = Новый Массив; + + Для Каждого ВыделеннаяСтрока Из Элементы.ВсеПользователи.ВыделенныеСтроки Цикл + МассивПеретаскиваемыхЭлементов.Добавить(Элементы.ВсеПользователи.ДанныеСтроки(ВыделеннаяСтрока)); + КонецЦикла; + + ПеренестиПользователей(ПользователиКороткогоСписка, ВсеПользователи, МассивПеретаскиваемыхЭлементов); + +КонецПроцедуры + +&НаКлиенте +Процедура ОК(Команда) + + РезультатВыбора = Новый СписокЗначений; + + Для Каждого ЭлементКоллекции Из ПользователиКороткогоСписка Цикл + РезультатВыбора.Добавить(ЭлементКоллекции.Пользователь); + КонецЦикла; + + ОповеститьОВыборе(РезультатВыбора); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьТаблицы() + СписокВыбранных = Параметры.ПользователиСБыстрымДоступом; + Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи ГДЕ НЕ ПометкаУдаления И НЕ Недействителен И НЕ Служебный"); + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Если СписокВыбранных.НайтиПоЗначению(Выборка.Ссылка) = Неопределено Тогда + ВсеПользователи.Добавить().Пользователь = Выборка.Ссылка; + Иначе + ПользователиКороткогоСписка.Добавить().Пользователь = Выборка.Ссылка; + КонецЕсли; + КонецЦикла; + ВсеПользователи.Сортировать("Пользователь Возр"); + ПользователиКороткогоСписка.Сортировать("Пользователь Возр"); +КонецПроцедуры + +&НаКлиенте +Процедура ПеренестиПользователей(Приемник, Источник, МассивПеретаскиваемыхЭлементов) + + Для Каждого ПеретаскиваемыйЭлемент Из МассивПеретаскиваемыхЭлементов Цикл + НовыйПользователь = Приемник.Добавить(); + НовыйПользователь.Пользователь = ПеретаскиваемыйЭлемент.Пользователь; + Источник.Удалить(ПеретаскиваемыйЭлемент); + КонецЦикла; + + Приемник.Сортировать("Пользователь Возр"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Form.form" new file mode 100644 index 00000000..4f09d366 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Form.form" @@ -0,0 +1,301 @@ + + + + ГруппаСообщениеПользователю + 7 + + КартинкаСообщения + 9 + + <key>ru</key> + <value>Картинка сообщения</value> + + true + true + + true + + + КартинкаСообщенияРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + + КартинкаСообщенияКонтекстноеМеню + 10 + true + true + + true + + true + + true + true + + + CommonPicture.Информация32 + + + + + ТекстСообщения + 12 + + <key>ru</key> + <value>Рекомендуется проверить совместимость дополнительных отчетов и обработок с текущей версией программы. + +Устаревшие дополнительные отчеты и обработки могут работать некорректно, в этом случае их необходимо обновить (или временно отключить). </value> + + true + true + + true + + + ТекстСообщенияРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + ТекстСообщенияКонтекстноеМеню + 13 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Сообщение пользователю</value> + + + ГруппаСообщениеПользователюРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаПерейтиКСписку + 3 + true + true + + true + + + ФормаПерейтиКСпискуРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКСписку + Auto + true + true + true + UserCmds + Auto + + + ФормаПроверено + 1 + true + true + + true + + + ФормаПровереноРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Проверено + Auto + true + true + UserCmds + Auto + + + ФормаЗакрыть + 5 + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Закрыть + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + 52 + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Проверено + + <key>ru</key> + <value>Проверено</value> + + 1 + + ru + Не выводить больше это сообщение до следующего обновления программы. + + + true + + + + Проверено + + + DontUse + + + ПерейтиКСписку + + <key>ru</key> + <value>Перейти к списку</value> + + 2 + + true + + + + ПерейтиКСписку + + + DontUse + + + Закрыть + + <key>ru</key> + <value>Отмена</value> + + 3 + + true + + + + ЗакрытьФорму + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Module.bsl" new file mode 100644 index 00000000..edd9e08f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Module.bsl" @@ -0,0 +1,52 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПерейтиКСписку(Команда) + Закрыть(); + + Отборы = Новый Структура; + Отборы.Вставить("Публикация", ПредопределенноеЗначение("Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется")); + Отборы.Вставить("ПометкаУдаления", Ложь); + Отборы.Вставить("ЭтоГруппа", Ложь); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Отбор", Отборы); + ПараметрыФормы.Вставить("Отображение", "Список"); + ПараметрыФормы.Вставить("ПроверкаДополнительныхОтчетовИОбработок", Истина); + + ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаСписка", ПараметрыФормы); +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму(Команда) + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура Проверено(Команда) + ОтметитьВыполнениеДела(); + Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОтметитьВыполнениеДела() + + ВерсияМассив = СтрРазделить(Метаданные.Версия, ".", Ложь); + ТекущаяВерсия = ВерсияМассив[0] + ВерсияМассив[1] + ВерсияМассив[2]; + ХранилищеОбщихНастроек.Сохранить("ТекущиеДела", "ДополнительныеОтчетыИОбработки", ТекущаяВерсия); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Form.form" new file mode 100644 index 00000000..05fb257f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Form.form" @@ -0,0 +1,543 @@ + + + + Разделы + 1 + + <key>ru</key> + <value>Разделы</value> + + true + true + + true + + + Разделы + + false + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + ru + Разделы, в которых будет располагаться команды обработки + + + ГруппаКолонок + 12 + + Используется + 6 + true + true + + true + + + + Разделы.Используется + + + None + + ИспользуетсяExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + + ИспользуетсяКонтекстноеМеню + 7 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + Представление + 10 + true + true + + true + + + + Разделы.Представление + + + + ПредставлениеExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Колонок</value> + + + ГруппаКолонокExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + РазделыКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + РазделыSearchString + 19 + + РазделыSearchStringExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + РазделыSearchStringContextMenu + 20 + true + true + + true + + true + + + true + + + + true + true + + true + + РазделыViewStatus + 22 + + РазделыViewStatusExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + + РазделыViewStatusContextMenu + 23 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РазделыSearchControl + 25 + + РазделыSearchControlExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + РазделыSearchControlContextMenu + 26 + true + true + + true + + true + + SearchControlAddition + + true + + + + РазделыExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + РазделыКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + Row + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + + + Bottom + + ФормаКоманднаяПанель + -1 + + ОК + 8 + true + true + + true + + true + false + + ОКExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + Отмена + 9 + true + true + + true + + false + + ОтменаExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Разделы + + <key>ru</key> + <value>Разделы</value> + + 1 + + ValueTable + + + true + + + true + + + Раздел + 1 + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Используется + + <key>ru</key> + <value>Используется</value> + + 2 + + Boolean + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 3 + + String + + + + true + + + true + + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + true + + + + ОК + + + DontUse + + + ВыделитьВсе + + <key>ru</key> + <value>Выделить все</value> + + 2 + + true + + + StdPicture.CheckAll + + DontUse + + + СнятьВыделениеСоВсех + + <key>ru</key> + <value>Снять выделение со всех</value> + + 3 + + true + + DontUse + + + Разделы + + ValueList + + + + ВидОбработки + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Module.bsl" new file mode 100644 index 00000000..51f14672 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\240\320\260\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\265\320\222\320\240\320\260\320\267\320\264\320\265\320\273\320\260\321\205/Module.bsl" @@ -0,0 +1,67 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Заполнение таблицы доступных разделов. + + ИспользуемыеРазделы = Новый Массив; + Если Параметры.ВидОбработки = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка Тогда + ИспользуемыеРазделы = ДополнительныеОтчетыИОбработки.РазделыДополнительныхОбработок(); + Иначе + ИспользуемыеРазделы = ДополнительныеОтчетыИОбработки.РазделыДополнительныхОтчетов(); + КонецЕсли; + + РабочийСтол = ДополнительныеОтчетыИОбработкиКлиентСервер.ИмяНачальнойСтраницы(); + + Для Каждого Раздел Из ИспользуемыеРазделы Цикл + НоваяСтрока = Разделы.Добавить(); + Если Раздел = РабочийСтол Тогда + НоваяСтрока.Раздел = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); + Иначе + НоваяСтрока.Раздел = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Раздел); + КонецЕсли; + НоваяСтрока.Представление = ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(НоваяСтрока.Раздел); + КонецЦикла; + + Разделы.Сортировать("Представление Возр"); + + // Включение разделов + + Для Каждого ЭлементСписка Из Параметры.Разделы Цикл + НайденнаяСтрока = Разделы.НайтиСтроки(Новый Структура("Раздел", ЭлементСписка.Значение)); + Если НайденнаяСтрока.Количество() = 1 Тогда + НайденнаяСтрока[0].Используется = Истина; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + РезультатВыбора = Новый СписокЗначений; + + Для Каждого РазделЭлемент Из Разделы Цикл + Если РазделЭлемент.Используется Тогда + РезультатВыбора.Добавить(РазделЭлемент.Раздел); + КонецЕсли; + КонецЦикла; + + ОповеститьОВыборе(РезультатВыбора); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..f533b87c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,2070 @@ + + + + ГруппаПользовательскихНастроек + 78 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + БыстрыеОтборы + 22 + + ВидОтбор + 20 + true + true + + true + + + + ВидОтбор + + + + OnChange + ВидОтборПриИзменении + + + ВидОтборExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + ВидОтборКонтекстноеМеню + 21 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + false + true + true + OnActivate + true + true + + ru + Все + + + + + ПубликацияОтбор + 17 + true + true + + true + + + + ПубликацияОтбор + + + + OnChange + ПубликацияОтборПриИзменении + + + ПубликацияОтборExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + ПубликацияОтборКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 26 + true + true + false + true + false + true + true + OnActivate + true + true + + ru + Все + + + + true + true + + true + + + <key>ru</key> + <value>Быстрые отборы</value> + + + БыстрыеОтборыExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + ГруппаПояснениеСервис + 130 + + КартинкаПояснения + 132 + true + true + + true + + + КартинкаПоясненияРасширеннаяПодсказка + 134 + true + true + + true + + Label + true + true + + Left + + + + КартинкаПоясненияКонтекстноеМеню + 133 + true + true + + true + + true + + true + true + + + CommonPicture.Информация32 + + + + + ПояснениеСервис + 127 + + <key>ru</key> + <value>Правила добавления новых и использования существующих дополнительных обработок устанавливает провайдер сервиса. +Обратитесь за консультацией в службу поддержки сервиса или в компанию, которая предоставила доступ.</value> + + true + true + + true + + + ПояснениеСервисРасширеннаяПодсказка + 129 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеСервисКонтекстноеМеню + 128 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Пояснение для сервиса</value> + + + ГруппаПояснениеСервисРасширеннаяПодсказка + 131 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + КоманднаяПанель + 19 + + КнопкиДобавления + 26 + + Создать + 27 + + <key>ru</key> + <value>Добавить из файла...</value> + + true + true + + true + + + СоздатьРасширеннаяПодсказка + 37 + + <key>ru</key> + <value>Добавить из файла на диске...</value> + + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СоздатьГруппу + 28 + true + true + + true + + + СоздатьГруппуРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопки добавления</value> + + + КнопкиДобавленияExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + + + ГруппаЗагрузитьВыгрузить + 99 + + ЗагрузитьИзФайла + 56 + true + true + + true + + + ЗагрузитьИзФайлаРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗагрузитьИзФайла + Auto + true + true + UserCmds + Auto + + + ВыгрузитьВФайл + 58 + true + true + + true + + + ВыгрузитьВФайлРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыгрузитьВФайл + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Загрузить выгрузить</value> + + + ГруппаЗагрузитьВыгрузитьРасширеннаяПодсказка + 100 + true + true + + true + + Label + true + true + + Left + + + + + + ГруппаИзменить + 103 + + ИзменитьПометкуУдаленияБезПрофилей + 105 + true + true + + true + + + ИзменитьПометкуУдаленияБезПрофилейРасширеннаяПодсказка + 106 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ИзменитьВыделенные + 62 + true + true + + true + + + ИзменитьВыделенныеРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Изменить</value> + + + ГруппаИзменитьРасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + + + + КомандыФормы + 30 + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ГруппаИзменениеПубликации + 64 + + Используется + 72 + true + true + + true + + + ИспользуетсяРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПубликацияИспользуется + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + РежимОтладки + 76 + true + true + + true + + + РежимОтладкиРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПубликацияРежимОтладки + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Отключена + 74 + true + true + + true + + + ОтключенаРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПубликацияОтключена + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Публикация</value> + + + ГруппаИзменениеПубликацииРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + Справка + 31 + true + true + + true + + + СправкаExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Copy + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Вид + 13 + true + true + + + + Список.Вид + + + + ВидExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + + ВидКонтекстноеМеню + 14 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 21 + true + true + false + + + + Публикация + 11 + true + true + + true + + + + Список.Публикация + + + + ПубликацияExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + + ПубликацияКонтекстноеМеню + 12 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 12 + true + true + false + + + + Версия + 9 + true + true + + true + + + + Список.Версия + + + + ВерсияExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + + ВерсияКонтекстноеМеню + 10 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 7 + true + true + false + + + + Ответственный + 7 + true + true + + + + Список.Ответственный + + + + ОтветственныйExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + + ОтветственныйКонтекстноеМеню + 8 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ИмяОбъекта + 15 + true + true + + + + Список.ИмяОбъекта + + + + ИмяОбъектаExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + + ИмяОбъектаКонтекстноеМеню + 16 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 49 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 50 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + BeforeAddRow + СписокПередНачаломДобавления + + + true + true + + true + + СписокСтрокаПоиска + 80 + + СписокСтрокаПоискаРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 81 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 83 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 84 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 86 + + СписокУправлениеПоискомРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 87 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + КнопкиДобавленияМеню + 111 + + СоздатьМеню + 113 + true + true + + true + + + СоздатьМенюРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СоздатьГруппуМеню + 115 + true + true + + true + + + СоздатьГруппуМенюРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопки добавления</value> + + + КнопкиДобавленияМенюРасширеннаяПодсказка + 112 + true + true + + true + + Label + true + true + + Left + + + + + + ГруппаИзменениеПубликацииМеню + 119 + + ИспользуетсяМеню + 121 + true + true + + true + + + ИспользуетсяМенюРасширеннаяПодсказка + 122 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПубликацияИспользуется + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + РежимОтладкиМеню + 123 + true + true + + true + + + РежимОтладкиМенюРасширеннаяПодсказка + 124 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПубликацияРежимОтладки + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ОтключенаМеню + 125 + true + true + + true + + + ОтключенаМенюРасширеннаяПодсказка + 126 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПубликацияОтключена + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Публикация</value> + + + ГруппаИзменениеПубликацииМенюРасширеннаяПодсказка + 120 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ГруппаИзменитьМеню + 107 + + ИзменитьПометкуУдаленияБезПрофилейМеню + 109 + true + true + + true + + + ИзменитьПометкуУдаленияБезПрофилейМенюРасширеннаяПодсказка + 110 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ИзменитьВыделенныеМеню + 60 + true + true + + true + + + ИзменитьВыделенныеМенюРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Изменить меню</value> + + + ГруппаИзменитьМенюРасширеннаяПодсказка + 108 + true + true + + true + + Label + true + true + + Left + + + + + + ГруппаЗагрузитьВыгрузитьМеню + 101 + + ЗагрузитьИзФайлаМеню + 54 + true + true + + true + + + ЗагрузитьИзФайлаМенюРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗагрузитьИзФайла + Auto + true + true + UserCmds + Auto + + + ВыгрузитьВФайлМеню + 52 + true + true + + true + + + ВыгрузитьВФайлМенюРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыгрузитьВФайл + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Загрузить выгрузить меню</value> + + + ГруппаЗагрузитьВыгрузитьМенюРасширеннаяПодсказка + 102 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + Tree + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
+ None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + SetDeletionMark + Use + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.DeletionMark + + + Список.Description + + + Список.IsFolder + + + Список.Ref + + + Список.ИмяОбъекта + + + Список.ИмяФайла + + + Список.Публикация + + + Список.ЭтоОтчет + +
true
+ + ВЫБРАТЬ + Таблица.Ссылка, + Таблица.ПометкаУдаления, + Таблица.Наименование, + Таблица.Версия, + Таблица.Ответственный, + Таблица.Публикация, + Таблица.Вид, + Таблица.ИмяОбъекта, + Таблица.ЭтоГруппа, + ВЫБОР + КОГДА Таблица.Вид В (&ВидыДопОтчетов) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ЭтоОтчет, + Таблица.ИмяФайла +ИЗ + Справочник.ДополнительныеОтчетыИОбработки КАК Таблица +ГДЕ + ВЫБОР + КОГДА Таблица.ЭтоГруппа + ТОГДА ИСТИНА + КОГДА &ПубликацияОтбор = НЕОПРЕДЕЛЕНО + ТОГДА ИСТИНА + КОГДА &ПубликацияОтбор = 1 + ТОГДА Таблица.Публикация В (&ВсеПубликацииКромеНеиспользующихся) + ИНАЧЕ Таблица.Публикация = &ПубликацияОтбор + КОНЕЦ + И ВЫБОР + КОГДА Таблица.ЭтоГруппа + ТОГДА ИСТИНА + КОГДА &ВидОтбор = НЕОПРЕДЕЛЕНО + ТОГДА ИСТИНА + КОГДА &ВидОтбор = 1 + ТОГДА Таблица.Вид В (&ВидыДопОтчетов) + КОГДА &ВидОтбор = 2 + ТОГДА НЕ Таблица.Вид В (&ВидыДопОтчетов) + ИНАЧЕ Таблица.Вид = &ВидОтбор + КОНЕЦ + Catalog.ДополнительныеОтчетыИОбработки + true + true + true + true + true + +
+ + ПубликацияОтбор + + <key>ru</key> + <value>Публикация</value> + + 2 + + + true + + + true + + + ПубликацияОтбор + + + + ВидОтбор + + <key>ru</key> + <value>Вид</value> + + 3 + + + true + + + true + + + ВидОтбор + + + + ПрофилиИспользуются + 4 + + Boolean + + + true + + + true + + + + ВыгрузитьВФайл + + <key>ru</key> + <value>Сохранить как...</value> + + 1 + + ru + Выгрузить обработку (отчет) в файл на компьютер + + + true + + + CommonPicture.СохранитьФайлКак + + + + ВыгрузитьВФайл + + + FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме + TextPicture + DontUse + + + ЗагрузитьИзФайла + + <key>ru</key> + <value>Обновить из файла...</value> + + 2 + + ru + Обновить обработку (отчет) из файла на компьютере + + + true + + + CommonPicture.ОбновитьФайлИзФайлаНаДиске + + + + ЗагрузитьФайлОбработкиОтчета + + + FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме + TextPicture + DontUse + + + ИзменитьВыделенные + + <key>ru</key> + <value>Изменить выделенные...</value> + + 3 + + ru + Изменить выделенные объекты + + + true + + + + ИзменитьВыделенные + + + FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме + DontUse + + + ПубликацияРежимОтладки + + <key>ru</key> + <value>Режим отладки</value> + + 4 + + true + + + + ПубликацияРежимОтладки + + + DontUse + + + ПубликацияОтключена + + <key>ru</key> + <value>Отключена</value> + + 5 + + true + + + + ПубликацияОтключена + + + DontUse + + + ПубликацияИспользуется + + <key>ru</key> + <value>Используется</value> + + 6 + + true + + + + ПубликацияИспользуется + + + DontUse + + + Заголовок + + String + + + + + + + + 0:4ef362ee-0350-49fe-b40a-3ffa1576aa36 + FormCommandBarImportant + 0 + + + + 0:4769b1a9-c88a-4d5e-9520-ea46da1ac861 + FormCommandBarImportant + 2 + + + + 0:1ea304f6-8e8f-4479-aceb-086cf9709ce7 + FormCommandBarImportant + 1 + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..bf650807 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,316 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + УстановитьУсловноеОформление(); + + Если Параметры.РежимВыбора Тогда + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.Заголовок) Тогда + АвтоЗаголовок = Ложь; + Заголовок = Параметры.Заголовок; + КонецЕсли; + Если Параметры.Свойство("Отображение") Тогда + Элементы.Список.Отображение = ОтображениеТаблицы[Параметры.Отображение]; + КонецЕсли; + + СписокВыбораПубликаций = Элементы.ПубликацияОтбор.СписокВыбора; + + ВидИспользуется = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется; + ВидРежимОтладки = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки; + + ДоступныеВидыПубликации = ДополнительныеОтчетыИОбработкиПовтИсп.ДоступныеВидыПубликации(); + + ВсеПубликацииКромеНеиспользующихся = Новый Массив; + ВсеПубликацииКромеНеиспользующихся.Добавить(ВидИспользуется); + Если ДоступныеВидыПубликации.Найти(ВидРежимОтладки) <> Неопределено Тогда + ВсеПубликацииКромеНеиспользующихся.Добавить(ВидРежимОтладки); + КонецЕсли; + Если ВсеПубликацииКромеНеиспользующихся.Количество() > 1 Тогда + ПредставлениеМассива = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 или %2'"), + Строка(ВсеПубликацииКромеНеиспользующихся[0]), + Строка(ВсеПубликацииКромеНеиспользующихся[1])); + СписокВыбораПубликаций.Добавить(1, ПредставлениеМассива); + КонецЕсли; + Для Каждого ЗначениеПеречисления Из Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок Цикл + Если ДоступныеВидыПубликации.Найти(ЗначениеПеречисления) <> Неопределено Тогда + СписокВыбораПубликаций.Добавить(ЗначениеПеречисления, Строка(ЗначениеПеречисления)); + КонецЕсли; + КонецЦикла; + + Если Параметры.Отбор.Свойство("Публикация") Тогда + ПубликацияОтбор = Параметры.Отбор.Публикация; + Параметры.Отбор.Удалить("Публикация"); + Если СписокВыбораПубликаций.НайтиПоЗначению(ПубликацияОтбор) = Неопределено Тогда + ПубликацияОтбор = Неопределено; + КонецЕсли; + КонецЕсли; + + СписокВыбора = Элементы.ВидОтбор.СписокВыбора; + СписокВыбора.Добавить(1, НСтр("ru = 'Только отчеты'")); + СписокВыбора.Добавить(2, НСтр("ru = 'Только обработки'")); + Для Каждого ЗначениеПеречисления Из Перечисления.ВидыДополнительныхОтчетовИОбработок Цикл + СписокВыбора.Добавить(ЗначениеПеречисления, Строка(ЗначениеПеречисления)); + КонецЦикла; + + ВидыДопОтчетов = Новый Массив; + ВидыДопОтчетов.Добавить(Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет); + ВидыДопОтчетов.Добавить(Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет); + + Список.Параметры.УстановитьЗначениеПараметра("ПубликацияОтбор", ПубликацияОтбор); + Список.Параметры.УстановитьЗначениеПараметра("ВидОтбор", ВидОтбор); + Список.Параметры.УстановитьЗначениеПараметра("ВидыДопОтчетов", ВидыДопОтчетов); + Список.Параметры.УстановитьЗначениеПараметра("ВсеПубликацииКромеНеиспользующихся", ВсеПубликацииКромеНеиспользующихся); + + ПравоДобавления = ДополнительныеОтчетыИОбработки.ПравоДобавления(); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Создать", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СоздатьМеню", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СоздатьГруппу", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СоздатьГруппуМеню", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Скопировать", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СкопироватьМеню", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ЗагрузитьИзФайла", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ЗагрузитьИзФайлаМеню", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ВыгрузитьВФайл", "Видимость", ПравоДобавления); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ВыгрузитьВФайлМеню", "Видимость", ПравоДобавления); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") + Или Не ПравоДоступа("Изменение", Метаданные.Справочники.ДополнительныеОтчетыИОбработки) Тогда + Элементы.ИзменитьВыделенные.Видимость = Ложь; + Элементы.ИзменитьВыделенныеМеню.Видимость = Ложь; + КонецЕсли; + + Если Параметры.Свойство("ПроверкаДополнительныхОтчетовИОбработок") Тогда + Элементы.Создать.Видимость = Ложь; + Элементы.СоздатьГруппу.Видимость = Ложь; + КонецЕсли; + + Элементы.ГруппаПояснениеСервис.Видимость = ОбщегоНазначения.РазделениеВключено(); + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + Если Не ЗначениеЗаполнено(ПубликацияОтбор) Тогда + ПубликацияОтбор = Настройки.Получить("ПубликацияОтбор"); + Список.Параметры.УстановитьЗначениеПараметра("ПубликацияОтбор", ПубликацияОтбор); + КонецЕсли; + ВидОтбор = Настройки.Получить("ВидОтбор"); + Список.Параметры.УстановитьЗначениеПараметра("ВидОтбор", ВидОтбор); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПубликацияОтборПриИзменении(Элемент) + ЗначениеПараметраКД = Список.Параметры.Элементы.Найти("ПубликацияОтбор"); + Если ЗначениеПараметраКД.Значение <> ПубликацияОтбор Тогда + ЗначениеПараметраКД.Значение = ПубликацияОтбор; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ВидОтборПриИзменении(Элемент) + ЗначениеПараметраКД = Список.Параметры.Элементы.Найти("ВидОтбор"); + Если ЗначениеПараметраКД.Значение <> ВидОтбор Тогда + ЗначениеПараметраКД.Значение = ВидОтбор; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Если Копирование Тогда + Отказ = Истина; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыгрузитьВФайл(Команда) + ДанныеСтроки = Элементы.Список.ТекущиеДанные; + Если ДанныеСтроки = Неопределено Или Не ВыбранЭлемент(ДанныеСтроки) Тогда + Возврат; + КонецЕсли; + + ПараметрыВыгрузки = Новый Структура; + ПараметрыВыгрузки.Вставить("Ссылка", ДанныеСтроки.Ссылка); + ПараметрыВыгрузки.Вставить("ЭтоОтчет", ДанныеСтроки.ЭтоОтчет); + ПараметрыВыгрузки.Вставить("ИмяФайла", ДанныеСтроки.ИмяФайла); + ДополнительныеОтчетыИОбработкиКлиент.ВыгрузитьВФайл(ПараметрыВыгрузки); +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьФайлОбработкиОтчета(Команда) + ДанныеСтроки = Элементы.Список.ТекущиеДанные; + Если ДанныеСтроки = Неопределено Или Не ВыбранЭлемент(ДанныеСтроки) Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ключ", ДанныеСтроки.Ссылка); + ПараметрыФормы.Вставить("ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии", Истина); + ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.ФормаОбъекта", ПараметрыФормы); +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьВыделенные(Команда) + МодульГрупповоеИзменениеОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ГрупповоеИзменениеОбъектовКлиент"); + МодульГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура ПубликацияИспользуется(Команда) + ИзменитьПубликацию("Используется"); +КонецПроцедуры + +&НаКлиенте +Процедура ПубликацияОтключена(Команда) + ИзменитьПубликацию("Отключена"); +КонецПроцедуры + +&НаКлиенте +Процедура ПубликацияРежимОтладки(Команда) + ИзменитьПубликацию("РежимОтладки"); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ВыбранЭлемент(ДанныеСтроки) + Если ТипЗнч(ДанныеСтроки.Ссылка) <> Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Команда не может быть выполнена для указанного объекта. + |Выберите дополнительный отчет или обработку.'")); + Возврат Ложь; + КонецЕсли; + Если ДанныеСтроки.ЭтоГруппа Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Команда не может быть выполнена для группы. + |Выберите дополнительный отчет или обработку.'")); + Возврат Ложь; + КонецЕсли; + Возврат Истина; +КонецФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + // + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Публикация"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныеДанныеЦвет); + // + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Публикация"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьПубликацию(ВариантПубликации) + + ОчиститьСообщения(); + + ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки; + КоличествоСтрок = ВыделенныеСтроки.Количество(); + Если КоличествоСтрок = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не выбран ни один дополнительный отчет (обработка)'")); + Возврат; + КонецЕсли; + + ИзменениеПубликации(ВариантПубликации); + + Если КоличествоСтрок = 1 Тогда + ТекстСообщения = НСтр("ru = 'Изменена публикация дополнительного отчета (обработки) ""%1""'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, Строка(ВыделенныеСтроки[0])); + Иначе + ТекстСообщения = НСтр("ru = 'Изменена публикация у дополнительных отчетов (обработок): %1'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, КоличествоСтрок); + КонецЕсли; + + ПоказатьОповещениеПользователя(НСтр("ru = 'Изменена публикация'"),, ТекстСообщения); + +КонецПроцедуры + +&НаСервере +Процедура ИзменениеПубликации(ВариантПубликации) + ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки; + + НачатьТранзакцию(); + Попытка + Для Каждого ДополнительныйОтчетИлиОбработка Из ВыделенныеСтроки Цикл + ЗаблокироватьДанныеДляРедактирования(ДополнительныйОтчетИлиОбработка); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ДополнительныеОтчетыИОбработки"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ДополнительныйОтчетИлиОбработка); + Блокировка.Заблокировать(); + КонецЦикла; + + Для Каждого ДополнительныйОтчетИлиОбработка Из ВыделенныеСтроки Цикл + Объект = ДополнительныйОтчетИлиОбработка.ПолучитьОбъект(); + Если ВариантПубликации = "Используется" Тогда + Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется; + ИначеЕсли ВариантПубликации = "РежимОтладки" Тогда + Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки; + Иначе + Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена; + КонецЕсли; + + Объект.ДополнительныеСвойства.Вставить("ПроверкаСписка"); + Если Не Объект.ПроверитьЗаполнение() Тогда + ПредставлениеОшибки = ""; + МассивСообщений = ПолучитьСообщенияПользователю(Истина); + Для Каждого СообщениеПользователю Из МассивСообщений Цикл + ПредставлениеОшибки = ПредставлениеОшибки + СообщениеПользователю.Текст + Символы.ПС; + КонецЦикла; + + ВызватьИсключение ПредставлениеОшибки; + КонецЕсли; + + Объект.Записать(); + КонецЦикла; + + РазблокироватьДанныеДляРедактирования(); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + РазблокироватьДанныеДляРедактирования(); + ВызватьИсключение; + КонецПопытки; + Элементы.Список.Обновить(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..d719e927 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,4788 @@ + + + + ГруппаНаименованиеРежимРаботы + 384 + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ГруппаБезопасныйРежимГлобальный + 382 + + ДекорацияБезопасныйРежимЛожьНадпись + 374 + + <key>ru</key> + <value>Режим работы:<colorstyle 0:b9627855-6773-4a59-b7d3-f9e2e565cd9e> </><colorstyle 0:b9627855-6773-4a59-b7d3-f9e2e565cd9e>Не безопасный</></value> + + true + true + + true + + Button + + ДекорацияБезопасныйРежимЛожьНадписьРасширеннаяПодсказка + 376 + + <key>ru</key> + <value>Этот отчет или обработка будет подключаться к программе в небезопасном режиме! +Подробно о режимах подключения дополнительных отчетов и обработок к программе см. информацию в справке к форме.</value> + + true + true + + true + + Label + true + true + + Left + + + + ДекорацияБезопасныйРежимЛожьНадписьКонтекстноеМеню + 375 + true + true + + true + + true + + true + Label + true + + Left + + + + ДекорацияБезопасныйРежимИстинаНадпись + 379 + + <key>ru</key> + <value>Режим работы: <colorstyle 0:0da019ca-1fc7-4aff-8998-3ddcccf10872>Безопасный</></value> + + true + true + + true + + Button + + ДекорацияБезопасныйРежимИстинаНадписьРасширеннаяПодсказка + 381 + + <key>ru</key> + <value>Этот отчет или обработка будет подключаться к программе в безопасном режиме. +Подробно о режимах подключения дополнительных отчетов и обработок см. информацию в справке к форме.</value> + + true + true + + true + + Label + true + true + + Left + + + + ДекорацияБезопасныйРежимИстинаНадписьКонтекстноеМеню + 380 + true + true + + true + + true + + true + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Безопасный режим глобальный</value> + + + ГруппаБезопасныйРежимГлобальныйРасширеннаяПодсказка + 383 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наименование режим работы</value> + + + ГруппаНаименованиеРежимРаботыРасширеннаяПодсказка + 385 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПубликацияОтветственный + 60 + + Публикация + 43 + true + true + + true + + + + Объект.Публикация + + + Left + + ПубликацияExtendedTooltip + 180 + true + true + + true + + Label + true + true + + Left + + + + ПубликацияКонтекстноеМеню + 44 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + Tumbler + + + Enum.ВариантыПубликацииДополнительныхОтчетовИОбработок.EnumValue.Используется + + + + + Enum.ВариантыПубликацииДополнительныхОтчетовИОбработок.EnumValue.РежимОтладки + + + + + Enum.ВариантыПубликацииДополнительныхОтчетовИОбработок.EnumValue.Отключена + + + + + true + true + + true + + + <key>ru</key> + <value>Публикация ответственный</value> + + + ГруппаПубликацияОтветственныйExtendedTooltip + 179 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Страницы + 314 + + Параметры + 316 + true + true + + true + + + <key>ru</key> + <value>Параметры</value> + + + ПараметрыРасширеннаяПодсказка + 317 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 315 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + СтраницыВариантыКомандыРазрешения + 80 + + СтраницаВарианты + 81 + + СтраницыВарианты + 83 + + ВариантыСкрытьДоЗаписи + 84 + + ВариантыИнформационнаяНадпись + 85 + + <key>ru</key> + <value>Для просмотра и изменения вариантов +необходимо записать дополнительный отчет, +указав в поле Публикация "Используется".</value> + + true + true + + true + + + ВариантыИнформационнаяНадписьExtendedTooltip + 192 + true + true + + true + + Label + true + true + + Left + + + + ВариантыИнформационнаяНадписьКонтекстноеМеню + 86 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + + КомандаЗаписатьДляВариантовОтчетов + 248 + true + true + + true + + + КомандаЗаписатьДляВариантовОтчетовРасширеннаяПодсказка + 249 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.КомандаЗаписать + PictureAndText + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Варианты скрыть до записи</value> + + true + + ВариантыСкрытьДоЗаписиExtendedTooltip + 191 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + ВариантыПоказать + 88 + + ВариантыДополнительногоОтчета + 89 + + <key>ru</key> + <value>Варианты дополнительного отчета</value> + + true + true + + true + + + ВариантыДополнительногоОтчета + + None + Add + Copy + EndEdit + MoveDown + MoveUp + SelectAll + + ВариантыДополнительногоОтчетаНаименование + 98 + true + true + + true + + + + ВариантыДополнительногоОтчета.Наименование + + + + ВариантыДополнительногоОтчетаНаименованиеExtendedTooltip + 208 + true + true + + true + + Label + true + true + + Left + + + + ВариантыДополнительногоОтчетаНаименованиеКонтекстноеМеню + 99 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ВариантыДополнительногоОтчетаКоманднаяПанель + 91 + + ВариантыДополнительногоОтчетаПоискИВывестиСписок + 113 + + ВариантыДополнительногоОтчетаНайти + 101 + true + true + + true + + + ВариантыДополнительногоОтчетаНайтиExtendedTooltip + 200 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВариантыДополнительногоОтчета.StandardCommand.Find + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВариантыДополнительногоОтчетаОтменитьПоиск + 102 + true + true + + true + + + ВариантыДополнительногоОтчетаОтменитьПоискExtendedTooltip + 201 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВариантыДополнительногоОтчета.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВариантыДополнительногоОтчетаВывестиСписок + 112 + true + true + + true + + + ВариантыДополнительногоОтчетаВывестиСписокExtendedTooltip + 202 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВариантыДополнительногоОтчета.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Группа поиск и вывести список</value> + + + ВариантыДополнительногоОтчетаПоискИВывестиСписокExtendedTooltip + 199 + true + true + + true + + Label + true + true + + Left + + + + + + ВариантыДополнительногоОтчетаОткрыть + 94 + true + true + + true + + + ВариантыДополнительногоОтчетаОткрытьExtendedTooltip + 203 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВариантыДополнительногоОтчетаОткрыть + Auto + true + true + UserCmds + Auto + + + ВариантыДополнительногоОтчетаИзменить + 111 + + <key>ru</key> + <value>Изменить...</value> + + true + true + + true + + + ВариантыДополнительногоОтчетаИзменитьExtendedTooltip + 204 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВариантыДополнительногоОтчета.StandardCommand.Change + PictureAndText + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ВариантыДополнительногоОтчетаРазместитьВРазделах + 103 + true + true + + true + + + ВариантыДополнительногоОтчетаРазместитьВРазделахExtendedTooltip + 205 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РазместитьВРазделах + Auto + true + true + UserCmds + Auto + + + ВариантыДополнительногоОтчетаУдалить + 104 + true + true + + true + + + ВариантыДополнительногоОтчетаУдалитьExtendedTooltip + 206 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВариантыДополнительногоОтчета.StandardCommand.Delete + Auto + true + true + UserCmds + + StdPicture.MarkToDelete + + Auto + + true + true + + true + + Left + true + + + BeforeAddRow + ВариантыДополнительногоОтчетаПередНачаломДобавления + + + BeforeDeleteRow + ВариантыДополнительногоОтчетаПередУдалением + + + BeforeRowChange + ВариантыДополнительногоОтчетаПередНачаломИзменения + + + true + true + + true + + ВариантыДополнительногоОтчетаСтрокаПоиска + 344 + + ВариантыДополнительногоОтчетаСтрокаПоискаРасширеннаяПодсказка + 346 + true + true + + true + + Label + true + true + + Left + + + + ВариантыДополнительногоОтчетаСтрокаПоискаКонтекстноеМеню + 345 + true + true + + true + + true + + + true + + + + true + true + + true + + ВариантыДополнительногоОтчетаСостояниеПросмотра + 347 + + ВариантыДополнительногоОтчетаСостояниеПросмотраРасширеннаяПодсказка + 349 + true + true + + true + + Label + true + true + + Left + + + + ВариантыДополнительногоОтчетаСостояниеПросмотраКонтекстноеМеню + 348 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВариантыДополнительногоОтчетаУправлениеПоиском + 350 + + ВариантыДополнительногоОтчетаУправлениеПоискомРасширеннаяПодсказка + 352 + true + true + + true + + Label + true + true + + Left + + + + ВариантыДополнительногоОтчетаУправлениеПоискомКонтекстноеМеню + 351 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВариантыДополнительногоОтчетаExtendedTooltip + 207 + true + true + + true + + Label + true + true + + Left + + + + ВариантыДополнительногоОтчетаКонтекстноеМеню + 90 + + ВариантыДополнительногоОтчетаОткрыть1 + 114 + true + true + + true + + + ВариантыДополнительногоОтчетаОткрыть1ExtendedTooltip + 195 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВариантыДополнительногоОтчетаОткрыть + Auto + true + true + UserCmds + Auto + + + ВариантыДополнительногоОтчетаИзменить1 + 115 + + <key>ru</key> + <value>Изменить...</value> + + true + true + + true + + + ВариантыДополнительногоОтчетаИзменить1ExtendedTooltip + 196 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВариантыДополнительногоОтчета.StandardCommand.Change + PictureAndText + true + true + UserCmds + Auto + + + ВариантыДополнительногоОтчетаРазместитьВРазделах1 + 116 + true + true + + true + + + ВариантыДополнительногоОтчетаРазместитьВРазделах1ExtendedTooltip + 197 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РазместитьВРазделах + Auto + true + true + UserCmds + Auto + + + ВариантыДополнительногоОтчетаУдалить1 + 117 + true + true + + true + + + ВариантыДополнительногоОтчетаУдалить1ExtendedTooltip + 198 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ВариантыДополнительногоОтчета.StandardCommand.Delete + Auto + true + true + UserCmds + + StdPicture.MarkToDelete + + Auto + + true + true + + true + + true + + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + + ВариантыДополнительногоОтчета.ИндексКартинки + + + CommonPicture.ПиктограммыЭлементов + + + + true + true + + true + + + <key>ru</key> + <value>Варианты показать</value> + + true + + ВариантыПоказатьExtendedTooltip + 194 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы варианты</value> + + true + + СтраницыВариантыExtendedTooltip + 190 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Варианты отчета</value> + + + СтраницаВариантыExtendedTooltip + 189 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаКоманды + 164 + + ГруппаРазмещение + 389 + + РазмещениеКоманд + 167 + + <key>ru</key> + <value>Размещение</value> + + true + true + + true + + + + ПредставлениеНазначения + + + + РазмещениеКомандExtendedTooltip + 210 + true + true + + true + + Label + true + true + + Left + + + + РазмещениеКомандКонтекстноеМеню + 168 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + РазмещениеКомандНажатие + + true + true + + + + НастроитьВидимость + 400 + true + true + + true + + + НастроитьВидимостьРасширеннаяПодсказка + 401 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.НастроитьВидимость + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Размещение</value> + + + ГруппаРазмещениеРасширеннаяПодсказка + 390 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ТипыФорм + 62 + + Показывать + 143 + + <key>ru</key> + <value>Показывать:</value> + + true + true + + true + + + ПоказыватьExtendedTooltip + 183 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьКонтекстноеМеню + 144 + true + true + + true + + true + + Label + + Left + + + + ИспользоватьДляФормыСписка + 71 + + <key>ru</key> + <value>В списках</value> + + true + true + + true + + + + Объект.ИспользоватьДляФормыСписка + + + Right + + OnChange + ИспользоватьДляФормыСпискаПриИзменении + + + ИспользоватьДляФормыСпискаExtendedTooltip + 184 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьДляФормыСпискаКонтекстноеМеню + 72 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ИспользоватьДляФормыОбъекта + 69 + + <key>ru</key> + <value>В формах элементов справочников и документов</value> + + true + true + + true + + + + Объект.ИспользоватьДляФормыОбъекта + + + Right + + OnChange + ИспользоватьДляФормыОбъектаПриИзменении + + + ИспользоватьДляФормыОбъектаExtendedTooltip + 185 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьДляФормыОбъектаКонтекстноеМеню + 70 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Типы форм</value> + + + ТипыФормExtendedTooltip + 182 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + КоманднаяПанельОбъектКоманды + 405 + + ВыполнитьКоманду + 407 + true + true + + true + + + ВыполнитьКомандуРасширеннаяПодсказка + 408 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьКоманду + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель объект команды</value> + + + КоманднаяПанельОбъектКомандыРасширеннаяПодсказка + 406 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ОбъектКоманды + 147 + + <key>ru</key> + <value>Объект команды</value> + + true + true + + true + + + Объект.Команды + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + SelectAll + SortListAsc + SortListDesc + + ОбъектКомандыПредставление + 156 + true + true + + true + + + + Объект.Команды.Представление + + + + ОбъектКомандыПредставлениеExtendedTooltip + 214 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыПредставлениеКонтекстноеМеню + 157 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + 10 + true + true + true + true + true + + + + ОбъектКомандыБыстрыйДоступПредставление + 158 + true + true + + true + + + + Объект.Команды.БыстрыйДоступПредставление + + + + ru + Пользователи, которым выведена команда. + + + ОбъектКомандыБыстрыйДоступПредставлениеExtendedTooltip + 215 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыБыстрыйДоступПредставлениеКонтекстноеМеню + 159 + true + true + + true + + true + + InputField + true + Left + true + + + StartChoice + ОбъектКомандыБыстрыйДоступПредставлениеНачалоВыбора + + + Clearing + ОбъектКомандыБыстрыйДоступПредставлениеОчистка + + 1 + true + true + false + true + true + true + OnActivate + true + + + + ОбъектКомандыРегламентноеЗаданиеИспользование + 160 + true + true + + true + + + + Объект.Команды.РегламентноеЗаданиеИспользование + + + None + + ru + Выполнять команду по расписанию + + + OnChange + ОбъектКомандыРегламентноеЗаданиеИспользованиеПриИзменении + + + ОбъектКомандыРегламентноеЗаданиеИспользованиеExtendedTooltip + 216 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыРегламентноеЗаданиеИспользованиеКонтекстноеМеню + 161 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + + StdPicture.SetTime + + Left + true + + + + ОбъектКомандыРегламентноеЗаданиеПредставление + 162 + true + true + + true + + + + Объект.Команды.РегламентноеЗаданиеПредставление + + + + ru + Расписание выполнения команды. + + + ОбъектКомандыРегламентноеЗаданиеПредставлениеExtendedTooltip + 217 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыРегламентноеЗаданиеПредставлениеКонтекстноеМеню + 163 + true + true + + true + + true + + InputField + true + Left + true + + + StartChoice + ОбъектКомандыРегламентноеЗаданиеПредставлениеНачалоВыбора + + + Clearing + ОбъектКомандыРегламентноеЗаданиеПредставлениеОчистка + + 12 + true + true + true + true + true + OnActivate + true + true + + + + ОбъектКомандыКомментарий + 386 + true + true + + true + + + + Объект.Команды.Комментарий + + + + ОбъектКомандыКомментарийРасширеннаяПодсказка + 388 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыКомментарийКонтекстноеМеню + 387 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + None + + ОбъектКомандыКоманднаяПанель + 149 + true + true + + true + + Left + true + + + BeforeAddRow + ОбъектКомандыПередНачаломДобавления + + + BeforeDeleteRow + ОбъектКомандыПередУдалением + + + true + true + + true + + ОбъектКомандыСтрокаПоиска + 335 + + ОбъектКомандыСтрокаПоискаРасширеннаяПодсказка + 337 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыСтрокаПоискаКонтекстноеМеню + 336 + true + true + + true + + true + + + true + + + + true + true + + true + + ОбъектКомандыСостояниеПросмотра + 338 + + ОбъектКомандыСостояниеПросмотраРасширеннаяПодсказка + 340 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыСостояниеПросмотраКонтекстноеМеню + 339 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОбъектКомандыУправлениеПоиском + 341 + + ОбъектКомандыУправлениеПоискомРасширеннаяПодсказка + 343 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыУправлениеПоискомКонтекстноеМеню + 342 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОбъектКомандыExtendedTooltip + 213 + true + true + + true + + Label + true + true + + Left + + + + ОбъектКомандыКонтекстноеМеню + 148 + + ОбъектКомандыНастроитьБыстрыйДоступ + 165 + true + true + + true + + + ОбъектКомандыНастроитьБыстрыйДоступExtendedTooltip + 211 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбъектКомандыНастроитьБыстрыйДоступ + Auto + true + true + UserCmds + Auto + + + ОбъектКомандыНастроитьРасписание + 166 + true + true + + true + + + ОбъектКомандыНастроитьРасписаниеExtendedTooltip + 212 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбъектКомандыНастроитьРасписание + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + false + false + Auto + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Команды</value> + + + СтраницаКомандыExtendedTooltip + 209 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + СтраницаРазрешения + 259 + + ГруппаБезопасныйРежимСРазрешениями + 287 + + ДекорацияБезопасныйРежимСРазрешениямиПиктограмма + 267 + + <key>ru</key> + <value>Декорация безопасный режим с разрешениями пиктограмма</value> + + true + true + + true + + + ДекорацияБезопасныйРежимСРазрешениямиПиктограммаРасширеннаяПодсказка + 269 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияБезопасныйРежимСРазрешениямиПиктограммаКонтекстноеМеню + 268 + true + true + + true + + true + + true + true + true + + + CommonPicture.ИнформацияПоНедоступнымПолям + + + + + СтраницыБезопасныйРежимСРазрешениями + 263 + + СтраницаПерсональныйПрофильБезопасности + 289 + + ДекорацияПерсональныйПрофильБезопасностиНадпись + 295 + + <key>ru</key> + <value>Дополнительный отчет или обработка будет подключаться к программе с использованием "персонального" +профиля безопасности %1, в котором будут разрешены только следующие операции:</value> + + true + true + + true + + + ДекорацияПерсональныйПрофильБезопасностиНадписьРасширеннаяПодсказка + 297 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПерсональныйПрофильБезопасностиНадписьКонтекстноеМеню + 296 + true + true + + true + + true + + Label + true + + Style.FieldSelectionBackColor + + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Страница персональный профиль безопасности</value> + + + СтраницаПерсональныйПрофильБезопасностиРасширеннаяПодсказка + 290 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаНебезопасныйРежимСРазрешениями + 293 + + ДекорацияНебезопасныйРежимНадпись + 298 + + <key>ru</key> + <value>Дополнительный отчет или обработка будет подключаться к программе без установки безопасного режима, +т.к. для корректной работы дополнительного отчета или обработки требуется выполнение следующих операций +с внешними ресурсами:</value> + + true + true + + true + + + ДекорацияНебезопасныйРежимНадписьРасширеннаяПодсказка + 300 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияНебезопасныйРежимНадписьКонтекстноеМеню + 299 + true + true + + true + + true + + Label + true + + Style.SpecialTextColor + + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Страница небезопасный режим с разрешениями</value> + + + СтраницаНебезопасныйРежимСРазрешениямиРасширеннаяПодсказка + 294 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаБезопасныйРежимСРазрешениями + 291 + + ДекорацияБезопасныйРежимСРазрешениямиНадпись + 301 + + <key>ru</key> + <value>Дополнительный отчет или обработка будет подключаться к программе в безопасном режиме с предоставлением +дополнительных разрешений:</value> + + true + true + + true + + + ДекорацияБезопасныйРежимСРазрешениямиНадписьРасширеннаяПодсказка + 303 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияБезопасныйРежимСРазрешениямиНадписьКонтекстноеМеню + 302 + true + true + + true + + true + + Label + true + + Style.FieldSelectionBackColor + + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Страница безопасный режим с разрешениями</value> + + + СтраницаБезопасныйРежимСРазрешениямиРасширеннаяПодсказка + 292 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы безопасный режим с разрешениями</value> + + + СтраницыБезопасныйРежимСРазрешениямиРасширеннаяПодсказка + 264 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Безопасный режим с разрешениями</value> + + + ГруппаБезопасныйРежимСРазрешениямиРасширеннаяПодсказка + 288 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаСтраницыРежимыСовместимостиРазрешений + 261 + + СтраницаРазрешенияВерсия_2_2_2 + 250 + + ПредставлениеРазрешений_2_2_2 + 252 + true + true + + true + + + + ПредставлениеРазрешений_2_2_2 + + + None + + ПредставлениеРазрешений_2_2_2РасширеннаяПодсказка + 254 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеРазрешений_2_2_2КонтекстноеМеню + 253 + true + true + + true + + true + + SpreadsheetDocumentField + Enter + true + Left + true + + 20 + true + 1 + true + true + true + Special + ScrollAlways + ScrollAlways + Always + Auto + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Разрешения (режим совместимости разрешений "Версия 2.2.3")</value> + + + СтраницаРазрешенияВерсия_2_2_2РасширеннаяПодсказка + 251 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы режимы совместимости разрешений</value> + + + ГруппаСтраницыРежимыСовместимостиРазрешенийРасширеннаяПодсказка + 262 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ГруппаВключениеПрофилейБезопасности + 304 + + ДекорацияВключениеПрофилейБезопасностиНадпись + 306 + + <key>ru</key> + <value>Для того, чтобы "изолировать" возможность обращения к внешних ресурсам из кода дополнительного отчета +или обработки только вышеперечисленными операциями, требуется <link int://sp-on>включить использование профилей безопасности</>. +При этом для дополнительного отчета или обработки будет создан "персональный" профиль безопасности, содержащий +разрешения только на выполнение явно одобренных операций и подключение дополнительного отчета или обработке к +программе без установки безопасного режима больше не будет требоваться.</value> + + true + true + + true + + + ДекорацияВключениеПрофилейБезопасностиНадписьРасширеннаяПодсказка + 308 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияВключениеПрофилейБезопасностиНадписьКонтекстноеМеню + 307 + true + true + + true + + true + + true + Label + true + + + URLProcessing + ДекорацияВключениеПрофилейБезопасностиНадписьОбработкаНавигационнойСсылки + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Включение профилей безопасности</value> + + + ГруппаВключениеПрофилейБезопасностиРасширеннаяПодсказка + 305 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ДекорацияРазрешенияСмТакже + 311 + + <key>ru</key> + <value>Подробно о режимах подключения дополнительных отчетов и обработок см. информацию в справке к форме.</value> + + true + true + + true + + + ДекорацияРазрешенияСмТакжеРасширеннаяПодсказка + 313 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияРазрешенияСмТакжеКонтекстноеМеню + 312 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Разрешения</value> + + + СтраницаРазрешенияРасширеннаяПодсказка + 260 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаЗагрузкаДанныхИзФайла + 322 + + КомандыЗагрузки + 324 + + <key>ru</key> + <value>Команды загрузки</value> + + true + true + + true + + + СписокКомандЗагрузки + + None + + КомандыЗагрузкиЗначение + 328 + + <key>ru</key> + <value>Команды загрузки</value> + + true + true + + true + + + + СписокКомандЗагрузки.Value + + + + КомандыЗагрузкиЗначениеРасширеннаяПодсказка + 330 + true + true + + true + + Label + true + true + + Left + + + + КомандыЗагрузкиЗначениеКонтекстноеМеню + 329 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + КомандыЗагрузкиКоманднаяПанель + 326 + true + true + + true + + Left + + + true + true + + true + + КомандыЗагрузкиСтрокаПоиска + 353 + + КомандыЗагрузкиСтрокаПоискаРасширеннаяПодсказка + 355 + true + true + + true + + Label + true + true + + Left + + + + КомандыЗагрузкиСтрокаПоискаКонтекстноеМеню + 354 + true + true + + true + + true + + + true + + + + true + true + + true + + КомандыЗагрузкиСостояниеПросмотра + 356 + + КомандыЗагрузкиСостояниеПросмотраРасширеннаяПодсказка + 358 + true + true + + true + + Label + true + true + + Left + + + + КомандыЗагрузкиСостояниеПросмотраКонтекстноеМеню + 357 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + КомандыЗагрузкиУправлениеПоиском + 359 + + КомандыЗагрузкиУправлениеПоискомРасширеннаяПодсказка + 361 + true + true + + true + + Label + true + true + + Left + + + + КомандыЗагрузкиУправлениеПоискомКонтекстноеМеню + 360 + true + true + + true + + true + + SearchControlAddition + + true + + + + КомандыЗагрузкиРасширеннаяПодсказка + 327 + true + true + + true + + Label + true + true + + Left + + + + КомандыЗагрузкиКонтекстноеМеню + 325 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + false + Auto + Auto + true + true + + СписокКомандЗагрузки.Picture + +
+ true + + true + + + <key>ru</key> + <value>Загрузка данных из файла</value> + + + СтраницаЗагрузкаДанныхИзФайлаРасширеннаяПодсказка + 323 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + СтраницаДополнительнаяИнформация + 318 + + Информация + 26 + + <key>ru</key> + <value>Описание</value> + + true + true + + true + + + + Объект.Информация + + + true + None + + ИнформацияExtendedTooltip + 236 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияКонтекстноеМеню + 27 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + ByContent + + + + Версия + 7 + + <key>ru</key> + <value>Версия</value> + + true + true + + true + + + + Объект.Версия + + + true + + ВерсияExtendedTooltip + 234 + true + true + + true + + Label + true + true + + Left + + + + ВерсияКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 10 + true + true + true + true + true + true + + + + Вид + 12 + true + true + + true + + + + Объект.Вид + + + true + + ВидExtendedTooltip + 232 + true + true + + true + + Label + true + true + + Left + + + + ВидКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 50 + true + true + true + true + true + true + + + + ИмяФайла + 4 + + <key>ru</key> + <value>Имя файла</value> + + true + true + + true + + + + Объект.ИмяФайла + + + true + + ИмяФайлаExtendedTooltip + 233 + true + true + + true + + Label + true + true + + Left + + + + ИмяФайлаКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 50 + true + true + true + true + true + true + + + + ИмяОбъекта + 78 + true + true + + true + + + + Объект.ИмяОбъекта + + + true + + ИмяОбъектаExtendedTooltip + 235 + true + true + + true + + Label + true + true + + Left + + + + ИмяОбъектаКонтекстноеМеню + 79 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 1 + true + true + true + true + true + true + + + + ГруппаОтступ + 409 + + Группа + 45 + + <key>ru</key> + <value>Группа</value> + + true + true + + true + + + + Объект.Parent + + + + ГруппаExtendedTooltip + 237 + true + true + + true + + Label + true + true + + Left + + + + ГруппаКонтекстноеМеню + 46 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 33 + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Отступ</value> + + + ГруппаОтступРасширеннаяПодсказка + 410 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + + + true + true + + true + + + <key>ru</key> + <value>Дополнительная информация</value> + + + СтраницаДополнительнаяИнформацияРасширеннаяПодсказка + 319 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Варианты, Команды, Разрешения</value> + + true + + СтраницыВариантыКомандыРазрешенияРасширеннаяПодсказка + 186 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
+ + ОтветственныйИКомментарий + 320 + + Ответственный + 31 + true + true + + true + + + + Объект.Ответственный + + + true + + ОтветственныйExtendedTooltip + 238 + true + true + + true + + Label + true + true + + Left + + + + ОтветственныйКонтекстноеМеню + 32 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Комментарий + 402 + true + true + + true + + + + Объект.Комментарий + + + + КомментарийРасширеннаяПодсказка + 404 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 403 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Ответственный и комментарий</value> + + + ОтветственныйИКомментарийРасширеннаяПодсказка + 321 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + КомандаЗаписатьИЗакрыть + 240 + true + true + + true + + + КомандаЗаписатьИЗакрытьРасширеннаяПодсказка + 241 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + КомандаЗаписать + 242 + true + true + + true + + + КомандаЗаписатьРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаЗаписать + Auto + true + true + UserCmds + Auto + + + КомандыВыгрузкиЗагрузки + 333 + + ЗагрузитьИзФайла + 10 + true + true + + true + + false + + ЗагрузитьИзФайлаРасширеннаяПодсказка + 176 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗагрузитьИзФайла + PictureAndText + true + true + UserCmds + Auto + + + ВыгрузитьВФайл + 11 + true + true + + true + + false + + ВыгрузитьВФайлРасширеннаяПодсказка + 177 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыгрузитьВФайл + PictureAndText + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды выгрузки загрузки</value> + + + КомандыВыгрузкиЗагрузкиРасширеннаяПодсказка + 334 + true + true + + true + + Label + true + true + + Left + + + + + + КомандыФормы + 255 + + ФормаЗаписатьИЗакрыть + 244 + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 245 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.WriteAndClose + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 246 + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 247 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Auto + true + true + UserCmds + Auto + + + ФормаИзменитьФорму + 331 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 332 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыРасширеннаяПодсказка + 256 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаСправка + 257 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 258 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + ChoiceProcessing + ОбработкаВыбора + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + Vertical + true + true + true + UseIfNecessary + true + true + + Объект + 1 + + CatalogObject.ДополнительныеОтчетыИОбработки + + + true + + + true + +
true
+ true + + + Объект.Команды + + + РегламентноеЗаданиеИспользование + + <key>ru</key> + <value>Использовать расписание</value> + + 1 + + Boolean + + + true + + + true + + + + РегламентноеЗаданиеПредставление + + <key>ru</key> + <value>Расписание</value> + + 2 + + String + + + + true + + + true + + + + РегламентноеЗаданиеРасписание + + <key>ru</key> + <value>Регламентное задание расписание</value> + + 3 + + ValueList + + + true + + + true + + + + БыстрыйДоступПредставление + + <key>ru</key> + <value>Быстрый доступ</value> + + 4 + + String + + + + true + + + true + + + + РегламентноеЗаданиеРазрешено + + <key>ru</key> + <value>Регламентное задание разрешено</value> + + 5 + + Boolean + + + true + + + true + + + + Комментарий + + <key>ru</key> + <value>Комментарий</value> + + 6 + + String + + + + true + + + true + + + +
+ + РегистрацияОбработки + 5 + + Boolean + + + true + + + true + + + + ЭтоНовый + 6 + + Boolean + + + true + + + true + + + + ВидДополнительныйОтчет + 3 + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + + true + + + true + + + + ВидДополнительнаяОбработка + 7 + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + + true + + + true + + + + АдресДанныхОбработки + 8 + + String + + + + true + + + true + + + + ВидОтчет + 4 + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + + true + + + true + + + + ВариантыДополнительногоОтчета + + <key>ru</key> + <value>Варианты отчета</value> + + 10 + + ValueTable + + + true + + + true + + + КлючВарианта + 1 + + String + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 2 + + String + + + + true + + + true + + + + ИндексКартинки + 4 + + Number + + 1 + + + + true + + + true + + + + ПометкаУдаления + 3 + + Boolean + + + true + + + true + + + + Пользовательский + 5 + + Boolean + + + true + + + true + + + + Ссылка + 6 + + CatalogRef + + + true + + + true + + + + + ПредставлениеНазначения + + <key>ru</key> + <value>Назначение</value> + + 11 + + String + + + + true + + + true + + + + БыстрыйДоступ + 2 + + ValueTable + + + true + + + true + + + ИдентификаторКоманды + 1 + + String + + + + true + + + true + + + + Пользователь + 2 + + CatalogRef.Пользователи + + + true + + + true + + + + + АдресРазрешений + 9 + + String + + + + true + + + true + + + + ПредставлениеРазрешений_2_1_3 + 12 + + String + + + + true + + + true + + + + Переход + 13 + + String + + + + true + + + true + + + + ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии + 15 + + Boolean + + + true + + + true + + + + ПредставлениеРазрешений_2_2_2 + + <key>ru</key> + <value>Представление разрешений 2 2 2</value> + + 14 + + SpreadsheetDocument + + + true + + + true + + + + + СписокКомандЗагрузки + + <key>ru</key> + <value>Список команд загрузки</value> + + 16 + + ValueList + + + true + + + true + + + + + + + ВидЗагрузкаДанныхИзФайла + 17 + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + + true + + + true + + + + РежимРаботы + 18 + + String + + + + true + + + true + + + + ЗагрузитьИзФайла + + <key>ru</key> + <value>Обновить из файла...</value> + + 1 + + ru + Обновить из файла на диске... + + + true + + + CommonPicture.ОбновитьФайлИзФайлаНаДиске + + + + ЗагрузитьИзФайла + + + TextPicture + DontUse + + + ВыгрузитьВФайл + + <key>ru</key> + <value>Сохранить как...</value> + + 2 + + ru + Сохранить как... + + + true + + + CommonPicture.СохранитьФайлКак + + + + ВыгрузитьВФайл + + + Picture + DontUse + + + ОбъектКомандыНастроитьБыстрыйДоступ + + <key>ru</key> + <value>Настроить быстрый доступ...</value> + + 3 + + true + + + + ОбъектКомандыНастроитьБыстрыйДоступ + + + DontUse + + + ОбъектКомандыНастроитьРасписание + + <key>ru</key> + <value>Настроить расписание...</value> + + 4 + + true + + + + ОбъектКомандыНастроитьРасписание + + + DontUse + + + ВариантыДополнительногоОтчетаОткрыть + + <key>ru</key> + <value>Открыть...</value> + + 5 + + ru + Открыть вариант дополнительного отчета + + + true + + + StdPicture.Report + + + + ВариантыДополнительногоОтчетаОткрыть + + + TextPicture + DontUse + + + РазместитьВРазделах + + <key>ru</key> + <value>Разместить в разделах...</value> + + 6 + + ru + Разместить в разделах + + + true + + + + РазместитьВРазделах + + + DontUse + + + КомандаЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 7 + + ru + Записать объект и закрыть форму + + + true + + + StdPicture.WriteAndClose + + + + КомандаЗаписатьИЗакрыть + + + Text + DontUse + + + КомандаЗаписать + + <key>ru</key> + <value>Записать</value> + + 8 + + ru + Записать объект + + + true + + Ctrl+S + + StdPicture.Write + + + + КомандаЗаписать + + + Picture + DontUse + + + НастроитьВидимость + + <key>ru</key> + <value>Настроить видимость...</value> + + 9 + + ru + Настроить видимость + + + true + + + + НастроитьВидимость + + + DontUse + + + ВыполнитьКоманду + + <key>ru</key> + <value>Выполнить</value> + + 10 + + ru + Выполнить выбранную команду обработки (отчета). + + + true + + + StdPicture.GenerateReport + + + + ВыполнитьКоманду + + + TextPicture + DontUse + + + + + + 0:4ef362ee-0350-49fe-b40a-3ffa1576aa36 + + + + 0:1ea304f6-8e8f-4479-aceb-086cf9709ce7 + + + + 0:4769b1a9-c88a-4d5e-9520-ea46da1ac861 + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..92c69361 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,58 @@ + +

Регистрация в программе дополнительных отчетов и обработок.

+

Часть сведений в карточке дополнительного отчета или обработки программа проставляет по умолчанию, они указаны разработчиком в файле внешней обработки или отчета и их невозможно изменить (список команд и дополнительная информация). Каждая дополнительная обработка может предоставлять одну или несколько команд, размещаемых в окнах объектов программы или в разделах программы.

+

Существуют два типа дополнительных отчетов и обработок:

+
  • Назначаемые - предназначены для конкретных документов или списков программы, которых может быть несколько, при этом список доступных назначений определен разработчиком заранее и включен в текст дополнительного отчета или разработки. При регистрации можно только выбрать их из списка. +
  • Глобальные или общие - содержат команды, вызываемые только из разделов командного интерфейса. Команды не зависят от конкретных объектов программы. Список доступных разделов для размещения команд определен разработчиком заранее и включен в файл дополнительного отчета или обработки, его невозможно изменить.

В зависимости от назначения и настроек в дополнительных отчетах и обработках может быть несколько вкладок. Команды, которые являются обязательной частью, размещаются на специальной вкладке. На вкладке Дополнительная информация, которая также является обязательной, размещаются сведения о дополнительной доработке или отчете. Другие вкладки могут иметь разное содержимое и наименования. Также на дополнительных вкладках могут размещаться специальные команды.

+

При регистрации дополнительного отчета или обработки на вкладке необходимо указать основные параметры:

+
  • +
    Наименование - указывается разработчиком и выводится автоматически, при необходимости можно изменить.
    +
  • +
    Режим работы - режим подключения дополнительных отчетов и обработок, принимает значения Безопасный и Небезопасный.
    +
  • +
    +

    С помощью тумблера Публикация можно включить или отключить доступность обработки или отчета, регулируя использование дополнительных отчетов и обработок. Можно сделать дополнительную обработку или отчет доступной для всех, только для администратора или отключить. Реквизит может принимать следующие значения:

    +
    • +
      Используется - обработка доступна для использования. Команды обработки доступны в программе для всех пользователей с установленной ролью "Использование дополнительных отчетов и обработок".
      +
    • +
      +
      Режим отладки - обработка доступна для использования только пользователю с ролью "Добавление и изменение дополнительных обработок" или ролью "Полные права" (в списке отображается красным цветом). При этом остальным пользователям эти команды не видны. Такой режим удобен, если дополнительный отчет или обработка нуждается в проверке.
      +
    • +
      Отключена - обработка недоступна для использования, в списке становится неактивной. Такая возможность удобна, если нужно прекратить использование обработки на время, но не удалять ее, в этом случае все настройки сохраняются и при переводе в другой режим обработка начинает выполняться как раньше.
    +
  • Комментарий - введите подробное описание. +
  • +
    Ответственный - выберите пользователя, который будет отслеживать состояние дополнительного отчета или обработки, обновлять и т.п. По умолчанию "Администратор".

Дополнительная информация

+
  • Выводятся дополнительные сведения, которые заполняются разработчиком: +
    • Вид - существует несколько видов дополнительных отчетов и обработок: +
      • Дополнительный отчет; +
      • Отчет; +
      • Заполнение объекта; +
      • Печатная форма; +
      • Создание связанных объектов.
    • Имя файла; +
    • Версия; +
    • Имя объекта; +
    • Описание - подробная информация о дополнительном отчете или обработке.
  • Группа - включите дополнительную обработку или отчет в одну из групп. Выберите нужную группу из списка. Группы помогают упорядочить дополнительные отчеты и обработки.

Загрузка из файла

+
  • С помощью кнопки Обновить из файла можно обновить обработку во внутреннем хранилище программы. Вид загружаемой обработки должен соответствовать текущему виду обработки. Укажите путь к файлу, нажмите Открыть.

Выгрузка в файл

+
  • С помощью кнопки Сохранить как можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите Сохранить. Имя файлу присваивается автоматически, имеется возможность его переименовать.

Режим работы

+
  • Как правило, большинство обработок должны выполняться в безопасном режиме. Это гарантирует, что они не содержат "ненадежный" программный код, который выполняется на сервере. +
  • Однако некоторые обработки могут требовать выполнения в небезопасном режиме. Такие обработки следует загружать только из надежных источников (поставщиков) или перед загрузкой самостоятельно выполнять их аудит. +
  • Подробнее о безопасном режиме работы см. документацию по платформе 1С:Предприятие.

Особенности регистрации назначаемых дополнительных обработок и отчетов

+
  • Для дополнительных обработок или отчетов, предназначенных для работы со списками или документами программы, можно выбрать из списка объекты, в которых будут доступны команды обработки или отчета. +
    • Размещение -для выбора объектов программы нажмите ссылку, которая принимает значение Не определено (если ни одного объекта не выбрано) или перечисляет выбранные объекты. С помощью флажков выберите нужные объекты. +
    • Показывать - команды обработок или отчетов могут быть доступны: +
      • из списка выбранных объектов, если установлен флажок В списках; +
      • из окна самого объекта, если установлен флажок В формах элементов справочников и документов. Можно установить оба флажка одновременно.
  • +
    на вкладке Команды перечень команд заполняется по умолчанию из списка, заполненного разработчиком. Эти команды становятся доступными в указанном в назначении списке или документе при подключении дополнительного отчета или обработки.

Особенности регистрации глобальных (общих) дополнительных отчетов и обработок

+
  • Для обработок и отчетов, которые вызываются из командного интерфейса (не прикрепляются к объектам конфигурации), необходимо указать разделы интерфейса, в которых команды обработок будут доступны через команды Дополнительные отчеты и Дополнительные обработки. +
    • Размещение - для выбора разделов нажмите ссылку, которая принимает значение Не определено (если ни одного раздела не выбрано) или перечисляет выбранные разделы. С помощью флажков выберите нужные разделы программы, для подтверждения настройки нажмите ОК.
  • Перечень команд и их настройки могут размещаться на отдельной вкладке Команды. На вкладке выводится: +
    • Наименование - полное наименование команды; +
    • в колонке Быстрый доступ нажмите  или клавишу F4 и выберите из списка пользователей, для которых команда будет доступна по умолчанию. По умолчанию проставлено значение "Нет". Добавьте пользователей в список. Для подтверждения выбора и возвращения к дальнейшей настройке нажмите ОК; +
    • в колонке Расписание для каждой команды глобальных отчетов и обработок, исполняемых в серверном контексте, нажмите  и задайте расписание, по которому будет запускаться регламентное задание для выполнения этой команды. Расписание неприменимо для команд с вариантом запуска Открытие формы.

Последовательность создания дополнительной обработки (отчета)

+
  • +
    Создать внешнюю обработку (отчет);
    +
  • +
    Регистрация дополнительной обработки в информационной базе происходит на основании сведений, которые поставляет сама обработка. Эти сведения должны возвращаться в виде структуры в функции СведенияОВнешнейОбработке.

Пример реализации функции СведенияОВнешнейОбработке с использованием программного интерфейса 

+

Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<...>();
ПараметрыРегистрации.Версия = "...";
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = '<Представление команды>'");
Команда.Идентификатор = "<Имя команды>";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<...>();
Команда.ПоказыватьОповещение = <Истина/Ложь>;
Возврат ПараметрыРегистрации;
КонецФункции

+

Подробнее см. на сайте ИТС.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..a2fea8aa --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,1564 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем КлиентскийКэш; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + УстановитьУсловноеОформление(); + + Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда + ВызватьИсключение НСтр("ru = 'Создание нового элемента копированием запрещено.'"); + КонецЕсли; + + Если Объект.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма + И Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + Отказ = Истина; + ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Работа с печатными формами не поддерживается.'")); + Возврат; + КонецЕсли; + + // Проверка возможности загрузки новых обработок в информационную базу. + ЭтоНовый = Объект.Ссылка.Пустая(); + ПравоДобавления = ДополнительныеОтчетыИОбработки.ПравоДобавления(); + Если Не ПравоДобавления Тогда + Если ЭтоНовый Тогда + ВызватьИсключение НСтр("ru = 'Недостаточно прав доступа для добавления дополнительных отчетов или обработок.'"); + Иначе + Элементы.ЗагрузитьИзФайла.Видимость = Ложь; + Элементы.ВыгрузитьВФайл.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + // Ограничение возможности выбора вида публикации в зависимости от настроек информационной базы. + Элементы.Публикация.СписокВыбора.Очистить(); + ДоступныеВидыПубликации = ДополнительныеОтчетыИОбработкиПовтИсп.ДоступныеВидыПубликации(); + Для Каждого ВидПубликации Из ДоступныеВидыПубликации Цикл + Элементы.Публикация.СписокВыбора.Добавить(ВидПубликации); + КонецЦикла; + + // Ограничение отображения расширенной информации. + ОтображениеРасширеннойИнформации = ДополнительныеОтчетыИОбработки.ОтображатьРасширеннуюИнформацию(Объект.Ссылка); + Элементы.СтраницаДополнительнаяИнформация.Видимость = ОтображениеРасширеннойИнформации; + + // Ограничение возможности загрузки обработки из файла / сохранения в файл. + Если Не ДополнительныеОтчетыИОбработки.ВозможнаЗагрузкаОбработкиИзФайла(Объект.Ссылка) Тогда + Элементы.ЗагрузитьИзФайла.Видимость = Ложь; + КонецЕсли; + Если Не ДополнительныеОтчетыИОбработки.ВозможнаВыгрузкаОбработкиВФайл(Объект.Ссылка) Тогда + Элементы.ВыгрузитьВФайл.Видимость = Ложь; + КонецЕсли; + + ВидДополнительнаяОбработка = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка; + ВидДополнительныйОтчет = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет; + ВидОтчет = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет; + + Параметры.Свойство("ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии", ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии); + + Если ЭтоНовый Тогда + Объект.ИспользоватьДляФормыОбъекта = Истина; + Объект.ИспользоватьДляФормыСписка = Истина; + ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии = Истина; + КонецЕсли; + + Если ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии И Не Элементы.ЗагрузитьИзФайла.Видимость Тогда + ВызватьИсключение НСтр("ru = 'Недостаточно прав для загрузки дополнительных отчетов и обработок'"); + КонецЕсли; + + ЗаполнитьКоманды(); + + АдресРазрешений = ПоместитьВоВременноеХранилище( + РеквизитФормыВЗначение("Объект").Разрешения.Выгрузить(), + ЭтотОбъект.УникальныйИдентификатор); + + УстановитьВидимостьДоступность(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + КлиентскийКэш = Новый Структура; + + Если ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии Тогда + ПодключитьОбработчикОжидания("ОбновитьИзФайла", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ДополнительныеОтчетыИОбработки.Форма.РазмещениеВРазделах") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда + Возврат; + КонецЕсли; + + Объект.Разделы.Очистить(); + Для Каждого ЭлементСписка Из ВыбранноеЗначение Цикл + НоваяСтрока = Объект.Разделы.Добавить(); + НоваяСтрока.Раздел = ЭлементСписка.Значение; + КонецЦикла; + + Модифицированность = Истина; + УстановитьВидимостьДоступность(); + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ДополнительныеОтчетыИОбработки.Форма.БыстрыйДоступКДополнительнымОтчетамИОбработкам") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда + Возврат; + КонецЕсли; + + ЭлементКоманда = Объект.Команды.НайтиПоИдентификатору(КлиентскийКэш.ИдентификаторСтрокиКоманды); + Если ЭлементКоманда = Неопределено Тогда + Возврат; + КонецЕсли; + + Найденные = БыстрыйДоступ.НайтиСтроки(Новый Структура("ИдентификаторКоманды", ЭлементКоманда.Идентификатор)); + Для Каждого СтрокаТаблицы Из Найденные Цикл + БыстрыйДоступ.Удалить(СтрокаТаблицы); + КонецЦикла; + + Для Каждого ЭлементСписка Из ВыбранноеЗначение Цикл + СтрокаТаблицы = БыстрыйДоступ.Добавить(); + СтрокаТаблицы.ИдентификаторКоманды = ЭлементКоманда.Идентификатор; + СтрокаТаблицы.Пользователь = ЭлементСписка.Значение; + КонецЦикла; + + ЭлементКоманда.БыстрыйДоступПредставление = ПредставлениеБыстрогоДоступаПользователей(ВыбранноеЗначение.Количество()); + Модифицированность = Истина; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ВыборОбъектовМетаданных" Тогда + + ЗагрузитьВыбранныеОбъектыМетаданных(Параметр); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ДополнительныеОтчетыИОбработки.ВозможнаВыгрузкаОбработкиВФайл(Объект.Ссылка) Тогда + + АдресДанныхОбработки = ПоместитьВоВременноеХранилище( + ТекущийОбъект.ХранилищеОбработки.Получить(), + УникальныйИдентификатор); + + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", ТекущийОбъект.Ссылка); + Запрос.Текст = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ДанныеРегистра.ИдентификаторКоманды, + | ДанныеРегистра.Пользователь + |ИЗ + | РегистрСведений.ПользовательскиеНастройкиДоступаКОбработкам КАК ДанныеРегистра + |ГДЕ + | ДанныеРегистра.ДополнительныйОтчетИлиОбработка = &Ссылка + | И ДанныеРегистра.Доступно = ИСТИНА + | И НЕ ДанныеРегистра.Пользователь.ПометкаУдаления + | И НЕ ДанныеРегистра.Пользователь.Недействителен"; + БыстрыйДоступ.Загрузить(Запрос.Выполнить().Выгрузить()); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + Если РегистрацияОбработки И ДополнительныеОтчетыИОбработки.ВозможнаЗагрузкаОбработкиИзФайла(Объект.Ссылка) Тогда + ДвоичныеДанныеОбработки = ПолучитьИзВременногоХранилища(АдресДанныхОбработки); + ТекущийОбъект.ХранилищеОбработки = Новый ХранилищеЗначения(ДвоичныеДанныеОбработки, Новый СжатиеДанных(9)); + КонецЕсли; + + Если Объект.Вид = ВидДополнительнаяОбработка ИЛИ Объект.Вид = ВидДополнительныйОтчет Тогда + ТекущийОбъект.ДополнительныеСвойства.Вставить("АктуальныеКоманды", Объект.Команды.Выгрузить()); + Иначе + БыстрыйДоступ.Очистить(); + КонецЕсли; + + ТекущийОбъект.ДополнительныеСвойства.Вставить("БыстрыйДоступ", БыстрыйДоступ.Выгрузить()); + + ТекущийОбъект.Разрешения.Загрузить(ПолучитьИзВременногоХранилища(АдресРазрешений)); +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + Если ТекущийОбъект.ДополнительныеСвойства.Свойство("ОшибкаПодключения") Тогда + ТекстСообщения = ТекущийОбъект.ДополнительныеСвойства.ОшибкаПодключения; + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); + КонецЕсли; + ЭтоНовый = Ложь; + Если РегистрацияОбработки Тогда + ОбновитьПовторноИспользуемыеЗначения(); + РегистрацияОбработки = Ложь; + КонецЕсли; + ЗаполнитьКоманды(); + УстановитьВидимостьДоступность(); + + Если Объект.Публикация <> Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена + И Объект.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + МодульУправлениеПечатью.ОтключитьКомандыПечати(ВыбранныеОбъектыНазначения().ВыгрузитьЗначения(), ОтключаемыеКоманды().ВыгрузитьЗначения()); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВариантыДополнительногоОтчетаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ВариантыДополнительногоОтчетаПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; + ОткрытьВариант(); +КонецПроцедуры + +&НаКлиенте +Процедура ВариантыДополнительногоОтчетаПередУдалением(Элемент, Отказ) + Отказ = Истина; + Вариант = Элементы.ВариантыДополнительногоОтчета.ТекущиеДанные; + Если Вариант = Неопределено Тогда + Возврат; + КонецЕсли; + + Если НЕ Вариант.Пользовательский Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Пометка на удаление предопределенного варианта отчета запрещена.'")); + Возврат; + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Пометить ""%1"" на удаление?'"), Вариант.Наименование); + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("Вариант", Вариант); + Обработчик = Новый ОписаниеОповещения("ВариантыДополнительногоОтчетаПередУдалениемЗавершение", ЭтотОбъект, ДополнительныеПараметры); + ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); +КонецПроцедуры + +&НаКлиенте +Процедура ИспользоватьДляФормыСпискаПриИзменении(Элемент) + Если НЕ Объект.ИспользоватьДляФормыОбъекта И НЕ Объект.ИспользоватьДляФормыСписка Тогда + Объект.ИспользоватьДляФормыОбъекта = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ИспользоватьДляФормыОбъектаПриИзменении(Элемент) + Если НЕ Объект.ИспользоватьДляФормыОбъекта И НЕ Объект.ИспользоватьДляФормыСписка Тогда + Объект.ИспользоватьДляФормыСписка = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДекорацияВключениеПрофилейБезопасностиНадписьОбработкаНавигационнойСсылки(Элемент, Ссылка, СтандартнаяОбработка) + + Если Ссылка = "int://sp-on" Тогда + + МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); + МодульРаботаВБезопасномРежимеКлиент.ОткрытьДиалогНастройкиИспользованияПрофилейБезопасности(); + СтандартнаяОбработка = Ложь; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РазмещениеКомандНажатие(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Если Объект.Вид = ВидДополнительныйОтчет ИЛИ Объект.Вид = ВидДополнительнаяОбработка Тогда + // Выбор разделов + Разделы = Новый СписокЗначений; + Для Каждого СтрокаТаблицы Из Объект.Разделы Цикл + Разделы.Добавить(СтрокаТаблицы.Раздел); + КонецЦикла; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Разделы", Разделы); + ПараметрыФормы.Вставить("ВидОбработки", Объект.Вид); + + ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.РазмещениеВРазделах", ПараметрыФормы, ЭтотОбъект); + Иначе + // Выбор объектов метаданных + ПараметрыФормы = ПодготовитьПараметрыФормыВыборОбъектовМетаданных(); + ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыФормы); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыОбъектКоманды + +&НаКлиенте +Процедура ОбъектКомандыБыстрыйДоступПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ИзменитьБыстрыйДоступ(); +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектКомандыБыстрыйДоступПредставлениеОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектКомандыРегламентноеЗаданиеИспользованиеПриИзменении(Элемент) + ИзменитьРегламентноеЗадание(Ложь, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектКомандыРегламентноеЗаданиеПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + ИзменитьРегламентноеЗадание(Истина, Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектКомандыРегламентноеЗаданиеПредставлениеОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектКомандыНастроитьБыстрыйДоступ(Команда) + ИзменитьБыстрыйДоступ(); +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектКомандыНастроитьРасписание(Команда) + ИзменитьРегламентноеЗадание(Истина, Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектКомандыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ОбъектКомандыПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КомандаЗаписатьИЗакрыть(Команда) + ЗаписатьНаКлиенте(Истина); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаЗаписать(Команда) + ЗаписатьНаКлиенте(Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьИзФайла(Команда) + ОбновитьИзФайла(); +КонецПроцедуры + +&НаКлиенте +Процедура ВыгрузитьВФайл(Команда) + ПараметрыВыгрузки = Новый Структура; + ПараметрыВыгрузки.Вставить("ЭтоОтчет", Объект.Вид = ВидОтчет Или Объект.Вид = ВидДополнительныйОтчет); + ПараметрыВыгрузки.Вставить("ИмяФайла", Объект.ИмяФайла); + ПараметрыВыгрузки.Вставить("АдресДанныхОбработки", АдресДанныхОбработки); + ДополнительныеОтчетыИОбработкиКлиент.ВыгрузитьВФайл(ПараметрыВыгрузки); +КонецПроцедуры + +&НаКлиенте +Процедура ВариантыДополнительногоОтчетаОткрыть(Команда) + Вариант = ЭтотОбъект.Элементы.ВариантыДополнительногоОтчета.ТекущиеДанные; + Если Вариант = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите вариант отчета.'")); + Возврат; + КонецЕсли; + + ДополнительныеОтчетыИОбработкиКлиент.ОткрытьВариантДополнительногоОтчета(Объект.Ссылка, Вариант.КлючВарианта); +КонецПроцедуры + +&НаКлиенте +Процедура РазместитьВРазделах(Команда) + МассивВариантов = Новый Массив; + Для Каждого ИдентификаторСтроки Из Элементы.ВариантыДополнительногоОтчета.ВыделенныеСтроки Цикл + Вариант = ВариантыДополнительногоОтчета.НайтиПоИдентификатору(ИдентификаторСтроки); + Если ЗначениеЗаполнено(Вариант.Ссылка) Тогда + МассивВариантов.Добавить(Вариант.Ссылка); + КонецЕсли; + КонецЦикла; + + // Открывает диалог размещения нескольких вариантов отчетов в разделах командного интерфейса. + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + МодульВариантыОтчетовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ВариантыОтчетовКлиент"); + МодульВариантыОтчетовКлиент.ОткрытьДиалогРазмещенияВариантовВРазделах(МассивВариантов); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьВидимость(Команда) + Если Модифицированность Тогда + ОписаниеОповещения = Новый ОписаниеОповещения("НастроитьВидимостьЗавершение", ЭтотОбъект); + ТекстВопроса = НСтр("ru = 'Для настройки видимости команд печати обработку необходимо записать. Продолжить?'"); + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("Продолжить", НСтр("ru = 'Продолжить'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки); + Иначе + ОткрытьФормуНастроекПодменюПечать(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьКоманду(Команда) + СтрокаТаблицыКоманд = Элементы.ОбъектКоманды.ТекущиеДанные; + Если СтрокаТаблицыКоманд = Неопределено Тогда + Возврат; + КонецЕсли; + Если Не СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") + И Не СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") + И Не СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода") + И Не СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда + Возврат; + КонецЕсли; + + Контекст = Новый Структура; + Контекст.Вставить("ИдентификаторВыполняемойКоманды", СтрокаТаблицыКоманд.Идентификатор); + Обработчик = Новый ОписаниеОповещения("ВыполнитьКомандуПослеПодтвержденияЗаписи", ЭтотОбъект, Контекст); + + Если Объект.Ссылка.Пустая() Или Модифицированность Тогда + ТекстВопроса = НСтр("ru = 'Для выполнения команды необходимо записать данные.'"); + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ЗаписатьИПродолжить", НСтр("ru = 'Записать и продолжить'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки); + Иначе + ВыполнитьОбработкуОповещения(Обработчик, "ПродолжитьБезЗаписи"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбъектКомандыРегламентноеЗаданиеИспользование.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбъектКомандыРегламентноеЗаданиеПредставление.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Команды.РегламентноеЗаданиеРазрешено"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбъектКомандыРегламентноеЗаданиеПредставление.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Команды.РегламентноеЗаданиеИспользование"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Клиент + +&НаКлиенте +Процедура ЗаписатьНаКлиенте(ЗакрытьПослеЗаписи) + + Обработчик = Новый ОписаниеОповещения("ПродолжитьЗаписьНаКлиенте", ЭтотОбъект, ЗакрытьПослеЗаписи); + ВыполнитьОбработкуОповещения(Обработчик, КодВозвратаДиалога.ОК); + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьЗаписьНаКлиенте(Результат, ЗакрытьПослеЗаписи) Экспорт + + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("РегистрацияОбработки", РегистрацияОбработки); + ПараметрыЗаписи.Вставить("ЗакрытьПослеЗаписи", ЗакрытьПослеЗаписи); + + Успех = Записать(ПараметрыЗаписи); + Если Не Успех Тогда + Возврат; + КонецЕсли; + + Если ПараметрыЗаписи.РегистрацияОбработки Тогда + ОбновитьПовторноИспользуемыеЗначения(); + ТекстОповещения = НСтр("ru = 'Для применения изменений в открытых окнах необходимо их закрыть и открыть заново.'"); + ПоказатьОповещениеПользователя(, , ТекстОповещения); + КонецЕсли; + ЗаписатьНаКлиентеЗавершение(ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьНаКлиентеЗавершение(ПараметрыЗаписи) + Если ПараметрыЗаписи.ЗакрытьПослеЗаписи И Открыта() Тогда + Закрыть(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайла() + Оповещение = Новый ОписаниеОповещения("ОбновитьИзФайлаПослеПодтверждения", ЭтотОбъект); + ПараметрыФормы = Новый Структура("Ключ", "ПередДобавлениемДополнительногоОтчетаИлиОбработки"); + ОткрытьФорму("ОбщаяФорма.ПредупреждениеБезопасности", ПараметрыФормы, , , , , Оповещение); +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайлаПослеПодтверждения(Ответ, ПараметрыРегистрации) Экспорт + Если Ответ <> "Продолжить" Тогда + ОбновитьИзФайлаЗавершение(Неопределено, ПараметрыРегистрации); + Возврат; + КонецЕсли; + + ПараметрыРегистрации = Новый Структура; + ПараметрыРегистрации.Вставить("Успех", Ложь); + ПараметрыРегистрации.Вставить("АдресДанныхОбработки", АдресДанныхОбработки); + + Обработчик = Новый ОписаниеОповещения("ОбновитьИзФайлаПослеВыбораФайла", ЭтотОбъект, ПараметрыРегистрации); + + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.Диалог.Фильтр = ДополнительныеОтчетыИОбработкиКлиентСервер.ФильтрДиалоговВыбораИСохранения(); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + + Если Объект.Ссылка.Пустая() Тогда + ПараметрыЗагрузки.Диалог.ИндексФильтра = 0; + ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл внешнего отчета или обработки'"); + ИначеЕсли Объект.Вид = ВидДополнительныйОтчет Или Объект.Вид = ВидОтчет Тогда + ПараметрыЗагрузки.Диалог.ИндексФильтра = 1; + ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл внешнего отчета'"); + Иначе + ПараметрыЗагрузки.Диалог.ИндексФильтра = 2; + ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл внешней обработки'"); + КонецЕсли; + + ФайловаяСистемаКлиент.ЗагрузитьФайл(Обработчик, ПараметрыЗагрузки, Объект.ИмяФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайлаПослеВыбораФайла(ОписаниеФайла, ПараметрыРегистрации) Экспорт + Если ОписаниеФайла = Неопределено Тогда + ОбновитьИзФайлаЗавершение(Неопределено, ПараметрыРегистрации); + Возврат; + КонецЕсли; + + Ключи = Новый Структура("ИмяФайла, ЭтоОтчет, ОтключатьПубликацию, ОтключатьКонфликтующие, Конфликтующие"); + ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыРегистрации, Ключи, Ложь); + + ПараметрыРегистрации.ОтключатьПубликацию = Ложь; + ПараметрыРегистрации.ОтключатьКонфликтующие = Ложь; + ПараметрыРегистрации.Конфликтующие = Новый СписокЗначений; + + МассивПодстрок = СтрРазделить(ОписаниеФайла.Имя, "\", Ложь); + ПараметрыРегистрации.ИмяФайла = МассивПодстрок.Получить(МассивПодстрок.ВГраница()); + РасширениеФайла = ВРег(Прав(ПараметрыРегистрации.ИмяФайла, 3)); + + Если РасширениеФайла = "ERF" Тогда + ПараметрыРегистрации.ЭтоОтчет = Истина; + ИначеЕсли РасширениеФайла = "EPF" Тогда + ПараметрыРегистрации.ЭтоОтчет = Ложь; + Иначе + ПараметрыРегистрации.Успех = Ложь; + ОбработчикРезультата = Новый ОписаниеОповещения("ОбновитьИзФайлаЗавершение", ЭтотОбъект, ПараметрыРегистрации); + ТекстПредупреждения = НСтр("ru = 'Расширение файла не соответствует расширению внешнего отчета (ERF) или обработки (EPF).'"); + ПараметрыВозврата = Новый Структура; + ПараметрыВозврата.Вставить("Обработчик", ОбработчикРезультата); + ПараметрыВозврата.Вставить("Результат", Неопределено); + ОбработчикПростогоДиалога = Новый ОписаниеОповещения("ВернутьРезультатПослеЗакрытияПростогоДиалога", ЭтотОбъект, ПараметрыВозврата); + ПоказатьПредупреждение(ОбработчикПростогоДиалога, ТекстПредупреждения); + Возврат; + КонецЕсли; + + ПараметрыРегистрации.АдресДанныхОбработки = ОписаниеФайла.Хранение; + + ОбновитьИзФайлаИСообщить(ПараметрыРегистрации); +КонецПроцедуры + +&НаКлиенте +Процедура ВернутьРезультатПослеЗакрытияПростогоДиалога(ПараметрыОбработчика) Экспорт + Если ТипЗнч(ПараметрыОбработчика.Обработчик) = Тип("ОписаниеОповещения") Тогда + ВыполнитьОбработкуОповещения(ПараметрыОбработчика.Обработчик, ПараметрыОбработчика.Результат); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайлаИСообщить(ПараметрыРегистрации) + + ОбновитьИзФайлаНаСервере(ПараметрыРегистрации); + + Если ПараметрыРегистрации.ОтключатьКонфликтующие Тогда + // Отключается несколько объектов, потому динамические списки надо обновить. + ОповеститьОбИзменении(Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки")); + КонецЕсли; + + Если ПараметрыРегистрации.Успех Тогда + ОповещениеЗаголовок = ?(ПараметрыРегистрации.ЭтоОтчет, НСтр("ru = 'Файл внешнего отчета загружен'"), НСтр("ru = 'Файл внешней обработки загружен'")); + ОповещениеСсылка = ?(ЭтоНовый, "", ПолучитьНавигационнуюСсылку(Объект.Ссылка)); + ОповещениеТекст = ПараметрыРегистрации.ИмяФайла; + ПоказатьОповещениеПользователя(ОповещениеЗаголовок, ОповещениеСсылка, ОповещениеТекст); + ОбновитьИзФайлаЗавершение(Неопределено, ПараметрыРегистрации); + ИначеЕсли ПараметрыРегистрации.ИмяОбъектаЗанято Тогда // Разбор причины отказа загрузки обработки и отображение информации пользователю. + ПоказатьКонфликты(ПараметрыРегистрации); + Иначе + ОбработчикРезультата = Новый ОписаниеОповещения("ОбновитьИзФайлаЗавершение", ЭтотОбъект, ПараметрыРегистрации); + ПараметрыВопроса = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю(); + ПараметрыВопроса.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь; + СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОбработчикРезультата, ПараметрыРегистрации.ТекстОшибки, + РежимДиалогаВопрос.ОК, ПараметрыВопроса); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьКонфликты(ПараметрыРегистрации) + + Если ПараметрыРегистрации.КоличествоКонфликтующих > 1 Тогда + Если ПараметрыРегистрации.ЭтоОтчет Тогда + ЗаголовокВопроса = НСтр("ru = 'Конфликты при загрузке внешнего отчета'"); + ТекстВопроса = НСтр("ru = 'Внутреннее имя отчета ""[Name]"" + |уже занято существующими дополнительными отчетами ([Count]): + |[List]. + | + |Выберите: + |1. ""[Continue]"" - загрузить новый отчет в режиме отладки. + |2. ""[Disable]"" - загрузить новый отчет, отключив публикацию всех конфликтующих отчетов. + |3. ""[Open]"" - отменить загрузку и показать список конфликтующих отчетов.'"); + Иначе + ЗаголовокВопроса = НСтр("ru = 'Конфликты при загрузке внешней обработки'"); + ТекстВопроса = НСтр("ru = 'Внутреннее имя обработки ""[Name]"" + |уже занято существующими дополнительными обработками ([Count]): + |[List]. + | + |Выберите: + |1. ""[Continue]"" - загрузить новую обработку в режиме отладки. + |2. ""[Disable]"" - загрузить новую обработку, отключив публикацию всех конфликтующих обработок. + |3. ""[Open]"" - отменить загрузку и показать список конфликтующих обработок.'"); + КонецЕсли; + ПредставлениеКнопкиОтключить = НСтр("ru = 'Отключить конфликтующие'"); + ПредставлениеКнопкиОткрыть = НСтр("ru = 'Отменить и показать список'"); + Иначе + Если ПараметрыРегистрации.ЭтоОтчет Тогда + ЗаголовокВопроса = НСтр("ru = 'Конфликт при загрузке внешнего отчета'"); + ТекстВопроса = НСтр("ru = 'Внутреннее имя отчета ""[Name]"" + |уже занято существующим дополнительным отчетом [List]. + | + |Выберите: + |1. ""[Continue]"" - загрузить новый отчет в режиме отладки. + |2. ""[Disable]"" - загрузить новый отчет, отключив публикацию конфликтующего отчета. + |3. ""[Open]"" - открыть карточку конфликтующего отчета.'"); + ПредставлениеКнопкиОтключить = НСтр("ru = 'Отключить другой отчет'"); + Иначе + ЗаголовокВопроса = НСтр("ru = 'Конфликт при загрузке внешней обработки'"); + ТекстВопроса = НСтр("ru = 'Внутреннее имя обработки ""[Name]"" + |уже занято существующей дополнительной обработкой [List]. + | + |Выберите: + |1. ""[Continue]"" - загрузить новую обработку в режиме отладки. + |2. ""[Disable]"" - загрузить новую обработку, отключив публикацию конфликтующей обработки. + |3. ""[Open]"" - открыть карточку конфликтующей обработки.'"); + ПредставлениеКнопкиОтключить = НСтр("ru = 'Отключить другую обработку'"); + КонецЕсли; + ПредставлениеКнопкиОткрыть = НСтр("ru = 'Отменить и открыть'"); + КонецЕсли; + ПредставлениеКнопкиПродолжить = НСтр("ru = 'В режиме отладки'"); + ТекстВопроса = СтрЗаменить(ТекстВопроса, "[Name]", ПараметрыРегистрации.ИмяОбъекта); + ТекстВопроса = СтрЗаменить(ТекстВопроса, "[Count]", ПараметрыРегистрации.КоличествоКонфликтующих); + ТекстВопроса = СтрЗаменить(ТекстВопроса, "[List]", ПараметрыРегистрации.ПредставлениеЗанявших); + ТекстВопроса = СтрЗаменить(ТекстВопроса, "[Disable]", ПредставлениеКнопкиОтключить); + ТекстВопроса = СтрЗаменить(ТекстВопроса, "[Open]", ПредставлениеКнопкиОткрыть); + ТекстВопроса = СтрЗаменить(ТекстВопроса, "[Continue]", ПредставлениеКнопкиПродолжить); + + КнопкиВопроса = Новый СписокЗначений; + КнопкиВопроса.Добавить("ПродолжитьБезПубликации", ПредставлениеКнопкиПродолжить); + КнопкиВопроса.Добавить("ОтключитьКонфликтующие", ПредставлениеКнопкиОтключить); + КнопкиВопроса.Добавить("ОтменитьИОткрыть", ПредставлениеКнопкиОткрыть); + КнопкиВопроса.Добавить(КодВозвратаДиалога.Отмена); + + Обработчик = Новый ОписаниеОповещения("ОбновитьИзФайлаРазрешениеКонфликтов", ЭтотОбъект, ПараметрыРегистрации); + ПоказатьВопрос(Обработчик, ТекстВопроса, КнопкиВопроса, , "ПродолжитьБезПубликации", ЗаголовокВопроса); +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайлаРазрешениеКонфликтов(Ответ, ПараметрыРегистрации) Экспорт + Если Ответ = "ПродолжитьБезПубликации" Тогда + // Повторный вызов сервера (публикация в режиме отладки) и обработка результата. + ПараметрыРегистрации.ОтключатьПубликацию = Истина; + ОбновитьИзФайлаИСообщить(ПараметрыРегистрации); + ИначеЕсли Ответ = "ОтключитьКонфликтующие" Тогда + // Повторный вызов сервера (с переводом конфликтующих в режим отладки) и обработка результата. + ПараметрыРегистрации.ОтключатьКонфликтующие = Истина; + ОбновитьИзФайлаИСообщить(ПараметрыРегистрации); + ИначеЕсли Ответ = "ОтменитьИОткрыть" Тогда + // Отмена и показ конфликтующих. + // Список показывается когда конфликтует более одного элемента. + ПоказатьСписок = (ПараметрыРегистрации.КоличествоКонфликтующих > 1); + Если ПараметрыРегистрации.СтароеИмяОбъекта = ПараметрыРегистрации.ИмяОбъекта И Не ЭтоНовый Тогда + // Или текущий элемент уже записан с конфликтующим именем. + // В списке будут два элемента - текущий и конфликтующий. + // Это позволит принять решение о том, какой из них отключать. + ПоказатьСписок = Истина; + КонецЕсли; + Если ПоказатьСписок Тогда // Форма списка с отбором по конфликтующим. + ФормаИмя = "Справочник.ДополнительныеОтчетыИОбработки.ФормаСписка"; + ФормаЗаголовок = НСтр("ru = 'Дополнительные отчеты и обработки с внутреннем именем ""%1""'"); + ФормаЗаголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ФормаЗаголовок, ПараметрыРегистрации.ИмяОбъекта); + ФормаПараметры = Новый Структура; + ФормаПараметры.Вставить("Отбор", Новый Структура); + ФормаПараметры.Отбор.Вставить("ИмяОбъекта", ПараметрыРегистрации.ИмяОбъекта); + ФормаПараметры.Отбор.Вставить("ЭтоГруппа", Ложь); + ФормаПараметры.Вставить("Заголовок", ФормаЗаголовок); + ФормаПараметры.Вставить("Отображение", "Список"); + Иначе // Форма элемента + ФормаИмя = "Справочник.ДополнительныеОтчетыИОбработки.ФормаОбъекта"; + ФормаПараметры = Новый Структура; + ФормаПараметры.Вставить("Ключ", ПараметрыРегистрации.Конфликтующие[0].Значение); + КонецЕсли; + ОбновитьИзФайлаЗавершение(Неопределено, ПараметрыРегистрации); + ОткрытьФорму(ФормаИмя, ФормаПараметры, Неопределено, Истина); + Иначе // Отмена. + ОбновитьИзФайлаЗавершение(Неопределено, ПараметрыРегистрации); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайлаЗавершение(ПустойРезультат, ПараметрыРегистрации) Экспорт + Если ПараметрыРегистрации = Неопределено Или ПараметрыРегистрации.Успех = Ложь Тогда + Если ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии И Открыта() Тогда + Закрыть(); + КонецЕсли; + ИначеЕсли ПараметрыРегистрации.Успех = Истина Тогда + Если Не Открыта() Тогда + Открыть(); + КонецЕсли; + Модифицированность = Истина; + РегистрацияОбработки = Истина; + АдресДанныхОбработки = ПараметрыРегистрации.АдресДанныхОбработки; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьВариант() + Вариант = Элементы.ВариантыДополнительногоОтчета.ТекущиеДанные; + Если Вариант = Неопределено Тогда + Возврат; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Вариант.Ссылка) Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Вариант отчета ""%1"" не зарегистрирован.'"), Вариант.Наименование); + ПоказатьПредупреждение(, ТекстОшибки); + Иначе + МодульВариантыОтчетовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ВариантыОтчетовКлиент"); + МодульВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Вариант.Ссылка); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРегламентноеЗадание(РежимВыбора = Ложь, ИзмененФлажок = Ложь) + + ЭлементКоманда = Элементы.ОбъектКоманды.ТекущиеДанные; + Если ЭлементКоманда = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ЭлементКоманда.ВариантЗапуска <> ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода") + И ЭлементКоманда.ВариантЗапуска <> ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда + ТекстОшибки = НСтр("ru = 'Команда с вариантом запуска ""%1"" + |не может использоваться в регламентных заданиях.'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Строка(ЭлементКоманда.ВариантЗапуска)); + ПоказатьПредупреждение(, ТекстОшибки); + Если ИзмененФлажок Тогда + ЭлементКоманда.РегламентноеЗаданиеИспользование = НЕ ЭлементКоманда.РегламентноеЗаданиеИспользование; + КонецЕсли; + Возврат; + КонецЕсли; + + Если ИзмененФлажок И Не ЭлементКоманда.РегламентноеЗаданиеИспользование Тогда + Возврат; + КонецЕсли; + + Если ЭлементКоманда.РегламентноеЗаданиеРасписание.Количество() > 0 Тогда + РасписаниеКоманды = ЭлементКоманда.РегламентноеЗаданиеРасписание.Получить(0).Значение; + Иначе + РасписаниеКоманды = Неопределено; + КонецЕсли; + + Если ТипЗнч(РасписаниеКоманды) <> Тип("РасписаниеРегламентногоЗадания") Тогда + РасписаниеКоманды = Новый РасписаниеРегламентногоЗадания; + КонецЕсли; + + Контекст = Новый Структура; + Контекст.Вставить("ЭлементКоманда", ЭлементКоманда); + Контекст.Вставить("ОтключитьФлажокПриОтменеРедактирования", ИзмененФлажок); + Обработчик = Новый ОписаниеОповещения("ПослеОкончанияРедактированияРасписания", ЭтотОбъект, Контекст); + + РедактированиеРасписания = Новый ДиалогРасписанияРегламентногоЗадания(РасписаниеКоманды); + РедактированиеРасписания.Показать(Обработчик); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОкончанияРедактированияРасписания(Расписание, Контекст) Экспорт + ЭлементКоманда = Контекст.ЭлементКоманда; + Если Расписание = Неопределено Тогда + Если Контекст.ОтключитьФлажокПриОтменеРедактирования Тогда + ЭлементКоманда.РегламентноеЗаданиеИспользование = Ложь; + КонецЕсли; + Иначе + ЭлементКоманда.РегламентноеЗаданиеРасписание.Очистить(); + ЭлементКоманда.РегламентноеЗаданиеРасписание.Добавить(Расписание); + Если ДополнительныеОтчетыИОбработкиКлиентСервер.РасписаниеЗадано(Расписание) Тогда + Модифицированность = Истина; + ЭлементКоманда.РегламентноеЗаданиеИспользование = Истина; + ЭлементКоманда.РегламентноеЗаданиеПредставление = Строка(Расписание); + Иначе + ЭлементКоманда.РегламентноеЗаданиеПредставление = НСтр("ru = 'Не заполнено'"); + Если ЭлементКоманда.РегламентноеЗаданиеИспользование Тогда + ЭлементКоманда.РегламентноеЗаданиеИспользование = Ложь; + ПоказатьОповещениеПользователя( + НСтр("ru = 'Запуск по расписанию отключен'"), + , + НСтр("ru = 'Расписание не заполнено'")); + КонецЕсли; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьБыстрыйДоступ() + ЭлементКоманда = Элементы.ОбъектКоманды.ТекущиеДанные; + Если ЭлементКоманда = Неопределено Тогда + Возврат; + КонецЕсли; + + Найденные = БыстрыйДоступ.НайтиСтроки(Новый Структура("ИдентификаторКоманды", ЭлементКоманда.Идентификатор)); + ПользователиСБыстрымДоступом = Новый СписокЗначений; + Для Каждого СтрокаТаблицы Из Найденные Цикл + ПользователиСБыстрымДоступом.Добавить(СтрокаТаблицы.Пользователь); + КонецЦикла; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПользователиСБыстрымДоступом", ПользователиСБыстрымДоступом); + ПараметрыФормы.Вставить("ПредставлениеКоманды", ЭлементКоманда.Представление); + + КлиентскийКэш.Вставить("ИдентификаторСтрокиКоманды", ЭлементКоманда.ПолучитьИдентификатор()); + ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.БыстрыйДоступКДополнительнымОтчетамИОбработкам", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +// Параметры: +// Ответ - КодВозвратаДиалога +// ДополнительныеПараметры - Структура +// +&НаКлиенте +Процедура ВариантыДополнительногоОтчетаПередУдалениемЗавершение(Ответ, ДополнительныеПараметры) Экспорт + Если Ответ = КодВозвратаДиалога.Да Тогда + Вариант = ДополнительныеПараметры.Вариант; + УдалитьВариантДополнительногоОтчета("ВнешнийОтчет." + Объект.ИмяОбъекта, Вариант.КлючВарианта); + ВариантыДополнительногоОтчета.Удалить(Вариант); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьКомандуПослеПодтвержденияЗаписи(Ответ, Контекст) Экспорт + Если Ответ = "ЗаписатьИПродолжить" Тогда + ОчиститьСообщения(); + Если Не Записать() Тогда + Возврат; // Запись не удалась, сообщения о причинах выводит платформа. + КонецЕсли; + ИначеЕсли Ответ <> "ПродолжитьБезЗаписи" Тогда + Возврат; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Или Модифицированность Тогда + Возврат; // Финальная проверка. + КонецЕсли; + + СтрокаТаблицыКоманд = Элементы.ОбъектКоманды.ТекущиеДанные; + Если СтрокаТаблицыКоманд = Неопределено + Или СтрокаТаблицыКоманд.Идентификатор <> Контекст.ИдентификаторВыполняемойКоманды Тогда + Найденные = Объект.Команды.НайтиСтроки(Новый Структура("Идентификатор", Контекст.ИдентификаторВыполняемойКоманды)); + Если Найденные.Количество() = 0 Тогда + Возврат; + КонецЕсли; + СтрокаТаблицыКоманд = Найденные[0]; + КонецЕсли; + + ВыполняемаяКоманда = Новый Структура( + "Ссылка, Представление, + |Идентификатор, ВариантЗапуска, ПоказыватьОповещение, + |Модификатор, ОбъектыНазначения, ЭтоОтчет, Вид"); + ЗаполнитьЗначенияСвойств(ВыполняемаяКоманда, СтрокаТаблицыКоманд); + ВыполняемаяКоманда.Ссылка = Объект.Ссылка; + ВыполняемаяКоманда.Вид = Объект.Вид; + ВыполняемаяКоманда.ЭтоОтчет = (Объект.Вид = ВидДополнительныйОтчет Или Объект.Вид = ВидОтчет); + + Если СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") Тогда + + ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, ЭтотОбъект, ВыполняемаяКоманда.ОбъектыНазначения); + + ИначеЕсли СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") Тогда + + ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, ЭтотОбъект, ВыполняемаяКоманда.ОбъектыНазначения); + + ИначеЕсли СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода") + Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда + + ЗаголовокСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполняется команда ""%1""'"), + СтрокаТаблицыКоманд.Представление); + ПоказатьОповещениеПользователя(ЗаголовокСостояния + "...", , , БиблиотекаКартинок.ДлительнаяОперация48); + + ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор); + + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ТекстСообщения = ЗаголовокСостояния; + ПараметрыОжидания.ОповещениеПользователя.Показать = Истина; + ПараметрыОжидания.ВыводитьОкноОжидания = Истина; + + ОповещениеОЗавершении = Новый ОписаниеОповещения("ПослеЗавершенияВыполненияСервернойКомандыВФоне", ЭтотОбъект, ВыполняемаяКоманда); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗавершенияВыполненияСервернойКомандыВФоне(Задание, ВыполняемаяКоманда) Экспорт + + Если Задание = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Задание.Статус = "Ошибка" Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось выполнить команду по причине: + |%1.'"), Задание.КраткоеПредставлениеОшибки); + Иначе + Результат = ПолучитьИзВременногоХранилища(Задание.АдресРезультата); + ОповеститьФормы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ОповеститьФормы"); + Если ОповеститьФормы <> Неопределено Тогда + СтандартныеПодсистемыКлиент.ОповеститьФормыОбИзменении(ОповеститьФормы); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Клиент, Сервер + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеБыстрогоДоступаПользователей(КоличествоПользователей) + + Если КоличествоПользователей = 0 Тогда + Возврат НСтр("ru = 'Нет'"); + КонецЕсли; + + БыстрыйДоступПредставление = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка( + НСтр("ru = ';%1 пользователь;;%1 пользователя;%1 пользователей;%1 пользователя'"), КоличествоПользователей); + + Возврат БыстрыйДоступПредставление; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вызов сервера, Сервер + +&НаСервереБезКонтекста +Функция НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор) + ИмяПроцедуры = "ДополнительныеОтчетыИОбработки.ВыполнитьКоманду"; + + ПараметрыПроцедуры = Новый Структура("ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, ОбъектыНазначения"); + ПараметрыПроцедуры.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка; + ПараметрыПроцедуры.ИдентификаторКоманды = ВыполняемаяКоманда.Идентификатор; + ПараметрыПроцедуры.ОбъектыНазначения = ВыполняемаяКоманда.ОбъектыНазначения; + + НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + НастройкиЗапуска.НаименованиеФоновогоЗадания = НСтр("ru = 'Дополнительные отчеты и обработки: Выполнение серверного метода обработки'"); + + Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, НастройкиЗапуска); +КонецФункции + +&НаСервере +Процедура ОбновитьИзФайлаНаСервере(ПараметрыРегистрации) + ОбъектСправочника = РеквизитФормыВЗначение("Объект"); + КомандыСохраненные = ОбъектСправочника.Команды.Выгрузить(); + РезультатРегистрации = ДополнительныеОтчетыИОбработки.ЗарегистрироватьОбработку(ОбъектСправочника, ПараметрыРегистрации); + АдресРазрешений = ПоместитьВоВременноеХранилище(ОбъектСправочника.Разрешения.Выгрузить(), ЭтотОбъект.УникальныйИдентификатор); + ЗначениеВРеквизитФормы(ОбъектСправочника, "Объект"); + + ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыРегистрации, РезультатРегистрации, Истина); + + Если ПараметрыРегистрации.Успех Тогда + ЗаполнитьКоманды(КомандыСохраненные); + ИначеЕсли ПараметрыРегистрации.ИмяОбъектаЗанято Тогда + ПредставлениеЗанявших = ""; + Для Каждого ЭлементСписка Из ПараметрыРегистрации.Конфликтующие Цикл + Если СтрДлина(ПредставлениеЗанявших) > 80 Тогда + ПредставлениеЗанявших = ПредставлениеЗанявших + "... "; + Прервать; + КонецЕсли; + ПредставлениеЗанявших = ПредставлениеЗанявших + + ?(ПредставлениеЗанявших = "", "", ", ") + + """" + СокрЛП(ЭлементСписка.Представление) + """"; + КонецЦикла; + ПараметрыРегистрации.Вставить("ПредставлениеЗанявших", ПредставлениеЗанявших); + ПараметрыРегистрации.Вставить("КоличествоКонфликтующих", ПараметрыРегистрации.Конфликтующие.Количество()); + КонецЕсли; + + УстановитьВидимостьДоступность(ПараметрыРегистрации.Успех); +КонецПроцедуры + +&НаСервере +Функция ПодготовитьПараметрыФормыВыборОбъектовМетаданных() + ТаблицаОбъектовМетаданных = ДополнительныеОтчетыИОбработки.ПодключенныеОбъектыМетаданных(Объект.Вид); + Если ТаблицаОбъектовМетаданных = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + ФильтрПоОбъектамМетаданных = Новый СписокЗначений; + ФильтрПоОбъектамМетаданных.ЗагрузитьЗначения(ТаблицаОбъектовМетаданных.ВыгрузитьКолонку("ПолноеИмя")); + + ВыбранныеОбъектыМетаданных = Новый СписокЗначений; + Для Каждого ЭлементНазначение Из Объект.Назначение Цикл + Если ТаблицаОбъектовМетаданных.Найти(ЭлементНазначение.ОбъектНазначения, "Ссылка") <> Неопределено Тогда + ВыбранныеОбъектыМетаданных.Добавить(ЭлементНазначение.ОбъектНазначения.ПолноеИмя); + КонецЕсли; + КонецЦикла; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ФильтрПоОбъектамМетаданных", ФильтрПоОбъектамМетаданных); + ПараметрыФормы.Вставить("ВыбранныеОбъектыМетаданных", ВыбранныеОбъектыМетаданных); + ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Назначение дополнительной обработки'")); + + Возврат ПараметрыФормы; +КонецФункции + +&НаСервере +Процедура ЗагрузитьВыбранныеОбъектыМетаданных(Параметр) + Объект.Назначение.Очистить(); + + Для Каждого ЭлементПараметр Из Параметр Цикл + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ЭлементПараметр.Значение); + Если ОбъектМетаданных = Неопределено Тогда + Продолжить; + КонецЕсли; + СтрокаНазначение = Объект.Назначение.Добавить(); + СтрокаНазначение.ОбъектНазначения = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ОбъектМетаданных); + КонецЦикла; + + Модифицированность = Истина; + УстановитьВидимостьДоступность(); +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УдалитьВариантДополнительногоОтчета(КлючОбъекта, КлючВарианта) + ХранилищаНастроек["ХранилищеВариантовОтчетов"].Удалить(КлючОбъекта, КлючВарианта, Неопределено); +КонецПроцедуры + +&НаСервере +Процедура УстановитьВидимостьДоступность(Регистрация = Ложь) + + ЭтоГлобальнаяОбработка = (Объект.Вид = ВидДополнительнаяОбработка ИЛИ Объект.Вид = ВидДополнительныйОтчет); + ЭтоОтчет = (Объект.Вид = ВидДополнительныйОтчет ИЛИ Объект.Вид = ВидОтчет); + + Если Не Регистрация И Не ЭтоНовый И ЭтоОтчет Тогда + ВариантыДополнительногоОтчетаЗаполнить(); + Иначе + ВариантыДополнительногоОтчета.Очистить(); + КонецЕсли; + + КоличествоВариантов = ВариантыДополнительногоОтчета.Количество(); + КоличествоКоманд = Объект.Команды.Количество(); + КоличествоВидимыхЗакладок = 1; + + Если Объект.Вид = ВидДополнительныйОтчет И Объект.ИспользуетХранилищеВариантов Тогда + КоличествоВидимыхЗакладок = КоличествоВидимыхЗакладок + 1; + + Элементы.СтраницыВарианты.Видимость = Истина; + + Если Регистрация ИЛИ КоличествоВариантов = 0 Тогда + Элементы.СтраницыВарианты.ТекущаяСтраница = Элементы.ВариантыСкрытьДоЗаписи; + Элементы.СтраницаВарианты.Заголовок = НСтр("ru = 'Варианты отчета'"); + Иначе + Элементы.СтраницыВарианты.ТекущаяСтраница = Элементы.ВариантыПоказать; + Элементы.СтраницаВарианты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Варианты отчета (%1)'"), + Формат(КоличествоВариантов, "ЧГ=")); + КонецЕсли; + Иначе + Элементы.СтраницыВарианты.Видимость = Ложь; + КонецЕсли; + + Элементы.СтраницаКоманды.Видимость = КоличествоКоманд > 0; + Если КоличествоКоманд = 0 Тогда + Элементы.СтраницаКоманды.Заголовок = НазваниеСтраницыКоманд(); + Иначе + КоличествоВидимыхЗакладок = КоличествоВидимыхЗакладок + 1; + Элементы.СтраницаКоманды.Заголовок = НазваниеСтраницыКоманд() + " (" + Формат(КоличествоКоманд, "ЧГ=") + ")"; + КонецЕсли; + + Элементы.ВыполнитьКоманду.Видимость = Ложь; + Если ЭтоГлобальнаяОбработка И КоличествоКоманд > 0 Тогда + Для Каждого СтрокаТаблицыКоманд Из Объект.Команды Цикл + Если СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") + Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") + Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода") + Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда + Элементы.ВыполнитьКоманду.Видимость = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + КоличествоРазрешений = РазрешенияПрофиляБезопасности().Количество(); + РежимСовместимостиРазрешений = Объект.РежимСовместимостиРазрешений; + + БезопасныйРежим = Объект.БезопасныйРежим; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + ИспользуютсяПрофилиБезопасности = МодульРаботаВБезопасномРежиме.ИспользуютсяПрофилиБезопасности(); + Иначе + ИспользуютсяПрофилиБезопасности = Ложь; + КонецЕсли; + + Если ПолучитьФункциональнуюОпцию("РаботаВМоделиСервиса") Или ИспользуютсяПрофилиБезопасности Тогда + МодульРаботаВБезопасномРежимеСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежимеСлужебный"); + Если РежимСовместимостиРазрешений = Перечисления.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок.Версия_2_1_3 Тогда + Если БезопасныйРежим И КоличествоРазрешений > 0 И ИспользуютсяПрофилиБезопасности Тогда + Если ЭтоНовый Тогда + БезопасныйРежим = ""; + Иначе + БезопасныйРежим = МодульРаботаВБезопасномРежимеСлужебный.РежимПодключенияВнешнегоМодуля(Объект.Ссылка); + КонецЕсли; + КонецЕсли; + Иначе + Если КоличествоРазрешений = 0 Тогда + БезопасныйРежим = Истина; + Иначе + Если ИспользуютсяПрофилиБезопасности Тогда + Если ЭтоНовый Тогда + БезопасныйРежим = ""; + Иначе + БезопасныйРежим = МодульРаботаВБезопасномРежимеСлужебный.РежимПодключенияВнешнегоМодуля(Объект.Ссылка); + КонецЕсли; + Иначе + БезопасныйРежим = Ложь; + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если КоличествоРазрешений = 0 Тогда + + Элементы.СтраницаРазрешения.Видимость = Ложь; + Элементы.ГруппаБезопасныйРежимГлобальный.Видимость = Истина; + Элементы.ДекорацияБезопасныйРежимЛожьНадпись.Видимость = (БезопасныйРежим = Ложь); + Элементы.ДекорацияБезопасныйРежимИстинаНадпись.Видимость = (БезопасныйРежим = Истина); + Элементы.ГруппаВключениеПрофилейБезопасности.Видимость = Ложь; + + Иначе + + КоличествоВидимыхЗакладок = КоличествоВидимыхЗакладок + 1; + + Элементы.СтраницаРазрешения.Видимость = Истина; + Элементы.СтраницаРазрешения.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Разрешения (%1)'"), + Формат(КоличествоРазрешений, "ЧГ=")); + + Элементы.ГруппаБезопасныйРежимГлобальный.Видимость = Ложь; + + Элементы.ГруппаСтраницыРежимыСовместимостиРазрешений.ТекущаяСтраница = Элементы.СтраницаРазрешенияВерсия_2_2_2; + + Если БезопасныйРежим = Истина Тогда + Элементы.СтраницыБезопасныйРежимСРазрешениями.ТекущаяСтраница = Элементы.СтраницаБезопасныйРежимСРазрешениями; + ИначеЕсли БезопасныйРежим = Ложь Тогда + Элементы.СтраницыБезопасныйРежимСРазрешениями.ТекущаяСтраница = Элементы.СтраницаНебезопасныйРежимСРазрешениями; + ИначеЕсли ТипЗнч(БезопасныйРежим) = Тип("Строка") Тогда + Элементы.СтраницыБезопасныйРежимСРазрешениями.ТекущаяСтраница = Элементы.СтраницаПерсональныйПрофильБезопасности; + Элементы.ДекорацияПерсональныйПрофильБезопасностиНадпись.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Дополнительный отчет или обработка будет подключаться к программе с использованием ""персонального"" + |профиля безопасности %1, в котором будут разрешены только следующие операции:'"), + БезопасныйРежим); + Иначе + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 не является корректным режимом подключения для дополнительных отчетов и обработок, + |требующих разрешений на использование профилей безопасности.'"), + БезопасныйРежим); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежимеСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежимеСлужебный"); + ДоступнаНастройкаПрофилейБезопасности = МодульРаботаВБезопасномРежимеСлужебный.ДоступнаНастройкаПрофилейБезопасности(); + Иначе + ДоступнаНастройкаПрофилейБезопасности = Ложь; + КонецЕсли; + + Если БезопасныйРежим = Ложь И Не ИспользуютсяПрофилиБезопасности И ДоступнаНастройкаПрофилейБезопасности Тогда + Элементы.ГруппаВключениеПрофилейБезопасности.Видимость = Истина; + Иначе + Элементы.ГруппаВключениеПрофилейБезопасности.Видимость = Ложь; + КонецЕсли; + + СформироватьСписокРазрешений(); + + КонецЕсли; + + Элементы.СтраницыВариантыКомандыРазрешения.ОтображениеСтраниц = ОтображениеСтраницФормы[?(КоличествоВидимыхЗакладок > 1, "ЗакладкиСверху", "Нет")]; + + ПредставлениеНазначения = ""; + Если ЭтоГлобальнаяОбработка Тогда + Для Каждого СтрокаРаздел Из Объект.Разделы Цикл + ПредставлениеРаздела = ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(СтрокаРаздел.Раздел); + Если ПредставлениеРаздела = Неопределено Тогда + Продолжить; + КонецЕсли; + ПредставлениеНазначения = ?(ПустаяСтрока(ПредставлениеНазначения), ПредставлениеРаздела, + ПредставлениеНазначения + ", " + ПредставлениеРаздела); + КонецЦикла; + Иначе + Для Каждого СтрокаНазначение Из Объект.Назначение Цикл + ПредставлениеОбъекта = ДополнительныеОтчетыИОбработки.ПредставлениеОбъектаМетаданных(СтрокаНазначение.ОбъектНазначения); + ПредставлениеНазначения = ?(ПустаяСтрока(ПредставлениеНазначения), ПредставлениеОбъекта, + ПредставлениеНазначения + ", " + ПредставлениеОбъекта); + КонецЦикла; + КонецЕсли; + Если ПредставлениеНазначения = "" Тогда + ПредставлениеНазначения = НСтр("ru = 'Не определено'"); + КонецЕсли; + + Элементы.ОбъектКомандыБыстрыйДоступПредставление.Видимость = ЭтоГлобальнаяОбработка; + Элементы.ОбъектКомандыНастроитьБыстрыйДоступ.Видимость = ЭтоГлобальнаяОбработка; + Элементы.ОбъектКомандыРегламентноеЗаданиеПредставление.Видимость = ЭтоГлобальнаяОбработка; + Элементы.ОбъектКомандыРегламентноеЗаданиеИспользование.Видимость = ЭтоГлобальнаяОбработка; + Элементы.ОбъектКомандыНастроитьРасписание.Видимость = ЭтоГлобальнаяОбработка; + + ЭтоПечатнаяФорма = Объект.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма; + Элементы.ТипыФорм.Видимость = Не ЭтоГлобальнаяОбработка И Не ЭтоПечатнаяФорма; + Если Не Элементы.ТипыФорм.Видимость Тогда + Объект.ИспользоватьДляФормыОбъекта = Истина; + Объект.ИспользоватьДляФормыСписка = Истина; + КонецЕсли; + Элементы.НастроитьВидимость.Видимость = ЭтоПечатнаяФорма; + Элементы.ОбъектКомандыКомментарий.Видимость = ЭтоПечатнаяФорма; + + Если ЭтоНовый Тогда + Заголовок = ?(ЭтоОтчет, НСтр("ru = 'Дополнительный отчет (создание)'"), НСтр("ru = 'Дополнительная обработка (создание)'")); + Иначе + Заголовок = Объект.Наименование + " " + ?(ЭтоОтчет, НСтр("ru = '(Дополнительный отчет)'"), НСтр("ru = '(Дополнительная обработка)'")); + КонецЕсли; + + Если КоличествоВариантов > 0 Тогда + + ВыводитьЗаголовокТаблицы = КоличествоВидимыхЗакладок <= 1 И Объект.Вид = ВидДополнительныйОтчет И Объект.ИспользуетХранилищеВариантов; + + Элементы.ВариантыДополнительногоОтчета.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы[?(ВыводитьЗаголовокТаблицы, "Верх", "Нет")]; + Элементы.ВариантыДополнительногоОтчета.Шапка = НЕ ВыводитьЗаголовокТаблицы; + Элементы.ВариантыДополнительногоОтчета.ГоризонтальныеЛинии = НЕ ВыводитьЗаголовокТаблицы; + + КонецЕсли; + + Если КоличествоКоманд > 0 Тогда + + ВыводитьЗаголовокТаблицы = КоличествоВидимыхЗакладок <= 1 И НЕ ЭтоГлобальнаяОбработка; + + Элементы.ОбъектКоманды.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы[?(ВыводитьЗаголовокТаблицы, "Верх", "Нет")]; + Элементы.ОбъектКоманды.Шапка = НЕ ВыводитьЗаголовокТаблицы; + Элементы.ОбъектКоманды.ГоризонтальныеЛинии = НЕ ВыводитьЗаголовокТаблицы; + + КонецЕсли; + + КлючСохраненияПоложенияОкна = ДополнительныеОтчетыИОбработки.ВидВСтроку(Объект.Вид); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Сервер + +&НаСервере +Процедура СформироватьСписокРазрешений() + + ТаблицаРазрешений = ПолучитьИзВременногоХранилища(АдресРазрешений);// СправочникТабличнаяЧасть.ДополнительныеОтчетыИОбработки.Разрешения + + Разрешения = Новый Массив(); + + МодульРаботаВБезопасномРежимеСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежимеСлужебный"); + + Для Каждого Строка Из ТаблицаРазрешений Цикл + Разрешение = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(МодульРаботаВБезопасномРежимеСлужебный.Пакет(), Строка.ВидРазрешения)); + ЗаполнитьЗначенияСвойств(Разрешение, Строка.Параметры.Получить()); + Разрешения.Добавить(Разрешение); + КонецЦикла; + + Свойства = МодульРаботаВБезопасномРежимеСлужебный.СвойстваДляРегистраРазрешений(Объект.Ссылка); + + УстановитьПривилегированныйРежим(Истина); + ПредставлениеРазрешений_2_2_2 = МодульРаботаВБезопасномРежимеСлужебный.ПредставлениеРазрешенийНаИспользованиеВнешнихРесурсов( + Свойства.Тип, Свойства.Идентификатор, Свойства.Тип, Свойства.Идентификатор, Разрешения); + УстановитьПривилегированныйРежим(Ложь); + +КонецПроцедуры + +&НаСервере +Функция РазрешенияПрофиляБезопасности() + Возврат ПолучитьИзВременногоХранилища(АдресРазрешений); +КонецФункции + +&НаСервере +Процедура ЗаполнитьКоманды(КомандыСохраненные = Неопределено) + + Объект.Команды.Сортировать("Представление"); + + КомандыПечатиОбъекта = Неопределено; + Если Объект.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма + И Объект.Назначение.Количество() = 1 + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + КомандыПечатиОбъекта = МодульУправлениеПечатью.СтандартныеКомандыПечатиОбъекта(Объект.Назначение[0].ОбъектНазначения); + КонецЕсли; + + Для Каждого ЭлементКоманда Из Объект.Команды Цикл + Если Объект.Вид = ВидДополнительнаяОбработка ИЛИ Объект.Вид = ВидДополнительныйОтчет Тогда + Найденные = БыстрыйДоступ.НайтиСтроки(Новый Структура("ИдентификаторКоманды", ЭлементКоманда.Идентификатор)); + ЭлементКоманда.БыстрыйДоступПредставление = ПредставлениеБыстрогоДоступаПользователей( + Найденные.Количество()); + КонецЕсли; + + ЭлементКоманда.РегламентноеЗаданиеИспользование = Ложь; + ЭлементКоманда.РегламентноеЗаданиеРазрешено = Ложь; + + Если Объект.Вид = ВидДополнительнаяОбработка + И (ЭлементКоманда.ВариантЗапуска = Перечисления.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода + ИЛИ ЭлементКоманда.ВариантЗапуска = Перечисления.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме) Тогда + + ЭлементКоманда.РегламентноеЗаданиеРазрешено = Истина; + + РегламентноеЗаданиеGUID = ЭлементКоманда.РегламентноеЗаданиеGUID; + Если КомандыСохраненные <> Неопределено Тогда + НайденнаяСтрока = КомандыСохраненные.Найти(ЭлементКоманда.Идентификатор, "Идентификатор"); + Если НайденнаяСтрока <> Неопределено Тогда + РегламентноеЗаданиеGUID = НайденнаяСтрока.РегламентноеЗаданиеGUID; + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(РегламентноеЗаданиеGUID) Тогда + УстановитьПривилегированныйРежим(Истина); + РегламентноеЗадание = РегламентныеЗаданияСервер.Задание(РегламентноеЗаданиеGUID); + Если РегламентноеЗадание <> Неопределено Тогда + ЭлементКоманда.РегламентноеЗаданиеGUID = РегламентноеЗаданиеGUID; + ЭлементКоманда.РегламентноеЗаданиеПредставление = Строка(РегламентноеЗадание.Расписание); + ЭлементКоманда.РегламентноеЗаданиеИспользование = РегламентноеЗадание.Использование; + ЭлементКоманда.РегламентноеЗаданиеРасписание.Вставить(0, РегламентноеЗадание.Расписание); + КонецЕсли; + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + Если Не ЗначениеЗаполнено(ЭлементКоманда.РегламентноеЗаданиеПредставление) Тогда + ЭлементКоманда.РегламентноеЗаданиеПредставление = НСтр("ru = 'Не заполнено'"); + КонецЕсли; + ИначеЕсли Объект.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма Тогда + Если Не ПустаяСтрока(ЭлементКоманда.ЗаменяемыеКоманды) И КомандыПечатиОбъекта <> Неопределено Тогда + ИдентификаторыЗаменяемых = СтрРазделить(ЭлементКоманда.ЗаменяемыеКоманды, ",", Ложь); + ПредставлениеЗаменяемыхКоманд = ""; + КоличествоЗаменяемых = 0; + Фильтр = Новый Структура("Идентификатор, ФорматСохранения, СразуНаПринтер", Неопределено, Неопределено, Ложь); + Для Каждого ИдентификаторЗаменяемойКоманды Из ИдентификаторыЗаменяемых Цикл + Фильтр.Идентификатор = СокрЛП(ИдентификаторЗаменяемойКоманды); + СписокЗаменяемыхКоманд = КомандыПечатиОбъекта.НайтиСтроки(Фильтр); + // при неоднозначности в определении заменяемой команды замена не выполняется. + Если СписокЗаменяемыхКоманд.Количество() = 1 Тогда + ПредставлениеЗаменяемыхКоманд = ПредставлениеЗаменяемыхКоманд + ?(ПустаяСтрока(ПредставлениеЗаменяемыхКоманд), "", ", ") + """" + СписокЗаменяемыхКоманд[0].Представление + """"; + КоличествоЗаменяемых = КоличествоЗаменяемых + 1; + КонецЕсли; + КонецЦикла; + Если КоличествоЗаменяемых > 0 Тогда + Если КоличествоЗаменяемых = 1 Тогда + ШаблонКомментария = НСтр("ru = 'Заменяет стандартную команду печати %1'"); + Иначе + ШаблонКомментария = НСтр("ru = 'Заменяет стандартные команды печати: %1'"); + КонецЕсли; + ЭлементКоманда.Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, ПредставлениеЗаменяемыхКоманд); + КонецЕсли; + КонецЕсли; + Иначе + ЭлементКоманда.РегламентноеЗаданиеПредставление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неприменимо для команд с вариантом запуска ""%1""'"), + Строка(ЭлементКоманда.ВариантЗапуска)); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ВариантыДополнительногоОтчетаЗаполнить() + ВариантыДополнительногоОтчета.Очистить(); + + Попытка + ВнешнийОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(Объект.Ссылка); + Исключение + ТекстОшибки = НСтр("ru = 'Не удалось получить список вариантов отчета из-за ошибки, возникшей при подключении этого отчета:'"); + ТекстСообщения = ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); + Возврат; + КонецПопытки; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); + + ОтчетМетаданные = ВнешнийОбъект.Метаданные(); + СхемаКДМетаданные = ОтчетМетаданные.ОсновнаяСхемаКомпоновкиДанных;// ОбъектМетаданных + Если СхемаКДМетаданные <> Неопределено Тогда + СхемаКД = ВнешнийОбъект.ПолучитьМакет(СхемаКДМетаданные.Имя); + Для Каждого ВариантНастроекКД Из СхемаКД.ВариантыНастроек Цикл + КлючВарианта = ВариантНастроекКД.Имя; + ВариантСсылка = МодульВариантыОтчетов.ВариантОтчета(Объект.Ссылка, КлючВарианта); + Если ВариантСсылка <> Неопределено Тогда + Вариант = ВариантыДополнительногоОтчета.Добавить(); + Вариант.КлючВарианта = КлючВарианта; + Вариант.Наименование = ВариантНастроекКД.Представление; + Вариант.Пользовательский = Ложь; + Вариант.ИндексКартинки = 5; + Вариант.Ссылка = ВариантСсылка; + КонецЕсли; + КонецЦикла; + Иначе + КлючВарианта = ""; + ВариантСсылка = МодульВариантыОтчетов.ВариантОтчета(Объект.Ссылка, КлючВарианта); + Если ВариантСсылка <> Неопределено Тогда + Вариант = ВариантыДополнительногоОтчета.Добавить(); + Вариант.КлючВарианта = КлючВарианта; + Вариант.Наименование = ОтчетМетаданные.Представление(); + Вариант.Пользовательский = Ложь; + Вариант.ИндексКартинки = 5; + Вариант.Ссылка = ВариантСсылка; + КонецЕсли; + КонецЕсли; + Иначе + МодульВариантыОтчетов = Неопределено; + КонецЕсли; + + Если Объект.ИспользуетХранилищеВариантов Тогда + Хранилище = ХранилищаНастроек["ХранилищеВариантовОтчетов"]; + КлючОбъекта = Объект.Ссылка; + СписокНастроек = МодульВариантыОтчетов.КлючиВариантовОтчета(КлючОбъекта); + Иначе + Хранилище = ХранилищеВариантовОтчетов; + КлючОбъекта = "ВнешнийОтчет." + Объект.ИмяОбъекта; + СписокНастроек = Хранилище.ПолучитьСписок(КлючОбъекта); + КонецЕсли; + + Для Каждого ЭлементСписка Из СписокНастроек Цикл + Вариант = ВариантыДополнительногоОтчета.Добавить(); + Вариант.КлючВарианта = ЭлементСписка.Значение; + Вариант.Наименование = ЭлементСписка.Представление; + Вариант.Пользовательский = Истина; + Вариант.ИндексКартинки = 3; + Если МодульВариантыОтчетов <> Неопределено Тогда + Вариант.Ссылка = МодульВариантыОтчетов.ВариантОтчета(Объект.Ссылка, Вариант.КлючВарианта); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Функция ВыбранныеОбъектыНазначения() + Результат = Новый СписокЗначений; + Результат.ЗагрузитьЗначения(Объект.Назначение.Выгрузить(, "ОбъектНазначения").ВыгрузитьКолонку("ОбъектНазначения")); + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура НастроитьВидимостьЗавершение(РезультатДиалога, ДополнительныеПараметры) Экспорт + Если РезультатДиалога <> "Продолжить" Тогда + Возврат; + КонецЕсли; + Записать(); + ОткрытьФормуНастроекПодменюПечать(); +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуНастроекПодменюПечать() + МодульУправлениеПечатьюСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюСлужебныйКлиент"); + МодульУправлениеПечатьюСлужебныйКлиент.ОткрытьФормуНастроекПодменюПечать(ВыбранныеОбъектыНазначения()); +КонецПроцедуры + +&НаСервере +Функция ОтключаемыеКоманды() + Результат = Новый СписокЗначений; + Для Каждого Команда Из Объект.Команды Цикл + Если Не ПустаяСтрока(Команда.ЗаменяемыеКоманды) Тогда + СписокЗаменяемых = СтрРазделить(Команда.ЗаменяемыеКоманды, ",", Ложь); + Для Каждого ЗаменяемаяКоманда Из СписокЗаменяемых Цикл + Результат.Добавить(ЗаменяемаяКоманда); + КонецЦикла; + КонецЕсли; + КонецЦикла; + Возврат Результат; +КонецФункции + +&НаСервере +Функция НазваниеСтраницыКоманд() + Если Объект.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма Тогда + Возврат НСтр("ru = 'Команды печати'"); + Иначе + Возврат НСтр("ru = 'Команды'"); + КонецЕсли; +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Help/ru.html" new file mode 100644 index 00000000..7fd695a0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Help/ru.html" @@ -0,0 +1,50 @@ + +

Предназначен для хранения в программе дополнительных отчетов и обработок.

+

Программа позволяет подключать и использовать дополнительные (внешние) отчеты и обработки в режиме 1С:Предприятия. Они позволяют расширять возможности программы, не внося в нее изменений, что может быть востребовано для оперативного решения каких-либо задач без снятия с поддержки поставщика программы.

+

Дополнительные отчеты и обработки разрабатываются в режиме Конфигуратора, для этого надо обращаться к разработчику. Также можно получить их из интернета.

+

Для того чтобы использовать дополнительные отчеты и обработки, воспользуйтесь командой Печатные формы, отчеты и обработки в разделе Администрирование, включите соответствующий флажок. После этого становится доступной команда Дополнительные отчеты и обработки. По умолчанию флажок включен.

+

В списке выводится:

+
  • +
    Наименование - полное наименование отчета или обработки.
    +
  • +
    Вид - существует несколько видов дополнительных отчетов и обработок, указывается разработчиком. В зависимости от вида различаются функции.
    +
  • +
    Публикация - видимость дополнительных отчетов и обработок, также обозначается цветом. Красным цветом выделены дополнительные отчеты и обработки в режиме отладки, которые доступны только администратору. Серым цветом отображаются дополнительные отчеты и обработки, которые отключены. Помеченные на удаление дополнительные отчеты и обработки также становятся неактивными и отображаются серым цветом, а также специальным значком.
    +
  • +
    Версия - отображается номер версии данной обработки (указывается разработчиком).
    +
  • +
    Ответственный - пользователь программы, который назначен ответственным за данный отчет или обработку. Отслеживает состояние дополнительного отчета или обработки, обновляет версии и т.п. (по умолчанию "Администратор").

С помощью команды Еще - Изменить форму в список можно добавить дополнительные колонки:

+
  • Имя объекта - включает вид и другие сведения. Заполняется разработчиком, в программе проставляется по умолчанию. +
  • Режим совместимости разрешений - версия программы, для которой обработка используется. +
  • Комментарий - подробная информация о дополнительном отчете или обработке; +
  • Использует хранилище вариантов - свойство для дополнительных отчетов. Принимает значения "Да", если дополнительный отчет хранит данные в хранилище вариантов программы; +
  • Использовать для формы списка - принимает значение "Да", если команда, которая вызывает дополнительный отчет или обработку, располагается в окнах списков; +
  • Использовать для формы объекта - принимает значение "Да", если команда, которая вызывает дополнительный отчет или обработку, располагается в окнах элементов списков; +
  • Информация - описание дополнительной обработки или отчета, которое было написано разработчиком; +
  • Имя файла - расширение и имя файла дополнительной обработки (отчета); +
  • Безопасный режим - принимает значение "Да", если дополнительный отчет или обработка выполняется в безопасном режиме. Как правило, большинство обработок должны выполняться в безопасном режиме. Это гарантирует, что они не содержат "ненадежный программный код, который выполняется на сервере. Однако некоторые обработки могут требовать выполнения в небезопасном режиме. Об этом программа размещает предупреждение. Такие обработки следует загружать только из надежных источников (поставщиков) или перед загрузкой самостоятельно выполнять их аудит. Подробнее о безопасном режиме работы см. документацию по платформе 1С:Предприятие.

Добавление дополнительных отчетов или обработок

+
  • С помощью кнопки Добавить из файла программа предложит выбрать файл внешнего отчета или обработки на компьютере (укажите путь к каталогу на диске) и настроить его параметры. Набор сведений зависит от назначения обработки или отчета. Если указан неверный файл, то программа выдаст сообщение об ошибке, например, сообщение о том, что дополнительная обработка предназначена для другой версии программы. 

Отборы

+

Если дополнительных отчетов и обработок в списке много, то для удобства поиска можно воспользоваться отборами:

+
  • +
    по полю Вид - выберите один из видов дополнительных отчетов и обработок из списка для отбора, например, "Отчет".
    +
  • +
    по полю Публикация - выберите нужное состояние для отбора, например, "Используется".
    +
  • +
    по полям Вид и Публикация - можно сочетать два вида отбора в больших списках.

Загрузка из файла

+
  • С помощью кнопки Обновить из файла можно обновить обработку во внутреннем хранилище программы. Укажите путь к файлу, нажмите Открыть.

Выгрузка в файл

+
  • С помощью кнопки Сохранить как можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите Сохранить. Имя файлу присваивается автоматически, имеется возможность его переименовать.

Виды дополнительных отчетов и обработок

+

Существует несколько видов дополнительных отчетов и обработок:

+
  • Глобальные отчеты и обработки - используются независимо от данных программы, также называются общими. Команды для их использования размещаются в разделах программы. С помощью глобальных отчетов и обработок можно загружать данные в программу, производить обновление или очистку индекса полнотекстового поиска и т.д. Они содержат команды, вызываемые только из разделов командного интерфейса. Команды не зависят от конкретных объектов программы. Список доступных разделов для размещения команд определен разработчиком заранее и включен в файл дополнительного отчета или обработки, его невозможно изменить. +
  • Назначаемые дополнительные отчеты и обработки - предназначены для конкретных документов или списков программы, которых может быть несколько, при этом список доступных назначений определен разработчиком заранее и включен в текст дополнительного отчета или обработки, поэтому при настройке дополнительного отчета или обработки можно только выбирать из этого списка. К этому типу относятся несколько видов дополнительных отчетов и обработок: +
    • Отчет - назначаемый дополнительный отчет. С его помощью можно выдать отчет по определенному объекту программы. +
    • Заполнение объекта - назначаемая дополнительная обработка, которая позволяет автоматически заполнить или очистить один или несколько элементов списка. +
    • Печатная форма - назначаемая дополнительная обработка, с помощью которой можно расширить количество печатных форм документа. +
    • Создание связанных объектов - назначаемая дополнительная обработка, которая позволяет быстро заполнить списки с помощью копирования элементов.

Последовательность создания дополнительной обработки (отчета)

+
  • +
    Создать внешнюю обработку (отчет);
    +
  • +
    Регистрация дополнительной обработки в информационной базе происходит на основании сведений, которые поставляет сама обработка. Эти сведения должны возвращаться в виде структуры в функции СведенияОВнешнейОбработке.

Пример реализации функции СведенияОВнешнейОбработке с использованием программного интерфейса 

+

Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<...>();
ПараметрыРегистрации.Версия = "...";
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = '<Представление команды>'");
Команда.Идентификатор = "<Имя команды>";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<...>();
Команда.ПоказыватьОповещение = <Истина/Ложь>;
Возврат ПараметрыРегистрации;
КонецФункции

+

Подробнее см. на сайте ИТС.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/ManagerModule.bsl" new file mode 100644 index 00000000..b91a935a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/ManagerModule.bsl" @@ -0,0 +1,59 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("ИспользоватьДляФормыОбъекта"); + Результат.Добавить("ИспользоватьДляФормыСписка"); + Результат.Добавить("Ответственный"); + Результат.Добавить("Публикация"); + + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЗначениеРазрешено(Ссылка)"; + + Ограничение.ТекстДляВнешнихПользователей = Ограничение.Текст; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..55a893ad --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/ObjectModule.bsl" @@ -0,0 +1,406 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +Перем ЭтоГлобальнаяОбработка; + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + ПроверкаЭлемента = Истина; + Если ДополнительныеСвойства.Свойство("ПроверкаСписка") Тогда + ПроверкаЭлемента = Ложь; + КонецЕсли; + + Если НЕ ДополнительныеОтчетыИОбработки.ПроверитьГлобальнаяОбработка(Вид) Тогда + Если НЕ ИспользоватьДляФормыОбъекта И НЕ ИспользоватьДляФормыСписка + И Публикация <> Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Необходимо отключить публикацию или выбрать для использования как минимум одну из форм'") + , + , + , + "Объект.ИспользоватьДляФормыОбъекта", + Отказ); + КонецЕсли; + КонецЕсли; + + // Если отчет публикуется, то необходим контроль уникальности имени объекта, + // под которым дополнительный отчет регистрируется в системе. + Если Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется Тогда + + // Проверка имени + ТекстЗапроса = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | 1 + |ИЗ + | Справочник.ДополнительныеОтчетыИОбработки КАК ДопОтчеты + |ГДЕ + | ДопОтчеты.ИмяОбъекта = &ИмяОбъекта + | И &УсловиеДопОтчет + | И ДопОтчеты.Публикация = ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется) + | И ДопОтчеты.ПометкаУдаления = ЛОЖЬ + | И ДопОтчеты.Ссылка <> &Ссылка"; + + ВидыДопОтчетов = Новый Массив; + ВидыДопОтчетов.Добавить(Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет); + ВидыДопОтчетов.Добавить(Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет); + + Если ВидыДопОтчетов.Найти(Вид) <> Неопределено Тогда + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеДопОтчет", "ДопОтчеты.Вид В (&ВидыДопОтчетов)"); + Иначе + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеДопОтчет", "НЕ ДопОтчеты.Вид В (&ВидыДопОтчетов)"); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИмяОбъекта", ИмяОбъекта); + Запрос.УстановитьПараметр("ВидыДопОтчетов", ВидыДопОтчетов); + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.Текст = ТекстЗапроса; + + УстановитьПривилегированныйРежим(Истина); + Конфликтующие = Запрос.Выполнить().Выгрузить(); + УстановитьПривилегированныйРежим(Ложь); + + Если Конфликтующие.Количество() > 0 Тогда + Отказ = Истина; + Если ПроверкаЭлемента Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Имя ""%1"", используемое данным отчетом (обработкой), уже занято другим опубликованным дополнительным отчетом (обработкой). + | + |Для продолжения необходимо изменить вид Публикации с ""%2"" на ""%3"" или ""%4"".'"), + ИмяОбъекта, + Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется), + Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки), + Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена)); + Иначе + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Имя ""%1"", используемое отчетом (обработкой) ""%2"", уже занято другим опубликованным дополнительным отчетом (обработкой).'"), + ИмяОбъекта, + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Наименование")); + КонецЕсли; + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "Объект.Публикация"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + ИнтеграцияПодсистемБСП.ПередЗаписьюДополнительнойОбработки(ЭтотОбъект, Отказ); + + Если ЭтоНовый() И НЕ ДополнительныеОтчетыИОбработки.ПравоДобавления(ЭтотОбъект) Тогда + ВызватьИсключение НСтр("ru = 'Недостаточно прав для добавления дополнительных отчетов или обработок.'"); + КонецЕсли; + + // Предварительные проверки + Если НЕ ЭтоНовый() И Вид <> ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Вид") Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Невозможно сменить вид существующего дополнительного отчета или обработки.'"),,,, + Отказ); + Возврат; + КонецЕсли; + + // Связь реквизитов с пометкой удаления. + Если ПометкаУдаления Тогда + Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена; + КонецЕсли; + + // Кэш стандартных проверок + ДополнительныеСвойства.Вставить("ПубликацияИспользуется", Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется); + + Если ЭтоГлобальнаяОбработка() Тогда + Если ПравоНастройкиРасписания() Тогда + ПередЗаписьюГлобальнойОбработки(Отказ); + КонецЕсли; + Назначение.Очистить(); + Иначе + ПередЗаписьюНазначаемойОбработки(Отказ); + Разделы.Очистить(); + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + БыстрыйДоступ = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "БыстрыйДоступ"); + Если ТипЗнч(БыстрыйДоступ) = Тип("ТаблицаЗначений") Тогда + ЗначенияИзмерений = Новый Структура("ДополнительныйОтчетИлиОбработка", Ссылка); + ЗначенияРесурсов = Новый Структура("Доступно", Истина); + РегистрыСведений.ПользовательскиеНастройкиДоступаКОбработкам.ЗаписатьПакетНастроек(БыстрыйДоступ, ЗначенияИзмерений, ЗначенияРесурсов, Истина); + КонецЕсли; + + Если ЭтоГлобальнаяОбработка() Тогда + Если ПравоНастройкиРасписания() Тогда + ПриЗаписиГлобальнойОбработки(Отказ); + КонецЕсли; + Иначе + ПриЗаписиНазначаемойОбработки(Отказ); + КонецЕсли; + + Если Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет + Или Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет Тогда + ПриЗаписиОтчета(Отказ); + КонецЕсли; + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + ИнтеграцияПодсистемБСП.ПередУдалениемДополнительнойОбработки(ЭтотОбъект, Отказ); + + Если ДополнительныеОтчетыИОбработки.ПроверитьГлобальнаяОбработка(Вид) Тогда + + УстановитьПривилегированныйРежим(Истина); + // Удаление всех заданий. + Для Каждого Команда Из Команды Цикл + Если ЗначениеЗаполнено(Команда.РегламентноеЗаданиеGUID) Тогда + РегламентныеЗаданияСервер.УдалитьЗадание(Команда.РегламентноеЗаданиеGUID); + КонецЕсли; + КонецЦикла; + УстановитьПривилегированныйРежим(Ложь); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ЭтоГлобальнаяОбработка() + + Если ЭтоГлобальнаяОбработка = Неопределено Тогда + ЭтоГлобальнаяОбработка = ДополнительныеОтчетыИОбработки.ПроверитьГлобальнаяОбработка(Вид); + КонецЕсли; + + Возврат ЭтоГлобальнаяОбработка; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Глобальные обработки + +Процедура ПередЗаписьюГлобальнойОбработки(Отказ) + Если Отказ ИЛИ НЕ ДополнительныеСвойства.Свойство("АктуальныеКоманды") Тогда + Возврат; + КонецЕсли; + + ТаблицаКоманд = ДополнительныеСвойства.АктуальныеКоманды;// СправочникТабличнаяЧасть.ДополнительныеОтчетыИОбработки.Команды + + ЗаданияДляОбновления = Новый Соответствие; + + ПубликацияВключена = (Публикация <> Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена); + + // Регламентные задания необходимо изменять в привилегированном режиме. + УстановитьПривилегированныйРежим(Истина); + + // Очистка заданий по командам, которые были удалены из таблицы. + Если Не ЭтоНовый() Тогда + Для Каждого СтараяКоманда Из Ссылка.Команды Цикл + Если ЗначениеЗаполнено(СтараяКоманда.РегламентноеЗаданиеGUID) + И ТаблицаКоманд.Найти(СтараяКоманда.РегламентноеЗаданиеGUID, "РегламентноеЗаданиеGUID") = Неопределено Тогда + РегламентныеЗаданияСервер.УдалитьЗадание(СтараяКоманда.РегламентноеЗаданиеGUID); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + // Актуализация набора регламентных заданий для записи их идентификаторов в табличную часть. + Для Каждого АктуальнаяКоманда Из ТаблицаКоманд Цикл + Команда = Команды.Найти(АктуальнаяКоманда.Идентификатор, "Идентификатор"); + + Если ПубликацияВключена И АктуальнаяКоманда.РегламентноеЗаданиеРасписание.Количество() > 0 Тогда + Расписание = АктуальнаяКоманда.РегламентноеЗаданиеРасписание[0].Значение; + Использование = АктуальнаяКоманда.РегламентноеЗаданиеИспользование + И ДополнительныеОтчетыИОбработкиКлиентСервер.РасписаниеЗадано(Расписание); + Иначе + Расписание = Неопределено; + Использование = Ложь; + КонецЕсли; + + Задание = РегламентныеЗаданияСервер.Задание(АктуальнаяКоманда.РегламентноеЗаданиеGUID); + Если Задание = Неопределено Тогда // Не найдено + Если Использование Тогда + // Создать и зарегистрировать. + ПараметрыЗадания = Новый Структура; + ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ЗапускДополнительныхОбработок); + ПараметрыЗадания.Вставить("Использование", Ложь); + Задание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания); + ЗаданияДляОбновления.Вставить(АктуальнаяКоманда, Задание); + Команда.РегламентноеЗаданиеGUID = РегламентныеЗаданияСервер.УникальныйИдентификатор(Задание); + Иначе + // Действие не требуется + КонецЕсли; + Иначе // Найдено + Если Использование Тогда + // Зарегистрировать. + ЗаданияДляОбновления.Вставить(АктуальнаяКоманда, Задание); + Иначе + // Удалить. + РегламентныеЗаданияСервер.УдалитьЗадание(АктуальнаяКоманда.РегламентноеЗаданиеGUID); + Команда.РегламентноеЗаданиеGUID = ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор(); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + ДополнительныеСвойства.Вставить("ЗаданияДляОбновления", ЗаданияДляОбновления); + +КонецПроцедуры + +Процедура ПриЗаписиГлобальнойОбработки(Отказ) + Если Отказ Или Не ДополнительныеСвойства.Свойство("АктуальныеКоманды") Тогда + Возврат; + КонецЕсли; + + ПубликацияВключена = (Публикация <> Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена); + + // Регламентные задания необходимо изменять в привилегированном режиме. + УстановитьПривилегированныйРежим(Истина); + + Для Каждого КлючИЗначение Из ДополнительныеСвойства.ЗаданияДляОбновления Цикл + Команда = КлючИЗначение.Ключ;// СправочникТабличнаяЧастьСтрока.ДополнительныеОтчетыИОбработки.Команды + Задание = КлючИЗначение.Значение; + + Изменения = Новый Структура; + Изменения.Вставить("Использование", Ложь); + Изменения.Вставить("Расписание", Неопределено); + Изменения.Вставить("Наименование", Лев(ПредставлениеЗадания(Команда), 120)); + + Если ПубликацияВключена И Команда.РегламентноеЗаданиеРасписание.Количество() > 0 Тогда + Изменения.Расписание = Команда.РегламентноеЗаданиеРасписание[0].Значение; + Изменения.Использование = Команда.РегламентноеЗаданиеИспользование + И ДополнительныеОтчетыИОбработкиКлиентСервер.РасписаниеЗадано(Изменения.Расписание); + КонецЕсли; + + ПараметрыПроцедуры = Новый Массив; + ПараметрыПроцедуры.Добавить(Ссылка); + ПараметрыПроцедуры.Добавить(Команда.Идентификатор); + + Изменения.Вставить("Параметры", ПараметрыПроцедуры); + + ИнтеграцияПодсистемБСП.ПередОбновлениемЗадания(ЭтотОбъект, Команда, Задание, Изменения); + Если Изменения <> Неопределено Тогда + РегламентныеЗаданияСервер.ИзменитьЗадание(Задание, Изменения); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Работа с регламентными заданиями. + +Функция ПравоНастройкиРасписания() + // Проверяет наличие права настройки расписания дополнительных отчетов и обработок. + Возврат ПравоДоступа("Изменение", Метаданные.Справочники.ДополнительныеОтчетыИОбработки); +КонецФункции + +Функция ПредставлениеЗадания(Команда) + // '[ВидОбъекта]: [НаименованиеОбъекта] / Команда: [ПредставлениеКоманды]' + Возврат ( + СокрЛП(Вид) + + ": " + + СокрЛП(Наименование) + + " / " + + НСтр("ru = 'Команда'") + + ": " + + СокрЛП(Команда.Представление)); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Назначаемые обработки + +Процедура ПередЗаписьюНазначаемойОбработки(Отказ) + ТаблицаНазначение = Назначение.Выгрузить(); + ТаблицаНазначение.Свернуть("ОбъектНазначения"); + Назначение.Загрузить(ТаблицаНазначение); + + СсылкиОбъектовМетаданных = ТаблицаНазначение.ВыгрузитьКолонку("ОбъектНазначения"); + + Если НЕ ЭтоНовый() Тогда + Для Каждого СтрокаТаблицы Из Ссылка.Назначение Цикл + Если СсылкиОбъектовМетаданных.Найти(СтрокаТаблицы.ОбъектНазначения) = Неопределено Тогда + СсылкиОбъектовМетаданных.Добавить(СтрокаТаблицы.ОбъектНазначения); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + ДополнительныеСвойства.Вставить("СсылкиОбъектовМетаданных", СсылкиОбъектовМетаданных); +КонецПроцедуры + +Процедура ПриЗаписиНазначаемойОбработки(Отказ) + Если Отказ ИЛИ НЕ ДополнительныеСвойства.Свойство("СсылкиОбъектовМетаданных") Тогда + Возврат; + КонецЕсли; + + РегистрыСведений.НазначениеДополнительныхОбработок.ОбновитьДанныеПоСсылкамОбъектовМетаданных(ДополнительныеСвойства.СсылкиОбъектовМетаданных); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Глобальные отчеты + +Процедура ПриЗаписиОтчета(Отказ) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + + Попытка + Если ЭтоНовый() Тогда + ВнешнийОбъект = ВнешниеОтчеты.Создать(ИмяОбъекта); + Иначе + ВнешнийОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(Ссылка); + КонецЕсли; + Исключение + ТекстОшибки = НСтр("ru = 'Ошибка подключения:'") + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ДополнительныеОтчетыИОбработки.ЗаписатьОшибку(Ссылка, ТекстОшибки); + ДополнительныеСвойства.Вставить("ОшибкаПодключения", ТекстОшибки); + ВнешнийОбъект = Неопределено; + КонецПопытки; + + ДополнительныеСвойства.Вставить("Глобальный", ЭтоГлобальнаяОбработка()); + + МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); + МодульВариантыОтчетов.ПриЗаписиДополнительногоОтчета(ЭтотОбъект, Отказ, ВнешнийОбъект); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" new file mode 100644 index 00000000..b963420b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" @@ -0,0 +1,822 @@ + + + + + + + + + + ДополнительныеОтчетыИОбработки + + ru + Дополнительные отчеты и обработки + + true + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа + + + ru + Группа, к которой относится дополнительный отчет или обработка + + true + + Catalog.ДополнительныеОтчетыИОбработки.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование дополнительного отчета или обработки + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Дополнительный отчет или обработка + + true + 2 + true + 100 + String + Variable + AsDescription + InDialog + BothWays + Catalog.ДополнительныеОтчетыИОбработки.Form.ФормаЭлемента + Catalog.ДополнительныеОтчетыИОбработки.Form.ФормаСписка + + БезопасныйРежим + + ru + Безопасный режим + + + Boolean + + + ru + Вызывать обработку в безопасном режиме. В безопасном режиме запрещены COM; загрузка внешних компонент; запуск внешних приложений и команд операционной системы; доступ к файловой системе (кроме временных файлов); доступ к сети Интернет. + + + + + Use + Use + + + Версия + + ru + Версия + + + String + + 10 + + + + ru + Версия дополнительного отчета или обработки (устанавливается поставщиком) + + + + + Use + Use + + + Вид + + ru + Вид + + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + + ru + Вид дополнительного отчета или обработки + + + + + Index + Use + + + ИмяОбъекта + + ru + Имя объекта + + + String + + 256 + + + + ru + Имя, под которым дополнительный отчет или обработка регистрируется в системе + + + + + + + Index + Use + Use + + + ИмяФайла + + ru + Имя файла + + + String + + 260 + + + + ru + Имя файла дополнительного отчета или обработки + + + + + + + Use + Use + + + Информация + + ru + Информация + + + String + + 1024 + + + + ru + Краткая информация о внешней обработке + + + + + + + Use + Use + + + ИспользоватьДляФормыОбъекта + + ru + Использовать для формы объекта + + + Boolean + + + ru + Признак использования для формы объекта + + + + + Index + Use + + + ИспользоватьДляФормыСписка + + ru + Использовать для формы списка + + + Boolean + + + ru + Признак использования для формы списка + + + + + Index + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий ответственного за ведение списка обработок + + + + + + + Use + Use + + + Ответственный + + ru + Ответственный + + + CatalogRef.Пользователи + + + ru + Пользователь, добавивший обработку + + + + ShowError + + Use + Use + + + Публикация + + ru + Публикация + + + EnumRef.ВариантыПубликацииДополнительныхОтчетовИОбработок + + + ru + Вариант публикации (опубликовано, опубликовано для тестирования, не опубликовано) + + + + ShowError + true + + Enum.ВариантыПубликацииДополнительныхОтчетовИОбработок.EnumValue.Используется + + Use + Use + + + ХранилищеНастроек + + ru + Хранилище настроек + + + ValueStorage + + + ru + Двоичные данные настроек дополнительного отчета или обработки + + + + + Use + + + ХранилищеОбработки + + ru + Хранилище обработки + + + ValueStorage + + + ru + Двоичные данные дополнительного отчета или обработки + + + + + Use + + + ИспользуетХранилищеВариантов + + ru + Использует хранилище вариантов + + Когда Истина то дополнительный отчет подключен к хранилищу вариантов "ХранилищеВариантовОтчетов". + + Boolean + + + ru + Определяет может ли дополнительный отчет выводиться в панелях отчетов. +Заполняется автоматически при подключении дополнительного отчета/обработки. + + + + + Index + Use + Use + + + ТеснаяИнтеграцияСФормойОтчета + + ru + Тесная интеграция с формой отчета + + Когда Истина то у отчета есть программный интерфейс для тесной интеграции с общей формой "ФормаОтчета". + + Boolean + + + ru + Заполняется автоматически при подключении дополнительного отчета/обработки. + + + + + Index + Use + Use + + + РежимСовместимостиРазрешений + + ru + Режим совместимости разрешений + + + EnumRef.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок + + + ru + Режим совместимости, исходя из которого при подключении дополнительного отчета или обработки определяется способ интерпретации запрошенных разрешений. Задается в качестве версии библиотеки "1С:Библиотека стандартных подсистем". + + + + + Use + Use + + + + + + + Команды + + ru + Команды + + + Use + LineNumber + + Use + + + + + Идентификатор + + ru + Идентификатор + + + String + + 100 + + + + ru + Идентификатор команды (служебное поле) + + + + Use + Use + + + ВариантЗапуска + + ru + Вариант запуска + + + EnumRef.СпособыВызоваДополнительныхОбработок + + + ru + Вариант запуска команды (клиент, сервер, открытие формы) + + + + Use + Use + + + Представление + + ru + Наименование + + + String + + 200 + + + + ru + Представление команды в пользовательском интерфейсе. + + + + Use + Index + Use + + + ПоказыватьОповещение + + ru + Показывать оповещение + + + Boolean + + + ru + Показывать оповещение пользователю после выполнения + + + + Use + + + Модификатор + + ru + Модификатор + + + String + + 256 + + + + ru + Модификатор команды (служебное поле) + + + + Use + + + РегламентноеЗаданиеGUID + + ru + Регламентное задание GUID + + + UUID + + + ru + Идентификатор связанного регламентного задания + + + + Use + + + Скрыть + + ru + Скрыть + + + Boolean + + + ru + "Да" - Серверная команда, которая вызывается из формы внешней обработки. +Значение по умолчанию - "Нет". + + + + Use + Use + + + ЗаменяемыеКоманды + + ru + Заменяемые команды + + + String + + + + ru + Идентификаторы заменяемых команд печати. + + + + Use + Use + + + + + + + + Назначение + + ru + Назначение + + + Use + LineNumber + + Use + + + + + ОбъектНазначения + + ru + Объект назначения + + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Тип объектов, в списке или карточке которых должна выводиться эта дополнительная обработка. + + + + Use + Index + Use + + + + + + + + Разделы + + ru + Разделы + + + Use + LineNumber + + Use + + + + + Раздел + + ru + Раздел + + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Раздел командного интерфейса, в котором должен выводиться этот дополнительный отчет или обработка. + + + + Use + Index + Use + + + + + + + + Разрешения + + ru + Разрешения + + + Use + LineNumber + + Use + + + + + ВидРазрешения + + ru + Вид разрешения + + + String + + 255 + + + + ru + Строковое представление XDTO-типа, описывающего разрешение (служебное поле). + + + + Use + Use + + + Параметры + + ru + Параметры + + + ValueStorage + + + ru + Описание разрешения, требуемого для дополнительного отчета или обработки (служебное поле). + + + + Use + Use + + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + РазмещениеВРазделах + + ru + Размещение в разделах + + PersonalComputer + MobileDevice + + + БыстрыйДоступКДополнительнымОтчетамИОбработкам + + ru + Быстрый доступ к дополнительным отчетам и обработкам + + PersonalComputer + MobileDevice + + + ПроверкаДополнительныхОтчетовИОбработок + + ru + Проверка дополнительных отчетов и обработок + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..24a97189 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,388 @@ + + + + ГруппаПользовательскихНастроек + 11 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 8 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 13 + + СписокСтрокаПоискаРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 14 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 16 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 17 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 19 + + СписокУправлениеПоискомРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 20 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ЗакладкиВзаимодействий + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..6196ef6b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,28 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("Отбор") И Параметры.Отбор.Свойство("Владелец") Тогда + ЭлементОтбора = Параметры.Отбор.Владелец; + Параметры.Отбор.Удалить("Владелец"); + Иначе + ЭлементОтбора = Пользователи.АвторизованныйПользователь(); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, + "Владелец", + ЭлементОтбора, + ВидСравненияКомпоновкиДанных.Равно); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..a726a01b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,399 @@ + + + + Код + 1 + true + true + + true + + + КодExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + OnChange + НаименованиеПриИзменении + + + НаименованиеExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + КомпоновщикНастроекНастройкиОтбор + 5 + + <key>ru</key> + <value>Компоновщик настроек настройки отбор</value> + + true + true + + true + + + КомпоновщикНастроек.Settings.Filter + + None + + КомпоновщикНастроекНастройкиОтборКоманднаяПанель + 7 + + КомпоновщикНастроекНастройкиОтборСвойстваЭлементаПользовательскойНастройки + 8 + true + + true + + + КомпоновщикНастроекНастройкиОтборСвойстваЭлементаПользовательскойНастройкиExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + Form.Item.КомпоновщикНастроекНастройкиОтбор.StandardCommand.UserSettingItemProperties + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnChange + КомпоновщикНастроекНастройкиОтборПриИзменении + + + true + true + + true + + КомпоновщикНастроекНастройкиОтборSearchString + 13 + + КомпоновщикНастроекНастройкиОтборSearchStringExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + КомпоновщикНастроекНастройкиОтборSearchStringContextMenu + 14 + true + true + + true + + true + + + true + + + + true + true + + true + + КомпоновщикНастроекНастройкиОтборViewStatus + 16 + + КомпоновщикНастроекНастройкиОтборViewStatusExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + КомпоновщикНастроекНастройкиОтборViewStatusContextMenu + 17 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + КомпоновщикНастроекНастройкиОтборSearchControl + 19 + + КомпоновщикНастроекНастройкиОтборSearchControlExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + КомпоновщикНастроекНастройкиОтборSearchControlContextMenu + 20 + true + true + + true + + true + + SearchControlAddition + + true + + + + КомпоновщикНастроекНастройкиОтборExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + КомпоновщикНастроекНастройкиОтборКонтекстноеМеню + 6 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true + All + false +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ЗакладкиВзаимодействий + + + true + + + true + +
true
+ true +
+ + КомпоновщикНастроек + 2 + + DataCompositionSettingsComposer + + + true + + + true + + + + + + + + + AfterWrite + ПослеЗаписи + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..ebf83852 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,42 @@ + +

Предназначена для настройки и хранения отборов, по которым в дальнейшем можно осуществлять быстрый доступ к группе документов взаимодействий.

+

Закладки могут быть только индивидуальными. С помощью закладок можно группировать документы взаимодействий, например, по отделам предприятия, используя различные условия отбора.

+

Ввод закладки взаимодействий

+
  • Напишите Наименование. Поле является обязательным. +
  • +
  • Для того чтобы задать новое условие для отбора, нажмите Добавить новый элементУсловий может быть несколько. +
  • +
  • В колонке Поле  выберите поле документа взаимодействий, по которому будет происходить отбор. Для этого в списке укажите нужное поле, затем нажмите Выбрать. Также можно использовать двойной щелчок мыши. +
  • +
  • В колонке Вид сравнения  выберите операцию сравнения, при этом кроме стандартных операций (например, Больше или равно), имеются нестандартные: +
    • С помощью операции сравнения В списке можно задать список возможных значений для отбора. Например, в список можно поместить несколько почтовых ящиков партнера, с которых возможна отправка корреспонденции. Операция сравнения Не в списке является отрицанием предыдущей. Например, в другую папку можно поместить остальные письма, кроме писем, полученных от перечисленных в списке отправителей. +
    • +
    • С помощью операций Содержит или Не содержит можно использовать поиск по части поля (сочетанию букв) - наименования, темы, адреса, если полностью это поле неизвестно. Например, можно задать шаблон почтовых ящиков контактных лиц определенного партнера, если название сайта партнера известно. В этом случае письма с почтовых адресов с этим сочетанием букв будут в одной закладке. +
    • +
    • Определить, есть ли в поле значение, можно с помощью операции Заполнено или Не заполнено.
  • +
  • Укажите Значение поля отбора. Для этого в зависимости от выбранного поля и вида сравнения  выберите из предложенного списка значений нужное, введите значение или создайте свой список значений. +
  • +
  • При необходимости можно сгруппировать условия отбора. В этом случае по команде Сгруппировать условия к выделенным условиям необходимо применить логические операции И, ИЛИ, Не. +
    • Для того чтобы использовать группировку условий, выделите одно из нужных условий, выполните команду Сгруппировать условия, выберите Тип группы: И, ИЛИ, Не, с помощью кнопки мыши перетащите остальные условия в группу или создайте их внутри группы. +
    • +
    • Если задается несколько условий без группировки, то по умолчанию к таким условиям применяется логическая операция И.
  • +
  • Нажмите кнопку Записать и закрыть, для того чтобы отборы начали применяться.

Пример использования закладки

+

Менеджер по продажам начинает свой день с отработки нерассмотренных взаимодействий по незакрытым претензиям клиента.

+
  • +
    В этом случае рекомендуется создать закладку.
    +
  • +
  • +
    В качестве наименования закладки можно указать Нерассмотренные взаимодействия по претензиям в работе.
    +
  • +
  • +
    Указать в качестве условий отбора:
    +
    • +
      Тип предмета равно "Претензия клиента",
      +
    • +
    • +
      Статус претензии равно "Зарегистрирована" или "Обрабатывается",
      +
    • +
    • +
      Признак Рассмотрено у взаимодействия равно "Ложь".

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..c6051cc9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,96 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Ссылка.Пустая() Тогда + + ИнициализироватьКомпоновщикСервер(Неопределено); + + КонецЕсли; + + ЗаполнитьСписокВыбораНаименования(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + СохраненныйКомпоновщикНастроек = ТекущийОбъект.КомпоновщикНастроек.Получить(); + ИнициализироватьКомпоновщикСервер(СохраненныйКомпоновщикНастроек); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + ТекущийОбъект.КомпоновщикНастроек = Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки()); +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Запись_ЗакладкиВзаимодействий", ПараметрыЗаписи, Объект.Ссылка); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура КомпоновщикНастроекНастройкиОтборПриИзменении(Элемент) + + ЗаполнитьСписокВыбораНаименования(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + + ЗаполнитьСписокВыбораНаименования(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ИнициализироватьКомпоновщикСервер(НастройкаКомпоновки) + + СхемаКомпоновки = ЖурналыДокументов.Взаимодействия.ПолучитьМакет("СхемаОтборВзаимодействия"); + АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновки, УникальныйИдентификатор); + КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); + + Если НастройкаКомпоновки = Неопределено Тогда + КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию); + Иначе + КомпоновщикНастроек.ЗагрузитьНастройки(НастройкаКомпоновки); + КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьСписокВыбораНаименования(Форма) + + СписокВыбора = Форма.Элементы.Наименование.СписокВыбора; + + СписокВыбора.Очистить(); + Если Не ПустаяСтрока(Форма.Объект.Наименование) Тогда + СписокВыбора.Добавить(Форма.Объект.Наименование); + КонецЕсли; + ПредставлениеОтбора = Строка(Форма.КомпоновщикНастроек.Настройки.Отбор); + Если Форма.Объект.Наименование <> ПредставлениеОтбора Тогда + СписокВыбора.Добавить(ПредставлениеОтбора); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Help/ru.html" new file mode 100644 index 00000000..a680fc48 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/Help/ru.html" @@ -0,0 +1,24 @@ + +

С помощью закладок можно группировать документы в списке взаимодействий, например, разместить их в группы по отделам предприятия, используя различные условия отбора. Закладки могут быть только индивидуальными.

+

Для того чтобы использовать эту возможность, выберите группировку списка взаимодействий По закладкам.

+

Ввод закладок

+
  • Выполните команду Создать контекстного меню панели группировки по правой кнопке мыши. +
  • +
  • Заполните необходимые поля.

Группировка закладок

+
  • Закладки можно группировать. +
  • +
  • Для этого выполните команду контекстного меню панели группировки Создать группу. +
    • Введите Наименование группы. +
    • +
    • Выберите Пользователя - владельца группы закладок (из списка Пользователи). По умолчанию программа указывает текущего пользователя, при этом группа закладок вместе с содержимым видна только своему владельцу. +
    • +
    • Поле Группа заполняется автоматически, если эта группа входит в вышестоящую группу. При этом группа и ее содержимое видно только владельцу. При необходимости выберите другую группу.
  • +
  • Введите или перетащите с помощью мыши необходимое количество закладок.

Работа с закладками в списке взаимодействий

+
  • С помощью команды контекстного меню по правой кнопке мыши Добавить в закладки списка Взаимодействия можно выделить документы в отдельные закладки Избранные взаимодействия. +
  • +
  • Затем такую закладку можно перетащить в одну из папок.

Работа с закладками в карточке пользователя

+
  • Все действия с закладками пользователя можно произвести также в карточке пользователя. +
  • +
  • Например, со своими закладками можно поработать, воспользовавшись командой Сведения о пользователе в панели действий раздела Главное.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..bf784b2b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/ManagerModule.bsl" @@ -0,0 +1,38 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Наименование"); + Результат.Добавить("КомпоновщикНастроек"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271.mdo" new file mode 100644 index 00000000..1c0fc8ac --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/\320\227\320\260\320\272\320\273\320\260\320\264\320\272\320\270\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271.mdo" @@ -0,0 +1,188 @@ + + + + + + + + + + ЗакладкиВзаимодействий + + ru + Закладки взаимодействий + + true + Catalog.ЗакладкиВзаимодействий.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + + ru + Пользователь + + + ru + Пользователь, создавший закладку + + true + + Catalog.Пользователи.EmptyRef + + ShowError + Use + + + + + Use + Parent + + ru + Группа + + + ru + Группа, в которую входит данная закладка + + true + + Catalog.ЗакладкиВзаимодействий.EmptyRef + + + Отбор.Владелец + Catalog.ЗакладкиВзаимодействий.StandardAttribute.Owner + + Use + + + + + Use + Description + + ru + Наименование закладки, может быть сформировано автоматически, согласно отбору + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Закладка взаимодействий + + true + 2 + true + Catalog.Пользователи + 150 + String + Variable + AsDescription + InDialog + BothWays + Catalog.ЗакладкиВзаимодействий.Form.ФормаЭлемента + Catalog.ЗакладкиВзаимодействий.Form.ФормаСписка + + КомпоновщикНастроек + + ru + Компоновщик настроек + + + ValueStorage + + + ru + Отбор, согласно которому формируется список взаимодействий по данной закладке + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Commands/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Commands/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/CommandModule.bsl" new file mode 100644 index 00000000..16e30c43 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Commands/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/CommandModule.bsl" @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОткрытьФорму("Справочник.Заметки.Форма.ВсеЗаметки", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..b9e01007 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,22 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + false + ДатаИзменения + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Form.form" new file mode 100644 index 00000000..5edbbaf3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Form.form" @@ -0,0 +1,894 @@ + + + + <key>ru</key> + <value>Все заметки</value> + + + Фильтры + 30 + + ФильтрПоЦвету + 28 + + <key>ru</key> + <value>Цвет</value> + + true + true + + true + + + + ВыбранныйЦвет + + + + ru + Отбор заметок по цвету значка + + + OnChange + ФильтрПоЦветуПриИзменении + + + ФильтрПоЦветуExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + ФильтрПоЦветуКонтекстноеМеню + 29 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + true + true + + + Enum.ЦветаЗаметок.EnumValue.Красный + + + + + Enum.ЦветаЗаметок.EnumValue.Оранжевый + + + + + Enum.ЦветаЗаметок.EnumValue.Желтый + + + + + Enum.ЦветаЗаметок.EnumValue.Зеленый + + + + + Enum.ЦветаЗаметок.EnumValue.Голубой + + + + + Enum.ЦветаЗаметок.EnumValue.Синий + + + + + Enum.ЦветаЗаметок.EnumValue.Фиолетовый + + + + + + ФильтрПоПредмету + 26 + + <key>ru</key> + <value>Предмет</value> + + true + true + + true + + + + ВыбранныйПредмет + + + + ru + Отбор заметок по предмету + + + OnChange + ФильтрПоПредметуПриИзменении + + + ФильтрПоПредметуExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + ФильтрПоПредметуКонтекстноеМеню + 27 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + false + true + true + true + true + true + + + + ПоказыватьУдаленные + 31 + true + true + + true + + + + ПоказыватьУдаленные + + + Right + + ru + Отображать в списке заметки, помеченные на удаление + + + OnChange + ПоказыватьУдаленныеПриИзменении + + + ПоказыватьУдаленныеExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьУдаленныеКонтекстноеМеню + 32 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Фильтры</value> + + + ФильтрыExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПользовательскихНастроек + 43 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 33 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Тема + 20 + + <key>ru</key> + <value>Тема</value> + + true + true + + true + + + + Список.Description + + + + ТемаExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + ТемаКонтекстноеМеню + 21 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 30 + true + true + + + + Предмет + 22 + true + true + + true + + + + Список.ПредставлениеПредмета + + + + ПредметExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + + ПредметКонтекстноеМеню + 23 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 30 + true + true + + + + ДатаИзменения + 24 + true + true + + true + + + + Список.ДатаИзменения + + + + ДатаИзмененияExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + ДатаИзмененияКонтекстноеМеню + 25 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + ru + ДЛФ=D + + + + + Ссылка + 54 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 55 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 45 + + СписокСтрокаПоискаРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 46 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 48 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 49 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 51 + + СписокУправлениеПоискомРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 52 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.ИндексКартинки + + + CommonPicture.КоллекцияЗаметки + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + Use + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ + СправочникЗаметки.Ссылка, + СправочникЗаметки.ПометкаУдаления, + СправочникЗаметки.Предопределенный, + СправочникЗаметки.Наименование, + СправочникЗаметки.ДляРабочегоСтола, + СправочникЗаметки.Пометка, + СправочникЗаметки.ДатаИзменения, + СправочникЗаметки.ПредставлениеПредмета, + ВЫБОР + КОГДА СправочникЗаметки.ПометкаУдаления + ТОГДА 0 + КОГДА СправочникЗаметки.ЭтоГруппа + ТОГДА -1 + КОГДА СправочникЗаметки.Пометка = ЗНАЧЕНИЕ(Перечисление.ЦветаЗаметок.ПустаяСсылка) + ТОГДА 4 + ИНАЧЕ ЕСТЬNULL(ЦветаЗаметок.Порядок, 0) + 2 + КОНЕЦ КАК ИндексКартинки +ИЗ + Справочник.Заметки КАК СправочникЗаметки + ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ЦветаЗаметок КАК ЦветаЗаметок + ПО СправочникЗаметки.Пометка.Порядок = ЦветаЗаметок.Порядок +ГДЕ + СправочникЗаметки.Автор = &Пользователь + И (СправочникЗаметки.ЭтоГруппа + ИЛИ (&Предмет = "" + ИЛИ СправочникЗаметки.ПредставлениеПредмета ПОДОБНО &Предмет) + И (&Пометка = ЗНАЧЕНИЕ(Перечисление.ЦветаЗаметок.ПустаяСсылка) + ИЛИ СправочникЗаметки.Пометка = &Пометка) + И (&ПоказыватьУдаленные + ИЛИ НЕ СправочникЗаметки.ПометкаУдаления)) + Catalog.Заметки + true + true + true + true + true + +
+ + ВыбранныйПредмет + + <key>ru</key> + <value>Выбранный предмет</value> + + 2 + + String + + 100 + + + + true + + + true + + + ВыбранныйПредмет + + + + ВыбранныйЦвет + + <key>ru</key> + <value>Выбранный цвет</value> + + 3 + + EnumRef.ЦветаЗаметок + + + true + + + true + + + ВыбранныйЦвет + + + + ПоказыватьУдаленные + + <key>ru</key> + <value>Показывать удаленные</value> + + 4 + + Boolean + + + true + + + true + + + ПоказыватьУдаленные + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" new file mode 100644 index 00000000..b779fb04 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" @@ -0,0 +1,23 @@ + +

Список предназначен для работы с заметками. В списке находятся все заметки, созданные Вами в программе.

+

Открывается по команде Все заметки.

+

В программе можно вести заметки - произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа и которая никому больше не должна быть доступна. Заметки доступны только их автору.

+

В заметки не следует помещать информацию, для хранения которой в программе предусмотрены соответствующие списки или документы. 

+

Заметки можно отмечать цветом, помещать на рабочий стол, объединять в группы. Заметки, которые видны на рабочем столе, в списках отмечены жирным шрифтом.

+

В списке выводится:

+
  • Тема - заголовок заметки. +
  • Предмет - документ или другой объект программы, по поводу которого вводилась заметка. +
  • Дата изменения - дата и время записи заметки.

Ввод заметки

+
  • Заметку можно ввести по поводу документа или другого объекта программы. В окне объекта программы нажмите  - Создать заметку. В этом случае будет автоматически заполнено поле Предмет. +
  • В списках Мои заметки рабочего стола или Все заметки нажмите Создать. В этом случае в поле Предмет программа автоматически проставляет "Не задан". +
  • Заполните необходимые поля.

Группировка заметок

+

Заметки можно сгруппировать, например, по предметам или по темам.

+
  • Нажмите Создать группу, заполните необходимые поля. +
  • Создав необходимое количество групп, перетащите заметки мышью в соответствующие группы.

Отборы

+
  • Если заметок в списке много, то можно отобрать их по полям Цвет и Предмет. +
  • Выберите нужные значения. Можно использовать два отбора одновременно.

Просмотр помеченных на удаление

+
  • +
    Включите флажок Показывать удаленные для того чтобы показывать заметки, помеченные на удаление. Невозможно показать заметки, которые были окончательно удалены из программы администратором.

Напоминание

+
  • +
    Можно ввести напоминание по поводу заметки. Нажмите  - Напомнить.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Module.bsl" new file mode 100644 index 00000000..a1699707 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\222\321\201\320\265\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Module.bsl" @@ -0,0 +1,112 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Список.Параметры.УстановитьЗначениеПараметра("Пользователь", Пользователи.ТекущийПользователь()); + Список.Параметры.УстановитьЗначениеПараметра("Предмет", ""); + Список.Параметры.УстановитьЗначениеПараметра("Пометка", Перечисления.ЦветаЗаметок.ПустаяСсылка()); + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьУдаленные", Ложь); + + ЗаполнитьСписокВыбораФильтраПоПредмету(); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + #Если ВебКлиент Тогда + Элементы.ФильтрПоЦвету.СписокВыбора.Вставить(0, ПредопределенноеЗначение("Перечисление.ЦветаЗаметок.ПустаяСсылка")," "); + #КонецЕсли +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + Список.Параметры.УстановитьЗначениеПараметра("Предмет", "%" + ВыбранныйПредмет + "%"); + Список.Параметры.УстановитьЗначениеПараметра("Пометка", ВыбранныйЦвет); + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьУдаленные", ПоказыватьУдаленные); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ФильтрПоПредметуПриИзменении(Элемент) + Список.Параметры.УстановитьЗначениеПараметра("Предмет", "%" + ВыбранныйПредмет + "%"); +КонецПроцедуры + +&НаКлиенте +Процедура ФильтрПоЦветуПриИзменении(Элемент) + Список.Параметры.УстановитьЗначениеПараметра("Пометка", ВыбранныйЦвет); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьУдаленныеПриИзменении(Элемент) + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьУдаленные", ПоказыватьУдаленные); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьСписокВыбораФильтраПоПредмету() + + Запрос = Новый Запрос; + + ТекстЗапроса = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | Заметки.ПредставлениеПредмета КАК ПредставлениеПредмета + |ИЗ + | Справочник.Заметки КАК Заметки + |ГДЕ + | Заметки.ЭтоГруппа = ЛОЖЬ + | И Заметки.ПометкаУдаления = ЛОЖЬ + | И Заметки.Автор = &Пользователь + | + |СГРУППИРОВАТЬ ПО + | Заметки.ПредставлениеПредмета + | + |УПОРЯДОЧИТЬ ПО + | ПредставлениеПредмета"; + + Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь()); + Запрос.Текст = ТекстЗапроса; + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Элементы.ФильтрПоПредмету.СписокВыбора.Добавить(Выборка.ПредставлениеПредмета); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДляРабочегоСтола"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", ШрифтыСтиля.ВажнаяНадписьШрифт); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Form.form" new file mode 100644 index 00000000..8f56951f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Form.form" @@ -0,0 +1,716 @@ + + + + <key>ru</key> + <value>Мои заметки</value> + + + ГруппаПользовательскихНастроек + 43 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 41 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + CreateFolder + HierarchicalList + LevelDown + LevelUp + List + MoveItem + Tree + + Наименование + 45 + true + true + + true + + + + Список.Description + + + + НаименованиеРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 46 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 30 + true + true + + + + Автор + 25 + true + true + + true + + + + Список.Автор + + + + АвторExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 26 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 57 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 58 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + BeforeAddRow + СписокПередНачаломДобавления + + + true + true + + true + + СписокSearchString + 48 + + СписокSearchStringExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 49 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 51 + + СписокViewStatusExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 52 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 54 + + СписокSearchControlExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 55 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.ИндексКартинки + + + CommonPicture.КоллекцияЗаметки + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + Фильтры + 30 + + ПоказыватьЗаметкиДругихПользователей + 23 + true + true + + true + + + + ПоказыватьЗаметкиДругихПользователей + + + Right + + OnChange + ПоказыватьЗаметкиДругихПользователейПриИзменении + + + ПоказыватьЗаметкиДругихПользователейExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьЗаметкиДругихПользователейКонтекстноеМеню + 24 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПоказыватьУдаленные + 28 + true + true + + true + + + + ПоказыватьУдаленные + + + Right + + OnChange + ПоказыватьУдаленныеПриИзменении + + + ПоказыватьУдаленныеExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьУдаленныеКонтекстноеМеню + 29 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Фильтры</value> + + + ФильтрыExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + CreateFolder + HierarchicalList + LevelDown + LevelUp + List + MoveItem + Tree + Use + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ + СправочникЗаметки.Ссылка, + СправочникЗаметки.ПометкаУдаления, + СправочникЗаметки.Предопределенный, + СправочникЗаметки.Наименование, + СправочникЗаметки.Автор, + СправочникЗаметки.Предмет, + СправочникЗаметки.Содержание, + СправочникЗаметки.ТекстСодержания, + СправочникЗаметки.ДляРабочегоСтола, + СправочникЗаметки.Пометка, + ВЫБОР + КОГДА СправочникЗаметки.ПометкаУдаления + ТОГДА 0 + КОГДА СправочникЗаметки.ЭтоГруппа + ТОГДА -1 + КОГДА СправочникЗаметки.Пометка = ЗНАЧЕНИЕ(Перечисление.ЦветаЗаметок.ПустаяСсылка) + ТОГДА 4 + ИНАЧЕ ЕСТЬNULL(ЦветаЗаметок.Порядок, 0) + 2 + КОНЕЦ КАК ИндексКартинки +ИЗ + Справочник.Заметки КАК СправочникЗаметки + ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ЦветаЗаметок КАК ЦветаЗаметок + ПО СправочникЗаметки.Пометка.Порядок = ЦветаЗаметок.Порядок +ГДЕ + СправочникЗаметки.Предмет = &Предмет + И (СправочникЗаметки.Автор = &Пользователь + ИЛИ &ПоказыватьЗаметкиДругихПользователей) + И (&ПоказыватьУдаленные + ИЛИ НЕ СправочникЗаметки.ПометкаУдаления) + И СправочникЗаметки.ЭтоГруппа = ЛОЖЬ + Catalog.Заметки + true + true + true + true + true + +
+ + Предмет + 2 + + + true + + + true + + + + ПоказыватьЗаметкиДругихПользователей + + <key>ru</key> + <value>Показывать заметки других пользователей</value> + + 3 + + Boolean + + + true + + + true + + + ПоказыватьЗаметкиДругихПользователей + + + + ПоказыватьУдаленные + + <key>ru</key> + <value>Показывать удаленные</value> + + 4 + + Boolean + + + true + + + true + + + ПоказыватьУдаленные + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Help/ru.html" new file mode 100644 index 00000000..2b8f7642 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Help/ru.html" @@ -0,0 +1,24 @@ + +

Все заметки, введенные по поводу данного объекта программы, отображаются в этом списке.

+

Открывается из карточки объекта программы по команде Мои заметки панели навигации.

+

В списках объекты, с которыми связаны заметки, помечены значком .

+

Также заметки можно размещать на рабочем столе программы (для этого в окне заметки предусмотрен флажок), вводить на рабочем столе программы без связи с каким-либо предметом, использовать их вместо записной книжки или "стикеров на краях монитора".

+

Можно также просмотреть все заметки, введенные Вами, по соответствующей команде.

+

Заметки, размещенные на рабочем столе программы, выделены в списке жирным шрифтом.

+

В списке выводится:

+
  • +
    Тема - заголовок заметки
    +
  • +
    Автор - поле только для администратора, т.к. все остальные пользователи видят только свои заметки. Только администратор может просмотреть заметки всех авторов.

Ввод заметки по поводу объекта программы

+
  • +
    В карточке объекта нажмите  - Создать заметку.
    +
  • +
    В списке заметок, связанных с объектом программы, нажмите Создать.
    +
  • +
    Заполните необходимые поля.

Напоминание

+
  • +
    Для того чтобы ввести напоминание по поводу заметки, нажмите  - Напомнить.

Просмотр заметок других авторов (только для администратора)

+
  • Включите флажок Показывать заметки других пользователей, для того чтобы увидеть все заметки, введенные по поводу данного объекта.

Просмотр помеченных на удаление

+
  • Включите флажок Показывать удаленные, для того чтобы показывать заметки, помеченные на удаление. Заметки, которые были удалены из программы администратором, показать невозможно.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Module.bsl" new file mode 100644 index 00000000..ce06602d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/Module.bsl" @@ -0,0 +1,90 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Параметры.Свойство("Предмет") Тогда + Предмет = Параметры.Предмет; + Список.Параметры.УстановитьЗначениеПараметра("Предмет", Предмет); + КонецЕсли; + + Список.Параметры.УстановитьЗначениеПараметра("Пользователь", Пользователи.ТекущийПользователь()); + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьЗаметкиДругихПользователей", Ложь); + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьУдаленные", Ложь); + + Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда + Элементы.Автор.Видимость = Ложь; + Элементы.ПоказыватьЗаметкиДругихПользователей.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьЗаметкиДругихПользователей", ПоказыватьЗаметкиДругихПользователей); + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьУдаленные", ПоказыватьУдаленные); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПоказыватьЗаметкиДругихПользователейПриИзменении(Элемент) + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьЗаметкиДругихПользователей", ПоказыватьЗаметкиДругихПользователей); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьУдаленныеПриИзменении(Элемент) + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьУдаленные", ПоказыватьУдаленные); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Если Не Копирование Тогда + Отказ = Истина; + ПараметрыФормы = Новый Структура("Предмет", Предмет); + ОткрытьФорму("Справочник.Заметки.ФормаОбъекта", ПараметрыФормы); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДляРабочегоСтола"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", ШрифтыСтиля.ВажнаяНадписьШрифт); + +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..fcc819eb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + ДатаИзменения + Desc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Form.form" new file mode 100644 index 00000000..d91fad42 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Form.form" @@ -0,0 +1,811 @@ + + + + <key>ru</key> + <value>Мои заметки</value> + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + None + CancelSearch + Copy + CreateFolder + Delete + Find + HierarchicalList + LevelDown + LevelUp + List + ListSettings + MoveItem + Refresh + Tree + + Содержание + 8 + + ПредставлениеЗаметки + 4 + true + true + + true + + + + Список.Description + + + true + + ПредставлениеЗаметкиExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеЗаметкиКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 5 + true + true + + + + ПредставлениеПредмета + 9 + true + true + + true + + + + Список.ПредставлениеПредмета + + + + ПредставлениеПредметаExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеПредметаКонтекстноеМеню + 10 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 5 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Содержание</value> + + 5 + false + + СодержаниеExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + Ссылка + 35 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 36 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокSearchString + 38 + + СписокSearchStringExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 39 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 41 + + СписокViewStatusExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 42 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 44 + + СписокSearchControlExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 45 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюОбщаяКомандаНапомнить + 17 + true + true + + true + + + Items.Список.CurrentData.Ref + + + СписокКонтекстноеМенюОбщаяКомандаНапомнитьРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + CommonCommand.Напомнить + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюГруппаВывод + 33 + + СписокКонтекстноеМенюКопироватьВБуферОбмена + 31 + true + true + + true + + + СписокКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюВывестиСписок + 23 + true + true + + true + + + СписокКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вывод</value> + + + СписокКонтекстноеМенюГруппаВыводРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюГруппаНастройка + 27 + + СписокКонтекстноеМенюНастройкаСписка + 21 + true + true + + true + + + СписокКонтекстноеМенюНастройкаСпискаРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ListSettings + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюИзменитьФорму + 25 + true + true + + true + + + СписокКонтекстноеМенюИзменитьФормуРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Настройка</value> + + + СписокКонтекстноеМенюГруппаНастройкаРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюСправка + 29 + true + true + + true + + + СписокКонтекстноеМенюСправкаРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.ИндексКартинки + + + CommonPicture.КоллекцияЗаметки + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + + + + ФормаКоманднаяПанель + -1 + + ФормаСоздать + 19 + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаОбщаяКомандаНапомнить + 15 + true + true + + true + + + Items.Список.CurrentData.Ref + + + ФормаОбщаяКомандаНапомнитьРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + CommonCommand.Напомнить + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + CancelSearch + Close + Copy + CreateFolder + Delete + DynamicListStandardSettings + Find + HierarchicalList + Ignore + LevelDown + LevelUp + List + LoadDynamicListSettings + MoveItem + No + OK + Refresh + RestoreValues + Retry + SaveDynamicListSettings + SaveValues + Tree + Yes + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ + СправочникЗаметки.Ссылка, + СправочникЗаметки.ПометкаУдаления, + СправочникЗаметки.Предопределенный, + СправочникЗаметки.Наименование, + СправочникЗаметки.Автор, + СправочникЗаметки.Содержание, + СправочникЗаметки.ТекстСодержания, + СправочникЗаметки.ДляРабочегоСтола, + СправочникЗаметки.Пометка, + ВЫБОР + КОГДА СправочникЗаметки.ПометкаУдаления + ТОГДА 0 + КОГДА СправочникЗаметки.ЭтоГруппа + ТОГДА -1 + КОГДА СправочникЗаметки.Пометка = ЗНАЧЕНИЕ(Перечисление.ЦветаЗаметок.ПустаяСсылка) + ТОГДА 4 + ИНАЧЕ ЕСТЬNULL(ЦветаЗаметок.Порядок, 0) + 2 + КОНЕЦ КАК ИндексКартинки, + СправочникЗаметки.ПредставлениеПредмета, + СправочникЗаметки.ДатаИзменения +ИЗ + Справочник.Заметки КАК СправочникЗаметки + ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ЦветаЗаметок КАК ЦветаЗаметок + ПО СправочникЗаметки.Пометка.Порядок = ЦветаЗаметок.Порядок +ГДЕ + СправочникЗаметки.ПометкаУдаления = ЛОЖЬ + И СправочникЗаметки.Автор = &Пользователь + И СправочникЗаметки.ДляРабочегоСтола = ИСТИНА + Catalog.Заметки + true + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" new file mode 100644 index 00000000..418641d0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" @@ -0,0 +1,11 @@ + +

Список размещается на рабочем столе программы, предназначен для работы с заметками. 

+

В программе можно вести заметки - произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа и которая никому больше не должна быть доступна. Заметки доступны только их автору.

+

В заметки не следует помещать информацию, для хранения которой в программе предусмотрены соответствующие списки или документы. 

+

Заметки можно отмечать цветом.

+

Некоторые заметки (наиболее важные, непомеченные на удаление, у которых включен флажок Отображать на рабочем столе) могут отображаться в этом списке.

+

Часть заметок в списке введены по поводу объектов программы. На панели навигации таких объектов имеется команда Мои заметки для просмотра списка заметок, связанных с ними. В списках эти объекты помечены значком . В этом случае в заметке поле Предмет автоматически заполняется ссылкой на объект программы.

+

Ввод заметки

+
  • Нажмите Создать. Заполните необходимые поля. Введенная заметка будет существовать самостоятельно, без привязки к предмету.

Просмотр всех заметок

+
  • Выполните соответствующую команду для просмотра списка Все заметки.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Module.bsl" new file mode 100644 index 00000000..2bc6c993 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Module.bsl" @@ -0,0 +1,42 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Список.Параметры.УстановитьЗначениеПараметра("Пользователь", Пользователи.ТекущийПользователь()); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПредставлениеПредмета.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПредставлениеПредмета"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = НСтр("ru = 'не задан'"); + + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ""); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..ad88287a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,260 @@ + + + + Код + 1 + true + true + + true + + + КодExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 30 + true + true + true + true + true + true + + + + Родитель + 5 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Автор + 7 + true + + true + + + + Объект.Автор + + + + АвторExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.Заметки + + + true + + + true + +
true
+ true +
+ + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..81ade426 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,12 @@ + +

Ввод сведений о группе заметок.

+

Список Все заметки можно группировать. Для этого нужно создать необходимое количество групп и перетащить в них заметки с помощью мыши. Также при вводе заметки можно выбрать группу, в которую она входит.

+

Ввод группы заметок

+

Группировать заметки можно по предметам, по поводу которых они введены, или по темам.

+
  • +
    В поле Тема введите наименование группы.
    +
  • +
    Новую группу можно подчинить одной из уже существующих. Для этого в поле Группа заметок нажмите Показать все, выберите группу из списка.
    +
  • +
    В поле Автор программа по умолчанию проставляет текущего пользователя. Изменить поле невозможно.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..bdbc649e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,48 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Ссылка.Пустая() Тогда + Объект.Автор = Пользователи.ТекущийПользователь(); + КонецЕсли; + + Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда + Элементы.Автор.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..2eeecc21 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,718 @@ + + + + СодержаниеЗаметки + 14 + + ГруппаПредмет + 102 + + НадписьПредмет + 65 + + <key>ru</key> + <value>Предмет:</value> + + true + true + + true + + + НадписьПредметExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + + НадписьПредметКонтекстноеМеню + 66 + true + true + + true + + true + + Label + true + + Left + + + + Предмет + 63 + + <key>ru</key> + <value>Предмет</value> + + true + true + + true + + + ru + Предмет, по которому сделана заметка + + + ПредметExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + + ПредметКонтекстноеМеню + 64 + true + true + + true + + true + + Label + true + true + + + Click + ПредметНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Предмет</value> + + + ГруппаПредметExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Содержание заметки</value> + + + СодержаниеЗаметкиExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Содержание + 9 + + <key>ru</key> + <value>Содержание</value> + + true + true + + true + + + + ФорматированныйТекст + + + true + None + + ru + Текст заметки + + + СодержаниеExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + + СодержаниеКонтекстноеМеню + 10 + true + true + + true + + true + + FormattedDocumentField + EnterOnInput + true + Left + true + + 20 + true + 10 + true + true + true + + + + ПараметрыОтображения + 90 + + ОтображатьНаРабочемСтоле + 80 + + <key>ru</key> + <value>Отображать на рабочем столе</value> + + true + true + + true + + + + Объект.ДляРабочегоСтола + + + Right + + ОтображатьНаРабочемСтолеExtendedTooltip + 114 + true + true + + true + + Label + true + true + + Left + + + + ОтображатьНаРабочемСтолеКонтекстноеМеню + 81 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Пометка + 82 + + <key>ru</key> + <value>Цвет</value> + + true + true + + true + + + + Объект.Пометка + + + + ПометкаExtendedTooltip + 115 + true + true + + true + + Label + true + true + + Left + + + + ПометкаКонтекстноеМеню + 83 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + true + + + + ГруппаЗаметок + 105 + true + true + + true + + + + Объект.Parent + + + + ГруппаЗаметокExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + + ГруппаЗаметокКонтекстноеМеню + 106 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Параметры отображения</value> + + + ПараметрыОтображенияExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ИнформацияОбАвторе + 91 + + НадписьАвтор + 92 + + <key>ru</key> + <value>Автор:</value> + + true + true + + true + + + НадписьАвторExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + + НадписьАвторКонтекстноеМеню + 93 + true + true + + true + + true + + Label + true + + Left + + + + Автор + 94 + + <key>ru</key> + <value>Автор</value> + + true + true + + true + + + ru + Автор заметки + + + АвторExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 95 + true + true + + true + + true + + Label + true + + + Click + АвторНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Информация об авторе</value> + + + ИнформацияОбАвтореExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ДатаЗаметки + 103 + + <key>ru</key> + <value>Записана: 25 ноября 2011 г.</value> + + true + true + + true + + + ДатаЗаметкиExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + + ДатаЗаметкиКонтекстноеМеню + 104 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + + ФормаКоманднаяПанель + -1 + + КоманднаяПанельРедактирования + 79 + true + true + + true + + + <key>ru</key> + <value>Командная панель редактирования</value> + + + КоманднаяПанельРедактированияExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + + Item.Содержание + + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + Объект + 1 + + CatalogObject.Заметки + + + true + + + true + +
true
+ true +
+ + ФорматированныйТекст + + <key>ru</key> + <value>Форматированный текст</value> + + 4 + + FormattedDocument + + + true + + + true + + true + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..bafef8eb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,23 @@ + +

В заметке можно поместить произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа и которая больше никому не должна быть доступна.

+

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

+

Также можно использовать заметки и для хранения информации, которая актуальна в течение длительного времени (например, как записную книжку, в которой можно сделать запись о дне рождения коллеги или важного для вас клиента, при этом можно ввести напоминание по поводу заметки, чтобы не забыть поздравить).

+

Заметки можно отмечать цветом, помещать на рабочий стол, объединять в группы. 

+

Ввод заметки

+
  • При вводе заметки по поводу какого-либо объекта программы автоматически проставляется Предмет - ссылка, по которой можно открыть этот объект. +
  • При вводе заметки в списке Мои заметки на рабочем столе программы или в списке Все заметки в поле Предмет автоматически проставляется "не задан". +
  • Напишите текст заметки. Для редактирования текста заметки предусмотрены стандартные команды форматирования. Часть из них, чаще употребляемая, для удобства работы выведена в виде кнопок. Остальные можно найти в контекстном меню по правой кнопке мыши или в меню Еще. +
  • Текст заметки можно оформить двумя способами: +
    • +
      Ввести весь текст, не выделяя заголовка, тогда почти весь текст будет виден в списках заметок.
      +
    • +
      В первой строке заметки можно ввести краткий заголовок, который будет отображаться в списках заметок. Затем нажать клавишу Enter и ввести остальной текст.
  • Наиболее важные заметки могут отображаться в списке Мои заметки на рабочем столе программы. Установите флажок Отображать на рабочем столе. (По умолчанию флажок установлен). +
  • +
    Для того чтобы различать заметки, можно их отметить значками разных цветов. В списке Все заметки их можно сортировать по цвету. Выберите Цвет.
    +
  • +
    Заметки можно сгруппировать, например, по предметам. Выберите Группу заметок из списка, нажав Показать все. Можно ввести новую группу в списке групп.
    +
  • +
    В нижней части заметки отображается состояние записи заметки. Если заметку еще не сохраняли, то поле принимает значение Не записано. В поле Записано программа автоматически проставляет дату и время последнего сохранения заметки.

Напоминание

+
  • +
    Для того чтобы не забыть о событии, упомянутом в заметке, нажмите  - Напомнить. Введите напоминание по поводу заметки.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..049ac851 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,112 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("Предмет") Тогда + Объект.Предмет = Параметры.Предмет; + Объект.ПредставлениеПредмета = ОбщегоНазначения.ПредметСтрокой(Объект.Предмет); + КонецЕсли; + + Элементы.Предмет.Заголовок = Объект.ПредставлениеПредмета; + Элементы.ГруппаПредмет.Видимость = ЗначениеЗаполнено(Объект.Предмет); + + Если Объект.Ссылка.Пустая() Тогда + Объект.Автор = Пользователи.ТекущийПользователь(); + ФорматированныйТекст = Параметры.ЗначениеКопирования.Содержание.Получить(); + + Элементы.ДатаЗаметки.Заголовок = НСтр("ru = 'Не записано'") + Иначе + Элементы.ДатаЗаметки.Заголовок = НСтр("ru = 'Записано'") + ": " + Формат(Объект.ДатаИзменения, "ДЛФ=DDT"); + КонецЕсли; + + УстановитьВидимость(); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + ФорматированныйТекст = ТекущийОбъект.Содержание.Получить(); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ТекущийОбъект.Содержание = Новый ХранилищеЗначения(ФорматированныйТекст, Новый СжатиеДанных(9)); + + ТекстHTML = ""; + Вложения = Новый Структура; + ФорматированныйТекст.ПолучитьHTML(ТекстHTML, Вложения); + + ТекущийОбъект.ТекстСодержания = СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(ТекстHTML); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + Элементы.ДатаЗаметки.Заголовок = НСтр("ru = 'Записано'") + ": " + Формат(Объект.ДатаИзменения, "ДЛФ=DDT"); +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + ОповеститьОбИзменении(Объект.Ссылка); + Если ЗначениеЗаполнено(Объект.Предмет) Тогда + ОповеститьОбИзменении(Объект.Предмет); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПредметНажатие(Элемент) + ПоказатьЗначение(,Объект.Предмет); +КонецПроцедуры + +&НаКлиенте +Процедура АвторНажатие(Элемент) + ПоказатьЗначение(,Объект.Автор); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьВидимость() + Элементы.Автор.Заголовок = Объект.Автор; + ОткрытаАвтором = Объект.Автор = Пользователи.ТекущийПользователь(); + Элементы.ПараметрыОтображения.Видимость = ОткрытаАвтором; + Элементы.ИнформацияОбАвторе.Видимость = Не ОткрытаАвтором; + + ТолькоПросмотр = Не ОткрытаАвтором; + Элементы.Содержание.ТолькоПросмотр = Не ОткрытаАвтором; + Элементы.КоманднаяПанельРедактирования.Видимость = ОткрытаАвтором; +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" new file mode 100644 index 00000000..d4dbe3c0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/Help/ru.html" @@ -0,0 +1,34 @@ + +

Предназначен для управления заметками.

+

Список Заметки относится к внутренним данным для администратора. Полезен для контроля всех заметок в программе, введенными всеми пользователями в программе.

+

Для работы со своими заметками и ввода заметок используйте списки Все заметки или Мои заметки рабочего стола. Группы, введенные в списке Все заметки,отражаются также и в этом списке.

+

В программе можно вести заметки - произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа, и которая никому больше не должна быть доступна. Совместно с напоминаниями заметки хорошо подходят в качестве электронной замены "стикеров на краях монитора".

+

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

+

Заметки можно отмечать цветом, помещать на рабочий стол, объединять в группы. Заметки доступны только их автору.

+

Заметки можно вводить как по поводу каких-либо данных программы (например, заметки можно создать по конкретному партнеру, документу товародвижения и т.д.), так и сами по себе (например, их можно использовать вместо записной книжки).

+

В заметки не следует помещать информацию, для хранения которой в программе предусмотрены соответствующие справочники или документы. Например, в заметки не рекомендуется помещать контактную информацию, информацию о задачах и т.д.

+

В списке выводится:

+
  • +
    Тема - заголовок заметки;
    +
  • +
    Автор - пользователь, который создал заметку;
    +
  • +
    Предмет - полное наименование предмета, по поводу которого сделана заметка;
    +
  • +
    Содержание - текст заметки;
    +
  • +
    Для рабочего стола - флажок включен, если заметка видна на рабочем столе;
    +
  • +
    Пометка - цвет заметки;
    +
  • +
    Дата изменения - дата и время записи заметки;
    +
  • +
    Предмет - содержимое ссылки Предмет в заметке.

Ввод заметки

+
  • Заметку можно ввести по поводу документа или другого объекта программы. Нажмите  - Создать заметку. В этом случае будет автоматически заполнено поле Предмет. +
  • В списках Мои заметки рабочего стола или Все заметки нажмите Создать, заполните необходимые поля. В этом случае в поле Предмет программа автоматически проставляет "Не задан".

Группировка заметок

+

Заметки можно сгруппировать, например, по предметам или по темам.

+
  • Нажмите Создать группу, заполните необходимые поля. +
  • Создав необходимое количество групп, перетащите заметки мышью в соответствующие группы.

Напоминание

+
  • +
    Можно ввести напоминание по поводу заметки. Нажмите  - Напомнить.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/ManagerModule.bsl" new file mode 100644 index 00000000..a7ef2bde --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("ДляРабочегоСтола"); + Результат.Добавить("Предмет"); + Результат.Добавить("Пометка"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЭтоАвторизованныйПользователь(Автор)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..5c81d512 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/ObjectModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если ДополнительныеСвойства.Свойство("ПометкаУдаленияЗаметки") И ДополнительныеСвойства.ПометкаУдаленияЗаметки Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(Родитель) И Родитель.Автор <> Автор Тогда + ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Нельзя указывать группу другого пользователя.'")); + Отказ = Истина; + Возврат; + КонецЕсли; + + Если Не ЭтоГруппа Тогда + ДатаИзменения = ТекущаяДатаСеанса(); + ПредставлениеПредмета = ОбщегоНазначения.ПредметСтрокой(Предмет); + + Позиция = СтрНайти(ТекстСодержания, Символы.ПС); + Если Позиция > 0 Тогда + Тема = Сред(ТекстСодержания, 1, Позиция - 1); + Иначе + Тема = ТекстСодержания; + КонецЕсли; + + Если ПустаяСтрока(Тема) Тогда + Тема = "<" + НСтр("ru = 'Пустая заметка'") + ">"; + КонецЕсли; + + МаксимальнаяДлинаНаименования = Метаданные().ДлинаНаименования; + Если СтрДлина(Тема) > МаксимальнаяДлинаНаименования Тогда + Тема = Лев(Наименование, МаксимальнаяДлинаНаименования - 3) + "..."; + КонецЕсли; + + Наименование = Тема; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/\320\227\320\260\320\274\320\265\321\202\320\272\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/\320\227\320\260\320\274\320\265\321\202\320\272\320\270.mdo" new file mode 100644 index 00000000..2975e1f7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\274\320\265\321\202\320\272\320\270/\320\227\320\260\320\274\320\265\321\202\320\272\320\270.mdo" @@ -0,0 +1,391 @@ + + + + + + + + + + Заметки + + ru + Заметки + + true + Catalog.Заметки.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа заметок + + + ru + Группа, в которой находится заметка + + true + + Catalog.Заметки.EmptyRef + + Use + + + + + Use + Description + + ru + Тема + + Реквизит заполняется автоматически + + ru + Краткое содержание + + + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Catalog.Заметки.Attribute.Автор + Catalog.Заметки.Attribute.Предмет + Managed + Use + + ru + Заметка + + true + 2 + true + 100 + String + Variable + AsDescription + InDialog + BothWays + Catalog.Заметки.Form.ФормаЭлемента + Catalog.Заметки.Form.ФормаГруппы + + Автор + + ru + Автор + + + CatalogRef.Пользователи + + + ru + Автор заметки + + + + + Index + Use + ForFolderAndItem + Use + + + Предмет + + ru + Предмет + + + DefinedType.ПредметЗаметок + + + ru + Предмет заметки + + + + true + + Index + Use + Use + + + Содержание + + ru + Содержание + + + ValueStorage + + + ru + Текст заметки + + + + + Use + + + ТекстСодержания + + ru + Содержание + + Реквизит для полнотекстового поиска + + String + + + + ru + Служебный реквизит, не предназначен для ручного заполнения + + + + + + + Use + Use + + + ДляРабочегоСтола + + ru + Для рабочего стола + + + Boolean + + + ru + Разместить заметку в списке на рабочем столе + + + + + true + + Index + Use + Use + + + Пометка + + ru + Пометка + + + EnumRef.ЦветаЗаметок + + + ru + Цвет значка заметки + + + + true + + Enum.ЦветаЗаметок.EnumValue.Желтый + + IndexWithAdditionalOrder + Use + Use + + + ДатаИзменения + + ru + Дата изменения + + + Date + + + + ru + Дата последнего изменения заметки + + + + + Use + Use + + + ПредставлениеПредмета + + ru + Предмет + + + String + + 100 + + + + ru + Предмет заметки + + + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ВсеЗаметки + + ru + Все заметки + + + + ru + + + PersonalComputer + MobileDevice + + + ЗаметкиПоПредмету + + ru + Заметки + + + + ru + + + PersonalComputer + MobileDevice + + + МоиЗаметки + + ru + Мои заметки + + Для рабочего стола + + + ru + + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + + + ru + + + PersonalComputer + MobileDevice + + + ВсеЗаметки + + ru + Все заметки + + NavigationPanelOrdinary + + Auto + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..7ef684af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(ВладелецФайла)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..b7f3c2ab --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\227\320\260\320\277\320\273\320\260\320\275\320\270\321\200\320\276\320\262\320\260\320\275\320\275\320\276\320\265\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,836 @@ + + + + + + + + + + ЗапланированноеВзаимодействиеПрисоединенныеФайлы + + ru + Присоединенные файлы (Запланированное взаимодействие) + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла + + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ВладелецФайла + Managed + Use + + ru + Присоединенный файл (Запланированное взаимодействие) + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Автор + + ru + Автор + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил файл в список + + + + ShowError + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Размещение + + + DocumentRef.ЗапланированноеВзаимодействие + + + ru + Место размещения файла (объект) + + + + + Index + Use + + + ДатаЗаема + + ru + Дата заема + + + Date + + + + ru + ДЛФ=ДВ + + + ru + ДЛФ=ДВ + + + ru + Дата, когда файл был занят для редактирования + + false + + + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата изменения (универсальное время) + + + Date + + + + ru + Дата изменения данных файла (универсальное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления файла в список + + + + ShowError + + 0001-01-01T00:00:00 + + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Use + + + Изменил + + ru + Отредактировал + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Последний пользователь, который отредактировал файл + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ИндексКартинки + + ru + Индекс значка + + + Number + + 10 + + + + ru + Индекс значка файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Краткое описание файла + + true + + + + + + Use + Use + + + ПодписанЭП + + ru + Подписан электронно + + + Boolean + + + ru + Признак того, что файл подписан электронно + + + + + Use + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + + + Use + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + + + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который занял файл для редактирования + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или в информационной базе) + + + + ShowError + + Index + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (когда файл хранится в томе) + + + + + Index + Use + + + ФайлХранилище + + ru + Временное хранилище файла + + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + ХранитьВерсии + + ru + Хранить версии + + + Boolean + + + ru + Добавлять версии файла при окончании редактирования. Если отключить, тогда будет хранится только последняя версия. + + false + + + + Use + Use + + + + + + + УдалитьЭлектронныеПодписи + + ru + (не используется) электронные подписи + + + ru + Хранение электронных подписей файла + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Index + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + ДатаПроверкиПодписи + + ru + Дата проверки подписи + + + Date + + + + ru + Дата последней проверки подписи. + + + + Use + Use + + + ПодписьВерна + + ru + Подпись верна + + + Boolean + + + ru + Результат последней проверки подписи. + + + + Use + Use + + + + + + + + УдалитьСертификатыШифрования + + ru + (не используется) Сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..eb9a3a6b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,240 @@ + + + + Наименование + 1 + + <key>ru</key> + <value>Группа</value> + + true + true + + true + + + + Объект.Description + + + + ru + Группа значений свойства объектов. + + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 5 + true + true + + true + + + + Объект.Parent + + + + ru + Вышестоящая группа значений свойства объектов. + + + РодительExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + Отбор.Владелец + + Объект.Owner + + + + + + Владелец + 3 + true + + true + + + + Объект.Owner + + + + ВладелецExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ЗначенияСвойствОбъектов + + + true + + + true + +
true
+ true +
+ + СкрытьВладельца + + Boolean + + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..a742d2e0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,5 @@ + +

Предназначена для ввода сведений о группе значений дополнительных реквизитов (сведений).

+
  • В поле Группа напишите наименование группы. +
  • С помощью поля Входит в группу можно подчинить новую группу другой группе. Выберите группу из списка.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..a572b5b1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,126 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) + И Параметры.ЗначенияЗаполнения.Свойство("Наименование") Тогда + + Объект.Наименование = Параметры.ЗначенияЗаполнения.Наименование; + КонецЕсли; + + Если НЕ Параметры.СкрытьВладельца Тогда + Элементы.Владелец.Видимость = Истина; + КонецЕсли; + + УстановитьЗаголовок(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + УстановитьЗаголовок(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьЗаголовок() + + ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения"); + + ИмяСвойства = СокрЛП(ЗначенияРеквизитов.ЗаголовокФормыЗначения); + + Если НЕ ПустаяСтрока(ИмяСвойства) Тогда + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (%2)'"), + Объект.Наименование, + ИмяСвойства); + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (Создание)'"), ИмяСвойства); + КонецЕсли; + Иначе + ИмяСвойства = Строка(ЗначенияРеквизитов.Заголовок); + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (Группа значений свойства %2)'"), + Объект.Наименование, + ИмяСвойства); + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Группа значений свойства %1 (Создание)'"), ИмяСвойства); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..f82a5f8e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,889 @@ + + + + ГруппаПользовательскихНастроек + 41 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Свойство + 6 + true + + true + + + + Свойство + + + + OnChange + СвойствоПриИзменении + + + СвойствоExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + СвойствоКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + false + None + + Наименование + 4 + + <key>ru</key> + <value>Значение</value> + + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Вес + 35 + true + true + + true + + + + Список.Вес + + + + ВесРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + + ВесКонтекстноеМеню + 36 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 16 + true + true + + + + Владелец + 8 + + <key>ru</key> + <value>Свойство</value> + + true + true + + true + + + + Список.Owner + + + + ВладелецExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 38 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 39 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + BeforeAddRow + СписокПередНачаломДобавления + + + BeforeRowChange + СписокПередНачаломИзменения + + + true + true + + true + + СписокСтрокаПоиска + 49 + + СписокСтрокаПоискаРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 50 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 52 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 53 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 55 + + СписокУправлениеПоискомРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 56 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + + + + ФормаКоманднаяПанель + -1 + + ОсновныеКоманды + 47 + + ФормаВыбрать + 17 + true + true + + true + + true + + ФормаВыбратьExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаСоздать + 10 + true + true + + true + + + ФормаСоздатьExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаСоздатьГруппу + 18 + true + true + + true + + + ФормаСоздатьГруппуExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 21 + true + true + + true + + + ФормаСкопироватьExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаИзменить + 23 + true + true + + true + + + ФормаИзменитьExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Основные команды</value> + + + ОсновныеКомандыРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + + + ДополнительныеКоманды + 12 + true + true + + true + + + <key>ru</key> + <value>Дополнительные команды</value> + + + ДополнительныеКомандыРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 13 + true + true + + true + + + ФормаСправкаExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.DataVersion + + + Список.Parent + + + Список.Ref + +
true
+ + ВЫБРАТЬ + Значения.Ссылка, + Значения.ВерсияДанных, + Значения.ПометкаУдаления, + Значения.Предопределенный, + Значения.Владелец, + Значения.Родитель, + Значения.ЭтоГруппа, + ВЫБОР + КОГДА &ЭтоОсновнойЯзык + ТОГДА Значения.Наименование + ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) + КОНЕЦ КАК Наименование, + Значения.Вес +ИЗ + Справочник.ЗначенияСвойствОбъектов КАК Значения + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления + ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка) + И ЗначенияПредставления.КодЯзыка = &КодЯзыка + Catalog.ЗначенияСвойствОбъектов + true + true + true + true + true + +
+ + Свойство + + <key>ru</key> + <value>Свойство</value> + + 2 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + FunctionalOption.ИспользоватьДополнительныеРеквизитыИСведения + + + ВыборГрупп + 4 + + Boolean + + + true + + + true + + + + ВладелецДополнительныхЗначений + 3 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + FunctionalOption.ИспользоватьДополнительныеРеквизитыИСведения + + + ДополнительныеЗначенияСВесом + 5 + + Boolean + + + true + + + true + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..287bccb2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,265 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + КонецЕсли; + + Если Параметры.Отбор.Свойство("Владелец") Тогда + Свойство = Параметры.Отбор.Владелец; + Параметры.Отбор.Удалить("Владелец"); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Свойство) Тогда + Элементы.Свойство.Видимость = Истина; + НастроитьПорядокЗначенийПоСвойствам(Список); + КонецЕсли; + + Если Параметры.РежимВыбора Тогда + Если Параметры.Свойство("ВыборГруппИЭлементов") + И Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда + + ВыборГрупп = Истина; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Истина); + Иначе + Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы; + КонецЕсли; + Иначе + Элементы.Список.РежимВыбора = Ложь; + КонецЕсли; + + УстановитьЗаголовок(); + + Если ВыборГрупп Тогда + Если Элементы.Найти("ФормаСоздать") <> Неопределено Тогда + Элементы.ФормаСоздать.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + ПриИзмененииСвойства(); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_ДополнительныеРеквизитыИСведения" + И ( Источник = Свойство + ИЛИ Источник = ВладелецДополнительныхЗначений) Тогда + + ПодключитьОбработчикОжидания("ОбработчикОжиданияПриИзмененииСвойства", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СвойствоПриИзменении(Элемент) + + ПриИзмененииСвойства(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если НЕ Копирование + И Элементы.Список.Отображение = ОтображениеТаблицы.Список Тогда + + Родитель = Неопределено; + КонецЕсли; + + Если ВыборГрупп + И НЕ Группа Тогда + + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + + Если Элементы.Список.ТекущаяСтрока <> Неопределено Тогда + // Открытие формы значения или группы значений. + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СкрытьВладельца", Истина); + ПараметрыФормы.Вставить("ПоказатьВес", ДополнительныеЗначенияСВесом); + ПараметрыФормы.Вставить("Ключ", Элементы.Список.ТекущаяСтрока); + + ОткрытьФорму("Справочник.ЗначенияСвойствОбъектов.ФормаОбъекта", ПараметрыФормы, Элементы.Список); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура НастроитьПорядокЗначенийПоСвойствам(Список) + + Перем Порядок; + + // Порядок. + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Владелец"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ЭтоГруппа"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьЗаголовок() + + СтрокаЗаголовка = ""; + + Если ЗначениеЗаполнено(Свойство) Тогда + Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда + СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "ЗаголовокФормыВыбораЗначения"); + Иначе + Реквизиты = Новый Массив; + Реквизиты.Добавить("ЗаголовокФормыВыбораЗначения"); + ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Свойство, Реквизиты); + СтрокаЗаголовка = ЗначенияРеквизитов.ЗаголовокФормыВыбораЗначения; + КонецЕсли; + КонецЕсли; + + Если ПустаяСтрока(СтрокаЗаголовка) Тогда + + Если ЗначениеЗаполнено(Свойство) Тогда + Если НЕ Параметры.РежимВыбора Тогда + СтрокаЗаголовка = НСтр("ru = 'Значения свойства %1'"); + ИначеЕсли ВыборГрупп Тогда + СтрокаЗаголовка = НСтр("ru = 'Выберите группу значений свойства %1'"); + Иначе + СтрокаЗаголовка = НСтр("ru = 'Выберите значение свойства %1'"); + КонецЕсли; + + СтрокаЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаЗаголовка, + Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "Заголовок"))); + + ИначеЕсли Параметры.РежимВыбора Тогда + + Если ВыборГрупп Тогда + СтрокаЗаголовка = НСтр("ru = 'Выберите группу значений свойства'"); + Иначе + СтрокаЗаголовка = НСтр("ru = 'Выберите значение свойства'"); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если НЕ ПустаяСтрока(СтрокаЗаголовка) Тогда + АвтоЗаголовок = Ложь; + Заголовок = СтрокаЗаголовка; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияПриИзмененииСвойства() + + ПриИзмененииСвойства(); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененииСвойства() + + Если ЗначениеЗаполнено(Свойство) Тогда + + ВладелецДополнительныхЗначений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "ВладелецДополнительныхЗначений"); + + Если ЗначениеЗаполнено(ВладелецДополнительныхЗначений) Тогда + ТолькоПросмотр = Истина; + + ТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ВладелецДополнительныхЗначений, "ТипЗначения"); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Владелец", ВладелецДополнительныхЗначений); + + ДополнительныеЗначенияСВесом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ВладелецДополнительныхЗначений, "ДополнительныеЗначенияСВесом"); + Иначе + ТолькоПросмотр = Ложь; + ТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Свойство, "ТипЗначения"); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Владелец", Свойство); + + ДополнительныеЗначенияСВесом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "ДополнительныеЗначенияСВесом"); + КонецЕсли; + + Если ТипЗнч(ТипЗначения) = Тип("ОписаниеТипов") + И ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + + Элементы.Список.ИзменятьСоставСтрок = Истина; + Иначе + Элементы.Список.ИзменятьСоставСтрок = Ложь; + КонецЕсли; + + Элементы.Список.Отображение = ОтображениеТаблицы.ИерархическийСписок; + Элементы.Владелец.Видимость = Ложь; + Элементы.Вес.Видимость = ДополнительныеЗначенияСВесом; + Иначе + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка( + Список, "Владелец"); + + Элементы.Список.Отображение = ОтображениеТаблицы.Список; + Элементы.Список.ИзменятьСоставСтрок = Ложь; + Элементы.Владелец.Видимость = Истина; + Элементы.Вес.Видимость = Ложь; + КонецЕсли; + + Элементы.Список.Шапка = Элементы.Владелец.Видимость Или Элементы.Вес.Видимость; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..63f1f157 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,341 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ПолноеНаименование + 13 + true + true + + true + + + + Объект.ПолноеНаименование + + + Left + + ПолноеНаименованиеРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + ПолноеНаименованиеКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 5 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + Отбор.Владелец + + Объект.Owner + + + + + + Вес + 7 + true + true + + true + + + + Объект.Вес + + + + ВесExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + ВесКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Владелец + 3 + true + + true + + + + Объект.Owner + + + + ВладелецExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ЗначенияСвойствОбъектов + + + true + + + true + +
true
+ true +
+ + СкрытьВладельца + + Boolean + + + + ПоказатьВес + + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..a5b35230 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,14 @@ + +

Предназначена для ввода значения дополнительного реквизита (сведения).

+

В программе предусмотрена возможность использовать дополнительные реквизиты (сведения) нескольких типов. Тип данных выбирается при настройке дополнительных реквизитов (сведений). При выборе типа данных Дополнительное значение программа предлагает ввести значения. При этом для каждого дополнительного реквизита или сведения данного типа используется свой список значений.

+

Ввод значений

+
  • +
    Укажите Наименование значения дополнительного реквизита (сведения).
    +
  • +
    С помощью поля Входит в группу новое значение можно включить в одну из групп. Для ввода новой группы нажмите Создать (клавишу F8), введите наименование. Для выбора из имеющихся групп нажмите Показать все (клавишу F4), выберите нужную группу из списка.
    +
  • +
    В случае если для дополнительного реквизита (сведения) включен флажок Значения дополнительно характеризуются весовым коэффициентом, введите числовое значение в поле Весовой коэффициент.
    +
    • +
      Это поле в дальнейшем можно использовать для анализа в отчетах. Логику использования этого поля необходимо продумывать самостоятельно. Например, для значений свойства "Надежность" можно задать вес следующим образом: для значений от единицы до тройки поставить вес равным нулю, а для значений четыре и пять равным единице. При таких весах в отчет можно быстро вывести надежных клиентов (у которых вес значения больше нуля).

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..0399e196 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,173 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) + И Параметры.ЗначенияЗаполнения.Свойство("Наименование") Тогда + + Объект.Наименование = Параметры.ЗначенияЗаполнения.Наименование; + КонецЕсли; + + Если НЕ Параметры.СкрытьВладельца Тогда + Элементы.Владелец.Видимость = Истина; + КонецЕсли; + + Если ТипЗнч(Параметры.ПоказатьВес) = Тип("Булево") Тогда + ПоказатьВес = Параметры.ПоказатьВес; + Иначе + ПоказатьВес = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Владелец, "ДополнительныеЗначенияСВесом"); + КонецЕсли; + + Если ПоказатьВес = Истина Тогда + Элементы.Вес.Видимость = Истина; + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ЗначенияСВесом"); + Иначе + Элементы.Вес.Видимость = Ложь; + Объект.Вес = 0; + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ЗначенияБезВеса"); + КонецЕсли; + + УстановитьЗаголовок(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Изменение_ЗначениеХарактеризуетсяВесовымКоэффициентом" + И Источник = Объект.Владелец Тогда + + Если Параметр = Истина Тогда + Элементы.Вес.Видимость = Истина; + Иначе + Элементы.Вес.Видимость = Ложь; + Объект.Вес = 0; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + УстановитьЗаголовок(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_ЗначенияСвойствОбъектов", + Новый Структура("Ссылка", Объект.Ссылка), Объект.Ссылка); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьЗаголовок() + + Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда + ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения"); + Иначе + Реквизиты = Новый Массив; + Реквизиты.Добавить("Заголовок"); + Реквизиты.Добавить("ЗаголовокФормыЗначения"); + ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Объект.Владелец, Реквизиты); + КонецЕсли; + + ИмяСвойства = СокрЛП(ЗначенияРеквизитов.ЗаголовокФормыЗначения); + + Если НЕ ПустаяСтрока(ИмяСвойства) Тогда + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (%2)'"), + Объект.Наименование, + ИмяСвойства); + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (Создание)'"), ИмяСвойства); + КонецЕсли; + Иначе + ИмяСвойства = Строка(ЗначенияРеквизитов.Заголовок); + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (Значение свойства %2)'"), + Объект.Наименование, + ИмяСвойства); + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Значение свойства %1 (Создание)'"), ИмяСвойства); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..a1f7f61c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Help/ru.html" @@ -0,0 +1,14 @@ + +

В списке задаются значения дополнительных реквизитов и сведений.

+

В программе предусмотрена возможность использовать дополнительные реквизиты (сведения) нескольких типов. Тип данных выбирается при настройке дополнительных реквизитов (сведений). При выборе типа данных Дополнительное значение программа предлагает ввести значения в этот список. При этом для каждого дополнительного реквизита или сведения данного типа используется свой список значений. С помощью этого типа данных можно описывать различные свойства объектов программы.

+

Тип данных Дополнительное значение часто используется, при этом ввод информации сводится к выбору значений из списка, что ускоряет процесс ввода и снижает количество ошибок.

+

Применяется как обычный список значений, так и сгруппированный.

+

Выбор значений

+
  • Выделите нужный элемент. +
  • Нажмите Выбрать. +
  • Также можно воспользоваться двойным щелчком мыши.

Ввод значений

+
  • Для ввода значений нажмите Создать, заполните необходимые поля.

Группировка значений

+
  • Если значений много, список можно сгруппировать. Для этого введите необходимое количество групп. Группы могут существовать независимо друг от друга или подчиняться друг другу. +
  • Для ввода группы в список нажмите Создать группу, заполните необходимые поля. +
  • Перетащите значения мышью в соответствующие группы.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..79e06901 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,74 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + РедактируемыеРеквизиты.Добавить("Родитель"); + РедактируемыеРеквизиты.Добавить("ПометкаУдаления"); + + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЗначениеРазрешено(Владелец) + | ИЛИ НЕ Владелец.ЭтоДополнительноеСведение"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/ObjectModule.bsl" new file mode 100644 index 00000000..91ab7be7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/ObjectModule.bsl" @@ -0,0 +1,57 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(Владелец) Тогда + ВладелецДополнительныхЗначений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Владелец, + "ВладелецДополнительныхЗначений"); + + Если ЗначениеЗаполнено(ВладелецДополнительныхЗначений) Тогда + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Дополнительные значения для свойства ""%1"", созданного + |по образцу свойства ""%2"" нужно создавать для свойства-образца.'"), + Владелец, + ВладелецДополнительныхЗначений); + + Если ЭтоНовый() Тогда + ВызватьИсключение ОписаниеОшибки; + Иначе + ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ПриЧтенииПредставленийНаСервере() Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..2bc9bf4c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" @@ -0,0 +1,290 @@ + + + + + + + + + + ЗначенияСвойствОбъектов + + ru + Дополнительные значения + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + + ru + Свойство + + + ru + Дополнительный реквизит или сведение. + + true + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.EmptyRef + + ShowError + Use + + + + + Use + Parent + + ru + Входит в группу + + + ru + Группа дополнительных значений свойства. + + true + + Catalog.ЗначенияСвойствОбъектов.EmptyRef + + + Отбор.Владелец + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.Owner + + Use + + + + + Use + Description + + ru + Наименование дополнительного значения свойства. + + + + + ShowError + Use + + + + + Use + Code + + + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Дополнительное значение + + true + 2 + true + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения + 100 + String + AsDescription + InDialog + BothWays + Catalog.ЗначенияСвойствОбъектов.Form.ФормаЭлемента + Catalog.ЗначенияСвойствОбъектов.Form.ФормаГруппы + Catalog.ЗначенияСвойствОбъектов.Form.ФормаСписка + Catalog.ЗначенияСвойствОбъектов.Form.ФормаСписка + Catalog.ЗначенияСвойствОбъектов.Form.ФормаСписка + + Вес + + ru + Весовой коэффициент + + + Number + + 10 + 2 + + + + ru + Относительный вес дополнительного значения (значимость). + + + + + 0 + + Use + Use + + + ПолноеНаименование + + ru + Полное наименование + + + String + + + + ru + Подробное описание значения дополнительного реквизита + + true + + + + + + Use + Use + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + + Use + Use + + + Наименование + + ru + Наименование + + + String + + 100 + + + + + Use + Use + + ForFolderAndItem + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..8c1f8c82 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,812 @@ + + + + ГруппаПользовательскихНастроек + 40 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Свойство + 6 + true + + true + + + + Свойство + + + + OnChange + СвойствоПриИзменении + + + СвойствоExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + + СвойствоКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + false + None + + Наименование + 4 + + <key>ru</key> + <value>Значение</value> + + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Вес + 34 + true + true + + true + + + + Список.Вес + + + + ВесРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + ВесКонтекстноеМеню + 35 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 16 + true + true + + + + Владелец + 8 + true + true + + true + + + + Список.Owner + + + + ВладелецExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 37 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 38 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + BeforeAddRow + СписокПередНачаломДобавления + + + true + true + + true + + СписокСтрокаПоиска + 46 + + СписокСтрокаПоискаРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 47 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 49 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 50 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 52 + + СписокУправлениеПоискомРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 53 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + + + + ФормаКоманднаяПанель + -1 + + ОсновныеКоманды + 44 + + ФормаВыбрать + 17 + true + true + + true + + true + + ФормаВыбратьExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаСоздать + 10 + true + true + + true + + + ФормаСоздатьExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 21 + true + true + + true + + + ФормаСкопироватьExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаИзменить + 23 + true + true + + true + + + ФормаИзменитьExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Основные команды</value> + + + ОсновныеКомандыРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + + + + ДополнительныеКоманды + 12 + true + true + + true + + + <key>ru</key> + <value>Дополнительные команды</value> + + + ДополнительныеКомандыРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 13 + true + true + + true + + + ФормаСправкаExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + + Список.ПолноеНаименование + + + + Список.Parent + + + Список.Ref + +
true
+ + ВЫБРАТЬ + Значения.Ссылка, + Значения.ВерсияДанных, + Значения.ПометкаУдаления, + Значения.Предопределенный, + Значения.Владелец, + Значения.Родитель, + ВЫБОР + КОГДА &ЭтоОсновнойЯзык + ТОГДА Значения.Наименование + ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) + КОНЕЦ КАК Наименование, + Значения.Вес +ИЗ + Справочник.ЗначенияСвойствОбъектовИерархия КАК Значения + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектовИерархия.Представления КАК ЗначенияПредставления + ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка) + И ЗначенияПредставления.КодЯзыка = &КодЯзыка + Catalog.ЗначенияСвойствОбъектовИерархия + true + true + true + true + true + +
+ + Свойство + + <key>ru</key> + <value>Свойство</value> + + 2 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + FunctionalOption.ИспользоватьДополнительныеРеквизитыИСведения + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..278b6adb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,210 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + КонецЕсли; + + Если Параметры.Отбор.Свойство("Владелец") Тогда + Свойство = Параметры.Отбор.Владелец; + Параметры.Отбор.Удалить("Владелец"); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Свойство) Тогда + Элементы.Свойство.Видимость = Истина; + НастроитьПорядокЗначенийПоСвойствам(Список); + КонецЕсли; + + Элементы.Список.РежимВыбора = Параметры.РежимВыбора; + + УстановитьЗаголовок(); + + ПриИзмененииСвойства(); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_ДополнительныеРеквизитыИСведения" + И Источник = Свойство Тогда + + ПодключитьОбработчикОжидания("ОбработчикОжиданияПриИзмененииСвойства", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СвойствоПриИзменении(Элемент) + + ПриИзмененииСвойства(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если НЕ Копирование + И Элементы.Список.Отображение = ОтображениеТаблицы.Список Тогда + + Родитель = Неопределено; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура НастроитьПорядокЗначенийПоСвойствам(Список) + + Перем Порядок; + + // Порядок. + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Владелец"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьЗаголовок() + + СтрокаЗаголовка = ""; + + Если ЗначениеЗаполнено(Свойство) Тогда + Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда + СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "ЗаголовокФормыВыбораЗначения"); + Иначе + Реквизиты = Новый Массив; + Реквизиты.Добавить("ЗаголовокФормыВыбораЗначения"); + ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Свойство, Реквизиты); + СтрокаЗаголовка = ЗначенияРеквизитов.ЗаголовокФормыВыбораЗначения; + КонецЕсли; + КонецЕсли; + + Если ПустаяСтрока(СтрокаЗаголовка) Тогда + + Если ЗначениеЗаполнено(Свойство) Тогда + Если НЕ Параметры.РежимВыбора Тогда + СтрокаЗаголовка = НСтр("ru = 'Значения свойства %1'"); + Иначе + СтрокаЗаголовка = НСтр("ru = 'Выберите значение свойства %1'"); + КонецЕсли; + + СтрокаЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаЗаголовка, Строка(Свойство)); + + ИначеЕсли Параметры.РежимВыбора Тогда + СтрокаЗаголовка = НСтр("ru = 'Выберите значение свойства'"); + КонецЕсли; + КонецЕсли; + + Если НЕ ПустаяСтрока(СтрокаЗаголовка) Тогда + АвтоЗаголовок = Ложь; + Заголовок = СтрокаЗаголовка; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияПриИзмененииСвойства() + + ПриИзмененииСвойства(); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененииСвойства() + + Если ЗначениеЗаполнено(Свойство) Тогда + + ВладелецДополнительныхЗначений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "ВладелецДополнительныхЗначений"); + + Если ЗначениеЗаполнено(ВладелецДополнительныхЗначений) Тогда + ТолькоПросмотр = Истина; + + ТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ВладелецДополнительныхЗначений, "ТипЗначения"); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Владелец", ВладелецДополнительныхЗначений); + + ДополнительныеЗначенияСВесом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ВладелецДополнительныхЗначений, "ДополнительныеЗначенияСВесом"); + Иначе + ТолькоПросмотр = Ложь; + ТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Свойство, "ТипЗначения"); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Владелец", Свойство); + + ДополнительныеЗначенияСВесом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "ДополнительныеЗначенияСВесом"); + КонецЕсли; + + Если ТипЗнч(ТипЗначения) = Тип("ОписаниеТипов") + И ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда + + Элементы.Список.ИзменятьСоставСтрок = Истина; + Иначе + Элементы.Список.ИзменятьСоставСтрок = Ложь; + КонецЕсли; + + Элементы.Список.Отображение = ОтображениеТаблицы.ИерархическийСписок; + Элементы.Владелец.Видимость = Ложь; + Элементы.Вес.Видимость = ДополнительныеЗначенияСВесом; + Иначе + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка( + Список, "Владелец"); + + Элементы.Список.Отображение = ОтображениеТаблицы.Список; + Элементы.Список.ИзменятьСоставСтрок = Ложь; + Элементы.Владелец.Видимость = Истина; + Элементы.Вес.Видимость = Ложь; + КонецЕсли; + + Элементы.Список.Шапка = Элементы.Владелец.Видимость Или Элементы.Вес.Видимость; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..4605d8ce --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,335 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ПолноеНаименование + 13 + true + true + + true + + + + Объект.ПолноеНаименование + + + Left + + ПолноеНаименованиеРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + ПолноеНаименованиеКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 5 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Вес + 7 + true + true + + true + + + + Объект.Вес + + + + ВесExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + ВесКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Владелец + 3 + true + + true + + + + Объект.Owner + + + + ВладелецExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ЗначенияСвойствОбъектовИерархия + + + true + + + true + +
true
+ true +
+ + ПоказатьВес + + + + СкрытьВладельца + + Boolean + + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..5f966a82 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,14 @@ + +

Предназначена для ввода значения дополнительного реквизита (сведения).

+

В программе предусмотрена возможность использовать дополнительные реквизиты (сведения) нескольких типов. Тип данных выбирается при настройке дополнительных реквизитов (сведений). При выборе типа данных Дополнительное значение (иерархия) программа предлагает ввести значения. При этом для каждого дополнительного реквизита или сведения данного типа используется свой список значений.

+

Ввод значений

+
  • +
    Укажите Наименование значения дополнительного реквизита (сведения).
    +
  • +
    С помощью поля Входит в группу можно подчинить новый элемент одному из имеющихся в списке. Для ввода нового вышестоящего элемента нажмите Создать (клавишу F8). Для выбора из имеющихся элементов нажмите Показать все (клавишу F4), выберите нужный элемент из списка.
    +
  • +
    В случае если для дополнительного реквизита (сведения) включен флажок Значения дополнительно характеризуются весовым коэффициентом, введите числовое значение в поле Весовой коэффициент.
    +
    • +
      Это поле в дальнейшем можно использовать для анализа в отчетах. Логику использования весового коэффициента необходимо продумывать самостоятельно. Например, для значений свойства "Надежность" можно задать вес следующим образом: для значений от единицы до тройки поставить вес равным нулю, а для значений четыре и пять равным единице. При таких весах в отчет можно быстро вывести надежных клиентов (у которых вес значения больше нуля).

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..501c92c9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,173 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) + И Параметры.ЗначенияЗаполнения.Свойство("Наименование") Тогда + + Объект.Наименование = Параметры.ЗначенияЗаполнения.Наименование; + КонецЕсли; + + Если НЕ Параметры.СкрытьВладельца Тогда + Элементы.Владелец.Видимость = Истина; + КонецЕсли; + + Если ТипЗнч(Параметры.ПоказатьВес) = Тип("Булево") Тогда + ПоказатьВес = Параметры.ПоказатьВес; + Иначе + ПоказатьВес = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Владелец, "ДополнительныеЗначенияСВесом"); + КонецЕсли; + + Если ПоказатьВес = Истина Тогда + Элементы.Вес.Видимость = Истина; + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ЗначенияСВесом"); + Иначе + Элементы.Вес.Видимость = Ложь; + Объект.Вес = 0; + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ЗначенияБезВеса"); + КонецЕсли; + + УстановитьЗаголовок(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Изменение_ЗначениеХарактеризуетсяВесовымКоэффициентом" + И Источник = Объект.Владелец Тогда + + Если Параметр = Истина Тогда + Элементы.Вес.Видимость = Истина; + Иначе + Элементы.Вес.Видимость = Ложь; + Объект.Вес = 0; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + УстановитьЗаголовок(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_ЗначенияСвойствОбъектовИерархия", + Новый Структура("Ссылка", Объект.Ссылка), Объект.Ссылка); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьЗаголовок() + + Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда + ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения"); + Иначе + Реквизиты = Новый Массив; + Реквизиты.Добавить("Заголовок"); + Реквизиты.Добавить("ЗаголовокФормыЗначения"); + ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Объект.Владелец, Реквизиты); + КонецЕсли; + + ИмяСвойства = СокрЛП(ЗначенияРеквизитов.ЗаголовокФормыЗначения); + + Если НЕ ПустаяСтрока(ИмяСвойства) Тогда + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (%2)'"), + Объект.Наименование, + ИмяСвойства); + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (Создание)'"), ИмяСвойства); + КонецЕсли; + Иначе + ИмяСвойства = Строка(ЗначенияРеквизитов.Заголовок); + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (Значение свойства %2)'"), + Объект.Наименование, + ИмяСвойства); + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Значение свойства %1 (Создание)'"), ИмяСвойства); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..2d3531bc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/Help/ru.html" @@ -0,0 +1,12 @@ + +

 В списке задаются значения дополнительных реквизитов и сведений.

+

В программе предусмотрена возможность использовать дополнительные реквизиты (сведения) нескольких типов. Тип данных выбирается при настройке дополнительных реквизитов (сведений). При выборе типа данных Дополнительное значение (иерархия) программа предлагает ввести значения в этот список. При этом для каждого дополнительного реквизита или сведения данного типа используется свой список значений.

+

Тип данных Дополнительное значение (иерархия) часто используется, при этом ввод информации сводится к выбору значений из списка, что ускоряет процесс ввода и снижает количество ошибок. С помощью этого типа данных можно описывать различные свойства объектов программы.

+

В списке можно использовать иерархию значений. Элементы в таком списке имеют одинаковые свойства, но могут иметь подчиненные элементы. При этом иерархия может быть довольно сложной.

+

Можно выбрать любой элемент иерархии, в отличие от сгруппированного списка дополнительных значений, в котором наименования групп выбрать в качестве значения невозможно.

+

Выбор значений

+
  • Выделите нужный элемент. +
  • Нажмите Выбрать. +
  • Также можно воспользоваться двойным щелчком мыши.

Ввод значений

+
  • Для ввода значений нажмите Создать. Заполните необходимые поля.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/ManagerModule.bsl" new file mode 100644 index 00000000..f278ae4e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/ManagerModule.bsl" @@ -0,0 +1,75 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + РедактируемыеРеквизиты.Добавить("Родитель"); + РедактируемыеРеквизиты.Добавить("ПометкаУдаления"); + + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЗначениеРазрешено(Владелец) + | ИЛИ НЕ Владелец.ЭтоДополнительноеСведение"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/ObjectModule.bsl" new file mode 100644 index 00000000..91ab7be7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/ObjectModule.bsl" @@ -0,0 +1,57 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(Владелец) Тогда + ВладелецДополнительныхЗначений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Владелец, + "ВладелецДополнительныхЗначений"); + + Если ЗначениеЗаполнено(ВладелецДополнительныхЗначений) Тогда + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Дополнительные значения для свойства ""%1"", созданного + |по образцу свойства ""%2"" нужно создавать для свойства-образца.'"), + Владелец, + ВладелецДополнительныхЗначений); + + Если ЭтоНовый() Тогда + ВызватьИсключение ОписаниеОшибки; + Иначе + ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ПриЧтенииПредставленийНаСервере() Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217.mdo" new file mode 100644 index 00000000..ae66f7d9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\265\321\200\320\260\321\200\321\205\320\270\321\217.mdo" @@ -0,0 +1,274 @@ + + + + + + + + + + ЗначенияСвойствОбъектовИерархия + + ru + Дополнительные значения (иерархия) + + Catalog.ЗначенияСвойствОбъектовИерархия.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + + ru + Свойство + + + ru + Дополнительный реквизит или сведение. + + true + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.EmptyRef + + ShowError + Use + + + + + Use + Parent + + ru + Входит в группу + + + ru + Вышестоящее дополнительное значение свойства. + + true + + Catalog.ЗначенияСвойствОбъектовИерархия.EmptyRef + + + Отбор.Владелец + Catalog.ЗначенияСвойствОбъектовИерархия.StandardAttribute.Owner + + Use + + + + + Use + Description + + ru + Наименование дополнительного значения свойства. + + + + + ShowError + Use + + + + + Use + Code + + + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Дополнительное значение (иерархия) + + true + HierarchyOfItems + 2 + true + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения + 100 + String + AsDescription + InDialog + BothWays + Catalog.ЗначенияСвойствОбъектовИерархия.Form.ФормаЭлемента + Catalog.ЗначенияСвойствОбъектовИерархия.Form.ФормаСписка + Catalog.ЗначенияСвойствОбъектовИерархия.Form.ФормаСписка + + Вес + + ru + Весовой коэффициент + + + Number + + 10 + 2 + + + + ru + Относительный вес дополнительного значения (значимость). + + + + + 0 + + Use + Use + + + ПолноеНаименование + + ru + Полное наименование + + + String + + + + ru + Подробное описание значения дополнительного реквизита + + true + + + + + + Use + Use + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + + Use + Use + + + Наименование + + ru + Наименование + + + String + + 150 + + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..16b23ae0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1014 @@ + + + + ГруппаПользовательскихНастроек + 21 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 23 + + ФормаВыбрать + 72 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаИзменить + 34 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаОбновить + 36 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Refresh + Auto + true + true + UserCmds + Auto + + + ФормаРежимПросмотра + 70 + + ФормаИерархическийСписок + 38 + true + true + + true + + + ФормаИерархическийСписокРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.HierarchicalList + Auto + true + true + UserCmds + Auto + + + ФормаСписок + 40 + true + true + + true + + + ФормаСписокРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.List + Auto + true + true + UserCmds + Auto + + + ФормаДерево + 42 + true + true + + true + + + ФормаДеревоРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Tree + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Режим просмотра</value> + + + ФормаРежимПросмотраРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.ListViewMode + + Auto + + + + ФормаНайти + 52 + true + true + + true + + + ФормаНайтиРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ФормаОтменитьПоиск + 54 + true + true + + true + + + ФормаОтменитьПоискРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ФормаНастройкаСписка + 56 + true + true + + true + + + ФормаНастройкаСпискаРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ListSettings + Auto + true + true + UserCmds + Auto + + + ФормаЗагрузитьНастройкиДинамическогоСписка + 64 + true + true + + true + + + ФормаЗагрузитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.LoadDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьНастройкиДинамическогоСписка + 66 + true + true + + true + + + ФормаСохранитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SaveDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСтандартныеНастройкиДинамическогоСписка + 68 + true + true + + true + + + ФормаСтандартныеНастройкиДинамическогоСпискаРасширеннаяПодсказка + 69 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.DynamicListStandardSettings + Auto + true + true + UserCmds + Auto + + + ФормаВывестиСписок + 58 + true + true + + true + + + ФормаВывестиСписокРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + + ФормаИзменитьФорму + 62 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 60 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + СписокСсылка + 18 + true + true + + true + + + + Список.Ref + + + + СписокСсылкаРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 19 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокСиноним + 4 + + <key>ru</key> + <value>Синоним</value> + + true + true + + + + Список.Синоним + + + true + + СписокСинонимРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокСинонимКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокПолноеИмя + 13 + true + true + + + + Список.ПолноеИмя + + + + СписокПолноеИмяРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + СписокПолноеИмяКонтекстноеМеню + 14 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + ValueChoice + СписокВыборЗначения + + + true + true + + true + + СписокSearchString + 25 + + СписокSearchStringExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 26 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 28 + + СписокViewStatusExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 29 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 31 + + СписокSearchControlExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 32 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.DeletionMark + + + Список.Description + + + Список.Parent + + + Список.Ref + + + Список.Имя + + + Список.ПометкаБудущегоУдаления + +
true
+ + ВЫБРАТЬ + Идентификаторы.Ссылка, + Идентификаторы.ВерсияДанных, + Идентификаторы.ПометкаУдаления, + ВЫБОР + КОГДА ПОДСТРОКА(Идентификаторы.Имя, 0, 7) = "Удалить" + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ПометкаБудущегоУдаления, + Идентификаторы.Предопределенный, + Идентификаторы.Родитель, + Идентификаторы.Наименование, + Идентификаторы.ПорядокКоллекции, + Идентификаторы.Имя, + Идентификаторы.Синоним, + Идентификаторы.ПолноеИмя, + Идентификаторы.ПолныйСиноним, + Идентификаторы.БезДанных, + Идентификаторы.ЗначениеПустойСсылки, + Идентификаторы.КлючОбъектаМетаданных +ИЗ + Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы + Catalog.ИдентификаторыОбъектовМетаданных + true + true + true + true + true + +
+ + ВыбиратьГруппыОбъектовМетаданных + 2 + + Boolean + + + true + + + true + + + + ВыбиратьГруппыОбъектовМетаданных + + Boolean + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..12796094 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,30 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Справочники.ИдентификаторыОбъектовМетаданных.ФормаСпискаПриСозданииНаСервере(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + СтандартныеПодсистемыКлиент.ИдентификаторыОбъектовМетаданныхФормаСпискаСписокВыборЗначения(ЭтотОбъект, + Элемент, Значение, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..7700244e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1052 @@ + + + + Ссылка + 59 + true + true + + true + + + + Объект.Ref + + + + ru + Вычисляемое представление идентификатора объекта метаданных + + + СсылкаРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 60 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 60 + true + true + true + false + false + true + true + true + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + true + true + + НаименованиеExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + 60 + true + false + true + true + true + true + + + + ИмяИСинонимОбъектаМетаданных + 24 + + Имя + 11 + true + true + + true + + + + Объект.Имя + + + true + + ИмяExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + ИмяКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 60 + true + false + true + true + true + true + + + + Синоним + 13 + true + true + + true + + + + Объект.Синоним + + + true + + СинонимExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + СинонимКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 60 + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Имя и синоним объекта метаданных</value> + + + ИмяИСинонимОбъектаМетаданныхExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + + + + ПолноеИмяИПолныйСинонимОбъектаМетаданных + 25 + + ПолноеИмя + 15 + true + true + + true + + + + Объект.ПолноеИмя + + + + OnChange + ПолноеИмяПриИзменении + + + ПолноеИмяExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + ПолноеИмяКонтекстноеМеню + 16 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 60 + true + false + true + true + true + true + + + + ПолныйСиноним + 3 + + <key>ru</key> + <value>Полный синоним</value> + + true + true + + true + + + + Объект.ПолныйСиноним + + + true + + ПолныйСинонимExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + ПолныйСинонимКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + 60 + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Полное имя и полный синоним объекта метаданных</value> + + + ПолноеИмяИПолныйСинонимОбъектаМетаданныхExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + + + + ПрочиеСвойства + 26 + + ПорядокКоллекции + 9 + true + true + + + + Объект.ПорядокКоллекции + + + true + + ПорядокКоллекцииExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + + ПорядокКоллекцииКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + БезДанных + 19 + true + true + + + + Объект.БезДанных + + + true + Right + + БезДанныхExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + БезДанныхКонтекстноеМеню + 20 + true + true + + true + + true + + CheckBoxField + true + Enter + true + Left + true + + + + ПустаяСсылкаПредставление + 21 + true + true + + + + ПустаяСсылкаПредставление + + + true + + ru + Для ссылочных типов объектов метаданных +содержит пустую ссылку своего типа, +для остальных - Неопределено +(в форме показано представление +типа значения пустой ссылки) + + + ПустаяСсылкаПредставлениеExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + ПустаяСсылкаПредставлениеКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + НоваяСсылка + 30 + true + true + + + + Объект.НоваяСсылка + + + + НоваяСсылкаExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + + НоваяСсылкаКонтекстноеМеню + 31 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Прочее</value> + + + ПрочиеСвойстваExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 45 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.WriteAndClose + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 47 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Auto + true + true + UserCmds + Auto + + + ФормаПеречитать + 49 + true + true + + true + + + ФормаПеречитатьРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Reread + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьПометкуУдаления + 51 + true + true + + true + + + ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ФормаПоказатьВСписке + 53 + true + true + + true + + + ФормаПоказатьВСпискеРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ShowInList + Auto + true + true + UserCmds + Auto + + + ФормаВключитьВозможностьРедактирования + 29 + true + true + + true + + + ФормаВключитьВозможностьРедактированияExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаИзменитьФорму + 55 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 57 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ИдентификаторыОбъектовМетаданных + + + true + + + true + +
true
+ true +
+ + ПустаяСсылкаПредставление + + <key>ru</key> + <value>Значение пустой ссылки</value> + + 2 + + String + + + + true + + + true + + + + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + InformationRegister.НастройкиВерсионированияОбъектов.StandardCommand.OpenByValue.ТипОбъекта + + + + CommonCommand.МоиЗаметкиПоПредмету + + + + InformationRegister.НазначениеДополнительныхОбработок.StandardCommand.OpenByValue.ОбъектНазначения + + + + 0:e7d51ada-f286-4519-bfae-ece95dd4d7b0 + + + + CommonCommand.РолиИИсполнителиЗадач + + + + CommonCommand.ИсторияИзменений + + + + CommonCommand.ПрисоединенныеФайлы + + + + + + Catalog.ВнешниеПользователи.Command.ВнешнийДоступ + + + + 0:fef727fa-f63b-4467-9367-73a2425b19e3 + + + + 0:bfa90848-930f-433d-8f6f-c11ac2c5eba2 + + + + CommonCommand.СозданиеСвязанныхОбъектов + + + + CommonCommand.СоздатьЗаметкуПоПредмету + + + + CommonCommand.ОтправитьПисьмо + + + + CommonCommand.ОтправитьSMS + + + + CommonCommand.Напомнить + + + + CommonCommand.СкрытьПерсональныеДанныеСубъектов + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..c05836d8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,9 @@ + +

Просмотр свойств идентификатора объекта метаданных программы.

+

Заполняется автоматически при первом запуске (и каждом обновлении) программы, согласно метаданным программы, а также автоматически актуализируется при каждом обновлении версии программы (учитываются переименованные, добавленные и удаленные объекты метаданных).

+

Выводятся сведения:

+
  • Представление; +
  • Имя; +
  • Синоним; +
  • Полное имя; +
  • Полный синоним.
\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..ea5c6a2a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,57 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Справочники.ИдентификаторыОбъектовМетаданных.ФормаЭлементаПриСозданииНаСервере(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + Элементы.ФормаВключитьВозможностьРедактирования.Доступность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПолноеИмяПриИзменении(Элемент) + + ПолноеИмя = Объект.ПолноеИмя; + ОбновитьСвойстваИдентификатора(); + + Если ПолноеИмя <> Объект.ПолноеИмя Тогда + Объект.ПолноеИмя = ПолноеИмя; + ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Объект метаданных не найден по полному имени: + |%1.'"), + ПолноеИмя)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбновитьСвойстваИдентификатора() + + Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьСвойстваИдентификатора(Объект); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Help/ru.html" new file mode 100644 index 00000000..fc3e37eb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Help/ru.html" @@ -0,0 +1,7 @@ + +

Предназначен для хранения и просмотра идентификаторов объектов метаданных. Данные списка не редактируются, предназначены для обеспечения работы программы.

+

Список заполняется автоматически при первом запуске (и каждом обновлении) программы, согласно метаданным программы, а также автоматически актуализируется при каждом обновлении версии программы (учитываются переименованные, добавленные и удаленные объекты метаданных).

+

В списке в виде дерева выводятся все объекты программы, сгруппированные по типам. По умолчанию выводится поле Синоним объекта. По команде Еще - Изменить форму можно добавить в список поля Полное имя и Идентификатор.

+

Нажмите  для просмотра подробных сведений об идентификаторе выбранного объекта.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/ManagerModule.bsl" new file mode 100644 index 00000000..c47e2e97 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/ManagerModule.bsl" @@ -0,0 +1,4033 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Возвращает реквизиты справочника, которые образуют естественный ключ для элементов справочника. +// +// Возвращаемое значение: +// Массив из Строка - массив имен реквизитов, образующих естественный ключ. +// +Функция ПоляЕстественногоКлюча() Экспорт + + Результат = Новый Массив; + Результат.Добавить("ПолноеИмя"); + + Возврат Результат; + +КонецФункции + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) Экспорт + + СтандартнаяОбработка = Ложь; + + Поля.Добавить("Ссылка"); + Поля.Добавить("Наименование"); + Поля.Добавить("ПолноеИмя"); + Поля.Добавить("ПолныйСиноним"); + +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) Экспорт + + СтандартнаяОбработка = Ложь; + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Представление = СтандартныеПодсистемыПовтИсп.ПредставлениеИдентификатораОбъектаМетаданных(Данные.Ссылка); +#Иначе + Представление = СтандартныеПодсистемыКлиентПовтИсп.ПредставлениеИдентификатораОбъектаМетаданных(Данные.Ссылка); +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +// Только для внутреннего использования. +Процедура ПроверкаИспользования(ОбъектыРасширений = Ложь) Экспорт + + Если СтандартныеПодсистемыПовтИсп.ОтключитьИдентификаторыОбъектовМетаданных() Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Справочник ""%1"" не используется.'"), НазваниеСправочника(ОбъектыРасширений)); + КонецЕсли; + + Если ОбъектыРасширений И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + ВызватьИсключение ОписаниеОшибкиИдентификаторыОбъектовРасширенийНедоступныВНеразделенномРежиме(); + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + + Если ПланыОбмена.ГлавныйУзел() = Неопределено + И ЗначениеЗаполнено(ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени("Константа.ГлавныйУзел").Получить()) Тогда + + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Справочник ""%1"" не может использоваться + |в информационной базе с неподтвержденной отменой главного узла. + | + |Для восстановления связи с главным узлом запустите 1С:Предприятие и + |нажмите кнопку Восстановить или программно установите главный узел, + |сохраненный в константе Главный узел. + | + |Для подтверждения отмены связи с главным узлом запустите 1С:Предприятие и + |нажмите кнопку Отключить или программно очистите константу Главный узел.'"), + НазваниеСправочника(ОбъектыРасширений)); + КонецЕсли; + +КонецПроцедуры + +// Возвращает Истина, если проверка, обновление и замена дублей завершена. +// +// Параметры: +// Обновить - Булево - если передать Истина, тогда данные будут обновлены, +// если возможно. Если невозможно, тогда будет вызвано исключение. +// Если передать Ложь, тогда будет возвращено состояние данных. +// +Функция ДанныеОбновлены(Обновить = Ложь, ОбъектыРасширений = Ложь) Экспорт + + Попытка + Обновлен = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы( + "СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбъектовМетаданных"); + Исключение + Если Обновить Тогда + ВызватьИсключение; + КонецЕсли; + Возврат Ложь; + КонецПопытки; + + Если Обновлен = Неопределено Тогда + Если Обновить Тогда + ОбновитьДанныеСправочника(); + Иначе + Возврат Ложь; + КонецЕсли; + КонецЕсли; + + Если ОбъектыРасширений + И ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) Тогда + + Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Если Обновить Тогда + ВызватьИсключение ОписаниеОшибкиИдентификаторыОбъектовРасширенийНедоступныВНеразделенномРежиме(); + Иначе + Возврат Ложь; + КонецЕсли; + КонецЕсли; + + Если Не Справочники.ИдентификаторыОбъектовРасширений.ИдентификаторыОбъектовТекущейВерсииРасширенийЗаполнены() Тогда + Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника(); + КонецЕсли; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +// Только для внутреннего использования. +// +// Параметры: +// Объекты - Массив из СправочникОбъект.ИдентификаторыОбъектовМетаданных +// +Процедура ЗагрузитьДанныеВПодчиненныйУзел(Объекты) Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + // В модели сервиса не поддерживается. + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + Возврат; + КонецЕсли; + + ПроверкаИспользования(); + СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы(); + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить("Справочник.ИдентификаторыОбъектовМетаданных"); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + // Подготовка исходной таблицы с учетом переименования для поиска дублей. + Выгрузка = ВыгрузкаВсехИдентификаторов(); + Выгрузка.Колонки.Добавить("ДубльОбновлен", Новый ОписаниеТипов("Булево")); + Выгрузка.Колонки.Добавить("ПолноеИмяНижнийРегистр", Новый ОписаниеТипов("Строка")); + + // Отбор только тех из загружаемых объектов, которые отличаются от существующих. + ТаблицаЗагружаемых = Новый ТаблицаЗначений; + ТаблицаЗагружаемых.Колонки.Добавить("Объект"); + ТаблицаЗагружаемых.Колонки.Добавить("Ссылка"); + ТаблицаЗагружаемых.Колонки.Добавить("ОбъектМетаданныхПоКлючу"); + ТаблицаЗагружаемых.Колонки.Добавить("ОбъектМетаданныхПоПолномуИмени"); + ТаблицаЗагружаемых.Колонки.Добавить("Совпадает", Новый ОписаниеТипов("Булево")); + + Для каждого Объект Из Объекты Цикл + СвойстваЗагружаемого = ТаблицаЗагружаемых.Добавить(); + СвойстваЗагружаемого.Объект = Объект; + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + СвойстваЗагружаемого.Ссылка = Объект.Ссылка; + Иначе + СвойстваЗагружаемого.Ссылка = Объект.ПолучитьСсылкуНового(); + Если Не ЗначениеЗаполнено(СвойстваЗагружаемого.Ссылка) Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка загрузки идентификаторов объектов метаданных. + |Невозможно загрузить новый элемент у которого не указана ссылка нового: + |""%1"".'"), + Объект.ПолноеИмя); + КонецЕсли; + КонецЕсли; + + // Предварительная обработка. + + Если Не ЭтоКоллекция(СвойстваЗагружаемого.Ссылка) Тогда + СвойстваЗагружаемого.ОбъектМетаданныхПоКлючу = ОбъектМетаданныхПоКлючу( + Объект.КлючОбъектаМетаданных.Получить()); + + СвойстваЗагружаемого.ОбъектМетаданныхПоПолномуИмени = + МетаданныеНайтиПоПолномуИмени(Объект.ПолноеИмя); + + Если СвойстваЗагружаемого.ОбъектМетаданныхПоКлючу = Неопределено + И СвойстваЗагружаемого.ОбъектМетаданныхПоПолномуИмени = Неопределено + И Объект.ПометкаУдаления <> Истина Тогда + // Если по какой-то причине загружаемый объект не найден в метаданных, + // его следует пометить на удаление. + Объект.ПометкаУдаления = Истина; + КонецЕсли; + КонецЕсли; + + Если Объект.ПометкаУдаления Тогда + // Для помеченных на удаление недопустимо корректное полное имя, + // поэтому для надежного обеспечения этого условия, процедура обновления + // свойств помеченного дополнительно применяется перед загрузкой. + ОбновитьСвойстваПомеченногоНаУдаление(Объект); + КонецЕсли; + + Свойства = Выгрузка.Найти(СвойстваЗагружаемого.Ссылка, "Ссылка"); + Если Свойства <> Неопределено + И Свойства.Наименование = Объект.Наименование + И Свойства.Родитель = Объект.Родитель + И Свойства.ПорядокКоллекции = Объект.ПорядокКоллекции + И Свойства.Имя = Объект.Имя + И Свойства.Синоним = Объект.Синоним + И Свойства.ПолноеИмя = Объект.ПолноеИмя + И Свойства.ПолныйСиноним = Объект.ПолныйСиноним + И Свойства.БезДанных = Объект.БезДанных + И Свойства.ЗначениеПустойСсылки = Объект.ЗначениеПустойСсылки + И Свойства.ИмяПредопределенныхДанных = Объект.ИмяПредопределенныхДанных + И Свойства.ПометкаУдаления = Объект.ПометкаУдаления + И КлючиОбъектовМетаданныхСовпадают(Свойства, Объект) Тогда + + СвойстваЗагружаемого.Совпадает = Истина; + КонецЕсли; + + Если Свойства <> Неопределено Тогда + Выгрузка.Удалить(Свойства); // Загружаемые не нужно переименовывать. + КонецЕсли; + КонецЦикла; + ТаблицаЗагружаемых.Индексы.Добавить("Ссылка"); + + // Переименование существующих элементов (без загружаемых) для поиска дублей. + + ПереименоватьПолныеИмена(Выгрузка); + Для каждого Строка Из Выгрузка Цикл + Строка.ПолноеИмяНижнийРегистр = НРег(Строка.ПолноеИмя); + КонецЦикла; + Выгрузка.Индексы.Добавить("КлючОбъектаМетаданных"); + Выгрузка.Индексы.Добавить("ПолноеИмяНижнийРегистр"); + + // Подготовка загружаемых объектов и дублей в существующих. + + ОбъектыДляЗаписи = Новый Массив; // Массив из СправочникОбъект.ИдентификаторыОбъектовМетаданных - + ПолныеИменаЗагружаемых = Новый Соответствие; + КлючиЗагружаемых = Новый Соответствие; + + Для каждого СвойстваЗагружаемого Из ТаблицаЗагружаемых Цикл + Объект = СвойстваЗагружаемого.Объект; + Ссылка = СвойстваЗагружаемого.Ссылка; + + Если СвойстваЗагружаемого.Совпадает Тогда + Продолжить; // Точно совпадающие объекты не требуется загружать. + КонецЕсли; + + Если ЭтоКоллекция(Ссылка) Тогда + ОбъектыДляЗаписи.Добавить(Объект); + Продолжить; + КонецЕсли; + + // Проверка отсутствия дублей среди загружаемых элементов. + + Если ПолныеИменаЗагружаемых.Получить(НРег(Объект.ПолноеИмя)) <> Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка загрузки идентификаторов объектов метаданных. + |Невозможно загрузить два элемента у которых совпадает полное имя: + |""%1"".'"), + Объект.ПолноеИмя); + КонецЕсли; + ПолныеИменаЗагружаемых.Вставить(НРег(Объект.ПолноеИмя)); + + КлючОбъектаМетаданных = Объект.КлючОбъектаМетаданных.Получить(); + Если ТипЗнч(КлючОбъектаМетаданных) = Тип("Тип") + И КлючОбъектаМетаданных <> Тип("Неопределено") Тогда + + Если КлючиЗагружаемых.Получить(КлючОбъектаМетаданных) <> Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка загрузки идентификаторов объектов метаданных. + |Невозможно загрузить два элемента у которых совпадает ключ объекта метаданных: + |""%1"".'"), + Строка(КлючОбъектаМетаданных)); + КонецЕсли; + КлючиЗагружаемых.Вставить(КлючОбъектаМетаданных); + + Если СвойстваЗагружаемого.ОбъектМетаданныхПоКлючу <> СвойстваЗагружаемого.ОбъектМетаданныхПоПолномуИмени Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка загрузки идентификаторов объектов метаданных. + |Невозможно загрузить элемент у которого ключ объекта метаданных + |""%1"" не соответствует полному имени ""%2"".'"), + Строка(КлючОбъектаМетаданных), Объект.ПолноеИмя); + КонецЕсли; + + Если Не Объект.ПометкаУдаления Тогда + // Определение дублей среди существующих объектов метаданных по ключу. + Отбор = Новый Структура("КлючОбъектаМетаданных", КлючОбъектаМетаданных); + ОпределитьДублиПриЗагрузкеВПодчиненныйУзел(Выгрузка, Отбор, Объект, Ссылка, ТаблицаЗагружаемых); + КонецЕсли; + КонецЕсли; + + Если Не Объект.ПометкаУдаления Тогда + // Определение дублей среди существующих объектов метаданных по полному имени. + Отбор = Новый Структура("ПолноеИмяНижнийРегистр", НРег(Объект.ПолноеИмя)); + ОпределитьДублиПриЗагрузкеВПодчиненныйУзел(Выгрузка, Отбор, Объект, Ссылка, ТаблицаЗагружаемых); + КонецЕсли; + + ОбъектыДляЗаписи.Добавить(Объект); + КонецЦикла; + + // Обновление дублей. + Строки = Выгрузка.НайтиСтроки(Новый Структура("ДубльОбновлен", Истина)); + Для каждого Свойства Из Строки Цикл + ОбъектДубля = Свойства.Ссылка.ПолучитьОбъект(); + ЗаполнитьЗначенияСвойств(ОбъектДубля, Свойства); + ОбъектДубля.КлючОбъектаМетаданных = Новый ХранилищеЗначения(Свойства.КлючОбъектаМетаданных); + ОбъектДубля.ОбменДанными.Загрузка = Истина; + ОбъектДубля.Записать(); + КонецЦикла; + + ПодготовитьСписокНовыхПодсистемВПодчиненномУзле(ОбъектыДляЗаписи); + + // Загрузка объектов. + Для каждого Объект Из ОбъектыДляЗаписи Цикл + Объект.ОбменДанными.Загрузка = Истина; + Объект.Записать(); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Возвращает ссылки на объект метаданных, найденный по полному имени удаленного объекта метаданных. +// Используется когда требуется сделать замену старой ссылки на новую или очистить ее. +// +// Параметры: +// ПолноеИмяУдаленного - Строка - например, "Роль.ЧтениеБазовойНСИ". +// +// Возвращаемое значение: +// Массив - со значениями: +// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений - найденная ссылка. +// +Функция ИдентификаторУдаленногоОбъектаМетаданных(ПолноеИмяУдаленного) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ИдентификаторыОбъектовМетаданных.Ссылка КАК Ссылка, + | ИдентификаторыОбъектовМетаданных.ПолноеИмя КАК ПолноеИмя + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных + |ГДЕ + | ИдентификаторыОбъектовМетаданных.ПометкаУдаления + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ИдентификаторыОбъектовРасширений.Ссылка, + | ИдентификаторыОбъектовРасширений.ПолноеИмя + |ИЗ + | Справочник.ИдентификаторыОбъектовРасширений КАК ИдентификаторыОбъектовРасширений + |ГДЕ + | ИдентификаторыОбъектовРасширений.ПометкаУдаления"; + + Выборка = Запрос.Выполнить().Выбрать(); + + НайденныеСсылки = Новый Массив; + Пока Выборка.Следующий() Цикл + Если Не СтрНачинаетсяС(Выборка.ПолноеИмя, "? ") Тогда + Продолжить; + КонецЕсли; + ТекущееПолноеИмяУдаленного = ПолноеИмяУдаленного(Выборка.ПолноеИмя); + Если ВРег(ТекущееПолноеИмяУдаленного) = ВРег(ПолноеИмяУдаленного) Тогда + НайденныеСсылки.Добавить(Выборка.Ссылка); + КонецЕсли; + КонецЦикла; + + Возврат НайденныеСсылки; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Процедура обновляет данные справочника по метаданным конфигурации. +// +// Параметры: +// ЕстьИзменения - Булево - (возвращаемое значение) в этот параметр возвращается +// значение Истина, если производилась запись, иначе не изменяется. +// +// ЕстьУдаленные - Булево - (возвращаемое значение) в этот параметр возвращается +// значение Истина, если хотя бы один элемент справочника был помечен +// на удаление, иначе не изменяется. +// +// ТолькоПроверка - Булево - не производить никаких изменений, а лишь выполнить +// установку флажков ЕстьИзменения, ЕстьУдаленные. +// +Процедура ОбновитьДанныеСправочника(ЕстьИзменения = Ложь, ЕстьУдаленные = Ложь, ТолькоПроверка = Ложь) Экспорт + + ВыполнитьОбновлениеДанных(ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка); + +КонецПроцедуры + +// Требуется, чтобы выгрузить все идентификаторы объектов метаданных конфигурации +// в подчиненные узлы РИБ, если ранее справочник не был включен в РИБ. +// Также может использоваться для ремонта данных справочника в РИБ-узлах. +// +Процедура ЗарегистрироватьПолноеИзменениеДляПодчиненныхУзловРИБ() Экспорт + + ПроверкаИспользования(); + + Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() + Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + МетаданныеСправочника = Метаданные.Справочники.ИдентификаторыОбъектовМетаданных; + + УзлыРИБ = Новый Массив; + Для каждого ПланОбмена Из Метаданные.ПланыОбмена Цикл + Если ПланОбмена.РаспределеннаяИнформационнаяБаза + И ПланОбмена.Состав.Содержит(МетаданныеСправочника)Тогда + + ПланОбменаМенеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПланОбмена.ПолноеИмя()); + Выборка = ПланОбменаМенеджер.Выбрать(); + Пока Выборка.Следующий() Цикл + Если Выборка.Ссылка <> ПланОбменаМенеджер.ЭтотУзел() Тогда + УзлыРИБ.Добавить(Выборка.Ссылка); + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЦикла; + + Если УзлыРИБ.Количество() > 0 Тогда + ПланыОбмена.ЗарегистрироватьИзменения(УзлыРИБ, МетаданныеСправочника); + КонецЕсли; + +КонецПроцедуры + +// Процедура обновляет данные справочника по метаданным конфигурации. +// +// Параметры: +// ЕстьИзменения - Булево - (возвращаемое значение) - в этот параметр возвращается +// значение Истина, если производилась запись, иначе не изменяется. +// +// ЕстьУдаленные - Булево - (возвращаемое значение) - в этот параметр возвращается +// значение Истина, если хотя бы один элемент справочника был помечен +// на удаление, иначе не изменяется. +// +// ТолькоПроверка - Булево - не производить никаких изменений, а выполнить только установку +// параметров ЕстьИзменения, ЕстьУдаленные, ЕстьКритичныеИзменения, СписокКритичныхИзменений. +// +// ЕстьКритичныеИзменения - (возвращаемое значение) - в этот параметр возвращается +// значение Истина, если найдены критичные изменения, иначе не изменяется. +// Критичные изменения (только для не помеченных на удаление): +// - изменении реквизита ПолноеИмя, +// - добавление нового элемента справочника. +// В общем случае, критичные изменения требуют монопольный режим. +// +// СписокКритичныхИзменений - Строка (возвращаемое значение) - содержит полные имена +// объектов метаданных, которые добавлены или требуется добавить, +// а также объектов метаданных, полные имена которых изменены или требуется изменить. +// +Процедура ВыполнитьОбновлениеДанных(ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка, + ЕстьКритичныеИзменения = Ложь, СписокКритичныхИзменений = "", ОбъектыРасширений = Ложь) Экспорт + + Если ОбъектыРасширений + И ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) + И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + + ВызватьИсключениеПоОшибке(Истина, + ОписаниеОшибкиИдентификаторыОбъектовРасширенийНедоступныВНеразделенномРежиме()); + КонецЕсли; + + ПроверкаИспользования(ОбъектыРасширений); + + УстановитьПривилегированныйРежим(Истина); + + ЕстьТекущиеИзменения = Ложь; + Если Не ОбъектыРасширений Тогда + ЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке(ТолькоПроверка, ЕстьТекущиеИзменения); + КонецЕсли; + + ОбновитьДанные(ЕстьТекущиеИзменения, ЕстьУдаленные, ТолькоПроверка, + ЕстьКритичныеИзменения, СписокКритичныхИзменений, ОбъектыРасширений); + + Если ЕстьТекущиеИзменения Тогда + ЕстьИзменения = Истина; + КонецЕсли; + + Если Не ОбъектыРасширений Тогда + СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы( + "СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбъектовМетаданных", Истина); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Реализация процедур, объявленных в других модулях. + +// См. ОбщегоНазначения.ИдентификаторОбъектаМетаданных. +Функция ИдентификаторОбъектаМетаданных(ОписаниеОбъектаМетаданных, ВызыватьИсключение) Экспорт + + ТипОписанияОбъектаМетаданных = ТипЗнч(ОписаниеОбъектаМетаданных); + Если ТипОписанияОбъектаМетаданных = Тип("Тип") Тогда + + ОбъектМетаданных = Метаданные.НайтиПоТипу(ОписаниеОбъектаМетаданных); + + Если ОбъектМетаданных <> Неопределено Тогда + ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя(); + + ИначеЕсли Не ВызыватьИсключение Тогда + Возврат Null; + Иначе + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректное значение параметра ОписаниеОбъектаМетаданных в функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных. + |Указан несуществующий объект метаданных: ""%1"".'"), + ОписаниеОбъектаМетаданных); + КонецЕсли; + + ИначеЕсли ТипОписанияОбъектаМетаданных = Тип("Строка") Тогда + ПолноеИмяОбъектаМетаданных = ОписаниеОбъектаМетаданных; + + ИначеЕсли ТипОписанияОбъектаМетаданных = Тип("ОбъектМетаданных") Тогда + ПолноеИмяОбъектаМетаданных = ОписаниеОбъектаМетаданных.ПолноеИмя(); + + ИначеЕсли Не ВызыватьИсключение Тогда + Возврат Null; + Иначе + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректный тип параметра ОписаниеОбъектаМетаданных в функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных: + |""%1"".'"), + ТипОписанияОбъектаМетаданных); + КонецЕсли; + + Массив = Новый Массив; + Массив.Добавить(ПолноеИмяОбъектаМетаданных); + + Идентификаторы = ИдентификаторыОбъектовМетаданных(Массив, ВызыватьИсключение, Истина); + Идентификатор = Идентификаторы.Получить(ПолноеИмяОбъектаМетаданных); + Если Идентификатор = Неопределено Тогда + Возврат Null; + КонецЕсли; + + Возврат Идентификатор; + +КонецФункции + +// См. ОбщегоНазначения.ИдентификаторыОбъектовМетаданных. +Функция ИдентификаторыОбъектовМетаданных(ОписаниеОбъектовМетаданных, ВызыватьИсключение = Истина, ОдинЭлемент = Ложь) Экспорт + + УстановитьОтключениеБезопасногоРежима(Истина); + УстановитьПривилегированныйРежим(Истина); + ИдентификаторыПоПолнымИменам = КэшИдентификаторов().ИдентификаторыПоПолнымИменам; + УстановитьПривилегированныйРежим(Ложь); + УстановитьОтключениеБезопасногоРежима(Ложь); + + Результат = Новый Соответствие; + ПолныеИменаБезКэша = Новый Массив; + Для Каждого ОписаниеОбъектаМетаданных Из ОписаниеОбъектовМетаданных Цикл + + ТипОписанияОбъектаМетаданных = ТипЗнч(ОписаниеОбъектаМетаданных); + Если ТипОписанияОбъектаМетаданных = Тип("Тип") Тогда + + ОбъектМетаданных = Метаданные.НайтиПоТипу(ОписаниеОбъектаМетаданных); + Если ОбъектМетаданных <> Неопределено Тогда + ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); + ИначеЕсли Не ВызыватьИсключение Тогда + Продолжить; + Иначе + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректное значение параметра ОписаниеОбъектовМетаданных функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных: + |Указан несуществующий объект метаданных: ""%1"".'"), + ОписаниеОбъектаМетаданных); + КонецЕсли; + + ИначеЕсли ТипОписанияОбъектаМетаданных = Тип("Строка") Тогда + ПолноеИмя = ОписаниеОбъектаМетаданных; + + ИначеЕсли ТипОписанияОбъектаМетаданных = Тип("ОбъектМетаданных") Тогда + ПолноеИмя = ОписаниеОбъектаМетаданных.ПолноеИмя(); + + ИначеЕсли Не ВызыватьИсключение Тогда + Продолжить; + Иначе + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректный тип параметра ОписаниеОбъектовМетаданных функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных: + |""%1""'"), + ТипОписанияОбъектаМетаданных); + КонецЕсли; + Идентификатор = ИдентификаторыПоПолнымИменам.Получить(ПолноеИмя); + + Если Идентификатор = Неопределено Тогда + ПолныеИменаБезКэша.Добавить(ПолноеИмя); + Иначе + Результат.Вставить(ПолноеИмя, Идентификатор); + КонецЕсли; + КонецЦикла; + + Если ПолныеИменаБезКэша.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + Идентификаторы = ИдентификаторыОбъектовМетаданныхСПопыткойПовтора(ПолныеИменаБезКэша, + ВызыватьИсключение, ОдинЭлемент); + + Для Каждого КлючИЗначение Из Идентификаторы Цикл + Результат.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + ИдентификаторыПоПолнымИменам.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// См. ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору. +Функция ОбъектМетаданныхПоИдентификатору(Идентификатор, ВызыватьИсключение) Экспорт + + Идентификаторы = Новый Массив; + Идентификаторы.Добавить(Идентификатор); + + ОбъектыМетаданных = ОбъектыМетаданныхПоИдентификаторам(Идентификаторы, ВызыватьИсключение); + + Если Идентификатор = Неопределено Тогда + Возврат Null; + КонецЕсли; + + Возврат ОбъектыМетаданных.Получить(Идентификатор); + +КонецФункции + +// См. ОбщегоНазначения.ОбъектыМетаданныхПоИдентификаторам. +Функция ОбъектыМетаданныхПоИдентификаторам(Идентификаторы, ВызыватьИсключение) Экспорт + + УстановитьОтключениеБезопасногоРежима(Истина); + УстановитьПривилегированныйРежим(Истина); + ОписаниеОбъектовМетаданныхПоИдентификаторам = КэшИдентификаторов().ОписаниеОбъектовМетаданныхПоИдентификаторам; + УстановитьПривилегированныйРежим(Ложь); + УстановитьОтключениеБезопасногоРежима(Ложь); + + Результат = Новый Соответствие; + ИдентификаторыБезКэша = Новый Массив; + Для Каждого Идентификатор Из Идентификаторы Цикл + Описание = ОписаниеОбъектовМетаданныхПоИдентификаторам.Получить(Идентификатор); + + Если Описание = Неопределено + Или ВызыватьИсключение + И Описание.Ключ = Неопределено Тогда + + ИдентификаторыБезКэша.Добавить(Идентификатор); + + ИначеЕсли Описание.Ключ = Неопределено Тогда + Результат.Вставить(Идентификатор, Описание.Объект); + + ИначеЕсли ТипЗнч(Описание.Ключ) = Тип("Тип") Тогда + Результат.Вставить(Идентификатор, Метаданные.НайтиПоТипу(Описание.Ключ)); + Иначе + Результат.Вставить(Идентификатор, Метаданные.НайтиПоПолномуИмени(Описание.Ключ)); + КонецЕсли; + КонецЦикла; + + Если ИдентификаторыБезКэша.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + ОбъектыМетаданныхПоИдентификаторам = ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора(ИдентификаторыБезКэша, + ВызыватьИсключение); + + Для Каждого КлючИЗначение Из ОбъектыМетаданныхПоИдентификаторам Цикл + ОписаниеОбъектаМетаданных = КлючИЗначение.Значение; + Если ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("Структура") Тогда + Результат.Вставить(КлючИЗначение.Ключ, ОписаниеОбъектаМетаданных.Объект); + ОписаниеОбъектаМетаданных.Объект = Неопределено; + Иначе + Результат.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + ОписаниеОбъектаМетаданных = Новый Структура("Объект, Ключ", КлючИЗначение.Значение) + КонецЕсли; + ОписаниеОбъектовМетаданныхПоИдентификаторам.Вставить(КлючИЗначение.Ключ, ОписаниеОбъектаМетаданных); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// См. ОбщегоНазначения.ДобавитьПереименование. +Процедура ДобавитьПереименование(Итог, ВерсияИБ, СтароеПолноеИмя, НовоеПолноеИмя, ИдентификаторБиблиотеки = "") Экспорт + + СтандартныеПодсистемыПовтИсп.ИдентификаторыОбъектовМетаданныхПроверкаИспользования(); + + СтароеИмяКоллекции = ВРег(ИмяКоллекции(СтароеПолноеИмя)); + НовоеИмяКоллекции = ВРег(ИмяКоллекции(НовоеПолноеИмя)); + + ЗаголовокОшибки = + НСтр("ru = 'Ошибка в процедуре ПриДобавленииПереименованийОбъектовМетаданных общего модуля ОбщегоНазначенияПереопределяемый.'"); + + Если СтароеИмяКоллекции <> НовоеИмяКоллекции Тогда + ВызватьИсключение ЗаголовокОшибки + Символы.ПС + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не совпадают имена типов переименованного объекта метаданных. + |Прежний тип: ""%1"", + |новый тип: ""%2"".'"), + СтароеПолноеИмя, + НовоеПолноеИмя); + КонецЕсли; + + Если Итог.КоллекцииБезКлюча[СтароеИмяКоллекции] = Неопределено Тогда + + СписокДопустимыхТипов = ""; + Для каждого КлючИЗначение Из Итог.КоллекцииБезКлюча Цикл + СписокДопустимыхТипов = СписокДопустимыхТипов + КлючИЗначение.Значение + "," + Символы.ПС; + КонецЦикла; + СписокДопустимыхТипов = СокрП(СписокДопустимыхТипов); + СписокДопустимыхТипов = ?(ЗначениеЗаполнено(СписокДопустимыхТипов), + Лев(СписокДопустимыхТипов, СтрДлина(СписокДопустимыхТипов) - 1), ""); + + ВызватьИсключение ЗаголовокОшибки + Символы.ПС + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для типа объекта метаданных ""%1"" не требуется описывать переименование, + |так как сведения об объектах метаданных этого типа обновляются автоматически. + | + |Описывать переименования требуется только для следующих типов: + |%2.'"), + СтароеПолноеИмя, + СписокДопустимыхТипов); + КонецЕсли; + + Если Не ЗначениеЗаполнено(ИдентификаторБиблиотеки) Тогда + ИдентификаторБиблиотеки = Метаданные.Имя; + КонецЕсли; + + ПорядокБиблиотеки = Итог.ПорядокБиблиотек[ИдентификаторБиблиотеки]; + Если ПорядокБиблиотеки = Неопределено Тогда + ПорядокБиблиотеки = Итог.ПорядокБиблиотек.Количество(); + Итог.ПорядокБиблиотек.Вставить(ИдентификаторБиблиотеки, ПорядокБиблиотеки); + КонецЕсли; + + ВерсияБиблиотеки = Итог.ВерсииБиблиотек[ИдентификаторБиблиотеки]; + Если ВерсияБиблиотеки = Неопределено Тогда + ВерсияБиблиотеки = ОбновлениеИнформационнойБазыСлужебный.ВерсияИБ(ИдентификаторБиблиотеки); + Итог.ВерсииБиблиотек.Вставить(ИдентификаторБиблиотеки, ВерсияБиблиотеки); + КонецЕсли; + + Если ВерсияБиблиотеки = "0.0.0.0" Тогда + // При начальном заполнении переименования не требуются. + Возврат; + КонецЕсли; + + Результат = ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, ВерсияБиблиотеки); + Если Результат > 0 Тогда + ЧастиВерсии = СтрРазделить(ВерсияИБ, "."); + + ТаблицаПереименования = Итог.Таблица; // см. ТаблицаПереименованияДляТекущейВерсии + ОписаниеПереименования = ТаблицаПереименования.Добавить(); + ОписаниеПереименования.ПорядокБиблиотеки = ПорядокБиблиотеки; + ОписаниеПереименования.ВерсияЧасть1 = Число(ЧастиВерсии[0]); + ОписаниеПереименования.ВерсияЧасть2 = Число(ЧастиВерсии[1]); + ОписаниеПереименования.ВерсияЧасть3 = Число(ЧастиВерсии[2]); + ОписаниеПереименования.ВерсияЧасть4 = Число(ЧастиВерсии[3]); + ОписаниеПереименования.СтароеПолноеИмя = СтароеПолноеИмя; + ОписаниеПереименования.НовоеПолноеИмя = НовоеПолноеИмя; + ОписаниеПереименования.ПорядокДобавления = ТаблицаПереименования.Индекс(ОписаниеПереименования); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Дополнительные процедуры и функции для вызова из других модулей. + +// Только для внутреннего использования. +// ПолноеИмя в объекте должно быть уже установлено и корректно. +// +Процедура ОбновитьСвойстваИдентификатора(Объект) Экспорт + + ОбъектыРасширений = ЭтоОбъектРасширений(Объект); + + Если ОбъектыРасширений + И Справочники.ИдентификаторыОбъектовРасширений.ОбъектРасширенияОтключен(Объект.Ссылка) Тогда + Возврат; + КонецЕсли; + + ПолноеИмя = Объект.ПолноеИмя; + + // Восстановление старых значений. + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Объект.Ссылка, + "Наименование, + |ПорядокКоллекции, + |Имя, + |ПолноеИмя, + |Синоним, + |ПолныйСиноним, + |БезДанных, + |ЗначениеПустойСсылки, + |КлючОбъектаМетаданных"); + ЗаполнитьЗначенияСвойств(Объект, СтарыеЗначения); + КонецЕсли; + + ОбъектМетаданных = МетаданныеНайтиПоПолномуИмени(ПолноеИмя); + + Если ОбъектМетаданных = Неопределено Тогда + Объект.ПометкаУдаления = Истина; + Объект.Родитель = ПустаяСсылкаСправочника(ОбъектыРасширений); + Объект.Наименование = ВставитьЗнакВопроса(Объект.Наименование); + Объект.Имя = ВставитьЗнакВопроса(Объект.Имя); + Объект.Синоним = ВставитьЗнакВопроса(Объект.Синоним); + Объект.ПолноеИмя = ВставитьЗнакВопроса(Объект.ПолноеИмя); + Объект.ПолныйСиноним = ВставитьЗнакВопроса(Объект.ПолныйСиноним); + Объект.ЗначениеПустойСсылки = Неопределено; + + Если ОбъектыРасширений Тогда + Объект.ИмяРасширения = ВставитьЗнакВопроса(Объект.ИмяРасширения); + Объект.ХешСуммаРасширения = ВставитьЗнакВопроса(Объект.ХешСуммаРасширения); + КонецЕсли; + + Если ТипЗнч(Объект) <> Тип("ДанныеФормыСтруктура") Тогда + Объект.КлючОбъектаМетаданных = Неопределено; + КонецЕсли; + Иначе + Объект.ПометкаУдаления = Ложь; + + ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); + ПозицияТочки = СтрНайти(ПолноеИмя, "."); + ИмяБазовогоТипа = Лев(ПолноеИмя, ПозицияТочки -1); + + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений); + Отбор = Новый Структура("ИмяВЕдЧисле", ИмяБазовогоТипа); + Строки = СвойстваКоллекций.НайтиСтроки(Отбор); + + СвойстваОбъектовМетаданных = СвойстваОбъектовМетаданных(ЭтоОбъектРасширений(Объект), + СвойстваКоллекций.Скопировать(Строки)); + + СвойстваОбъекта = СвойстваОбъектовМетаданных.Найти(ПолноеИмя, "ПолноеИмя"); + + ЗаполнитьЗначенияСвойств(Объект, СвойстваОбъекта); + + Если ТипЗнч(Объект) <> Тип("ДанныеФормыСтруктура") Тогда + КлючОбъектаМетаданных = Объект.КлючОбъектаМетаданных.Получить(); + Если КлючОбъектаМетаданных = Неопределено + ИЛИ СвойстваОбъекта.БезКлючаОбъектаМетаданных + <> (КлючОбъектаМетаданных = Тип("Неопределено")) Тогда + + Объект.КлючОбъектаМетаданных = Новый ХранилищеЗначения(КлючОбъектаМетаданных(СвойстваОбъекта.ПолноеИмя)); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Только для внутреннего использования. +// +// Возвращаемое значение: +// ТаблицаЗначений: +// * ПорядокБиблиотеки - Число +// * ВерсияЧасть1 - Число +// * ВерсияЧасть2 - Число +// * ВерсияЧасть3 - Число +// * ВерсияЧасть4 - Число +// * ПорядокДобавления - Число +// * СтароеПолноеИмя - Строка +// * НовоеПолноеИмя - Строка +// +Функция ТаблицаПереименованияДляТекущейВерсии() Экспорт + + ТаблицаПереименования = Новый ТаблицаЗначений; + ТаблицаПереименования.Колонки.Добавить("ПорядокБиблиотеки", Новый ОписаниеТипов("Число")); + ТаблицаПереименования.Колонки.Добавить("ВерсияЧасть1", Новый ОписаниеТипов("Число")); + ТаблицаПереименования.Колонки.Добавить("ВерсияЧасть2", Новый ОписаниеТипов("Число")); + ТаблицаПереименования.Колонки.Добавить("ВерсияЧасть3", Новый ОписаниеТипов("Число")); + ТаблицаПереименования.Колонки.Добавить("ВерсияЧасть4", Новый ОписаниеТипов("Число")); + ТаблицаПереименования.Колонки.Добавить("ПорядокДобавления", Новый ОписаниеТипов("Число")); + ТаблицаПереименования.Колонки.Добавить("СтароеПолноеИмя", Новый ОписаниеТипов("Строка")); + ТаблицаПереименования.Колонки.Добавить("НовоеПолноеИмя", Новый ОписаниеТипов("Строка")); + + КоллекцииБезКлюча = Новый Соответствие; + + Отбор = Новый Структура("БезКлючаОбъектаМетаданных", Истина); + + КоллекцииБезКлючаОбъектаМетаданных = + СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных().НайтиСтроки(Отбор); + + Для каждого Строка Из КоллекцииБезКлючаОбъектаМетаданных Цикл + КоллекцииБезКлюча.Вставить(ВРег(Строка.ИмяВЕдЧисле), Строка.ИмяВЕдЧисле); + КонецЦикла; + + Итог = Новый Структура; + Итог.Вставить("Таблица", ТаблицаПереименования); + Итог.Вставить("КоллекцииБезКлюча", КоллекцииБезКлюча); + Итог.Вставить("ВерсииБиблиотек", Новый Соответствие); + Итог.Вставить("ПорядокБиблиотек", Новый Соответствие); + + ОбщегоНазначенияПереопределяемый.ПриДобавленииПереименованийОбъектовМетаданных(Итог); + ИнтеграцияПодсистемБСП.ПриДобавленииПереименованийОбъектовМетаданных(Итог); + + ТаблицаПереименования.Сортировать( + "ПорядокБиблиотеки ВОЗР, + |ВерсияЧасть1 ВОЗР, + |ВерсияЧасть2 ВОЗР, + |ВерсияЧасть3 ВОЗР, + |ВерсияЧасть4 ВОЗР, + |ПорядокДобавления ВОЗР"); + + Возврат ТаблицаПереименования; + +КонецФункции + +// Только для внутреннего использования. +Функция СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений = Ложь) Экспорт + + СвойстваКоллекцийОбъектовМетаданных = Новый ТаблицаЗначений; + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(50))); + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("ИмяВЕдЧисле", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(50))); + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("Синоним", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(255))); + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("СинонимВЕдЧисле", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(255))); + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("ПорядокКоллекции", Новый ОписаниеТипов("Число")); + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("БезДанных", Новый ОписаниеТипов("Булево")); + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("БезКлючаОбъектаМетаданных", Новый ОписаниеТипов("Булево")); + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("УникальныйИдентификатор")); + СвойстваКоллекцийОбъектовМетаданных.Колонки.Добавить("ОбъектыРасширений", Новый ОписаниеТипов("Булево")); + + // Константы + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("627a6fb8-872a-11e3-bb87-005056c00008"); + Строка.Имя = "Константы"; + Строка.Синоним = НСтр("ru = 'Константы'"); + Строка.ИмяВЕдЧисле = "Константа"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Константа'"); + + // Подсистемы + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("cdf5ac50-08e8-46af-9a80-4e63fd4a88ff"); + Строка.Имя = "Подсистемы"; + Строка.Синоним = НСтр("ru = 'Подсистемы'"); + Строка.ИмяВЕдЧисле = "Подсистема"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Подсистема'"); + Строка.БезДанных = Истина; + Строка.БезКлючаОбъектаМетаданных = Истина; + Строка.ОбъектыРасширений = Истина; + + // Роли + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("115c4f55-9c20-4e86-a6d0-d0167ec053a1"); + Строка.Имя = "Роли"; + Строка.Синоним = НСтр("ru = 'Роли'"); + Строка.ИмяВЕдЧисле = "Роль"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Роль'"); + Строка.БезДанных = Истина; + Строка.БезКлючаОбъектаМетаданных = Истина; + Строка.ОбъектыРасширений = Истина; + + // ПланыОбмена + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("269651e0-4b06-4f9d-aaab-a8d2b6bc6077"); + Строка.Имя = "ПланыОбмена"; + Строка.Синоним = НСтр("ru = 'Планы обмена'"); + Строка.ИмяВЕдЧисле = "ПланОбмена"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'План обмена'"); + Строка.ОбъектыРасширений = Истина; + + // Справочники + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("ede89702-30f5-4a2a-8e81-c3a823b7e161"); + Строка.Имя = "Справочники"; + Строка.Синоним = НСтр("ru = 'Справочники'"); + Строка.ИмяВЕдЧисле = "Справочник"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Справочник'"); + Строка.ОбъектыРасширений = Истина; + + // Документы + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("96c6ab56-0375-40d5-99a2-b83efa3dac8b"); + Строка.Имя = "Документы"; + Строка.Синоним = НСтр("ru = 'Документы'"); + Строка.ИмяВЕдЧисле = "Документ"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Документ'"); + Строка.ОбъектыРасширений = Истина; + + // ЖурналыДокументов + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("07938234-e29b-4cff-961a-9af07a4c6185"); + Строка.Имя = "ЖурналыДокументов"; + Строка.Синоним = НСтр("ru = 'Журналы документов'"); + Строка.ИмяВЕдЧисле = "ЖурналДокументов"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Журнал документов'"); + Строка.БезДанных = Истина; + + // Отчеты + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("706cf832-0ae5-45b5-8a4a-1f251d054f3b"); + Строка.Имя = "Отчеты"; + Строка.Синоним = НСтр("ru = 'Отчеты'"); + Строка.ИмяВЕдЧисле = "Отчет"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Отчет'"); + Строка.БезДанных = Истина; + Строка.ОбъектыРасширений = Истина; + + // Обработки + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("ae480426-487e-40b2-98ba-d207777449f3"); + Строка.Имя = "Обработки"; + Строка.Синоним = НСтр("ru = 'Обработки'"); + Строка.ИмяВЕдЧисле = "Обработка"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Обработка'"); + Строка.БезДанных = Истина; + Строка.ОбъектыРасширений = Истина; + + // ПланыВидовХарактеристик + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("8b5649b9-cdd1-4698-9aac-12ba146835c4"); + Строка.Имя = "ПланыВидовХарактеристик"; + Строка.Синоним = НСтр("ru = 'Планы видов характеристик'"); + Строка.ИмяВЕдЧисле = "ПланВидовХарактеристик"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'План видов характеристик'"); + Строка.ОбъектыРасширений = Истина; + + // ПланыСчетов + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("4295af27-543f-4373-bcfc-c0ace9b7620c"); + Строка.Имя = "ПланыСчетов"; + Строка.Синоним = НСтр("ru = 'Планы счетов'"); + Строка.ИмяВЕдЧисле = "ПланСчетов"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'План счетов'"); + Строка.ОбъектыРасширений = Истина; + + // ПланыВидовРасчета + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("fca3e7e1-1bf1-49c8-9921-aafb4e787c75"); + Строка.Имя = "ПланыВидовРасчета"; + Строка.Синоним = НСтр("ru = 'Планы видов расчета'"); + Строка.ИмяВЕдЧисле = "ПланВидовРасчета"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'План видов расчета'"); + Строка.ОбъектыРасширений = Истина; + + // РегистрыСведений + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("d7ecc1e9-c068-44dd-83c2-1323ec52dbbb"); + Строка.Имя = "РегистрыСведений"; + Строка.Синоним = НСтр("ru = 'Регистры сведений'"); + Строка.ИмяВЕдЧисле = "РегистрСведений"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Регистр сведений'"); + Строка.ОбъектыРасширений = Истина; + + // РегистрыНакопления + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("74083488-b01e-4441-84a6-c386ce88cdb5"); + Строка.Имя = "РегистрыНакопления"; + Строка.Синоним = НСтр("ru = 'Регистры накопления'"); + Строка.ИмяВЕдЧисле = "РегистрНакопления"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Регистр накопления'"); + Строка.ОбъектыРасширений = Истина; + + // РегистрыБухгалтерии + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("9a0d75ff-0eda-454e-b2b7-d2412ffdff18"); + Строка.Имя = "РегистрыБухгалтерии"; + Строка.Синоним = НСтр("ru = 'Регистры бухгалтерии'"); + Строка.ИмяВЕдЧисле = "РегистрБухгалтерии"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Регистр бухгалтерии'"); + Строка.ОбъектыРасширений = Истина; + + // РегистрыРасчета + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("f330686a-0acf-4e26-9cda-108f1404687d"); + Строка.Имя = "РегистрыРасчета"; + Строка.Синоним = НСтр("ru = 'Регистры расчета'"); + Строка.ИмяВЕдЧисле = "РегистрРасчета"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Регистр расчета'"); + Строка.ОбъектыРасширений = Истина; + + // БизнесПроцессы + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("a8cdd0e0-c27f-4bf0-9718-10ec054dc468"); + Строка.Имя = "БизнесПроцессы"; + Строка.Синоним = НСтр("ru = 'Бизнес-процессы'"); + Строка.ИмяВЕдЧисле = "БизнесПроцесс"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Бизнес-процесс'"); + + // Задачи + Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить(); + Строка.Идентификатор = Новый УникальныйИдентификатор("8d9153ad-7cea-4e25-9542-a557ee59fd16"); + Строка.Имя = "Задачи"; + Строка.Синоним = НСтр("ru = 'Задачи'"); + Строка.ИмяВЕдЧисле = "Задача"; + Строка.СинонимВЕдЧисле = НСтр("ru = 'Задача'"); + + Для каждого Строка Из СвойстваКоллекцийОбъектовМетаданных Цикл + Строка.ПорядокКоллекции = СвойстваКоллекцийОбъектовМетаданных.Индекс(Строка); + КонецЦикла; + + Если ОбъектыРасширений Тогда + СвойстваКоллекцийОбъектовМетаданных = СвойстваКоллекцийОбъектовМетаданных.Скопировать( + Новый Структура("ОбъектыРасширений", Истина)); + КонецЕсли; + + СвойстваКоллекцийОбъектовМетаданных.Индексы.Добавить("Идентификатор"); + + Возврат СвойстваКоллекцийОбъектовМетаданных; + +КонецФункции + +// Предотвращает недопустимое изменение идентификаторов объектов метаданных. +// Выполняет обработку дублей подчиненного узла распределенной информационной базы. +// +Процедура ПередЗаписьюОбъекта(Объект) Экспорт + + ОбъектыРасширений = ЭтоОбъектРасширений(Объект); + СтандартныеПодсистемыПовтИсп.ИдентификаторыОбъектовМетаданныхПроверкаИспользования(, ОбъектыРасширений); + + // Отключение механизма регистрации объектов. + Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + + // Регистрация объекта на всех узлах РИБ. + Для Каждого ПланОбмена Из СтандартныеПодсистемыПовтИсп.ПланыОбменаРИБ() Цикл + СтандартныеПодсистемыСервер.ЗарегистрироватьОбъектНаВсехУзлах(Объект, ПланОбмена, Ложь); + КонецЦикла; + + Если Объект.ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ПроверитьОбъектПередЗаписью(Объект); + +КонецПроцедуры + +// Предотвращает удаление идентификаторов объектов метаданных не помеченных на удаление. +Процедура ПередУдалениемОбъекта(Объект) Экспорт + + ОбъектыРасширений = ЭтоОбъектРасширений(Объект); + СтандартныеПодсистемыПовтИсп.ИдентификаторыОбъектовМетаданныхПроверкаИспользования(, ОбъектыРасширений); + + // Отключение механизма регистрации объектов. + // Ссылки идентификаторов удаляются независимо во всех узлах + // через механизм пометки удаления и удаления помеченных объектов. + Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + + Если Объект.ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не Объект.ПометкаУдаления Тогда + ВызватьИсключениеПоОшибке(ОбъектыРасширений, + НСтр("ru = 'Удаление идентификаторов объектов, у которых значение + |реквизита ""Пометка удаления"" установлено Ложь недопустимо.'")); + КонецЕсли; + +КонецПроцедуры + +// Только для внутреннего использования. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения: +// * Список - ДинамическийСписок +// +Процедура ФормаСпискаПриСозданииНаСервере(Форма) Экспорт + + Параметры = Форма.Параметры; + Элементы = Форма.Элементы; + + УпорядочитьИОформитьСписок(Форма); + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(Форма, "ВыборПодбор"); + Форма.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + Иначе + Элементы.Список.РежимВыбора = Ложь; + КонецЕсли; + + Параметры.Свойство("ВыбиратьГруппыОбъектовМетаданных", Форма.ВыбиратьГруппыОбъектовМетаданных); + +КонецПроцедуры + +// Только для внутреннего использования. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения: +// * Объект - ДанныеФормыСтруктура: +// ** Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// +Процедура ФормаЭлементаПриСозданииНаСервере(Форма) Экспорт + + ОбъектыРасширений = ЭтоОбъектРасширений(Форма.Объект.Ссылка); + + Элементы = Форма.Элементы; + + Форма.ТолькоПросмотр = Истина; + Форма.ПустаяСсылкаПредставление = Строка(ТипЗнч(Форма.Объект.ЗначениеПустойСсылки)); + + Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Не ОбъектыРасширений) + ИЛИ ЗапрещеноИзменятьПолноеИмя(Форма.Объект) + ИЛИ Не ОбъектыРасширений И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() + ИЛИ ОбъектыРасширений И Справочники.ИдентификаторыОбъектовРасширений.ОбъектРасширенияОтключен(Форма.Объект.Ссылка) Тогда + + Элементы.ФормаВключитьВозможностьРедактирования.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры и функции. + +// Для процедуры ЗагрузитьДанныеВПодчиненныйУзел. +// +// Параметры: +// Выгрузка - см. ВыгрузкаВсехИдентификаторов +// +Процедура ОпределитьДублиПриЗагрузкеВПодчиненныйУзел(Выгрузка, Отбор, ЗагружаемыйОбъект, СсылкаЗагружаемого, ТаблицаЗагружаемых) + + Строки = Выгрузка.НайтиСтроки(Отбор); + Для Каждого Строка Из Строки Цикл + + Если Строка.Ссылка <> СсылкаЗагружаемого + И ТаблицаЗагружаемых.Найти(Строка.Ссылка, "Ссылка") = Неопределено Тогда + + ОбновитьСвойстваПомеченногоНаУдаление(Строка,,, Истина); + Строка.НоваяСсылка = СсылкаЗагружаемого; + Строка.ДубльОбновлен = Истина; + ЗагружаемыйОбъект.ДополнительныеСвойства.Вставить("ЭтоЗаменаДубля"); + // Замена новых ссылок на дубль на новую ссылку заданную для дубля (если есть). + СтарыеДубли = Выгрузка.НайтиСтроки(Новый Структура("НоваяСсылка", Строка.Ссылка)); + Для Каждого СтарыйДубль Из СтарыеДубли Цикл + ОбновитьСвойстваПомеченногоНаУдаление(СтарыйДубль,,, Истина); + СтарыйДубль.НоваяСсылка = СсылкаЗагружаемого; + СтарыйДубль.ДубльОбновлен = Истина; + КонецЦикла; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Процедура ОбновитьДанные(ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка, + ЕстьКритичныеИзменения, СписокКритичныхИзменений, ОбъектыРасширений) + + СвойстваРасширений = Новый Структура; + СвойстваРасширений.Вставить("ИменаПодключенныхРасширений", + ИменаРасширений(ИсточникРасширенийКонфигурации.СеансАктивные)); + СвойстваРасширений.Вставить("ИменаНеподключенныхРасширений", + ИменаРасширений(ИсточникРасширенийКонфигурации.СеансОтключенные)); + + СвойстваОбъектовМетаданных = СвойстваОбъектовМетаданных(ОбъектыРасширений); + + // Найден - состояние, когда для объекта метаданных найден идентификатор. + СвойстваОбъектовМетаданных.Колонки.Добавить("Найден", Новый ОписаниеТипов("Булево")); + + // Порядок обновления: + // 1. Переименование объектов метаданных (с учетом нижестоящих подсистем). + // 2. Обновление предопределенных идентификаторов (коллекций объектов метаданных). + // 3. Обновление идентификаторов объектов метаданных, которые имеют ключ объекта метаданных. + // 4. Обновление идентификаторов объектов метаданных, которые не имеют ключа объекта метаданных. + // 5. В процессе 3 и 4 пометка удаления дублей идентификаторов (по полным именам). + // 6. Добавление новых идентификаторов объектов метаданных. + // 7. Обновление родителей идентификаторов объектов метаданных и запись обновленных. + + ВерсияРасширений = ПараметрыСеанса.ВерсияРасширений; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(ИмяСправочника(ОбъектыРасширений)); + Если ОбъектыРасширений Тогда + ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ИдентификаторыОбъектовВерсийРасширений"); + ЭлементБлокировки.УстановитьЗначение("ВерсияРасширений", ВерсияРасширений); + КонецЕсли; + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + Выгрузка = ВыгрузкаВсехИдентификаторов(ОбъектыРасширений); + Выгрузка.Колонки.Добавить("Обновлен", Новый ОписаниеТипов("Булево")); + Выгрузка.Колонки.Добавить("ОбъектМетаданных"); + Выгрузка.Колонки.Удалить("НоваяСсылка"); + + СписокПереименованийОбъектовМетаданных = ""; + Если НЕ ОбъектыРасширений + И НЕ ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + // Переименование полных имен перед обработкой (для РИБ только в главном узле). + // Для расширений не поддерживается. + ПереименоватьПолныеИмена(Выгрузка, СписокПереименованийОбъектовМетаданных, ЕстьКритичныеИзменения); + КонецЕсли; + + ОбработатьИдентификаторыОбъектовМетаданных(Выгрузка, СвойстваОбъектовМетаданных, ОбъектыРасширений, + СвойстваРасширений, ЕстьУдаленные, ЕстьКритичныеИзменения, СписокПереименованийОбъектовМетаданных); + + СписокНовыхОбъектовМетаданных = ""; + ДобавитьИдентификаторыНовыхОбъектовМетаданных(Выгрузка, СвойстваОбъектовМетаданных, ОбъектыРасширений, + ЕстьКритичныеИзменения, СписокНовыхОбъектовМетаданных); + + СписокКритичныхИзменений = ""; + Если ЗначениеЗаполнено(СписокПереименованийОбъектовМетаданных) Тогда + СписокКритичныхИзменений = НСтр("ru = 'Переименование идентификаторов объектов метаданных СтароеПолноеИмя -> НовоеПолноеИмя:'") + + Символы.ПС + СписокПереименованийОбъектовМетаданных + Символы.ПС + Символы.ПС; + КонецЕсли; + Если ЗначениеЗаполнено(СписокНовыхОбъектовМетаданных) Тогда + СписокКритичныхИзменений = СписокКритичныхИзменений + + НСтр("ru = 'Добавление новых идентификаторов объектов метаданных:'") + + Символы.ПС + СписокНовыхОбъектовМетаданных + Символы.ПС; + КонецЕсли; + + Если Не ТолькоПроверка + И Не ОбъектыРасширений + И ЗначениеЗаполнено(СписокКритичныхИзменений) + И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + + ИмяСобытия = НСтр("ru = 'Идентификаторы объектов метаданных.Требуется загрузить критичные изменения'", + ОбщегоНазначения.КодОсновногоЯзыка()); + + ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , СписокКритичныхИзменений); + + ВызватьИсключениеПоОшибке(ОбъектыРасширений, + НСтр("ru = 'Критичные изменения могут быть выполнены только + |в главном узле распределенной информационной базы. + |Состав требуемых изменений см. в журнале регистрации.'")); + КонецЕсли; + + ОбновитьИдентификаторыОбъектовМетаданных(Выгрузка, СвойстваОбъектовМетаданных, ОбъектыРасширений, + СвойстваРасширений, ВерсияРасширений, ЕстьИзменения, ТолькоПроверка); + + Если Не ТолькоПроверка Тогда + Если ЗначениеЗаполнено(СписокКритичныхИзменений) Тогда + ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(?(ОбъектыРасширений, + НСтр("ru = 'Идентификаторы объектов расширений.Выполнены критичные изменения'", + ОбщегоНазначения.КодОсновногоЯзыка()), + НСтр("ru = 'Идентификаторы объектов метаданных.Выполнены критичные изменения'", + ОбщегоНазначения.КодОсновногоЯзыка())), + УровеньЖурналаРегистрации.Информация,,, + СписокКритичныхИзменений); + КонецЕсли; + + Если Не ОбъектыРасширений + И Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + + ПодготовитьСписокНовыхПодсистемВГлавномУзле(Выгрузка); + КонецЕсли; + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Возвращаемое значение: +// ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ИмяПредопределенныхДанных - Строка +// * Родитель - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ПометкаУдаления - Булево +// * Наименование - Строка +// * ПорядокКоллекции - Число +// * Имя - Строка +// * Синоним - Строка +// * ПолноеИмя - Строка +// * ПолныйСиноним - Строка +// * БезДанных - Булево +// * ЗначениеПустойСсылки - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ХранилищеКлюча - ХранилищеЗначения +// * НоваяСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ИмяРасширения - Строка +// * ХешСуммаРасширения - Строка +// * КлючОбъектаМетаданных - ХранилищеЗначения +// * БезКлючаОбъектаМетаданных - Булево +// * ЭтоКоллекция - Булево +// * ЭтоНовый - Булево +// +Функция ВыгрузкаВсехИдентификаторов(ОбъектыРасширений = Ложь) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Идентификаторы.Ссылка КАК Ссылка, + | Идентификаторы.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + | Идентификаторы.Родитель КАК Родитель, + | Идентификаторы.ПометкаУдаления КАК ПометкаУдаления, + | Идентификаторы.Наименование КАК Наименование, + | Идентификаторы.ПорядокКоллекции, + | Идентификаторы.Имя, + | Идентификаторы.Синоним, + | Идентификаторы.ПолноеИмя, + | Идентификаторы.ПолныйСиноним, + | Идентификаторы.БезДанных, + | Идентификаторы.ЗначениеПустойСсылки, + | Идентификаторы.КлючОбъектаМетаданных КАК ХранилищеКлюча, + | Идентификаторы.НоваяСсылка, + | &ИмяРасширения КАК ИмяРасширения, + | &ХешСуммаРасширения КАК ХешСуммаРасширения + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы"; + УточнитьИмяСправочникаВТекстеЗапроса(Запрос.Текст, ОбъектыРасширений); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяРасширения", + ?(ОбъектыРасширений, "Идентификаторы.ИмяРасширения", """""")); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ХешСуммаРасширения", + ?(ОбъектыРасширений, "Идентификаторы.ХешСуммаРасширения", """""")); + + Выгрузка = Запрос.Выполнить().Выгрузить(); + Выгрузка.Колонки.Добавить("КлючОбъектаМетаданных"); + Выгрузка.Колонки.Добавить("БезКлючаОбъектаМетаданных", Новый ОписаниеТипов("Булево")); + Выгрузка.Колонки.Добавить("ЭтоКоллекция", Новый ОписаниеТипов("Булево")); + Выгрузка.Колонки.Добавить("ЭтоНовый", Новый ОписаниеТипов("Булево")); + + // Упорядочение идентификаторов перед обработкой. + Для каждого Строка Из Выгрузка Цикл + Если ТипЗнч(Строка.ХранилищеКлюча) = Тип("ХранилищеЗначения") Тогда + Строка.КлючОбъектаМетаданных = Строка.ХранилищеКлюча.Получить(); + Иначе + Строка.КлючОбъектаМетаданных = Неопределено; + КонецЕсли; + + Строка.БезКлючаОбъектаМетаданных = Строка.КлючОбъектаМетаданных = Неопределено + ИЛИ Строка.КлючОбъектаМетаданных = Тип("Неопределено"); + КонецЦикла; + + Выгрузка.Индексы.Добавить("Ссылка"); + Выгрузка.Индексы.Добавить("ПолноеИмя"); + + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений); + + Для каждого СвойстваКоллекции Из СвойстваКоллекций Цикл + ИдентификаторКоллекции = ИдентификаторКоллекции(СвойстваКоллекции.Идентификатор, ОбъектыРасширений); + Строка = Выгрузка.Найти(ИдентификаторКоллекции, "Ссылка"); + Если Строка = Неопределено Тогда + Строка = Выгрузка.Добавить(); + Строка.Ссылка = ИдентификаторКоллекции; + Строка.ЭтоНовый = Истина; + КонецЕсли; + Строка.ЭтоКоллекция = Истина; + КонецЦикла; + + Выгрузка.Сортировать("ЭтоКоллекция УБЫВ, + |ПометкаУдаления ВОЗР, + |БезКлючаОбъектаМетаданных ВОЗР"); + + Возврат Выгрузка; + +КонецФункции + +Процедура ПереименоватьПолныеИмена(Выгрузка, СписокПереименованийОбъектовМетаданных = "", ЕстьКритичныеИзменения = Ложь) + + ТаблицаПереименования = СтандартныеПодсистемыПовтИсп.ТаблицаПереименованияДляТекущейВерсии(); + Переименованные = Новый Соответствие; + + Для Каждого ОписаниеПереименования Из ТаблицаПереименования Цикл + ДлинаСтарогоПолногоИмени = СтрДлина(ОписаниеПереименования.СтароеПолноеИмя); + ЭтоПодсистема = ВРег(Лев(ОписаниеПереименования.СтароеПолноеИмя, 11)) = ВРег("Подсистема."); + + Для Каждого Строка Из Выгрузка Цикл + Если Строка.ЭтоКоллекция Тогда + Продолжить; + КонецЕсли; + + НовоеПолноеИмя = ""; + + Если ЭтоПодсистема Тогда + Если ВРег(Лев(Строка.ПолноеИмя, ДлинаСтарогоПолногоИмени)) + = ВРег(ОписаниеПереименования.СтароеПолноеИмя) Тогда + + НовоеПолноеИмя = ОписаниеПереименования.НовоеПолноеИмя + + Сред(Строка.ПолноеИмя, ДлинаСтарогоПолногоИмени + 1); + КонецЕсли; + Иначе + Если ВРег(Строка.ПолноеИмя) = ВРег(ОписаниеПереименования.СтароеПолноеИмя) Тогда + НовоеПолноеИмя = ОписаниеПереименования.НовоеПолноеИмя; + КонецЕсли; + КонецЕсли; + + Если Не ЗначениеЗаполнено(НовоеПолноеИмя) Тогда + Продолжить; + КонецЕсли; + + Переименование = Переименованные.Получить(Строка); + Если Переименование = Неопределено Тогда + Переименование = Новый Структура; + Переименование.Вставить("СтароеПолноеИмя", Строка.ПолноеИмя); + Переименование.Вставить("НовоеПолноеИмя", НовоеПолноеИмя); + Переименованные.Вставить(Строка, Переименование); + Иначе + Переименование.НовоеПолноеИмя = НовоеПолноеИмя; + КонецЕсли; + Строка.ПолноеИмя = НовоеПолноеИмя; + КонецЦикла; + КонецЦикла; + + Для Каждого Строка Из Выгрузка Цикл + Переименование = Переименованные.Получить(Строка); + Если Переименование = Неопределено Тогда + Продолжить; + КонецЕсли; + + ЕстьКритичныеИзменения = Истина; + СписокПереименованийОбъектовМетаданных = СписокПереименованийОбъектовМетаданных + + ?(ЗначениеЗаполнено(СписокПереименованийОбъектовМетаданных), "," + Символы.ПС, "") + + Переименование.СтароеПолноеИмя + " -> " + Переименование.НовоеПолноеИмя; + КонецЦикла; + +КонецПроцедуры + +Процедура ОбработатьИдентификаторыОбъектовМетаданных(Выгрузка, СвойстваОбъектовМетаданных, ОбъектыРасширений, + СвойстваРасширений, ЕстьУдаленные, ЕстьКритичныеИзменения, СписокПереименованийОбъектовМетаданных) + + // Обработка идентификаторов объектов метаданных. + Для Каждого Свойства Из Выгрузка Цикл + + // Проверка и обновление свойств идентификаторов коллекций объектов метаданных. + Если Свойства.ЭтоКоллекция Тогда + ПроверитьОбновитьСвойстваКоллекции(Свойства, ОбъектыРасширений); + Продолжить; + КонецЕсли; + + Если ОбъектыРасширений + И СвойстваРасширений.ИменаНеподключенныхРасширений[Свойства.ИмяРасширения] <> Неопределено Тогда + // Для случаев, когда расширение было временно отключено, а затем подключено обратно, + // предотвращаем удаление помеченных элементов и связанных с ними данных. + Продолжить; + КонецЕсли; + + Если ОбъектыРасширений + И СвойстваРасширений.ИменаПодключенныхРасширений[Свойства.ИмяРасширения] = Неопределено Тогда + + СвойстваОбновлены = Ложь; + ОбновитьСвойстваПомеченногоНаУдаление(Свойства, СвойстваОбновлены, ЕстьУдаленные); + Если СвойстваОбновлены Тогда + Свойства.Обновлен = Истина; + КонецЕсли; + КонецЕсли; + + КлючОбъектаМетаданных = Свойства.КлючОбъектаМетаданных; + ОбъектМетаданных = ОбъектМетаданныхПоКлючу(КлючОбъектаМетаданных); + + Если ОбъектМетаданных = Неопределено Тогда + // Если объект метаданных без ключа, то его можно найти только по полному имени. + ОбъектМетаданных = МетаданныеНайтиПоПолномуИмени(Свойства.ПолноеИмя); + Если ОбъектМетаданных = Неопределено И ОбъектыРасширений Тогда + ОбъектМетаданных = МетаданныеРасширенияНайтиПоПолномуИмени(Свойства); + КонецЕсли; + Иначе + // Если объект метаданных удалялся с целью реструктуризации, тогда + // старый идентификатор нужно использовать для нового объекта метаданных, + // а для старых объектов метаданных создать новые идентификаторы. + Если ВРег(Лев(ОбъектМетаданных.Имя, СтрДлина("Удалить"))) = ВРег("Удалить") + И ВРег(Лев(Свойства.Имя, СтрДлина("Удалить"))) <> ВРег("Удалить") Тогда + + НовыйОбъектМетаданных = МетаданныеНайтиПоПолномуИмени(Свойства.ПолноеИмя); + Если НовыйОбъектМетаданных <> Неопределено Тогда + ОбъектМетаданных = НовыйОбъектМетаданных; + КлючОбъектаМетаданных = Неопределено; // Чтобы выполнить обновление идентификатора. + КонецЕсли; + КонецЕсли; + КонецЕсли; + + // Если объект метаданных найден по ключу или полному имени, + // тогда нужно подготовить строку свойств объекта метаданных. + Если ОбъектМетаданных <> Неопределено Тогда + СвойстваОбъекта = СвойстваОбъектовМетаданных.Найти(ОбъектМетаданных.ПолноеИмя(), "ПолноеИмя"); + Если СвойстваОбъекта = Неопределено Тогда + ОбъектМетаданных = Неопределено; + Иначе + Свойства.ОбъектМетаданных = ОбъектМетаданных; + КонецЕсли; + КонецЕсли; + + Если ОбъектМетаданных = Неопределено ИЛИ СвойстваОбъекта.Найден Тогда + // Если объект метаданных не найден или найден повторно + // тогда идентификатор требуется пометить на удаление. + ЭтоДубль = ОбъектМетаданных <> Неопределено И СвойстваОбъекта.Найден; + СвойстваОбновлены = Ложь; + ОбновитьСвойстваПомеченногоНаУдаление(Свойства, СвойстваОбновлены, ЕстьУдаленные, ЭтоДубль); + Если СвойстваОбновлены Тогда + Свойства.Обновлен = Истина; + КонецЕсли; + Иначе + // Обновление свойств существующих объектов метаданных, если изменились. + СвойстваОбъекта.Найден = Истина; + Если Свойства.Наименование <> СвойстваОбъекта.Наименование + ИЛИ Свойства.ПорядокКоллекции <> СвойстваОбъекта.ПорядокКоллекции + ИЛИ Свойства.Имя <> СвойстваОбъекта.Имя + ИЛИ Свойства.Синоним <> СвойстваОбъекта.Синоним + ИЛИ Свойства.ПолноеИмя <> СвойстваОбъекта.ПолноеИмя + ИЛИ Свойства.ПолныйСиноним <> СвойстваОбъекта.ПолныйСиноним + ИЛИ Свойства.БезДанных <> СвойстваОбъекта.БезДанных + ИЛИ Свойства.ЗначениеПустойСсылки <> СвойстваОбъекта.ЗначениеПустойСсылки + ИЛИ Свойства.ИмяРасширения <> СвойстваОбъекта.ИмяРасширения + ИЛИ Свойства.ХешСуммаРасширения <> СвойстваОбъекта.ХешСуммаРасширения + ИЛИ Свойства.ИмяПредопределенныхДанных <> СвойстваОбъекта.ИмяПредопределенныхДанных + ИЛИ Свойства.ПометкаУдаления + ИЛИ КлючОбъектаМетаданных = Неопределено + ИЛИ СвойстваОбъекта.БезКлючаОбъектаМетаданных + <> (КлючОбъектаМетаданных = Тип("Неопределено")) Тогда + + Если ВРег(Свойства.ПолноеИмя) <> ВРег(СвойстваОбъекта.ПолноеИмя) Тогда + ЕстьКритичныеИзменения = Истина; + СписокПереименованийОбъектовМетаданных = СписокПереименованийОбъектовМетаданных + + ?(ЗначениеЗаполнено(СписокПереименованийОбъектовМетаданных), "," + Символы.ПС, "") + + Свойства.ПолноеИмя + " -> " + СвойстваОбъекта.ПолноеИмя; + КонецЕсли; + + // Установка новых свойств идентификатора объекта метаданных. + ЗаполнитьЗначенияСвойств(Свойства, СвойстваОбъекта); + + Свойства.ИмяПредопределенныхДанных = СвойстваОбъекта.ИмяПредопределенныхДанных; + + Если КлючОбъектаМетаданных = Неопределено + ИЛИ СвойстваОбъекта.БезКлючаОбъектаМетаданных + <> (КлючОбъектаМетаданных = Тип("Неопределено")) Тогда + + Свойства.КлючОбъектаМетаданных = КлючОбъектаМетаданных(СвойстваОбъекта.ПолноеИмя); + КонецЕсли; + + Свойства.ПометкаУдаления = Ложь; + Свойства.Обновлен = Истина; + КонецЕсли; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Функция МетаданныеРасширенияНайтиПоПолномуИмени(Свойства) + + Если Свойства.ИмяРасширения = "" + Или Не СтрНачинаетсяС(Свойства.ПолноеИмя, "?") Тогда + Возврат Неопределено; + КонецЕсли; + + // Восстановление связи с идентификатором объекта метаданных расширения, + // которое было временно удалено и восстанавливается. + ПозицияСкобки = СтрНайти(Свойства.ПолноеИмя, "("); + ИсходноеПолноеИмя = Сред(Свойства.ПолноеИмя, 3, ПозицияСкобки - 4); + ОбъектМетаданных = МетаданныеНайтиПоПолномуИмени(ИсходноеПолноеИмя); + + Если ОбъектМетаданных = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + РасширениеОбъекта = ОбъектМетаданных.РасширениеКонфигурации(); + + Если РасширениеОбъекта = Неопределено + Или РасширениеОбъекта.Имя <> Сред(Свойства.ИмяРасширения, 3) + Или Base64Строка(РасширениеОбъекта.ХешСумма) <> Сред(Свойства.ХешСуммаРасширения, 3) Тогда + + Возврат Неопределено; + КонецЕсли; + + Возврат ОбъектМетаданных; + +КонецФункции + +Процедура ДобавитьИдентификаторыНовыхОбъектовМетаданных(Выгрузка, СвойстваОбъектовМетаданных, ОбъектыРасширений, + ЕстьКритичныеИзменения, СписокНовыхОбъектовМетаданных) + + СвойстваОбъектов = СвойстваОбъектовМетаданных.НайтиСтроки(Новый Структура("Найден", Ложь)); + + Для Каждого СвойстваОбъекта Из СвойстваОбъектов Цикл + Свойства = Выгрузка.Добавить(); + ЗаполнитьЗначенияСвойств(Свойства, СвойстваОбъекта); + Свойства.ЭтоНовый = Истина; + Свойства.Ссылка = НоваяСсылкаСправочника(ОбъектыРасширений); + Свойства.ПометкаУдаления = Ложь; + Свойства.ОбъектМетаданных = СвойстваОбъекта.ОбъектМетаданных; + Свойства.КлючОбъектаМетаданных = КлючОбъектаМетаданных(Свойства.ПолноеИмя); + ЕстьКритичныеИзменения = Истина; + СписокНовыхОбъектовМетаданных = СписокНовыхОбъектовМетаданных + + ?(ЗначениеЗаполнено(СписокНовыхОбъектовМетаданных), "," + Символы.ПС, "") + + СвойстваОбъекта.ПолноеИмя; + КонецЦикла; + +КонецПроцедуры + +Процедура ОбновитьИдентификаторыОбъектовМетаданных(Выгрузка, СвойстваОбъектовМетаданных, ОбъектыРасширений, + СвойстваРасширений, ВерсияРасширений, ЕстьИзменения, ТолькоПроверка) + + // АПК:1327-выкл - №783.1.4.1 Управляемая блокировка устанавливается в вызывающем коде. + Если ОбъектыРасширений Тогда + НаборЗаписей = РегистрыСведений.ИдентификаторыОбъектовВерсийРасширений.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ВерсияРасширений.Установить(ВерсияРасширений); + НаборЗаписей.Прочитать(); + ТаблицаЗаписей = НаборЗаписей.Выгрузить(); + ТаблицаЗаписей.Колонки.Добавить("Удалить", Новый ОписаниеТипов("Булево")); + ТаблицаЗаписей.ЗаполнитьЗначения(Истина, "Удалить"); + ТаблицаЗаписей.Индексы.Добавить("Идентификатор, ПолноеИмяОбъекта, ВерсияРасширений"); + ОбновитьНаборЗаписей = Ложь; + КонецЕсли; + + Для Каждого Свойства Из Выгрузка Цикл + + // Обновление родителей идентификаторов объектов метаданных. + Если Не Свойства.ЭтоКоллекция Тогда + СвойстваОбъекта = СвойстваОбъектовМетаданных.Найти(Свойства.ПолноеИмя, "ПолноеИмя"); + НовыйРодитель = ПустаяСсылкаСправочника(ОбъектыРасширений); + + Если СвойстваОбъекта <> Неопределено Тогда + Если Не ЗначениеЗаполнено(СвойстваОбъекта.ПолноеИмяРодителя) Тогда + // Коллекция объектов метаданных. + НовыйРодитель = СвойстваОбъекта.Родитель; + Иначе + // Не коллекция объектов метаданных, например, подсистема. + ОписаниеРодителя = Выгрузка.Найти(СвойстваОбъекта.ПолноеИмяРодителя, "ПолноеИмя"); + Если ОписаниеРодителя <> Неопределено Тогда + НовыйРодитель = ОписаниеРодителя.Ссылка; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если Свойства.Родитель <> НовыйРодитель Тогда + Свойства.Родитель = НовыйРодитель; + Свойства.Обновлен = Истина; + КонецЕсли; + + Если ОбъектыРасширений + И Свойства.ПометкаУдаления = Ложь + И СвойстваРасширений.ИменаНеподключенныхРасширений[Свойства.ИмяРасширения] = Неопределено Тогда + + Отбор = Новый Структура; + Отбор.Вставить("ВерсияРасширений", ВерсияРасширений); + Отбор.Вставить("Идентификатор", Свойства.Ссылка); + Отбор.Вставить("ПолноеИмяОбъекта", Свойства.ПолноеИмя); + Строки = ТаблицаЗаписей.НайтиСтроки(Отбор); + Если Строки.Количество() = 0 Тогда + ОбновитьНаборЗаписей = Истина; + ЗаполнитьЗначенияСвойств(ТаблицаЗаписей.Добавить(), Отбор); + Иначе + Строки[0].Удалить = Ложь; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + // Обновление идентификаторов объектов метаданных. + Если Свойства.ЭтоНовый Тогда + ТаблицаОбъект = СоздатьЭлементСправочника(ОбъектыРасширений); + ТаблицаОбъект.УстановитьСсылкуНового(Свойства.Ссылка); + + ИначеЕсли Свойства.Обновлен Тогда + ТаблицаОбъект = Свойства.Ссылка.ПолучитьОбъект(); + Иначе + Продолжить; + КонецЕсли; + + ЕстьИзменения = Истина; + Если ТолькоПроверка Тогда + Возврат; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ТаблицаОбъект, Свойства); + ТаблицаОбъект.КлючОбъектаМетаданных = Новый ХранилищеЗначения(Свойства.КлючОбъектаМетаданных); + ТаблицаОбъект.ОбменДанными.Загрузка = Истина; + ПроверитьОбъектПередЗаписью(ТаблицаОбъект, Истина); + ТаблицаОбъект.Записать(); + КонецЦикла; + + Если ОбъектыРасширений Тогда + ТаблицаЗаписей.Индексы.Добавить("Удалить"); + Строки = ТаблицаЗаписей.НайтиСтроки(Новый Структура("Удалить", Истина)); + Если Строки.Количество() > 0 Тогда + ОбновитьНаборЗаписей = Истина; + Для Каждого Строка Из Строки Цикл + ТаблицаЗаписей.Удалить(Строка); + КонецЦикла; + КонецЕсли; + Если ТаблицаЗаписей.Количество() = 0 + И ЗначениеЗаполнено(ВерсияРасширений) Тогда + // Добавление записи, если в расширении нет объектов метаданных, + // чтобы при проверке наличия кэша, получить значение Истина. + ТаблицаЗаписей.Добавить().ВерсияРасширений = ВерсияРасширений; + ОбновитьНаборЗаписей = Истина; + КонецЕсли; + Если ОбновитьНаборЗаписей Тогда + ЕстьИзменения = Истина; + Если ТолькоПроверка Тогда + Возврат; + КонецЕсли; + НаборЗаписей.Загрузить(ТаблицаЗаписей); + НаборЗаписей.Записать(); + КонецЕсли; + КонецЕсли; + // АПК:1327-вкл. + +КонецПроцедуры + +Процедура ОбновитьСвойстваПомеченногоНаУдаление(Свойства, СвойстваОбновлены = Ложь, ЕстьУдаленные = Ложь, ЭтоДубль = Ложь) + + ОбъектыРасширений = ЭтоОбъектРасширений(Свойства.Ссылка); + + Если НЕ Свойства.ПометкаУдаления + ИЛИ ЗначениеЗаполнено(Свойства.Родитель) + ИЛИ Лев(Свойства.Наименование, 1) <> "?" + ИЛИ Лев(Свойства.Имя, 1) <> "?" + ИЛИ Лев(Свойства.Синоним, 1) <> "?" + ИЛИ Лев(Свойства.ПолноеИмя, 1) <> "?" + ИЛИ Лев(Свойства.ПолныйСиноним, 1) <> "?" + ИЛИ ОбъектыРасширений И Лев(Свойства.ИмяРасширения, 1) <> "?" + ИЛИ ОбъектыРасширений И Лев(Свойства.ХешСуммаРасширения, 1) <> "?" + ИЛИ СтрНайти(Свойства.ПолноеИмя, "(") = 0 + ИЛИ Свойства.ЗначениеПустойСсылки <> Неопределено + ИЛИ Свойства.ИмяПредопределенныхДанных <> "" + ИЛИ ЭтоДубль Тогда + + Если НЕ Свойства.ПометкаУдаления Или Лев(Свойства.ПолноеИмя, 1) <> "?" Тогда + ЕстьУдаленные = Истина; + КонецЕсли; + + // Установка новых свойств идентификатора объекта метаданных. + Свойства.ПометкаУдаления = Истина; + Свойства.Родитель = ПустаяСсылкаСправочника(ЭтоОбъектРасширений(Свойства.Ссылка)); + Свойства.Наименование = ВставитьЗнакВопроса(Свойства.Наименование); + Свойства.Имя = ВставитьЗнакВопроса(Свойства.Имя); + Свойства.Синоним = ВставитьЗнакВопроса(Свойства.Синоним); + Свойства.ПолноеИмя = УникальноеПолноеИмя(Свойства); + Свойства.ПолныйСиноним = ВставитьЗнакВопроса(Свойства.ПолныйСиноним); + Свойства.ЗначениеПустойСсылки = Неопределено; + Свойства.ИмяПредопределенныхДанных = ""; + + Если ОбъектыРасширений Тогда + Свойства.ИмяРасширения = ВставитьЗнакВопроса(Свойства.ИмяРасширения); + Свойства.ХешСуммаРасширения = ВставитьЗнакВопроса(Свойства.ХешСуммаРасширения); + КонецЕсли; + + Если ЭтоДубль Тогда + Если ТипЗнч(Свойства.КлючОбъектаМетаданных) = Тип("ХранилищеЗначения") Тогда + Свойства.КлючОбъектаМетаданных = Новый ХранилищеЗначения(Неопределено); + Иначе + Свойства.КлючОбъектаМетаданных = Неопределено; + КонецЕсли; + КонецЕсли; + СвойстваОбновлены = Истина; + КонецЕсли; + +КонецПроцедуры + +Процедура ПроверитьОбновитьСвойстваКоллекции(Знач ТекущиеСвойства, ОбъектыРасширений) + + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений); + НовыеСвойства = СвойстваКоллекций.Найти(ТекущиеСвойства.Ссылка.УникальныйИдентификатор(), "Идентификатор"); + + НаименованиеКоллекции = НовыеСвойства.Синоним; + + Если ТекущиеСвойства.Наименование <> НаименованиеКоллекции + ИЛИ ТекущиеСвойства.ПорядокКоллекции <> НовыеСвойства.ПорядокКоллекции + ИЛИ ТекущиеСвойства.Имя <> НовыеСвойства.Имя + ИЛИ ТекущиеСвойства.Синоним <> НовыеСвойства.Синоним + ИЛИ ТекущиеСвойства.ПолноеИмя <> НовыеСвойства.Имя + ИЛИ ТекущиеСвойства.ПолныйСиноним <> НовыеСвойства.Синоним + ИЛИ ТекущиеСвойства.БезДанных <> Ложь + ИЛИ ТекущиеСвойства.ЗначениеПустойСсылки <> Неопределено + ИЛИ ТекущиеСвойства.ИмяПредопределенныхДанных <> "" + ИЛИ ТекущиеСвойства.ПометкаУдаления <> Ложь + ИЛИ ТекущиеСвойства.КлючОбъектаМетаданных <> Неопределено Тогда + + // Установка новых свойств. + ТекущиеСвойства.Наименование = НаименованиеКоллекции; + ТекущиеСвойства.ПорядокКоллекции = НовыеСвойства.ПорядокКоллекции; + ТекущиеСвойства.Имя = НовыеСвойства.Имя; + ТекущиеСвойства.Синоним = НовыеСвойства.Синоним; + ТекущиеСвойства.ПолноеИмя = НовыеСвойства.Имя; + ТекущиеСвойства.ПолныйСиноним = НовыеСвойства.Синоним; + ТекущиеСвойства.БезДанных = Ложь; + ТекущиеСвойства.ЗначениеПустойСсылки = Неопределено; + ТекущиеСвойства.ИмяПредопределенныхДанных = ""; + ТекущиеСвойства.ПометкаУдаления = Ложь; + ТекущиеСвойства.КлючОбъектаМетаданных = Неопределено; + + ТекущиеСвойства.Обновлен = Истина; + КонецЕсли; + +КонецПроцедуры + +Функция КлючОбъектаМетаданных(ПолноеИмя) + + ПозицияТочки = СтрНайти(ПолноеИмя, "."); + + КлассОМ = Лев( ПолноеИмя, ПозицияТочки-1); + ИмяОМ = Сред(ПолноеИмя, ПозицияТочки+1); + + Если ВРег(КлассОМ) = ВРег("ПланОбмена") Тогда + Возврат Тип(КлассОМ + "Ссылка." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("Константа") Тогда + Возврат ТипЗнч(ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя)); + + ИначеЕсли ВРег(КлассОМ) = ВРег("Справочник") Тогда + Возврат Тип(КлассОМ + "Ссылка." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("Документ") Тогда + Возврат Тип(КлассОМ + "Ссылка." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("ЖурналДокументов") Тогда + Возврат ТипЗнч(ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя)); + + ИначеЕсли ВРег(КлассОМ) = ВРег("Отчет") Тогда + Возврат Тип(КлассОМ + "Объект." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("Обработка") Тогда + Возврат Тип(КлассОМ + "Объект." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("ПланВидовХарактеристик") Тогда + Возврат Тип(КлассОМ + "Ссылка." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("ПланСчетов") Тогда + Возврат Тип(КлассОМ + "Ссылка." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("ПланВидовРасчета") Тогда + Возврат Тип(КлассОМ + "Ссылка." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("РегистрСведений") Тогда + Возврат Тип(КлассОМ + "КлючЗаписи." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("РегистрНакопления") Тогда + Возврат Тип(КлассОМ + "КлючЗаписи." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("РегистрБухгалтерии") Тогда + Возврат Тип(КлассОМ + "КлючЗаписи." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("РегистрРасчета") Тогда + Возврат Тип(КлассОМ + "КлючЗаписи." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("БизнесПроцесс") Тогда + Возврат Тип(КлассОМ + "Ссылка." + ИмяОМ); + + ИначеЕсли ВРег(КлассОМ) = ВРег("Задача") Тогда + Возврат Тип(КлассОМ + "Ссылка." + ИмяОМ); + Иначе + // Без ключа объекта метаданных. + Возврат Тип("Неопределено"); + КонецЕсли; + +КонецФункции + +Функция КлючиОбъектовМетаданныхСовпадают(Свойства, Объект) + + Возврат Свойства.КлючОбъектаМетаданных = Объект.КлючОбъектаМетаданных.Получить(); + +КонецФункции + +// Возвращаемое значение: +// Структура: +// * НеСоответствует - Булево +// * КлючОбъектаМетаданных - Произвольный +// * ОбъектМетаданных - ОбъектМетаданных +// - Неопределено +// * ОбъектМетаданныхУдаленного - ОбъектМетаданных +// - Неопределено +// * ПредставлениеУдаленного - Строка +// +Функция КлючОбъектаМетаданныхСоответствуетПолномуИмени(СвойстваИдентификатора) + + РезультатПроверки = Новый Структура; + РезультатПроверки.Вставить("НеСоответствует", Истина); + РезультатПроверки.Вставить("КлючОбъектаМетаданных", Неопределено); + + КлючОбъектаМетаданных = СвойстваИдентификатора.КлючОбъектаМетаданных.Получить(); + ОбъектыРасширений = ЭтоОбъектРасширений(СвойстваИдентификатора.Ссылка); + + Если КлючОбъектаМетаданных <> Неопределено + И КлючОбъектаМетаданных <> Тип("Неопределено") Тогда + // Ключ задан, поиск объекта метаданных по ключу. + РезультатПроверки.Вставить("КлючОбъектаМетаданных", КлючОбъектаМетаданных); + ОбъектМетаданных = ОбъектМетаданныхПоКлючу(КлючОбъектаМетаданных); + Если ОбъектМетаданных <> Неопределено Тогда + РезультатПроверки.НеСоответствует = ОбъектМетаданных.ПолноеИмя() <> СвойстваИдентификатора.ПолноеИмя; + КонецЕсли; + Иначе + // Ключ не задан, поиск объекта метаданных по полному имени. + ОбъектМетаданных = МетаданныеНайтиПоПолномуИмени(СвойстваИдентификатора.ПолноеИмя); + Если ОбъектМетаданных = Неопределено Тогда + // Возможно задана коллекция + + Строка = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений).Найти( + СвойстваИдентификатора.Ссылка.УникальныйИдентификатор(), "Идентификатор"); + + Если Строка <> Неопределено Тогда + ОбъектМетаданных = Метаданные[Строка.Имя]; + РезультатПроверки.НеСоответствует = Строка.Имя <> СвойстваИдентификатора.ПолноеИмяКоллекции; + КонецЕсли; + Иначе + РезультатПроверки.НеСоответствует = Ложь; + КонецЕсли; + КонецЕсли; + + РезультатПроверки.Вставить("ОбъектМетаданных", ОбъектМетаданных); + РезультатПроверки.Вставить("ОбъектМетаданныхУдаленного", Неопределено); + РезультатПроверки.Вставить("ПредставлениеУдаленного", ""); + + Если ОбъектМетаданных = Неопределено + И СвойстваИдентификатора.ПометкаУдаления + И СтрНачинаетсяС(СвойстваИдентификатора.ПолноеИмяКоллекции, "? ") Тогда + + РезультатПроверки.ОбъектМетаданныхУдаленного = Метаданные.НайтиПоПолномуИмени( + ПолноеИмяУдаленного(СвойстваИдентификатора.ПолноеИмяКоллекции)); + КонецЕсли; + Если СтрНачинаетсяС(Строка(СвойстваИдентификатора.Представление), "? ") Тогда + РезультатПроверки.ПредставлениеУдаленного = + Сред(Строка(СвойстваИдентификатора.Представление), 3); + КонецЕсли; + + Возврат РезультатПроверки; + +КонецФункции + +Функция ПолноеИмяУдаленного(ПолноеИмя) + + ПолноеИмяУдаленного = Сред(ПолноеИмя, 3); + ПозицияСкобки = СтрНайти(ПолноеИмяУдаленного, "("); + Если ПозицияСкобки > 0 Тогда + ПолноеИмяУдаленного = Сред(ПолноеИмяУдаленного, 1, ПозицияСкобки - 1); + КонецЕсли; + + Возврат СокрЛП(ПолноеИмяУдаленного); + +КонецФункции + +Функция ЗапрещеноИзменятьПолноеИмя(Объект) + + ОбъектыРасширений = ЭтоОбъектРасширений(Объект); + Если ЭтоКоллекция(Объект.Ссылка, ОбъектыРасширений) Тогда + Возврат Истина; + КонецЕсли; + + ПозицияТочки = СтрНайти(Объект.ПолноеИмя, "."); + ИмяБазовогоТипа = Лев(Объект.ПолноеИмя, ПозицияТочки -1); + + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений); + СвойстваКоллекции = СвойстваКоллекций.Найти(ИмяБазовогоТипа, "ИмяВЕдЧисле"); + + Если СвойстваКоллекции <> Неопределено + И НЕ СвойстваКоллекции.БезКлючаОбъектаМетаданных Тогда + + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +Функция ОбъектМетаданныхПоКлючу(КлючОбъектаМетаданных) + + ОбъектМетаданных = Неопределено; + + Если ТипЗнч(КлючОбъектаМетаданных) = Тип("Тип") Тогда + ОбъектМетаданных = Метаданные.НайтиПоТипу(КлючОбъектаМетаданных); + КонецЕсли; + + Возврат ОбъектМетаданных; + +КонецФункции + +Функция СвойстваОбъектовМетаданных(ОбъектыРасширений, СвойстваКоллекций = Неопределено) + + МассивТиповРодителя = Новый Массив; + МассивТиповРодителя.Добавить(ТипЗнч(ПустаяСсылкаСправочника(ОбъектыРасширений))); + + СвойстваОбъектовМетаданных = Новый ТаблицаЗначений; + СвойстваОбъектовМетаданных.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(150))); + СвойстваОбъектовМетаданных.Колонки.Добавить("ПолноеИмя", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(510))); + СвойстваОбъектовМетаданных.Колонки.Добавить("ПолноеИмяРодителя", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(510))); + СвойстваОбъектовМетаданных.Колонки.Добавить("ПорядокКоллекции", Новый ОписаниеТипов("Число")); + СвойстваОбъектовМетаданных.Колонки.Добавить("Родитель", Новый ОписаниеТипов(МассивТиповРодителя)); + СвойстваОбъектовМетаданных.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(150))); + СвойстваОбъектовМетаданных.Колонки.Добавить("ИмяПредопределенныхДанных", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(255))); + СвойстваОбъектовМетаданных.Колонки.Добавить("Синоним", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(255))); + СвойстваОбъектовМетаданных.Колонки.Добавить("ПолныйСиноним", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(510))); + СвойстваОбъектовМетаданных.Колонки.Добавить("БезДанных", Новый ОписаниеТипов("Булево")); + СвойстваОбъектовМетаданных.Колонки.Добавить("БезКлючаОбъектаМетаданных", Новый ОписаниеТипов("Булево")); + СвойстваОбъектовМетаданных.Колонки.Добавить("ИмяРасширения", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(128))); + СвойстваОбъектовМетаданных.Колонки.Добавить("ХешСуммаРасширения", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(30))); + СвойстваОбъектовМетаданных.Колонки.Добавить("ЗначениеПустойСсылки"); + СвойстваОбъектовМетаданных.Колонки.Добавить("ОбъектМетаданных"); + + Если СвойстваКоллекций = Неопределено Тогда + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений); + КонецЕсли; + + ИменаПредопределенныхДанных = ?(ОбъектыРасширений, + Метаданные.Справочники.ИдентификаторыОбъектовРасширений, + Метаданные.Справочники.ИдентификаторыОбъектовМетаданных).ПолучитьИменаПредопределенных(); + + ИменаПредопределенных = Новый Соответствие; + Для Каждого ИмяПредопределенного Из ИменаПредопределенныхДанных Цикл + ИменаПредопределенных.Вставить(ИмяПредопределенного, Ложь); + КонецЦикла; + + Если Не ОбъектыРасширений Или ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) Тогда + Для каждого СвойстваКоллекции Из СвойстваКоллекций Цикл + ДобавитьСвойстваОбъектовМетаданных(Метаданные[СвойстваКоллекции.Имя], СвойстваКоллекции, + СвойстваОбъектовМетаданных, ОбъектыРасширений, ИменаПредопределенных); + КонецЦикла; + СвойстваОбъектовМетаданных.Индексы.Добавить("ПолноеИмя"); + КонецЕсли; + + Возврат СвойстваОбъектовМетаданных; + +КонецФункции + +Процедура ДобавитьСвойстваОбъектовМетаданных(Знач КоллекцияОбъектовМетаданных, + Знач СвойстваКоллекции, + Знач СвойстваОбъектовМетаданных, + Знач ОбъектыРасширений, + Знач ИменаПредопределенных, + Знач ПолноеИмяРодителя = "", + Знач ПолныйСинонимРодителя = "") + + Для Каждого ОбъектМетаданных Из КоллекцияОбъектовМетаданных Цикл + + ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); + Расширение = ОбъектМетаданных.РасширениеКонфигурации(); + ИмяРасширения = ?(Расширение = Неопределено, "", Расширение.Имя); + ХешСуммаРасширения = ?(Расширение = Неопределено, "", Base64Строка(Расширение.ХешСумма)); + Если ЗначениеЗаполнено(ИмяРасширения) <> ОбъектыРасширений Тогда + Продолжить; + КонецЕсли; + + Если СтрНайти(СвойстваКоллекции.ИмяВЕдЧисле, "Подсистема") <> 0 Тогда + МетаданныеНайтиПоПолномуИмени(ПолноеИмя); + КонецЕсли; + + Если Не СвойстваКоллекции.БезДанных + И Не ОбъектыРасширений + И Не СтандартныеПодсистемыСервер.ЭтоТаблицаРегистра(СвойстваКоллекции.ИмяВЕдЧисле) + И СтрНайти(СвойстваКоллекции.ИмяВЕдЧисле, "Константа") = 0 Тогда + + ИмяТипаСсылки = СвойстваКоллекции.ИмяВЕдЧисле + "Ссылка." + ОбъектМетаданных.Имя; + ОписаниеТипа = Новый ОписаниеТипов(ИмяТипаСсылки); + ЗначениеПустойСсылки = ОписаниеТипа.ПривестиЗначение(Неопределено); + Иначе + ЗначениеПустойСсылки = Неопределено; + КонецЕсли; + + НоваяСтрока = СвойстваОбъектовМетаданных.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, СвойстваКоллекции); + НоваяСтрока.Родитель = ИдентификаторКоллекции(СвойстваКоллекции.Идентификатор, ОбъектыРасширений); + НоваяСтрока.Наименование = ПредставлениеОбъектаМетаданных(ОбъектМетаданных, СвойстваКоллекции); + НоваяСтрока.ПолноеИмя = ПолноеИмя; + НоваяСтрока.ПолноеИмяРодителя = ПолноеИмяРодителя; + НоваяСтрока.Имя = ОбъектМетаданных.Имя; + + НоваяСтрока.Синоним = ?( + ЗначениеЗаполнено(ОбъектМетаданных.Синоним), ОбъектМетаданных.Синоним, ОбъектМетаданных.Имя); + + НоваяСтрока.ПолныйСиноним = + ПолныйСинонимРодителя + СвойстваКоллекции.СинонимВЕдЧисле + ". " + НоваяСтрока.Синоним; + + НоваяСтрока.ЗначениеПустойСсылки = ЗначениеПустойСсылки; + НоваяСтрока.ОбъектМетаданных = ОбъектМетаданных; + НоваяСтрока.ИмяРасширения = ИмяРасширения; + НоваяСтрока.ХешСуммаРасширения = ХешСуммаРасширения; + + Если СвойстваКоллекции.Имя = "Подсистемы" Тогда + ДобавитьСвойстваОбъектовМетаданных( + ОбъектМетаданных.Подсистемы, + СвойстваКоллекции, + СвойстваОбъектовМетаданных, + ОбъектыРасширений, + ИменаПредопределенных, + ПолноеИмя, + НоваяСтрока.ПолныйСиноним + ". "); + КонецЕсли; + ИмяПредопределенного = СтрЗаменить(ПолноеИмя, ".", ""); + Если ИменаПредопределенных.Получить(ИмяПредопределенного) <> Неопределено Тогда + НоваяСтрока.ИмяПредопределенныхДанных = ИмяПредопределенного; + ИменаПредопределенных.Вставить(ИмяПредопределенного, Истина); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Функция ПредставлениеОбъектаМетаданных(Знач ОбъектМетаданных, Знач СвойстваКоллекции) + + Постфикс = "(" + СвойстваКоллекции.СинонимВЕдЧисле + ")"; + + Синоним = ?(ЗначениеЗаполнено(ОбъектМетаданных.Синоним), ОбъектМетаданных.Синоним, ОбъектМетаданных.Имя); + + МаксимальнаяДлинаСинонима = 150 - СтрДлина(Постфикс); + Если СтрДлина(Синоним) > МаксимальнаяДлинаСинонима + 1 Тогда + Возврат Лев(Синоним, МаксимальнаяДлинаСинонима - 2) + "..." + Постфикс; + КонецЕсли; + + Возврат Синоним + " (" + СвойстваКоллекции.СинонимВЕдЧисле + ")"; + +КонецФункции + +Функция ВставитьЗнакВопроса(Знач Строка) + + Если Не СтрНачинаетсяС(Строка, "?") Тогда + Если Не СтрНачинаетсяС(Строка, " ") Тогда + Строка = "? " + Строка; + Иначе + Строка = "?" + Строка; + КонецЕсли; + КонецЕсли; + + Возврат Строка; + +КонецФункции + +Функция УникальноеПолноеИмя(Свойства) + + ПолноеИмя = ВставитьЗнакВопроса(Свойства.ПолноеИмя); + + Если СтрНайти(ПолноеИмя, "(") = 0 Тогда + ПолноеИмя = ПолноеИмя + " (" + Строка(Свойства.Ссылка.УникальныйИдентификатор())+ ")"; + КонецЕсли; + + Возврат ПолноеИмя; + +КонецФункции + +Функция МетаданныеНайтиПоПолномуИмени(ПолноеИмя) + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + + Если ОбъектМетаданных = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Если ВРег(ОбъектМетаданных.ПолноеИмя()) <> ВРег(ПолноеИмя) Тогда + + Если СтрЧислоВхождений(ВРег(ПолноеИмя), ВРег("Подсистема.")) > 1 Тогда + Подсистема = НайтиПодсистемуПоПолномуИмени(ПолноеИмя); + Если Подсистема = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при поиске дочерней подсистемы по полному имени (при поиске ""%1"" была найдена ""%2""). + |Не следует называть подсистемы одинаково, либо использовать более новую версию платформы.'"), + ПолноеИмя, + ОбъектМетаданных.ПолноеИмя()); + Иначе + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при поиске объекта метаданных по полному имени (при поиске ""%1"" был найден ""%2"").'"), + ПолноеИмя, + ОбъектМетаданных.ПолноеИмя()); + КонецЕсли; + КонецЕсли; + + Возврат ОбъектМетаданных; + +КонецФункции + +Функция НайтиПодсистемуПоПолномуИмени(ПолноеИмя, КоллекцияПодсистемы = Неопределено) + + Если КоллекцияПодсистемы = Неопределено Тогда + КоллекцияПодсистемы = Метаданные.Подсистемы; + КонецЕсли; + + ОстатокИмени = Сред(ПолноеИмя, СтрДлина("Подсистема.") + 1); + Позиция = СтрНайти(ВРег(ОстатокИмени), ВРег("Подсистема.")); + Если Позиция > 0 Тогда + ИмяПодсистемы = Лев(ОстатокИмени, Позиция - 2); + ОстатокИмени = Сред(ПолноеИмя, Позиция + СтрДлина("Подсистема.")); + Иначе + ИмяПодсистемы = ОстатокИмени; + ОстатокИмени = Неопределено; + КонецЕсли; + + НайденнаяПодсистема = Неопределено; + Для каждого Подсистема Из КоллекцияПодсистемы Цикл + Если ВРег(Подсистема.Имя) = ВРег(ИмяПодсистемы) Тогда + НайденнаяПодсистема = Подсистема; + Прервать; + КонецЕсли; + КонецЦикла; + + Если НайденнаяПодсистема = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Если ОстатокИмени = Неопределено Тогда + Возврат НайденнаяПодсистема; + КонецЕсли; + + Возврат НайтиПодсистемуПоПолномуИмени(ОстатокИмени, НайденнаяПодсистема.Подсистемы); + +КонецФункции + +Функция ПолноеИмяИспользуется(Объект, ОбъектыРасширения) + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПолноеИмя", Объект.ПолноеИмя); + Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных + |ГДЕ + | ИдентификаторыОбъектовМетаданных.Ссылка <> &Ссылка + | И ИдентификаторыОбъектовМетаданных.ПолноеИмя = &ПолноеИмя"; + УточнитьИмяСправочникаВТекстеЗапроса(Запрос.Текст, ОбъектыРасширения); + + Возврат НЕ Запрос.Выполнить().Пустой(); + +КонецФункции + +Функция ЭтоКоллекция(Ссылка, ОбъектыРасширений = Ложь) + + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений); + Возврат СвойстваКоллекций.Найти(Ссылка.УникальныйИдентификатор(), "Идентификатор") <> Неопределено; + +КонецФункции + +Процедура ПодготовитьСписокНовыхПодсистемВГлавномУзле(Выгрузка) + + НайденноеОписание = Выгрузка.Найти(Метаданные.Подсистемы.СтандартныеПодсистемы, "ОбъектМетаданных"); + Если НайденноеОписание = Неопределено Тогда + Возврат; + КонецЕсли; + ПодсистемаСтандартныеПодсистемы = НайденноеОписание.Ссылка; + + Отбор = Новый Структура; + Отбор.Вставить("ЭтоНовый", Истина); + Отбор.Вставить("Родитель", ПодсистемаСтандартныеПодсистемы); + НайденныеОписания = Выгрузка.НайтиСтроки(Отбор); + + НаследующиеПодсистемы = Новый Массив; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный"); + МодульРаботаСФайламиСлужебный.ПриОпределенииНаследованияПодсистем(Выгрузка, НаследующиеПодсистемы); + КонецЕсли; + + НовыеПодсистемы = Новый Массив; + Для Каждого Описание Из НайденныеОписания Цикл + Если НаследующиеПодсистемы.Найти(Описание) <> Неопределено Тогда + Продолжить; + КонецЕсли; + НовыеПодсистемы.Добавить(Описание.ПолноеИмя); + КонецЦикла; + + ОбновитьСписокНовыхПодсистем(НовыеПодсистемы); + +КонецПроцедуры + +Процедура ПодготовитьСписокНовыхПодсистемВПодчиненномУзле(ОбъектыДляЗаписи) + + НовыеПодсистемы = Новый Массив; + НачалоИмени = "Подсистема.СтандартныеПодсистемы."; + + Для Каждого Объект Из ОбъектыДляЗаписи Цикл + Если Не Объект.ЭтоНовый() + Или Объект.ДополнительныеСвойства.Свойство("ЭтоЗаменаДубля") + Или ВРег(Лев(Объект.ПолноеИмя, СтрДлина(НачалоИмени))) <> ВРег(НачалоИмени) Тогда + Продолжить; + КонецЕсли; + НовыеПодсистемы.Добавить(Объект.ПолноеИмя); + КонецЦикла; + + ОбновитьСписокНовыхПодсистем(НовыеПодсистемы); + +КонецПроцедуры + +Процедура ОбновитьСписокНовыхПодсистем(НовыеПодсистемы) + + Сведения = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); + ЕстьИзменения = Ложь; + + Для Каждого ИмяПодсистемы Из НовыеПодсистемы Цикл + Если Сведения.НовыеПодсистемы.Найти(ИмяПодсистемы) = Неопределено Тогда + Сведения.НовыеПодсистемы.Добавить(ИмяПодсистемы); + ЕстьИзменения = Истина; + КонецЕсли; + КонецЦикла; + + // Удаление из списка подсистем, удаленных из метаданных. + Индекс = Сведения.НовыеПодсистемы.Количество() - 1; + Пока Индекс >= 0 Цикл + ИмяПодсистемы = Сведения.НовыеПодсистемы.Получить(Индекс); + Если Метаданные.НайтиПоПолномуИмени(ИмяПодсистемы) = Неопределено Тогда + Сведения.НовыеПодсистемы.Удалить(Индекс); + ЕстьИзменения = Истина; + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + + Если Не ЕстьИзменения Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(Сведения); + +КонецПроцедуры + +Функция ИдентификаторКоллекции(УникальныйИдентификатор, ОбъектыРасширений) + + Если ОбъектыРасширений Тогда + Возврат Справочники.ИдентификаторыОбъектовРасширений.ПолучитьСсылку(УникальныйИдентификатор); + Иначе + Возврат ПолучитьСсылку(УникальныйИдентификатор); + КонецЕсли; + +КонецФункции + +Функция ЭтоОбъектРасширений(ОбъектИлиСсылка) + + Возврат ТипЗнч(ОбъектИлиСсылка) = Тип("СправочникОбъект.ИдентификаторыОбъектовРасширений") + Или ТипЗнч(ОбъектИлиСсылка) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений"); + +КонецФункции + +Функция СоздатьЭлементСправочника(ОбъектыРасширений) + + Если ОбъектыРасширений Тогда + Возврат Справочники.ИдентификаторыОбъектовРасширений.СоздатьЭлемент(); + Иначе + Возврат СоздатьЭлемент(); + КонецЕсли; + +КонецФункции + +Функция ПустаяСсылкаСправочника(ОбъектыРасширений) + + Если ОбъектыРасширений Тогда + Возврат Справочники.ИдентификаторыОбъектовРасширений.ПустаяСсылка(); + Иначе + Возврат ПустаяСсылка(); + КонецЕсли; + +КонецФункции + +Функция НоваяСсылкаСправочника(ОбъектыРасширений) + + Если ОбъектыРасширений Тогда + Возврат Справочники.ИдентификаторыОбъектовРасширений.ПолучитьСсылку(); + Иначе + Возврат ПолучитьСсылку(); + КонецЕсли; + +КонецФункции + +Функция ИмяСправочника(ОбъектыРасширений) + + Если ОбъектыРасширений Тогда + Возврат "Справочник.ИдентификаторыОбъектовРасширений"; + Иначе + Возврат "Справочник.ИдентификаторыОбъектовМетаданных"; + КонецЕсли; + +КонецФункции + +Функция НазваниеСправочника(ОбъектыРасширений) + + Если ОбъектыРасширений Тогда + НазваниеСправочника = НСтр("ru = 'Идентификаторы объектов расширений'"); + Иначе + НазваниеСправочника = НСтр("ru = 'Идентификаторы объектов метаданных'"); + КонецЕсли; + + Возврат НазваниеСправочника; + +КонецФункции + +Процедура УточнитьИмяСправочникаВТекстеЗапроса(ТекстЗапроса, ОбъектыРасширений) + + Если ОбъектыРасширений Тогда + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Справочник.ИдентификаторыОбъектовМетаданных", + ИмяСправочника(ОбъектыРасширений)); + КонецЕсли; + +КонецПроцедуры + +Процедура ВызватьИсключениеПоОшибке(ОбъектыРасширений, ТекстОшибки) + + ЗаголовокОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при работе со справочником ""%1"".'"), + НазваниеСправочника(ОбъектыРасширений)); + + ВызватьИсключение ЗаголовокОшибки + Символы.ПС + Символы.ПС + ТекстОшибки; + +КонецПроцедуры + +Функция ЭтоПодсистема(ОбъектМетаданных, КоллекцияПодсистем = Неопределено) + + Если КоллекцияПодсистем = Неопределено Тогда + КоллекцияПодсистем = Метаданные.Подсистемы; + КонецЕсли; + + Если КоллекцияПодсистем.Содержит(ОбъектМетаданных) Тогда + Возврат Истина; + КонецЕсли; + + Для Каждого Подсистема Из КоллекцияПодсистем Цикл + Если ЭтоПодсистема(ОбъектМетаданных, Подсистема.Подсистемы) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +// Для процедуры ДобавитьПереименование. +Функция ИмяКоллекции(ПолноеИмя) + + ПозицияТочки = СтрНайти(ПолноеИмя, "."); + + Если ПозицияТочки > 0 Тогда + Возврат Лев(ПолноеИмя, ПозицияТочки - 1); + КонецЕсли; + + Возврат ""; + +КонецФункции + +// Для процедур ВыполнитьОбновлениеДанных и ПередЗаписьюОбъекта. +Процедура ПроверитьОбъектПередЗаписью(Объект, АвтоматическоеОбновление = Ложь) + + ОбъектыРасширений = ЭтоОбъектРасширений(Объект); + + Если НЕ АвтоматическоеОбновление Тогда + + Если Объект.ЭтоНовый() Тогда + + ВызватьИсключениеПоОшибке(ОбъектыРасширений, + НСтр("ru = 'Создание нового идентификатора объекта + |возможно только автоматически при обновлении данных справочника.'")); + + ИначеЕсли ЗапрещеноИзменятьПолноеИмя(Объект) Тогда + + ВызватьИсключениеПоОшибке(ОбъектыРасширений, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При изменении идентификатора объекта указано + |полное имя ""%1"", которое может быть + |установлено только автоматически при обновлении данных справочника.'"), + Объект.ПолноеИмя)); + Иначе + Если ПолноеИмяИспользуется(Объект, Ложь) Тогда + НазваниеСправочника = НазваниеСправочника(Ложь); + + ИначеЕсли ОбъектыРасширений И ПолноеИмяИспользуется(Объект, Истина) Тогда + НазваниеСправочника = НазваниеСправочника(Истина); + Иначе + НазваниеСправочника = ""; + КонецЕсли; + Если ЗначениеЗаполнено(НазваниеСправочника) Тогда + ВызватьИсключениеПоОшибке(ОбъектыРасширений, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При изменении идентификатора объекта указано + |полное имя ""%1"", + |которое уже используется в справочнике ""%2"".'"), + Объект.ПолноеИмя, НазваниеСправочника)); + КонецЕсли; + КонецЕсли; + + ОбновитьСвойстваИдентификатора(Объект); + КонецЕсли; + + Если Не ОбъектыРасширений И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + + Если Объект.ЭтоНовый() + И Не ЭтоКоллекция(Объект.ПолучитьСсылкуНового(), ЭтоОбъектРасширений(Объект)) Тогда + + ВызватьИсключениеПоОшибке(ОбъектыРасширений, + НСтр("ru = 'Добавление новых элементов может быть выполнено + |только в главном узле распределенной информационной базы.'")); + КонецЕсли; + + Если Не Объект.ПометкаУдаления + И Не ЭтоКоллекция(Объект.Ссылка, ЭтоОбъектРасширений(Объект)) Тогда + + Если ВРег(Объект.ПолноеИмя) <> ВРег(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "ПолноеИмя")) Тогда + ВызватьИсключениеПоОшибке(ОбъектыРасширений, + НСтр("ru = 'Изменение реквизита ""Полное имя"" может быть выполнено + |только в главном узле распределенной информационной базы.'")); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Для процедур ПроверкаИспользования и ДанныеОбновлены. +Функция ОписаниеОшибкиИдентификаторыОбъектовРасширенийНедоступныВНеразделенномРежиме() + + Возврат + НСтр("ru = 'Справочник ""Идентификаторы объектов расширений"" + |не может использоваться в неразделенном режиме.'"); + +КонецФункции + +// Для процедуры ПриСозданииНаСервереФормыСписка. +Процедура УпорядочитьИОформитьСписок(Форма) + + // Порядок. + Порядок = Форма.Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ПорядокКоллекции"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Родитель"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ПометкаБудущегоУдаления"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Синоним"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + // Оформление. + ЭлементОформления = Форма.Список.КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить(); + ЭлементОформления.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + + ЭлементЦвета = ЭлементОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦвета.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦвета.Использование = Истина; + + ЭлементГруппыОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ЭлементГруппыОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли; + + ЭлементОтбора = ЭлементГруппыОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Истина; + ЭлементОтбора.Использование = Истина; + + ЭлементОтбора = ЭлементГруппыОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаБудущегоУдаления"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Истина; + ЭлементОтбора.Использование = Истина; + +КонецПроцедуры + +// Для процедуры ОбновитьДанные. +Функция ИменаРасширений(ИсточникРасширений) + + ИменаРасширений = Новый Соответствие; + Расширения = РасширенияКонфигурации.Получить(, ИсточникРасширений); // Массив из РасширениеКонфигурации + + Для Каждого Расширение Из Расширения Цикл + ИменаРасширений.Вставить(Расширение.Имя, Истина); + КонецЦикла; + + Возврат ИменаРасширений; + +КонецФункции + +// Для функций ИдентификаторОбъектаМетаданныхПоПолномуИмени, ИдентификаторыОбъектовМетаданных. +Функция ИдентификаторыОбъектовМетаданныхСПопыткойПовтора(ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент) + + СтандартныеПодсистемыПовтИсп.ИдентификаторыОбъектовМетаданныхПроверкаИспользования(Истина, + ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()); + + Попытка + Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора( + ПолныеИменаОбъектовМетаданных, Истина, ОдинЭлемент, Истина); + Исключение + Идентификаторы = Неопределено; + КонецПопытки; + + Если Идентификаторы = Неопределено Тогда + + Если Не ОбщегоНазначения.РазделениеВключено() + Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + + ОбновитьДанныеСправочника(); + КонецЕсли; + + Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника(); + КонецЕсли; + + Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора( + ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент, Не ВызыватьИсключение); + КонецЕсли; + + Возврат Идентификаторы; + +КонецФункции + +// Для функций ИдентификаторыОбъектовМетаданных. +Функция ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(ПолныеИменаОбъектовМетаданных, + ВызыватьИсключение, ОдинЭлемент, ПропускатьНеподдерживаемыеОбъекты) + + УстановитьПривилегированныйРежим(Истина); + + ДоступныИдентификаторыОбъектовРасширений = + ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) + И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных(); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПолныеИмена", ПолныеИменаОбъектовМетаданных); + Запрос.Текст = + "ВЫБРАТЬ + | Идентификаторы.Ссылка КАК Ссылка, + | Идентификаторы.КлючОбъектаМетаданных КАК КлючОбъектаМетаданных, + | Идентификаторы.ПолноеИмя КАК ПолноеИмя, + | Идентификаторы.Наименование КАК Представление, + | Идентификаторы.ПолноеИмя КАК ПолноеИмяКоллекции + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы + |ГДЕ + | Идентификаторы.ПолноеИмя В(&ПолныеИмена) + | И НЕ Идентификаторы.ПометкаУдаления"; + + Если ДоступныИдентификаторыОбъектовРасширений Тогда + Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + ТекстЗапроса = + "ВЫБРАТЬ + | ВерсииИдентификаторов.Идентификатор КАК Ссылка, + | Идентификаторы.КлючОбъектаМетаданных КАК КлючОбъектаМетаданных, + | ВерсииИдентификаторов.ПолноеИмяОбъекта КАК ПолноеИмя, + | Идентификаторы.Наименование КАК Представление, + | Идентификаторы.ПолноеИмя КАК ПолноеИмяКоллекции + |ИЗ + | РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК ВерсииИдентификаторов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы + | ПО (Идентификаторы.Ссылка = ВерсииИдентификаторов.Идентификатор) + | И (ВерсииИдентификаторов.ВерсияРасширений = &ВерсияРасширений) + |ГДЕ + | ВерсииИдентификаторов.ПолноеИмяОбъекта В(&ПолныеИмена)"; + + Запрос.Текст = Запрос.Текст + " + | + |ОБЪЕДИНИТЬ ВСЕ + | + |" + ТекстЗапроса; + КонецЕсли; + + Выгрузка = Запрос.Выполнить().Выгрузить(); + Выгрузка.Индексы.Добавить("ПолноеИмя"); + + Ошибки = Новый Массив; + ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Ложь; + + КонфигурацияБазыДанныхИзмененаДинамически = КонфигурацияБазыДанныхИзмененаДинамически(); + ИдентификаторыИзКлючей = Неопределено; + + Результат = Новый Соответствие; + Для Каждого ПолноеИмяОбъектаМетаданных Из ПолныеИменаОбъектовМетаданных Цикл + + Отбор = Новый Структура("ПолноеИмя", ПолноеИмяОбъектаМетаданных); + НайденныеСтроки = Выгрузка.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() = 0 Тогда + // Если идентификатор не найден по полному имени, возможно что полное имя задано с ошибкой. + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных); + Если ОбъектМетаданных = Неопределено Тогда + Если Не ВызыватьИсключение Тогда + Продолжить; + КонецЕсли; + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Объект метаданных с именем ""%1"" не существует.'"), + ПолноеИмяОбъектаМетаданных); + Ошибки.Добавить(ОписаниеОшибки); + Продолжить; + КонецЕсли; + + Если Не Метаданные.Роли.Содержит(ОбъектМетаданных) + И Не Метаданные.ПланыОбмена.Содержит(ОбъектМетаданных) + И Не Метаданные.Константы.Содержит(ОбъектМетаданных) + И Не Метаданные.Справочники.Содержит(ОбъектМетаданных) + И Не Метаданные.Документы.Содержит(ОбъектМетаданных) + И Не Метаданные.ЖурналыДокументов.Содержит(ОбъектМетаданных) + И Не Метаданные.Отчеты.Содержит(ОбъектМетаданных) + И Не Метаданные.Обработки.Содержит(ОбъектМетаданных) + И Не Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных) + И Не Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных) + И Не Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных) + И Не Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) + И Не Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных) + И Не Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМетаданных) + И Не Метаданные.РегистрыРасчета.Содержит(ОбъектМетаданных) + И Не Метаданные.БизнесПроцессы.Содержит(ОбъектМетаданных) + И Не Метаданные.Задачи.Содержит(ОбъектМетаданных) + И Не ЭтоПодсистема(ОбъектМетаданных) Тогда + + Если ПропускатьНеподдерживаемыеОбъекты Тогда + Продолжить; + КонецЕсли; + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Объект метаданных не поддерживается: + |""%1"". + | + |Допустимы только типы объектов метаданных перечисленные в комментарии к функции.'"), + ПолноеИмяОбъектаМетаданных); + Ошибки.Добавить(ОписаниеОшибки); + Продолжить; + КонецЕсли; + + Расширение = ОбъектМетаданных.РасширениеКонфигурации(); + Если Расширение <> Неопределено + И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификаторы объектов метаданных расширений не поддерживаются в неразделенном режиме. + |Невозможно вернуть идентификатор объекта метаданных ""%1"" + |расширения ""%2"" версии ""%3"".'"), + ПолноеИмяОбъектаМетаданных, Расширение.Имя, Расширение.Версия); + Ошибки.Добавить(ОписаниеОшибки); + Продолжить; + КонецЕсли; + + Если КонфигурацияБазыДанныхИзмененаДинамически Тогда + Если ИдентификаторыИзКлючей = Неопределено Тогда + ИдентификаторыИзКлючей = ИдентификаторыИзКлючей(); + КонецЕсли; + Идентификатор = ИдентификаторыИзКлючей.Получить(ПолноеИмяОбъектаМетаданных); + Если Идентификатор = Неопределено Тогда + СтандартныеПодсистемыСервер.ПотребоватьПерезапускСеансаПоПричинеДинамическогоОбновленияВерсииПрограммы(); + КонецЕсли; + Результат.Вставить(ПолноеИмяОбъектаМетаданных, Идентификатор); + Продолжить; + КонецЕсли; + + ШаблонОшибки = ?(Расширение <> Неопределено, + НСтр("ru = 'Для объекта метаданных ""%1"" + |не существует идентификатор в регистре сведений ""Идентификаторы объектов версий расширений"".'"), + НСтр("ru = 'Для объекта метаданных ""%1"" + |не существует идентификатор в справочнике ""Идентификаторы объектов метаданных"".'")); + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяОбъектаМетаданных); + ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Истина; + Ошибки.Добавить(ОписаниеОшибки); + Продолжить; + + ИначеЕсли НайденныеСтроки.Количество() > 1 Тогда + + ШаблонОшибки = ?(ДоступныИдентификаторыОбъектовРасширений, + НСтр("ru = 'Для объекта метаданных ""%1"" + |найдено несколько идентификаторов в справочнике ""Идентификаторы объектов метаданных"" и + |регистре сведений ""Идентификаторы объектов версий расширений"".'"), + НСтр("ru = 'Для объекта метаданных ""%1"" + |найдено несколько идентификаторов в справочнике ""Идентификаторы объектов метаданных"".'")); + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяОбъектаМетаданных); + ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Истина; + Ошибки.Добавить(ОписаниеОшибки); + Продолжить; + + КонецЕсли; + + // Проверка соответствия ключа объекта метаданных полному имени объекта метаданных. + СтрокаТаблицы = НайденныеСтроки[0]; + РезультатПроверки = КлючОбъектаМетаданныхСоответствуетПолномуИмени(СтрокаТаблицы); + Если РезультатПроверки.НеСоответствует Тогда + НазваниеСправочника = НазваниеСправочника(ЭтоОбъектРасширений(СтрокаТаблицы.Ссылка)); + + Если РезультатПроверки.ОбъектМетаданных = Неопределено Тогда + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для объекта метаданных ""%1"" + |найден идентификатор в справочнике ""%2"", + |которому соответствует удаленный объект метаданных.'"), + ПолноеИмяОбъектаМетаданных, НазваниеСправочника); + Иначе + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для объекта метаданных ""%1"" + |найден идентификатор в справочнике ""%2"", + |который соответствует другому объекту метаданных ""%3"".'"), + ПолноеИмяОбъектаМетаданных, НазваниеСправочника, РезультатПроверки.ОбъектМетаданных); + КонецЕсли; + + ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Истина; + Ошибки.Добавить(ОписаниеОшибки); + Продолжить; + КонецЕсли; + + Результат.Вставить(ПолноеИмяОбъектаМетаданных, СтрокаТаблицы.Ссылка); + КонецЦикла; + + КоличествоОшибок = Ошибки.Количество(); + Если КоличествоОшибок > 0 Тогда + + Если ОдинЭлемент Тогда + ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных.'"); + + ИначеЕсли КоличествоОшибок = 1 Тогда + ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.'"); + Иначе + ЗаголовокОшибки = НСтр("ru = 'Ошибки при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.'"); + КонецЕсли; + + Разделитель = Символы.ПС + Символы.ПС; + ТекстВсехОшибок = ""; + НомерОшибки = 0; + Для Каждого ОписаниеОшибки Из Ошибки Цикл + НомерОшибки = НомерОшибки + 1; + ТекстВсехОшибок = ТекстВсехОшибок + ?(НомерОшибки = 1, "", Разделитель) + ОписаниеОшибки; + Если НомерОшибки = 3 И КоличествоОшибок > 5 Тогда + + ОписаниеОшибки = "... " + СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка( + НСтр("ru = ';И еще %1 ошибка;;И еще %1 ошибки;И еще %1 ошибок;И еще %1 ошибки'"), + (КоличествоОшибок - НомерОшибки)); + + ТекстВсехОшибок = ТекстВсехОшибок + Разделитель + ОписаниеОшибки; + Прервать; + КонецЕсли; + КонецЦикла; + + ТекстВсехОшибок = ТекстВсехОшибок + ?(ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика, + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), ""); + + ВызватьИсключение ЗаголовокОшибки + Разделитель + ТекстВсехОшибок; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Для функции ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора. +Функция ИдентификаторыИзКлючей() + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Идентификаторы.Ссылка КАК Ссылка, + | Идентификаторы.КлючОбъектаМетаданных КАК ХранилищеКлюча + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы"; + + Выборка = Запрос.Выполнить().Выбрать(); + + ИдентификаторыИзКлючей = Новый Соответствие; + + Пока Выборка.Следующий() Цикл + Если ТипЗнч(Выборка.ХранилищеКлюча) <> Тип("ХранилищеЗначения") Тогда + Продолжить; + КонецЕсли; + КлючОбъектаМетаданных = Выборка.ХранилищеКлюча.Получить(); + + Если КлючОбъектаМетаданных = Неопределено + Или КлючОбъектаМетаданных = Тип("Неопределено") Тогда + Продолжить; + КонецЕсли; + + ОбъектМетаданных = ОбъектМетаданныхПоКлючу(КлючОбъектаМетаданных); + Если ОбъектМетаданных = Неопределено Тогда + Продолжить; + КонецЕсли; + + ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); + Если ИдентификаторыИзКлючей.Получить(ПолноеИмя) <> Неопределено Тогда + СтандартныеПодсистемыСервер.ПотребоватьПерезапускСеансаПоПричинеДинамическогоОбновленияВерсииПрограммы(); + КонецЕсли; + + ИдентификаторыИзКлючей.Вставить(ПолноеИмя, Выборка.Ссылка); + КонецЦикла; + + Возврат ИдентификаторыИзКлючей; + +КонецФункции + +// Для функций ОбъектМетаданныхПоИдентификатору, ОбъектыМетаданныхПоИдентификаторам. +Функция ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора(Идентификаторы, ВызыватьИсключение) + + Если Идентификаторы.Количество() = 0 Тогда + Возврат Новый Соответствие; + КонецЕсли; + + ИдентификаторыКонфигурации = Новый Массив; + ИдентификаторыРасширений = Новый Массив; + + ДобавленныеИдентификаторыКонфигурации = Новый Соответствие; + ДобавленныеИдентификаторыРасширений = Новый Соответствие; + + Обработанные = Новый Соответствие; + + Для Каждого ТекущийИдентификатор Из Идентификаторы Цикл + Если ТипЗнч(ТекущийИдентификатор) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") + И ЗначениеЗаполнено(ТекущийИдентификатор) Тогда + + Если ДобавленныеИдентификаторыКонфигурации[ТекущийИдентификатор] = Неопределено Тогда + ИдентификаторыКонфигурации.Добавить(ТекущийИдентификатор); + ДобавленныеИдентификаторыКонфигурации.Вставить(ТекущийИдентификатор, Истина); + КонецЕсли; + + ИначеЕсли ТипЗнч(ТекущийИдентификатор) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений") + И ЗначениеЗаполнено(ТекущийИдентификатор) Тогда + + Если ДобавленныеИдентификаторыРасширений[ТекущийИдентификатор] = Неопределено Тогда + ИдентификаторыРасширений.Добавить(ТекущийИдентификатор); + ДобавленныеИдентификаторыРасширений.Вставить(ТекущийИдентификатор, Истина); + КонецЕсли; + ИначеЕсли ВызыватьИсключение Тогда + Если ТипЗнч(ТекущийИдентификатор) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") + Или ТипЗнч(ТекущийИдентификатор) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений") Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(). + | + |Неверный идентификатор: пустая ссылка типа ""%1"".'"), + ТипЗнч(ТекущийИдентификатор)); + Иначе + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(). + | + |Неверный тип идентификатора объекта метаданных: + |""%1"".'"), + ТипЗнч(ТекущийИдентификатор)); + КонецЕсли; + ВызватьИсключение ТекстОшибки; + Иначе + Обработанные.Вставить(ТекущийИдентификатор, Null); + КонецЕсли; + КонецЦикла; + + Если ИдентификаторыКонфигурации.Количество() > 0 Тогда + СтандартныеПодсистемыПовтИсп.ИдентификаторыОбъектовМетаданныхПроверкаИспользования(Истина, Ложь); + КонецЕсли; + + Если ИдентификаторыРасширений.Количество() > 0 Тогда + СтандартныеПодсистемыПовтИсп.ИдентификаторыОбъектовМетаданныхПроверкаИспользования(Истина, Истина); + КонецЕсли; + + Если ИдентификаторыКонфигурации.Количество() > 0 Или ИдентификаторыРасширений.Количество() > 0 Тогда + Попытка + ОбъектыМетаданных = ОбъектыМетаданныхПоИдентификаторамБезПопыткиПовтора(Идентификаторы, + ИдентификаторыКонфигурации, ИдентификаторыРасширений, ВызыватьИсключение); + Исключение + Если Не ОбщегоНазначения.РазделениеВключено() + Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + // В случае ошибки, если есть возможность обновления справочника, + // нужно выполнить обновление, а после этого повторить получение идентификатора. + ОбъектыМетаданных = Неопределено; + Иначе + ВызватьИсключение; + КонецЕсли; + КонецПопытки; + Иначе + ОбъектыМетаданных = Новый Соответствие; + КонецЕсли; + + Если ОбъектыМетаданных = Неопределено Тогда + ОбновитьДанныеСправочника(); + ОбъектыМетаданных = ОбъектыМетаданныхПоИдентификаторамБезПопыткиПовтора(Идентификаторы, + ИдентификаторыКонфигурации, ИдентификаторыРасширений, ВызыватьИсключение); + КонецЕсли; + + Для Каждого КлючИЗначение Из Обработанные Цикл + ОбъектыМетаданных.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЦикла; + + Возврат ОбъектыМетаданных; + +КонецФункции + +// Для функции ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора. +Функция ОбъектыМетаданныхПоИдентификаторамБезПопыткиПовтора(Идентификаторы, + ИдентификаторыКонфигурации, ИдентификаторыРасширений, ВызыватьИсключение) + + УстановитьПривилегированныйРежим(Истина); + + Запрос = Новый Запрос; + + Если ИдентификаторыКонфигурации.Количество() > 0 Тогда + Запрос.УстановитьПараметр("ИдентификаторыКонфигурации", ИдентификаторыКонфигурации); + Запрос.Текст = + "ВЫБРАТЬ + | Идентификаторы.Ссылка КАК Ссылка, + | Идентификаторы.КлючОбъектаМетаданных КАК КлючОбъектаМетаданных, + | Идентификаторы.ПолноеИмя КАК ПолноеИмя, + | Идентификаторы.Наименование КАК Представление, + | Идентификаторы.ПолноеИмя КАК ПолноеИмяКоллекции, + | Идентификаторы.ПометкаУдаления КАК ПометкаУдаления, + | ЛОЖЬ КАК ОбъектРасширений, + | """" КАК ИмяРасширения + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы + |ГДЕ + | Идентификаторы.Ссылка В(&ИдентификаторыКонфигурации)"; + КонецЕсли; + + Если ИдентификаторыРасширений.Количество() > 0 Тогда + Запрос.УстановитьПараметр("ИдентификаторыРасширений", ИдентификаторыРасширений); + Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + Если ЗначениеЗаполнено(Запрос.Текст) Тогда + Запрос.Текст = Запрос.Текст + + " + | + |ОБЪЕДИНИТЬ ВСЕ + | + |"; + КонецЕсли; + Запрос.Текст = Запрос.Текст + + "ВЫБРАТЬ + | Идентификаторы.Ссылка КАК Ссылка, + | Идентификаторы.КлючОбъектаМетаданных КАК КлючОбъектаМетаданных, + | ЕСТЬNULL(ВерсииИдентификаторов.ПолноеИмяОбъекта, """") КАК ПолноеИмя, + | Идентификаторы.Наименование КАК Представление, + | Идентификаторы.ПолноеИмя КАК ПолноеИмяКоллекции, + | Идентификаторы.ПометкаУдаления КАК ПометкаУдаления, + | ИСТИНА КАК ОбъектРасширений, + | Идентификаторы.ИмяРасширения КАК ИмяРасширения + |ИЗ + | Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК ВерсииИдентификаторов + | ПО (ВерсииИдентификаторов.Идентификатор = Идентификаторы.Ссылка) + | И (ВерсииИдентификаторов.ВерсияРасширений = &ВерсияРасширений) + |ГДЕ + | Идентификаторы.Ссылка В(&ИдентификаторыРасширений)"; + КонецЕсли; + + Выгрузка = Запрос.Выполнить().Выгрузить(); + ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору().'"); + + ОбъектыМетаданныхИдентификаторов = Новый Соответствие; + + ВсегоИдентификаторов = ИдентификаторыКонфигурации.Количество() + ИдентификаторыРасширений.Количество(); + Если Выгрузка.Количество() < ВсегоИдентификаторов Тогда + Для Каждого Идентификатор Из Идентификаторы Цикл + Если Выгрузка.Найти(Идентификатор, "Ссылка") = Неопределено Тогда + Если ВызыватьИсключение Тогда + Прервать; + Иначе + // Объект метаданных не существует. + ОбъектыМетаданныхИдентификаторов.Вставить(Идентификатор, Null); + Продолжить; + КонецЕсли; + КонецЕсли; + КонецЦикла; + Если ВызыватьИсключение Тогда + Если ИдентификаторыРасширений.Найти(Идентификатор) = Неопределено Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификатор объекта метаданных ""%1"" + |был удален из информационной базы после того, как был помечен на удаление + |в связи с тем, что объект был удален из новой версии конфигурации. + | + |Все настройки, сделанные для объекта до его удаления + |более недоступны, их следует удалить. Если позже объект + |был вновь добавлен, тогда настройки следует сделать заново.'"), + Строка(Идентификатор)); + Иначе + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификатор объекта расширений ""%1"" + |был удален из информационной базы после того, как был помечен на удаление + |в связи с тем, что было удалено расширение конфигурации с этим объектом + |или объект был удален из новой версии расширения конфигурации. + | + |Все настройки, сделанные для объекта до его удаления + |более недоступны, их следует удалить. Если позже объект + |был вновь добавлен, тогда настройки следует сделать заново.'"), + Строка(Идентификатор)); + КонецЕсли; + ВызватьИсключение ТекстОшибки; + КонецЕсли; + КонецЕсли; + + КонфигурацияБазыДанныхИзмененаДинамически = КонфигурацияБазыДанныхИзмененаДинамически(); + + // Проверка соответствия ключа объекта метаданных полному имени объекта метаданных. + Для Каждого Свойства Из Выгрузка Цикл + РезультатПроверки = КлючОбъектаМетаданныхСоответствуетПолномуИмени(Свойства); + Если РезультатПроверки.НеСоответствует Тогда + + Если РезультатПроверки.ОбъектМетаданных = Неопределено Тогда + Если ЗначениеЗаполнено(РезультатПроверки.ПредставлениеУдаленного) Тогда + ПредставлениеИдентификатора = РезультатПроверки.ПредставлениеУдаленного; + Иначе + ПредставлениеИдентификатора = Свойства.Представление; + КонецЕсли; + + Если Свойства.ОбъектРасширений Тогда + ОбъектРасширенияНеСуществует = Не Свойства.ПометкаУдаления; + ИмяРасширения = ?(СтрНачинаетсяС(Свойства.ИмяРасширения, "? "), + Сред(Свойства.ИмяРасширения, 3), Свойства.ИмяРасширения); + Отбор = Новый Структура("Имя", ИмяРасширения); + УстановленныеРасширения = РасширенияКонфигурации.Получить(Отбор, ИсточникРасширенийКонфигурации.БазаДанных); + ОтключенныеРасширения = РасширенияКонфигурации.Получить(Отбор, ИсточникРасширенийКонфигурации.СеансОтключенные); + АктивныеРасширения = РасширенияКонфигурации.Получить(Отбор, ИсточникРасширенийКонфигурации.СеансАктивные); + + Если УстановленныеРасширения.Количество() = 0 Тогда + ОбъектРасширенияНеСуществует = Истина; + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Расширение конфигурации ""%1"" удалено. + |Объект ""%2"" не существует. + |Все настройки, сделанные для расширения до его удаления, более недоступны. + |Следует выполнить настройки заново с учетом изменений.'"), + ИмяРасширения, + ПредставлениеИдентификатора); + + ИначеЕсли Не УстановленныеРасширения[0].Активно Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Расширение конфигурации ""%1"" установлено, но выключено. + |Требуется включить расширение и перезапустить сеанс.'"), + ИмяРасширения); + + ИначеЕсли ОтключенныеРасширения.Количество() > 0 И Не ОтключенныеРасширения[0].Активно + Или ОтключенныеРасширения.Количество() = 0 И АктивныеРасширения.Количество() = 0 Тогда + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Расширение конфигурации ""%1"" установлено после запуска сеанса, поэтому не подключено. + |Требуется перезапустить сеанс.'"), + ИмяРасширения); + + ИначеЕсли ОтключенныеРасширения.Количество() > 0 И ОтключенныеРасширения[0].Активно Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Расширение конфигурации ""%1"" установлено, но отключено при запуске сеанса. + |Это значит, что при его подключении возникла ошибка.'"), + ИмяРасширения); + + Иначе // АктивныеРасширения.Количество() > 0 + ОбъектРасширенияНеСуществует = Истина; + + Если РезультатПроверки.ОбъектМетаданныхУдаленного <> Неопределено + И РезультатПроверки.ОбъектМетаданныхУдаленного.РасширениеКонфигурации() <> Неопределено + И РезультатПроверки.ОбъектМетаданныхУдаленного.РасширениеКонфигурации().Имя = АктивныеРасширения[0].Имя Тогда + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Расширение конфигурации ""%1"" установлено и подключено, + |но объект ""%2"" + |не может быть получен по идентификатору помеченному на удаление. + |Обычно это значит, что расширение было удалено и установлено заново вместо обновления, + |поэтому все настройки, сделанные для расширения до его удаления, + |более недоступны и их следует сделать заново.'"), + ИмяРасширения, + ПредставлениеИдентификатора); + Иначе + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Расширение конфигурации ""%1"" установлено и подключено, + |но объект ""%2"" не существует. + |Это значит, что объект был удален в новой версии расширения. + |Объект и все настройки, сделанные до его удаления, более недоступны. + |Следует выполнить настройки заново с учетом изменений.'"), + ИмяРасширения, + ПредставлениеИдентификатора); + КонецЕсли; + КонецЕсли; + + Если ВызыватьИсключение Тогда + ВызватьИсключение ТекстОшибки; + + ИначеЕсли ОбъектРасширенияНеСуществует Тогда + ОбъектыМетаданныхИдентификаторов.Вставить(Свойства.Ссылка, Null); + Иначе + ОбъектыМетаданныхИдентификаторов.Вставить(Свойства.Ссылка, Неопределено); + Продолжить; + КонецЕсли; + + ИначеЕсли КонфигурацияБазыДанныхИзмененаДинамически Тогда + // Возможно объект метаданных будет доступен после перезапуска. + Если ВызыватьИсключение Тогда + // Стандартное исключение по причине динамического обновления. + СтандартныеПодсистемыСервер.ПотребоватьПерезапускСеансаПоПричинеДинамическогоОбновленияВерсииПрограммы(); + Иначе + ОбъектыМетаданныхИдентификаторов.Вставить(Свойства.Ссылка, Неопределено); + Продолжить; + КонецЕсли; + + ИначеЕсли Не ВызыватьИсключение Тогда + // Объект метаданных не существует. + ОбъектыМетаданныхИдентификаторов.Вставить(Свойства.Ссылка, Null); + Продолжить; + + ИначеЕсли РезультатПроверки.ОбъектМетаданныхУдаленного <> Неопределено + И РезультатПроверки.ОбъектМетаданныхУдаленного.РасширениеКонфигурации() = Неопределено Тогда + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Объект ""%1"" + |не может быть получен по идентификатору помеченному на удаление. + |Это значит, что объект был удален из конфигурации, а позже снова добавлен. + |Поэтому все настройки, сделанные для объекта до его удаления + |более недоступны и их следует сделать заново.'"), + ПредставлениеИдентификатора); + ВызватьИсключение ТекстОшибки; + Иначе + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Объект ""%1"" не существует. + |Это значит, что объект метаданных был удален в новой версии конфигурации. + |Объект и все настройки, сделанные до его удаления, более недоступны. + |Следует выполнить настройки заново с учетом изменений.'"), + ПредставлениеИдентификатора); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + ИначеЕсли КонфигурацияБазыДанныхИзмененаДинамически Тогда + // Возможно объект метаданных был переименован. + ОписаниеОшибки = ""; + Иначе + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификатору ""%1"" + |найденному в справочнике ""%2"", + |соответствует объект метаданных ""%3"", + |полное имя которого отличается от заданного в идентификаторе.'"), + Свойства.Представление, + НазваниеСправочника(Свойства.ОбъектРасширений), + РезультатПроверки.ОбъектМетаданных.ПолноеИмя()) + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(); + КонецЕсли; + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ВызватьИсключение ЗаголовокОшибки + Символы.ПС + Символы.ПС + ОписаниеОшибки; + КонецЕсли; + КонецЕсли; + + Если Не Свойства.ОбъектРасширений И Свойства.ПометкаУдаления И Не КонфигурацияБазыДанныхИзмененаДинамически Тогда + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификатор ""%1"" + |найден в справочнике ""%2"", + |но значение реквизита ""Пометка удаления"" установлено Истина.'"), + Свойства.Представление, + НазваниеСправочника(Свойства.ОбъектРасширений)); + + ВызватьИсключение ЗаголовокОшибки + Символы.ПС + Символы.ПС + ОписаниеОшибки + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(); + КонецЕсли; + + ОписаниеОбъектаМетаданных = Новый Структура("Объект, Ключ", РезультатПроверки.ОбъектМетаданных); + Если РезультатПроверки.КлючОбъектаМетаданных <> Неопределено Тогда + ОписаниеОбъектаМетаданных.Ключ = РезультатПроверки.КлючОбъектаМетаданных; + Иначе + ОписаниеОбъектаМетаданных.Ключ = Свойства.ПолноеИмя; + КонецЕсли; + ОбъектыМетаданныхИдентификаторов.Вставить(Свойства.Ссылка, ОписаниеОбъектаМетаданных); + КонецЦикла; + + Возврат ОбъектыМетаданныхИдентификаторов; + +КонецФункции + +// Для функций ОбъектыМетаданныхПоИдентификаторам, ИдентификаторыОбъектовМетаданных. +Функция КэшИдентификаторов() + + КлючДанныхПовторногоИспользования = Строка(ПараметрыСеанса.КлючДанныхПовторногоИспользования); + + Возврат СтандартныеПодсистемыПовтИсп.КэшИдентификаторовОбъектовМетаданных(КлючДанныхПовторногоИспользования); + +КонецФункции + +// Для вызова из СтандартныеПодсистемыПовтИсп.КэшИдентификаторовОбъектовМетаданных. +Функция КэшИдентификаторовОбъектовМетаданных(КлючДанныхПовторногоИспользования) Экспорт + + Хранилище = Новый Структура; + Хранилище.Вставить("ИдентификаторыПоПолнымИменам", Новый Соответствие); + Хранилище.Вставить("ОписаниеОбъектовМетаданныхПоИдентификаторам", Новый Соответствие); + + Возврат Новый ФиксированнаяСтруктура(Хранилище); + +КонецФункции + +// Для процедуры ОбработкаПолученияПредставления. +Функция ПредставлениеИдентификатора(Ссылка) Экспорт + + ОбъектыРасширений = ТипЗнч(Ссылка) <> Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных"); + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений); + + СвойстваКоллекции = СвойстваКоллекций.Найти(Ссылка.УникальныйИдентификатор(), "Идентификатор"); + Если СвойстваКоллекции <> Неопределено Тогда + Возврат СвойстваКоллекции.Синоним; + КонецЕсли; + + Если ОбъектыРасширений Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + Запрос.Текст = + "ВЫБРАТЬ + | ЕСТЬNULL(ИдентификаторыОбъектовВерсийРасширений.ПолноеИмяОбъекта, ИдентификаторыОбъектовРасширений.ПолноеИмя) КАК ПолноеИмя + |ИЗ + | Справочник.ИдентификаторыОбъектовРасширений КАК ИдентификаторыОбъектовРасширений + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК ИдентификаторыОбъектовВерсийРасширений + | ПО (ИдентификаторыОбъектовВерсийРасширений.Идентификатор = ИдентификаторыОбъектовРасширений.Ссылка) + | И (ИдентификаторыОбъектовВерсийРасширений.ВерсияРасширений = &ВерсияРасширений) + |ГДЕ + | ИдентификаторыОбъектовРасширений.Ссылка = &Ссылка"; + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + ПолноеИмя = Выборка.ПолноеИмя; + Иначе + ПолноеИмя = Неопределено; + КонецЕсли; + Иначе + ПолноеИмя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ПолноеИмя"); + КонецЕсли; + + Если ПолноеИмя = Неопределено Тогда + Возврат НСтр("ru = 'Объект не существует.'") + КонецЕсли; + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + Если ОбъектМетаданных = Неопределено Тогда + Если СтрНачинаетсяС(ПолноеИмя, "?") Тогда + Возврат "? " + СтрРазделить(ПолноеИмя, " ")[1]; + Иначе + Возврат ПолноеИмя; + КонецЕсли; + КонецЕсли; + + ПозицияТочки = СтрНайти(ПолноеИмя, "."); + ИмяБазовогоТипа = Лев(ПолноеИмя, ПозицияТочки -1); + + Отбор = Новый Структура("ИмяВЕдЧисле", ИмяБазовогоТипа); + Строки = СвойстваКоллекций.НайтиСтроки(Отбор); + + Если Строки.Количество() <> 1 Тогда + Возврат ПолноеИмя; + КонецЕсли; + + Возврат ПредставлениеОбъектаМетаданных(ОбъектМетаданных, Строки[0]); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции замены идентификатора в базе данных. + +Процедура ЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке(ТолькоПроверка, ЕстьИзменения) + + Если ОбщегоНазначения.РазделениеВключено() Тогда + // В модели сервиса не поддерживается. + Возврат; + КонецЕсли; + + Если НЕ ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + Возврат; + КонецЕсли; + + // Замена дублей в подчиненном РИБ-узле. + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Идентификаторы.Ссылка, + | Идентификаторы.НоваяСсылка + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы + |ГДЕ + | Идентификаторы.НоваяСсылка <> ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)"; + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + Если ТолькоПроверка Тогда + ЕстьИзменения = Истина; + Возврат; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + ЗаменяемыеСсылки = Новый Массив; + СтарыеИНовыеСсылки = Новый Соответствие; + Пока Выборка.Следующий() Цикл + ЗаменяемыеСсылки.Добавить(Выборка.Ссылка); + СтарыеИНовыеСсылки.Вставить(Выборка.Ссылка, Выборка.НоваяСсылка); + КонецЦикла; + + ТекущаяПопытка = 1; + Пока Истина Цикл + НайденныеДанные = НайтиПоСсылкам(ЗаменяемыеСсылки); + НайденныеДанные.Колонки[0].Имя = "Ссылка"; + НайденныеДанные.Колонки[1].Имя = "Данные"; + НайденныеДанные.Колонки[2].Имя = "Метаданные"; + НайденныеДанные.Колонки.Добавить("Включено"); + НайденныеДанные.ЗаполнитьЗначения(Истина, "Включено"); + + Если НайденныеДанные.Количество() = 0 Тогда + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ИдентификаторыОбъектовМетаданных"); + Для Каждого ЗаменяемаяСсылка Из ЗаменяемыеСсылки Цикл + ЭлементБлокировки.УстановитьЗначение("Ссылка", ЗаменяемаяСсылка); + КонецЦикла; + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + // Очистка новых ссылок у дублей идентификаторов. + Для Каждого ЗаменяемаяСсылка Из ЗаменяемыеСсылки Цикл + ОбъектДубля = ЗаменяемаяСсылка.ПолучитьОбъект(); + ОбъектДубля.НоваяСсылка = Неопределено; + ОбъектДубля.ОбменДанными.Загрузка = Истина; + ОбъектДубля.Записать(); + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + Прервать; + КонецЕсли; + + Если ТекущаяПопытка > 10 Тогда + ВызватьИсключение + НСтр("ru = 'Не удалось выполнить замену дублей идентификаторов объектов метаданных. + |После 10 попыток все еще имеются данные, которые требуют замены. + |Выполните действие в монопольном режиме.'"); + КонецЕсли; + + БезОшибок = ВыполнитьЗаменуЭлементов(СтарыеИНовыеСсылки, НайденныеДанные, Истина); + Если Не БезОшибок Тогда + ВызватьИсключение + НСтр("ru = 'Не удалось выполнить замену дублей идентификаторов объектов метаданных. + |Подробнее см. ошибки при замене идентификатора в журнале регистрации.'"); + КонецЕсли; + ТекущаяПопытка = ТекущаяПопытка + 1; + КонецЦикла; + +КонецПроцедуры + +// Функция из универсальной обработки ПоискИЗаменаЗначений. +// Изменения: +// - удалена работа с формой прогрессора; +// - удалена процедура ОбработкаПрерыванияПользователя; +// - заменено "РегистрыСведений[СтрокаТаблицы.Метаданные.Имя]" на +// "ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтрокаТаблицы.Метаданные.ПолноеИмя())". +// +Функция ВыполнитьЗаменуЭлементов(Знач Заменяемые, Знач ТаблицаСсылок, Знач ОтключатьКонтрольЗаписи = Ложь, Знач ОбъектыРасширений = Ложь) + + // АПК:1327-выкл - №783.1.4.1 Во-первых, нетранзакционная операция, так как может быть длительной. + // Во-вторых, выполняется после загрузки данных из главного узла в режиме обновление информационной базы. + // В третьих, выполняется только тогда, когда найдены дубли идентификаторов объектов метаданных (редкий случай). + Параметры = ПараметрыЗаменыЭлементов(); + + Для Каждого РегистрБухгалтерии Из Метаданные.РегистрыБухгалтерии Цикл + Параметры.Вставить(РегистрБухгалтерии.Имя + "Субконто", РегистрБухгалтерии.ПланСчетов.МаксКоличествоСубконто); + Параметры.Вставить(РегистрБухгалтерии.Имя + "Корреспонденция", РегистрБухгалтерии.Корреспонденция); + КонецЦикла; + + ОбрабатываемаяСсылка = Неопределено; + БылиИсключения = Ложь; + + Попытка + Для Каждого СтрокаТаблицы Из ТаблицаСсылок Цикл + Если Не СтрокаТаблицы.Включено Тогда + Продолжить; + КонецЕсли; + ПравильныйЭлемент = Заменяемые[СтрокаТаблицы.Ссылка]; + + Ссылка = СтрокаТаблицы.Ссылка; + + Если ОбрабатываемаяСсылка <> СтрокаТаблицы.Данные Тогда + Если ОбрабатываемаяСсылка <> Неопределено И Параметры.Объект <> Неопределено Тогда + + Попытка + Параметры.Объект.ОбменДанными.Загрузка = Истина; + Если ОтключатьКонтрольЗаписи Тогда + Параметры.Объект.ДополнительныеСвойства.Вставить("ПропуститьЗаписьВерсииОбъекта"); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Параметры.Объект, Ложь); + Иначе + Параметры.Объект.Записать(); + КонецЕсли; + Исключение + БылиИсключения = Истина; + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При записи объекта ""%1"" возникла ошибка: + |%2'"), + ПолучитьНавигационнуюСсылку(Параметры.Объект.Ссылка), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + Если ТранзакцияАктивна() Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + СообщитьОбОшибке(ТекстОшибки, ОбъектыРасширений); + КонецПопытки; + Параметры.Объект = Неопределено; + КонецЕсли; + ОбрабатываемаяСсылка = СтрокаТаблицы.Данные; + КонецЕсли; + + Если Метаданные.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда + + Если Параметры.Объект = Неопределено Тогда + Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект(); + КонецЕсли; + + Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл + Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда + Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент; + КонецЕсли; + КонецЦикла; + + Для Каждого ТабличнаяЧасть Из СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл + Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл + Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда + СтрокаТабличнойЧасти = Параметры.Объект[ТабличнаяЧасть.Имя].Найти(Ссылка, Реквизит.Имя); + Пока СтрокаТабличнойЧасти <> Неопределено Цикл + СтрокаТабличнойЧасти[Реквизит.Имя] = ПравильныйЭлемент; + СтрокаТабличнойЧасти = Параметры.Объект[ТабличнаяЧасть.Имя].Найти(Ссылка, Реквизит.Имя); + КонецЦикла; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Для Каждого Движение Из СтрокаТаблицы.Метаданные.Движения Цикл + + ЭтоДвижениеРегистраБухгалтерии = Метаданные.РегистрыБухгалтерии.Содержит(Движение); + ЕстьКорреспонденция = ЭтоДвижениеРегистраБухгалтерии И Параметры[Движение.Имя + "Корреспонденция"]; + + НаборЗаписей = Параметры.Объект.Движения[Движение.Имя]; + НаборЗаписей.Прочитать(); + НадоЗаписывать = Ложь; + ТаблицаНабора = НаборЗаписей.Выгрузить(); + + Если ТаблицаНабора.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + ИменаКолонок = Новый Массив; + + // Получим имена измерений, которые могут содержать ссылку. + Для Каждого Измерение Из Движение.Измерения Цикл + + Если Измерение.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда + + Если ЭтоДвижениеРегистраБухгалтерии Тогда + + Если Измерение.ПризнакУчета <> Неопределено Тогда + + ИменаКолонок.Добавить(Измерение.Имя + "Дт"); + ИменаКолонок.Добавить(Измерение.Имя + "Кт"); + Иначе + ИменаКолонок.Добавить(Измерение.Имя); + КонецЕсли; + Иначе + ИменаКолонок.Добавить(Измерение.Имя); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + // Получим имена ресурсов, которые могут содержать ссылку. + Если Метаданные.РегистрыСведений.Содержит(Движение) Тогда + Для Каждого Ресурс Из Движение.Ресурсы Цикл + Если Ресурс.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда + ИменаКолонок.Добавить(Ресурс.Имя); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + // Получим имена ресурсов, которые могут содержать ссылку. + Для Каждого Реквизит Из Движение.Реквизиты Цикл + Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда + ИменаКолонок.Добавить(Реквизит.Имя); + КонецЕсли; + КонецЦикла; + + // Произведем замены в таблице. + Для Каждого ИмяКолонки Из ИменаКолонок Цикл + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, ИмяКолонки); + Пока СтрокаТабЧасти <> Неопределено Цикл + СтрокаТабЧасти[ИмяКолонки] = ПравильныйЭлемент; + НадоЗаписывать = Истина; + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, ИмяКолонки); + КонецЦикла; + КонецЦикла; + + Если Метаданные.РегистрыБухгалтерии.Содержит(Движение) Тогда + + Для ИндексСубконто = 1 По Параметры[Движение.Имя + "Субконто"] Цикл + Если ЕстьКорреспонденция Тогда + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоДт"+ИндексСубконто); + Пока СтрокаТабЧасти <> Неопределено Цикл + СтрокаТабЧасти["СубконтоДт"+ИндексСубконто] = ПравильныйЭлемент; + НадоЗаписывать = Истина; + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоДт"+ИндексСубконто); + КонецЦикла; + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоКт"+ИндексСубконто); + Пока СтрокаТабЧасти <> Неопределено Цикл + СтрокаТабЧасти["СубконтоКт"+ИндексСубконто] = ПравильныйЭлемент; + НадоЗаписывать = Истина; + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоКт"+ИндексСубконто); + КонецЦикла; + Иначе + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "Субконто"+ИндексСубконто); + Пока СтрокаТабЧасти <> Неопределено Цикл + СтрокаТабЧасти["Субконто"+ИндексСубконто] = ПравильныйЭлемент; + НадоЗаписывать = Истина; + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "Субконто"+ИндексСубконто); + КонецЦикла; + КонецЕсли; + КонецЦикла; + + Если Ссылка.Метаданные() = Движение.ПланСчетов Тогда + Для Каждого СтрокаТабЧасти Из ТаблицаНабора Цикл + Если ЕстьКорреспонденция Тогда + Если СтрокаТабЧасти.СчетДт = Ссылка Тогда + СтрокаТабЧасти.СчетДт = ПравильныйЭлемент; + НадоЗаписывать = Истина; + КонецЕсли; + Если СтрокаТабЧасти.СчетКт = Ссылка Тогда + СтрокаТабЧасти.СчетКт = ПравильныйЭлемент; + НадоЗаписывать = Истина; + КонецЕсли; + Иначе + Если СтрокаТабЧасти.Счет = Ссылка Тогда + СтрокаТабЧасти.Счет = ПравильныйЭлемент; + НадоЗаписывать = Истина; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Если Метаданные.РегистрыРасчета.Содержит(Движение) Тогда + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "ВидРасчета"); + Пока СтрокаТабЧасти <> Неопределено Цикл + СтрокаТабЧасти["ВидРасчета"] = ПравильныйЭлемент; + НадоЗаписывать = Истина; + СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "ВидРасчета"); + КонецЦикла; + КонецЕсли; + + Если НадоЗаписывать Тогда + НаборЗаписей.Загрузить(ТаблицаНабора); + Попытка + Если ОтключатьКонтрольЗаписи Тогда + НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьЗаписьВерсииОбъекта"); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей, Ложь); + Иначе + НаборЗаписей.Записать(); + КонецЕсли; + Исключение + БылиИсключения = Истина; + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При записи движений объекта ""%1"" в ""%2"" возникла ошибка: + |%3'"), + ПолучитьНавигационнуюСсылку(Параметры.Объект.Ссылка), + НаборЗаписей.Метаданные().ПолноеИмя(), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + Если ТранзакцияАктивна() Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + СообщитьОбОшибке(ТекстОшибки, ОбъектыРасширений); + КонецПопытки; + КонецЕсли; + КонецЦикла; + + Для Каждого Последовательность Из Метаданные.Последовательности Цикл + Если Последовательность.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда + НадоЗаписывать = Ложь; + НаборЗаписи = Последовательности[Последовательность.Имя].СоздатьНаборЗаписей(); // ПоследовательностьНаборЗаписей + НаборЗаписи.Отбор.Регистратор.Установить(СтрокаТаблицы.Данные); + НаборЗаписи.Прочитать(); + + Если НаборЗаписи.Количество() > 0 Тогда + Для Каждого Измерение Из Последовательность.Измерения Цикл + Если Измерение.Тип.СодержитТип(ТипЗнч(Ссылка)) И НаборЗаписи[0][Измерение.Имя]=Ссылка Тогда + НаборЗаписи[0][Измерение.Имя] = ПравильныйЭлемент; + НадоЗаписывать = Истина; + КонецЕсли; + КонецЦикла; + Если НадоЗаписывать Тогда + Попытка + Если ОтключатьКонтрольЗаписи Тогда + НаборЗаписи.ДополнительныеСвойства.Вставить("ПропуститьЗаписьВерсииОбъекта"); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписи, Ложь); + Иначе + НаборЗаписи.Записать(); + КонецЕсли; + Исключение + БылиИсключения = Истина; + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При записи по регистратору ""%1"" в ""%2"" возникла ошибка: + |%3'"), + ПолучитьНавигационнуюСсылку(СтрокаТаблицы.Данные), + НаборЗаписи.Метаданные().ПолноеИмя(), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + Если ТранзакцияАктивна() Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + СообщитьОбОшибке(ТекстОшибки, ОбъектыРасширений); + КонецПопытки; + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + ИначеЕсли Метаданные.Справочники.Содержит(СтрокаТаблицы.Метаданные) Тогда + + Если Параметры.Объект = Неопределено Тогда + Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект(); + КонецЕсли; + + Если СтрокаТаблицы.Метаданные.Владельцы.Содержит(Ссылка.Метаданные()) И Параметры.Объект.Владелец = Ссылка Тогда + Параметры.Объект.Владелец = ПравильныйЭлемент; + КонецЕсли; + + Если СтрокаТаблицы.Метаданные.Иерархический И Параметры.Объект.Родитель = Ссылка Тогда + Параметры.Объект.Родитель = ПравильныйЭлемент; + КонецЕсли; + + Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл + Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда + Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент; + КонецЕсли; + КонецЦикла; + + Для Каждого ТЧ Из СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл + Для Каждого Реквизит Из ТЧ.Реквизиты Цикл + Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда + СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя); + Пока СтрокаТабЧасти <> Неопределено Цикл + СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент; + СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя); + КонецЦикла; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(СтрокаТаблицы.Метаданные) + ИЛИ Метаданные.ПланыСчетов.Содержит (СтрокаТаблицы.Метаданные) + ИЛИ Метаданные.ПланыВидовРасчета.Содержит (СтрокаТаблицы.Метаданные) + ИЛИ Метаданные.Задачи.Содержит (СтрокаТаблицы.Метаданные) + ИЛИ Метаданные.БизнесПроцессы.Содержит (СтрокаТаблицы.Метаданные) Тогда + + Если Параметры.Объект = Неопределено Тогда + Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект(); + КонецЕсли; + + Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл + Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда + Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент; + КонецЕсли; + КонецЦикла; + + Для Каждого ТЧ Из СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл + Для Каждого Реквизит Из ТЧ.Реквизиты Цикл + Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда + СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя); + Пока СтрокаТабЧасти <> Неопределено Цикл + СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент; + СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя); + КонецЦикла; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + ИначеЕсли Метаданные.Константы.Содержит(СтрокаТаблицы.Метаданные) Тогда + + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + СтрокаТаблицы.Метаданные.ПолноеИмя()).Установить(ПравильныйЭлемент); + + ИначеЕсли Метаданные.РегистрыСведений.Содержит(СтрокаТаблицы.Метаданные) Тогда + + СтруктураИзмерений = Новый Структура; + МенеджерРегистра = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтрокаТаблицы.Метаданные.ПолноеИмя()); + НаборЗаписей = МенеджерРегистра.СоздатьНаборЗаписей(); // РегистрСведенийНаборЗаписей + Для Каждого Измерение Из СтрокаТаблицы.Метаданные.Измерения Цикл + НаборЗаписей.Отбор[Измерение.Имя].Установить(СтрокаТаблицы.Данные[Измерение.Имя]); + СтруктураИзмерений.Вставить(Измерение.Имя, СтрокаТаблицы.Данные[Измерение.Имя]); + КонецЦикла; + Если СтрокаТаблицы.Метаданные.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда + НаборЗаписей.Отбор["Период"].Установить(СтрокаТаблицы.Данные.Период); + КонецЕсли; + НаборЗаписей.Прочитать(); + + Если НаборЗаписей.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + ТаблицаНабора = НаборЗаписей.Выгрузить(); + НаборЗаписей.Очистить(); + + ТекстОшибки = ""; + НачатьТранзакцию(); + Попытка + Попытка + Если ОтключатьКонтрольЗаписи Тогда + НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьЗаписьВерсииОбъекта"); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей, Ложь); + Иначе + НаборЗаписей.Записать(); + КонецЕсли; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При удалении записи ""%1"" возникла ошибка: + |%2'"), + ПолучитьНавигационнуюСсылку(МенеджерРегистра.СоздатьКлючЗаписи(СтруктураИзмерений)), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ВызватьИсключение; + КонецПопытки; + + Для Каждого Колонка Из ТаблицаНабора.Колонки Цикл + Если ТаблицаНабора[0][Колонка.Имя] = Ссылка Тогда + ТаблицаНабора[0][Колонка.Имя] = ПравильныйЭлемент; + Если СтруктураИзмерений.Свойство(Колонка.Имя) Тогда + НаборЗаписей.Отбор[Колонка.Имя].Установить(ПравильныйЭлемент); + СтруктураИзмерений[Колонка.Имя] = ПравильныйЭлемент; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + НаборЗаписей.Загрузить(ТаблицаНабора); + + Попытка + Если ОтключатьКонтрольЗаписи Тогда + НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьЗаписьВерсииОбъекта"); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей, Ложь); + Иначе + НаборЗаписей.Записать(); + КонецЕсли; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При добавлении записи ""%1"" возникла ошибка: + |%2'"), + ПолучитьНавигационнуюСсылку(МенеджерРегистра.СоздатьКлючЗаписи(СтруктураИзмерений)), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ВызватьИсключение; + КонецПопытки; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + БылиИсключения = Истина; + Если Не ЗначениеЗаполнено(ТекстОшибки) Тогда + ВызватьИсключение; + КонецЕсли; + Если ТранзакцияАктивна() Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + СообщитьОбОшибке(ТекстОшибки, ОбъектыРасширений); + КонецПопытки; + Иначе + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Значения не заменяются в данных типа: %1'"), + Строка(СтрокаТаблицы.Метаданные)); + + СообщитьОбОшибке(ТекстОшибки, ОбъектыРасширений); + КонецЕсли; + КонецЦикла; + + Если Параметры.Объект <> Неопределено Тогда + Попытка + Если ОтключатьКонтрольЗаписи Тогда + Параметры.Объект.ДополнительныеСвойства.Вставить("ПропуститьЗаписьВерсииОбъекта"); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Параметры.Объект, Ложь); + Иначе + Параметры.Объект.Записать(); + КонецЕсли; + Исключение + БылиИсключения = Истина; + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При записи объекта ""%1"" возникла ошибка: + |%2'"), + ПолучитьНавигационнуюСсылку(Параметры.Объект.Ссылка), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + Если ТранзакцияАктивна() Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + СообщитьОбОшибке(ТекстОшибки, ОбъектыРасширений); + КонецПопытки; + КонецЕсли; + + Исключение + БылиИсключения = Истина; + ВызватьИсключение; + КонецПопытки; + + Возврат Не БылиИсключения; + // АПК:1327-вкл. + +КонецФункции + +// Возвращаемое значение: +// Структура: +// * Объект - СправочникОбъект +// - Неопределено +// +Функция ПараметрыЗаменыЭлементов() + + Параметры = Новый Структура; + Параметры.Вставить("Объект", Неопределено); + Возврат Параметры; + +КонецФункции + + +// Процедура из универсальной обработки ПоискИЗаменаЗначений. +// Изменения: +// - заменен метод Сообщить(...) на ЗаписьЖурналаРегистрации(...). +// +Процедура СообщитьОбОшибке(Знач Описание, ОбъектыРасширений) + + ЗаписьЖурналаРегистрации( + ?(ОбъектыРасширений, + НСтр("ru = 'Идентификаторы объектов расширений.Замена идентификатора'", + ОбщегоНазначения.КодОсновногоЯзыка()), + НСтр("ru = 'Идентификаторы объектов метаданных.Замена идентификатора'", + ОбщегоНазначения.КодОсновногоЯзыка())), + УровеньЖурналаРегистрации.Ошибка, + , + , + Описание, + РежимТранзакцииЗаписиЖурналаРегистрации.Независимая); + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" new file mode 100644 index 00000000..f6584360 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" @@ -0,0 +1,31 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + // Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре. + Справочники.ИдентификаторыОбъектовМетаданных.ПередЗаписьюОбъекта(ЭтотОбъект); + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + + // Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре. + Справочники.ИдентификаторыОбъектовМетаданных.ПередУдалениемОбъекта(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.mdo" new file mode 100644 index 00000000..dafab539 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.mdo" @@ -0,0 +1,1499 @@ + + + + + + + + + + ИдентификаторыОбъектовМетаданных + + ru + Идентификаторы объектов метаданных + + АПК:304 - №697.1.2 Обновление предопределенных данных вместо Авто требуется установить Не обновлять автоматически, так как предопределенные элементы сопоставляются с данными программно + Catalog.ИдентификаторыОбъектовМетаданных.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + ru + Ссылка на объект метаданных в информационной базе + + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа объектов + + + ru + Группа объектов метаданных. + + true + + Catalog.ИдентификаторыОбъектовМетаданных.EmptyRef + + Use + + + + + Use + Description + + ru + Представление + + + ru + Сохраняемое представление идентификатора объекта метаданных + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + + + ru + + + Managed + + ru + Идентификатор объекта метаданных + + + ru + Идентификаторы объектов метаданных для использования в информационной базе. + + true + HierarchyOfItems + 2 + true + 150 + String + Variable + AsDescription + + + РегистрСведенийНастройкиВариантовОтчетов + + + + + + РегистрСведенийДанныеБизнесПроцессов + + + + + + РегистрСведенийДополнительныеСведения + + + + + + РегистрСведенийИсполнителиЗадач + + + + + + РегистрСведенийНапоминанияПользователя + + + + + + РегистрСведенийНастройкиУчетныхЗаписейЭлектроннойПочты + + + + + + РегистрСведенийПредметыПапкиВзаимодействий + + + + + + РегистрСведенийАдресныеОбъекты + + + + + + РегистрСведенийБезопасноеХранилищеДанных + + + + + + РегистрСведенийБезопасноеХранилищеДанныхОбластейДанных + + + + + + РегистрСведенийБлокировкиСеансовОбластейДанных + + + + + + РегистрСведенийБуферОперацийСтатистики + + + + + + РегистрСведенийВерсииКлассификаторов + + + + + + РегистрСведенийВерсииКлассификаторовОбластейДанных + + + + + + РегистрСведенийВерсииОбъектов + + + + + + РегистрСведенийВерсииПодсистем + + + + + + РегистрСведенийВерсииПодсистемОбластейДанных + + + + + + РегистрСведенийГруппыЗначенийДоступа + + + + + + РегистрСведенийДампыПлатформы + + + + + + РегистрСведенийДанныеОбработанныеВЦентральномУзлеРИБ + + + + + + РегистрСведенийДанныеОбъектовДляРегистрацииВОбменах + + + + + + РегистрСведенийДанныеПроизводственногоКалендаря + + + + + + РегистрСведенийДатыЗапретаИзменения + + + + + + РегистрСведенийДатыПоследнейЗагрузкиПочтовыхСообщений + + + + + + РегистрСведенийДвоичныеДанныеФайлов + + + + + + РегистрСведенийДомаЗданияСтроения + + + + + + РегистрСведенийДополнительныеАдресныеСведения + + + + + + РегистрСведенийЗаблокированныеДляПолученияУчетныеЗаписи + + + + + + РегистрСведенийЗависимостиПравДоступа + + + + + + РегистрСведенийЗагруженныеВерсииАдресныхСведений + + + + + + РегистрСведенийЗамерыВремени + + + + + + РегистрСведенийЗамерыВремениТехнологические + + + + + + РегистрСведенийЗамерыКомментарииСтатистики + + + + + + РегистрСведенийЗамерыОбластиСтатистики + + + + + + РегистрСведенийЗамерыОперацииСтатистики + + + + + + РегистрСведенийЗамерыСтатистики + + + + + + РегистрСведенийЗапросыРазрешенийНаИспользованиеВнешнихРесурсов + + + + + + РегистрСведенийЗапросыРазрешенийНаИспользованиеВнешнихРесурсовВМоделиСервиса + + + + + + РегистрСведенийЗапросыРазрешенийНаИспользованиеВнешнихРесурсовОбластейДанных + + + + + + РегистрСведенийЗемельныеУчастки + + + + + + РегистрСведенийЗначенияГруппДоступа + + + + + + РегистрСведенийЗначенияГруппДоступаПоУмолчанию + + + + + + РегистрСведенийИдентификаторыЗапросовНаПодключение + + + + + + РегистрСведенийИдентификаторыОбъектовВерсийРасширений + + + + + + РегистрСведенийИдентификаторыПолученныхЭлектронныхПисем + + + + + + РегистрСведенийИзмененияОбщихДанныхУзлов + + + + + + РегистрСведенийИспользованиеДополнительныхОтчетовИОбработокСервисаВАвтономномРабочемМесте + + + + + + РегистрСведенийИспользованиеПоставляемыхДополнительныхОтчетовИОбработокВОбластяхДанных + + + + + + РегистрСведенийИспользованиеПоставляемыхРасширенийВОбластяхДанных + + + + + + РегистрСведенийИсторияАдресныхОбъектов + + + + + + РегистрСведенийКалендарныеГрафики + + + + + + РегистрСведенийКлючиДоступаВнешнихПользователей + + + + + + РегистрСведенийКлючиДоступаГруппДоступа + + + + + + РегистрСведенийКлючиДоступаКОбъектам + + + + + + РегистрСведенийКлючиДоступаКРегистрам + + + + + + РегистрСведенийКлючиДоступаКРегиструРезультатыПроверкиУчета + + + + + + РегистрСведенийКлючиДоступаНаборовГруппДоступа + + + + + + РегистрСведенийКлючиДоступаПользователей + + + + + + РегистрСведенийКодировкиФайлов + + + + + + РегистрСведенийКомментарииОперацииСтатистики + + + + + + РегистрСведенийКомментарииСтатистики + + + + + + РегистрСведенийКонтактыВзаимодействий + + + + + + РегистрСведенийКурсыВалют + + + + + + РегистрСведенийКэшПрограммныхИнтерфейсов + + + + + + РегистрСведенийКэшТестовыхПериодов + + + + + + РегистрСведенийНаборыЗначенийДоступа + + + + + + РегистрСведенийНазначениеДополнительныхОбработок + + + + + + РегистрСведенийНаличиеФайлов + + + + + + РегистрСведенийНаследованиеНастроекПравОбъектов + + + + + + РегистрСведенийНастройкиВерсионированияОбъектов + + + + + + РегистрСведенийНастройкиКомандПечати + + + + + + РегистрСведенийНастройкиОбменаДаннымиXDTO + + + + + + РегистрСведенийНастройкиОтправителя + + + + + + РегистрСведенийНастройкиОчисткиФайлов + + + + + + РегистрСведенийНастройкиПравОбъектов + + + + + + РегистрСведенийНастройкиСинхронизацииФайлов + + + + + + РегистрСведенийНастройкиТранспортаОбменаДанными + + + + + + РегистрСведенийНастройкиТранспортаОбменаОбластейДанных + + + + + + РегистрСведенийНастройкиТранспортаОбменаОбластиДанных + + + + + + РегистрСведенийНастройкиТранспортаОбменаСообщениями + + + + + + РегистрСведенийНепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма + + + + + + РегистрСведенийНеразделенныеПользователи + + + + + + РегистрСведенийНомераОтсканированныхФайлов + + + + + + РегистрСведенийОбластиДанных + + + + + + РегистрСведенийОбластиПерсональныхДанных + + + + + + РегистрСведенийОбластиСтатистики + + + + + + РегистрСведенийОбновлениеКлючейДоступаКДанным + + + + + + РегистрСведенийОбновлениеКлючейДоступаПользователей + + + + + + РегистрСведенийОбработчикиСобытийСинхронизацииДанных + + + + + + РегистрСведенийОбщиеНастройкиУзловИнформационныхБаз + + + + + + РегистрСведенийОперацииСтатистики + + + + + + РегистрСведенийОриентирыАдресныхОбъектов + + + + + + РегистрСведенийОтветыНаВопросыАнкет + + + + + + РегистрСведенийОчередьИзвлеченияТекста + + + + + + РегистрСведенийОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных + + + + + + РегистрСведенийОчередьИнсталляцииПоставляемыхРасширенийВОбластиДанных + + + + + + РегистрСведенийПакетыДляОтправки + + + + + + РегистрСведенийПакетыИнформацииПриЗапуске + + + + + + РегистрСведенийПараметрыОграниченияДоступа + + + + + + РегистрСведенийПараметрыРаботыВерсийРасширений + + + + + + РегистрСведенийПараметрыРаботыПрограммы + + + + + + РегистрСведенийПодпискиПолучателей + + + + + + РегистрСведенийПользовательскиеМакетыПечати + + + + + + РегистрСведенийПользовательскиеНастройкиДоступаКОбработкам + + + + + + РегистрСведенийПоставляемыеДанныеТребующиеОбработки + + + + + + РегистрСведенийПоставляемыеМакетыПечати + + + + + + РегистрСведенийПраваРолей + + + + + + РегистрСведенийПравилаДляОбменаДанными + + + + + + РегистрСведенийПредопределенныеВариантыОтчетовВерсийРасширений + + + + + + РегистрСведенийПрименениеРазрешенийНаИспользованиеВнешнихРесурсовВМоделиСервиса + + + + + + РегистрСведенийПрименениеРазрешенийНаИспользованиеВнешнихРесурсовОбластейДанных + + + + + + РегистрСведенийПричиныИзмененияАдресныхСведений + + + + + + РегистрСведенийПроцессыДляЗапуска + + + + + + РегистрСведенийПсевдонимыПредопределенныхУзлов + + + + + + РегистрСведенийПубличныеИдентификаторыСинхронизируемыхОбъектов + + + + + + РегистрСведенийПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux + + + + + + РегистрСведенийРабочиеКаталогиФайлов + + + + + + РегистрСведенийРазрешенияНаИспользованиеВнешнихРесурсов + + + + + + РегистрСведенийРазрешенияНаИспользованиеВнешнихРесурсовВМоделиСервиса + + + + + + РегистрСведенийРазрешенияНаИспользованиеВнешнихРесурсовОбластейДанных + + + + + + РегистрСведенийРежимыПодключенияВнешнихМодулей + + + + + + РегистрСведенийРежимыПодключенияВнешнихМодулейВМоделиСервиса + + + + + + РегистрСведенийРежимыПодключенияВнешнихМодулейОбластейДанных + + + + + + РегистрСведенийРезультатыОбменаДанными + + + + + + РегистрСведенийРезультатыПроверкиУчета + + + + + + РегистрСведенийРейтингАктивностиОбластейДанных + + + + + + РегистрСведенийРучныеИзмененияГрафиковРаботы + + + + + + РегистрСведенийСведенияОПользователях + + + + + + РегистрСведенийСведенияОФайлах + + + + + + РегистрСведенийСертификатыШифрования + + + + + + РегистрСведенийСессииОбменаСообщениямиСистемы + + + + + + РегистрСведенийСклоненияПредставленийОбъектов + + + + + + РегистрСведенийСлужебныеАдресныеСведения + + + + + + РегистрСведенийСогласияНаОбработкуПерсональныхДанных + + + + + + РегистрСведенийСообщенияОбменаДанными + + + + + + РегистрСведенийСообщенияОбменаДаннымиОбластейДанных + + + + + + РегистрСведенийСоответствияОбъектовИнформационныхБаз + + + + + + РегистрСведенийСоставыГруппПользователей + + + + + + РегистрСведенийСостоянияКонтактовВзаимодействий + + + + + + РегистрСведенийСостоянияОбменовДанными + + + + + + РегистрСведенийСостоянияОбменовДаннымиОбластейДанных + + + + + + РегистрСведенийСостоянияПапокПисем + + + + + + РегистрСведенийСостоянияПредметовВзаимодействий + + + + + + РегистрСведенийСостоянияРассылокОтчетов + + + + + + РегистрСведенийСостоянияУспешныхОбменовДанными + + + + + + РегистрСведенийСостоянияУспешныхОбменовДаннымиОбластейДанных + + + + + + РегистрСведенийСтатистикаКонфигурации + + + + + + РегистрСведенийСтатусыСинхронизацииФайловСОблачнымСервисом + + + + + + РегистрСведенийСубъектыДляСкрытияПерсональныхДанных + + + + + + РегистрСведенийТаблицыГруппДоступа + + + + + + РегистрСведенийУведомленияОПрочтении + + + + + + РегистрСведенийУровниСокращенийАдресныхСведений + + + + + + РегистрСведенийФайлыВРабочемКаталоге + + + + + + РегистрСведенийХранилищеСертификатов + + + + + + РегистрСведенийЭлектронныеПодписи + + + + + + РегистрСведенийВременныеИдентификаторыЗапросов + + + + + + РегистрСведенийДоступныеЛицензии + + + + + + РегистрСведенийЗанятыеЛицензии + + + + + + РегистрСведенийИнцидентыОткрытые + + + + + + РегистрСведенийИнцидентыОтложенныеПроверки + + + + + + РегистрСведенийМиграцияПриложенийОчередьЗагрузки + + + + + + РегистрСведенийМиграцияПриложенийСостояниеВыгрузки + + + + + + РегистрСведенийМиграцияПриложенийСостояниеЗагрузки + + + + + + РегистрСведенийНастройкиУчетныхСистем + + + + + + РегистрСведенийОбъектыКОтправке + + + + + + РегистрСведенийПросмотренныеДанныеИнформационногоЦентра + + + + + + РегистрСведенийСвойстваЗаданий + + + + + + РегистрСведенийСостоянияИнтеграцииОбъектов + + + + + + РегистрСведенийФайлыОбластейДанных + + + + + + РегистрСведенийОграничениеСкоростиОтсылкиИнцидентов + + + + + + РегистрСведенийЗапущенныеОбработчикиОчередиЗаданий + + + + + + РегистрСведенийКэшДанныхКлассификаторов + + + + + + РегистрСведенийНеудаленныеОбъекты + + + + + + РегистрСведенийОбновлениеКлючейДоступаТекущиеЗадания + + + + + + РегистрСведенийОбщиеПоставляемыеМакетыПечати + + + + + + РегистрСведенийОчередьОбновляемыхПоставляемыхРасширенийВОбластяхДанных + + + + + + РегистрСведенийОчередьРасширенийДляОповещений + + + + + + РегистрСведенийПоставляемыеДанныеТребующиеОбработкиВОбластях + + + + + + РегистрСведенийСвязиАдресныхОбъектов + + + + + + РегистрСведенийСостоянияПроверокВеденияУчета + + + + + + РегистрСведенийУдаляемыеОбъекты + + + + + + РегистрСведенийПериодыНерабочихДнейКалендаря + + + + + + РегистрСведенийОбработчикиОбновления + + + + + + РегистрСведенийОбработчикиОбновленияОбщихДанных + + + + + + РегистрСведенийПотокиОбновления + + + + + + РегистрСведенийСостоянияОригиналовПервичныхДокументов + + + + + + DontAutoUpdate + InDialog + BothWays + Catalog.ИдентификаторыОбъектовМетаданных.Form.ФормаЭлемента + Catalog.ИдентификаторыОбъектовМетаданных.Form.ФормаСписка + Catalog.ИдентификаторыОбъектовМетаданных.Form.ФормаСписка + + ПорядокКоллекции + + ru + Порядок коллекции + + + Number + + 2 + true + + + + ru + Порядок коллекции объекта метаданных, +используемый для сортировки в отчетах, +например, коллекция "Справочники" +перед коллекцией "Документы" + + + + + IndexWithAdditionalOrder + Use + + + Имя + + ru + Имя + + Например, "ОбъектыАдресацииЗадач" + + String + + 255 + + + + ru + Имя объекта метаданных + + + + + + + Use + Use + + + Синоним + + ru + Синоним + + + String + + 255 + + + + ru + Синоним объекта метаданных, +например, "Объекты адресации задач" + + + + + + + Use + Use + + + ПолноеИмя + + ru + Полное имя + + Например, "ПланВидовХарактеристик.ОбъектыАдресацииЗадач" + + String + + 430 + + + + ru + Полное имя объекта метаданных + + + + + + + Index + Use + Use + + + ПолныйСиноним + + ru + Полный синоним + + + String + + 430 + + + + ru + Полный синоним объекта метаданных, +например, "Планы видов характеристик. Объекты адресации задач" + + + + + + + Use + Use + + + БезДанных + + ru + Без данных + + + Boolean + + + ru + Объект метаданных не имеет таблиц данных + + + + + Use + + + ЗначениеПустойСсылки + + ru + Значение пустой ссылки + + АПК:1330 - №728.2.1 Допустимо использование универсального ссылочного типа, так как это универсальный механизм и мало данных + + ExchangePlanRef + BusinessProcessRef + DocumentRef + ChartOfCalculationTypesRef + TaskRef + ChartOfCharacteristicTypesRef + ChartOfAccountsRef + CatalogRef + + + ru + Для ссылочных типов объектов метаданных +содержит пустую ссылку своего типа, +для остальных - Неопределено +(в форме показано представление +типа значения пустой ссылки) + + + + + Index + Use + + + КлючОбъектаМетаданных + + ru + Ключ объекта метаданных + + + ValueStorage + + + ru + Хранилище ключа по которому определяется объект метаданных без использования полного имени + + + + + Use + + + НоваяСсылка + + ru + Новая ссылка + + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Используется при обработке дублей идентификаторов подчиненного узла распределенной информационной базы. + + + + + Use + + + ФормаСписка + + ru + Форма списка + + АПК:149 - #std702,1 Поле Ссылка используется вместо поля Наименование для динамического представления на разных языках + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..95fad8d3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1014 @@ + + + + ГруппаПользовательскихНастроек + 21 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 23 + + ФормаВыбрать + 72 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаИзменить + 34 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаОбновить + 36 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Refresh + Auto + true + true + UserCmds + Auto + + + ФормаРежимПросмотра + 70 + + ФормаИерархическийСписок + 38 + true + true + + true + + + ФормаИерархическийСписокРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.HierarchicalList + Auto + true + true + UserCmds + Auto + + + ФормаСписок + 40 + true + true + + true + + + ФормаСписокРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.List + Auto + true + true + UserCmds + Auto + + + ФормаДерево + 42 + true + true + + true + + + ФормаДеревоРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Tree + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Режим просмотра</value> + + + ФормаРежимПросмотраРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.ListViewMode + + Auto + + + + ФормаНайти + 52 + true + true + + true + + + ФормаНайтиРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ФормаОтменитьПоиск + 54 + true + true + + true + + + ФормаОтменитьПоискРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ФормаНастройкаСписка + 56 + true + true + + true + + + ФормаНастройкаСпискаРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ListSettings + Auto + true + true + UserCmds + Auto + + + ФормаЗагрузитьНастройкиДинамическогоСписка + 64 + true + true + + true + + + ФормаЗагрузитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.LoadDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьНастройкиДинамическогоСписка + 66 + true + true + + true + + + ФормаСохранитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SaveDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСтандартныеНастройкиДинамическогоСписка + 68 + true + true + + true + + + ФормаСтандартныеНастройкиДинамическогоСпискаРасширеннаяПодсказка + 69 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.DynamicListStandardSettings + Auto + true + true + UserCmds + Auto + + + ФормаВывестиСписок + 58 + true + true + + true + + + ФормаВывестиСписокРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + + ФормаИзменитьФорму + 62 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 60 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + СписокСсылка + 18 + true + true + + true + + + + Список.Ref + + + + СписокСсылкаРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 19 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокСиноним + 4 + + <key>ru</key> + <value>Синоним</value> + + true + true + + + + Список.Синоним + + + true + + СписокСинонимРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокСинонимКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокПолноеИмя + 13 + true + true + + + + Список.ПолноеИмя + + + + СписокПолноеИмяРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + СписокПолноеИмяКонтекстноеМеню + 14 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + ValueChoice + СписокВыборЗначения + + + true + true + + true + + СписокSearchString + 25 + + СписокSearchStringExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 26 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 28 + + СписокViewStatusExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 29 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 31 + + СписокSearchControlExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 32 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.DeletionMark + + + Список.Description + + + Список.Parent + + + Список.Ref + + + Список.Имя + + + Список.ПометкаБудущегоУдаления + +
true
+ + ВЫБРАТЬ + Идентификаторы.Ссылка, + Идентификаторы.ВерсияДанных, + Идентификаторы.ПометкаУдаления, + ВЫБОР + КОГДА ПОДСТРОКА(Идентификаторы.Имя, 0, 7) = "Удалить" + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ПометкаБудущегоУдаления, + Идентификаторы.Предопределенный, + Идентификаторы.Родитель, + Идентификаторы.Наименование, + Идентификаторы.ПорядокКоллекции, + Идентификаторы.Имя, + Идентификаторы.Синоним, + Идентификаторы.ПолноеИмя, + Идентификаторы.ПолныйСиноним, + Идентификаторы.БезДанных, + Идентификаторы.ЗначениеПустойСсылки, + Идентификаторы.КлючОбъектаМетаданных +ИЗ + Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы + Catalog.ИдентификаторыОбъектовРасширений + true + true + true + true + true + +
+ + ВыбиратьГруппыОбъектовМетаданных + 2 + + Boolean + + + true + + + true + + + + ВыбиратьГруппыОбъектовМетаданных + + Boolean + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..12796094 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,30 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Справочники.ИдентификаторыОбъектовМетаданных.ФормаСпискаПриСозданииНаСервере(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + СтандартныеПодсистемыКлиент.ИдентификаторыОбъектовМетаданныхФормаСпискаСписокВыборЗначения(ЭтотОбъект, + Элемент, Значение, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..d544f295 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1084 @@ + + + + Ссылка + 62 + true + true + + true + + + + Объект.Ref + + + + ru + Вычисляемое представление идентификатора объекта расширения + + + СсылкаРасширеннаяПодсказка + 64 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 63 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 60 + true + true + true + false + false + true + true + true + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + true + + НаименованиеExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + 60 + true + false + true + true + true + true + + + + ИмяРасширения + 59 + true + true + + + + Объект.ИмяРасширения + + + + ИмяРасширенияРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + ИмяРасширенияКонтекстноеМеню + 60 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 60 + true + false + true + true + true + true + + + + ИмяИСинонимОбъектаМетаданных + 24 + + Имя + 11 + true + true + + true + + + + Объект.Имя + + + true + + ИмяExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + ИмяКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 60 + true + false + true + true + true + true + + + + Синоним + 13 + true + true + + true + + + + Объект.Синоним + + + true + + СинонимExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + СинонимКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 60 + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Имя и синоним объекта метаданных</value> + + + ИмяИСинонимОбъектаМетаданныхExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + + + + ПолноеИмяИПолныйСинонимОбъектаМетаданных + 25 + + ПолноеИмя + 15 + true + true + + true + + + + Объект.ПолноеИмя + + + + OnChange + ПолноеИмяПриИзменении + + + ПолноеИмяExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + ПолноеИмяКонтекстноеМеню + 16 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 60 + true + false + true + true + true + true + + + + ПолныйСиноним + 3 + + <key>ru</key> + <value>Полный синоним</value> + + true + true + + true + + + + Объект.ПолныйСиноним + + + true + + ПолныйСинонимExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + ПолныйСинонимКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + 60 + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Полное имя и полный синоним объекта метаданных</value> + + + ПолноеИмяИПолныйСинонимОбъектаМетаданныхExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ПрочиеСвойства + 26 + + ПорядокКоллекции + 9 + true + true + + + + Объект.ПорядокКоллекции + + + true + + ПорядокКоллекцииExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + + ПорядокКоллекцииКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + БезДанных + 19 + true + true + + + + Объект.БезДанных + + + true + Right + + БезДанныхExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + БезДанныхКонтекстноеМеню + 20 + true + true + + true + + true + + CheckBoxField + true + Enter + true + Left + true + + + + ПустаяСсылкаПредставление + 21 + true + true + + + + ПустаяСсылкаПредставление + + + true + + ru + Для ссылочных типов объектов метаданных +содержит пустую ссылку своего типа, +для остальных - Неопределено +(в форме показано представление +типа значения пустой ссылки) + + + ПустаяСсылкаПредставлениеExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + ПустаяСсылкаПредставлениеКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + НоваяСсылка + 30 + true + true + + + + Объект.НоваяСсылка + + + + НоваяСсылкаExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + + НоваяСсылкаКонтекстноеМеню + 31 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Прочее</value> + + + ПрочиеСвойстваExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 45 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.WriteAndClose + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 47 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Auto + true + true + UserCmds + Auto + + + ФормаПеречитать + 49 + true + true + + true + + + ФормаПеречитатьРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Reread + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьПометкуУдаления + 51 + true + true + + true + + + ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ФормаПоказатьВСписке + 53 + true + true + + true + + + ФормаПоказатьВСпискеРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ShowInList + Auto + true + true + UserCmds + Auto + + + ФормаВключитьВозможностьРедактирования + 29 + true + true + + true + + + ФормаВключитьВозможностьРедактированияExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаИзменитьФорму + 55 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 57 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ИдентификаторыОбъектовРасширений + + + true + + + true + +
true
+ true +
+ + ПустаяСсылкаПредставление + + <key>ru</key> + <value>Значение пустой ссылки</value> + + 2 + + String + + + + true + + + true + + + + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + InformationRegister.НастройкиВерсионированияОбъектов.StandardCommand.OpenByValue.ТипОбъекта + + + + CommonCommand.МоиЗаметкиПоПредмету + + + + InformationRegister.НазначениеДополнительныхОбработок.StandardCommand.OpenByValue.ОбъектНазначения + + + + 0:e7d51ada-f286-4519-bfae-ece95dd4d7b0 + + + + CommonCommand.РолиИИсполнителиЗадач + + + + CommonCommand.ИсторияИзменений + + + + + + Catalog.ВнешниеПользователи.Command.ВнешнийДоступ + + + + 0:fef727fa-f63b-4467-9367-73a2425b19e3 + + + + 0:bfa90848-930f-433d-8f6f-c11ac2c5eba2 + + + + CommonCommand.СозданиеСвязанныхОбъектов + + + + CommonCommand.СоздатьЗаметкуПоПредмету + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..e64ef340 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,9 @@ + +

Просмотр свойств идентификатора объекта метаданных расширений.

+

Заполняется автоматически при первом запуске (и каждом обновлении) конфигурации, согласно метаданным конфигурации, а также автоматически актуализируется при каждом обновлении версии конфигурации (учитываются переименованные, добавленные и удаленные объекты метаданных).

+

Выводятся сведения:

+
  • Представление; +
  • Имя; +
  • Синоним; +
  • Полное имя; +
  • Полный синоним.
\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..ea5c6a2a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,57 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Справочники.ИдентификаторыОбъектовМетаданных.ФормаЭлементаПриСозданииНаСервере(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + Элементы.ФормаВключитьВозможностьРедактирования.Доступность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПолноеИмяПриИзменении(Элемент) + + ПолноеИмя = Объект.ПолноеИмя; + ОбновитьСвойстваИдентификатора(); + + Если ПолноеИмя <> Объект.ПолноеИмя Тогда + Объект.ПолноеИмя = ПолноеИмя; + ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Объект метаданных не найден по полному имени: + |%1.'"), + ПолноеИмя)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбновитьСвойстваИдентификатора() + + Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьСвойстваИдентификатора(Объект); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Help/ru.html" new file mode 100644 index 00000000..2bebc2ad --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/Help/ru.html" @@ -0,0 +1,7 @@ + +

Предназначен для хранения и просмотра идентификаторов объектов метаданных расширений. Данные списка не редактируются, предназначены для обеспечения работы программы.

+

Список заполняется автоматически при первом запуске (и каждом обновлении) конфигурации, при добавлении и удалении расширений, а также по требованию (обращение из кода). Заполнение выполняется согласно метаданным расширений, а также автоматически актуализируется при каждом обновлении (учитываются переименованные, добавленные и удаленные объекты метаданных).

+

В списке в виде дерева выводятся все объекты программы, сгруппированные по типам. По умолчанию выводится поле Синоним объекта. По команде Еще - Изменить форму можно добавить в список поля Полное имя и Идентификатор.

+

Нажмите  для просмотра подробных сведений об идентификаторе выбранного объекта.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..84f3f6c8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" @@ -0,0 +1,196 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат Справочники.ИдентификаторыОбъектовМетаданных.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Возвращает реквизиты справочника, которые образуют естественный ключ для элементов справочника. +// +// Возвращаемое значение: +// Массив из Строка - массив имен реквизитов, образующих естественный ключ. +// +Функция ПоляЕстественногоКлюча() Экспорт + + Возврат Справочники.ИдентификаторыОбъектовМетаданных.ПоляЕстественногоКлюча(); + +КонецФункции + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + + Справочники.ИдентификаторыОбъектовМетаданных.ОбработкаПолученияПолейПредставления(Поля, + СтандартнаяОбработка); + +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + + Справочники.ИдентификаторыОбъектовМетаданных.ОбработкаПолученияПредставления(Данные, + Представление, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ПолныеИменаТаблицСДанными() Экспорт + + Таблицы = Новый Массив; + + Если Не ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) Тогда + Возврат Таблицы; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК ВерсииИдентификаторов + |ГДЕ + | ВерсииИдентификаторов.ВерсияРасширений = &ВерсияРасширений + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВерсииИдентификаторов.ПолноеИмяОбъекта КАК ПолноеИмяОбъекта + |ИЗ + | РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК ВерсииИдентификаторов + |ГДЕ + | ВерсииИдентификаторов.ВерсияРасширений = &ВерсияРасширений + | И ВерсииИдентификаторов.Идентификатор.БезДанных = ЛОЖЬ"; + + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + + Если РезультатыЗапроса[0].Пустой() Тогда + Справочники.ИдентификаторыОбъектовМетаданных.ДанныеОбновлены(Истина, Истина); + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + КонецЕсли; + + Возврат РезультатыЗапроса[1].Выгрузить().ВыгрузитьКолонку("ПолноеИмяОбъекта"); + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Процедура обновляет данные справочника по метаданным конфигурации. +// +// Параметры: +// ЕстьИзменения - Булево - (возвращаемое значение) в этот параметр возвращается +// значение Истина, если производилась запись, иначе не изменяется. +// +// ЕстьУдаленные - Булево - (возвращаемое значение) в этот параметр возвращается +// значение Истина, если хотя бы один элемент справочника был помечен +// на удаление, иначе не изменяется. +// +// ТолькоПроверка - Булево - не производить никаких изменений, а лишь выполнить +// установку флажков ЕстьИзменения, ЕстьУдаленные. +// +Процедура ОбновитьДанныеСправочника(ЕстьИзменения = Ложь, ЕстьУдаленные = Ложь, ТолькоПроверка = Ложь) Экспорт + + Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(ЕстьИзменения, + ЕстьУдаленные, ТолькоПроверка, , , Истина); + +КонецПроцедуры + +// Возвращает Истина, если объект метаданных, которому соответствует +// идентификатор объектов расширений существует в справочнике и +// не помечен на удаление, но отсутствует в кэше метаданных расширений. +// +// Параметры: +// Идентификатор - СправочникСсылка.ИдентификаторыОбъектовРасширений - идентификатор +// объекта метаданных расширения. +// +// Возвращаемое значение: +// Булево - Истина, если отключен. +// +Функция ОбъектРасширенияОтключен(Идентификатор) Экспорт + + СтандартныеПодсистемыПовтИсп.ИдентификаторыОбъектовМетаданныхПроверкаИспользования(Истина, Истина); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Идентификатор); + Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы + |ГДЕ + | Идентификаторы.Ссылка = &Ссылка + | И НЕ Идентификаторы.ПометкаУдаления + | И НЕ ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК ВерсииИдентификаторов + | ГДЕ + | ВерсииИдентификаторов.Идентификатор = Идентификаторы.Ссылка + | И ВерсииИдентификаторов.ВерсияРасширений = &ВерсияРасширений)"; + + Возврат Не Запрос.Выполнить().Пустой(); + +КонецФункции + +// Только для внутреннего использования. +Функция ИдентификаторыОбъектовТекущейВерсииРасширенийЗаполнены() Экспорт + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК ВерсииИдентификаторов + |ГДЕ + | ВерсииИдентификаторов.ВерсияРасширений = &ВерсияРасширений"; + + Возврат Не Запрос.Выполнить().Пустой(); + +КонецФункции + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..f6584360 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" @@ -0,0 +1,31 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + // Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре. + Справочники.ИдентификаторыОбъектовМетаданных.ПередЗаписьюОбъекта(ЭтотОбъект); + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + + // Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре. + Справочники.ИдентификаторыОбъектовМетаданных.ПередУдалениемОбъекта(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" new file mode 100644 index 00000000..74c03dd1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\321\213\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" @@ -0,0 +1,425 @@ + + + + + + + + + + ИдентификаторыОбъектовРасширений + + ru + Идентификаторы объектов расширений + + АПК:304 - №697.1.2 Обновление предопределенных данных вместо Авто требуется установить Не обновлять автоматически, так как предопределенные элементы сопоставляются с данными программно + Catalog.ИдентификаторыОбъектовРасширений.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + ru + Ссылка на объект метаданных в информационной базе + + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа объектов + + + ru + Группа объектов метаданных. + + true + + Catalog.ИдентификаторыОбъектовМетаданных.EmptyRef + + Use + + + + + Use + Description + + ru + Представление + + + ru + Сохраняемое представление идентификатора объекта расширений + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + + + ru + + + Managed + + ru + Идентификатор объекта метаданных расширения + + + ru + Идентификаторы объектов метаданных расширений для использования в информационной базе. + + true + HierarchyOfItems + 2 + true + 150 + String + Variable + AsDescription + DontAutoUpdate + InDialog + BothWays + Catalog.ИдентификаторыОбъектовРасширений.Form.ФормаЭлемента + Catalog.ИдентификаторыОбъектовРасширений.Form.ФормаСписка + Catalog.ИдентификаторыОбъектовРасширений.Form.ФормаСписка + + ПорядокКоллекции + + ru + Порядок коллекции + + + Number + + 2 + true + + + + ru + Порядок коллекции объекта метаданных, +используемый для сортировки в отчетах, +например, коллекция "Справочники" +перед коллекцией "Документы" + + + + + IndexWithAdditionalOrder + Use + + + Имя + + ru + Имя + + Например, "ОбъектыАдресацииЗадач" + + String + + 255 + + + + ru + Имя объекта метаданных + + + + + + + Use + Use + + + Синоним + + ru + Синоним + + + String + + 255 + + + + ru + Синоним объекта метаданных, +например, "Объекты адресации задач" + + + + + + + Use + Use + + + ПолноеИмя + + ru + Полное имя + + Например, "ПланВидовХарактеристик.ОбъектыАдресацииЗадач" + + String + + 430 + + + + ru + Полное имя объекта метаданных + + + + + + + Index + Use + Use + + + ПолныйСиноним + + ru + Полный синоним + + + String + + 430 + + + + ru + Полный синоним объекта метаданных, +например, "Планы видов характеристик. Объекты адресации задач" + + + + + + + Use + Use + + + БезДанных + + ru + Без данных + + + Boolean + + + ru + Объект метаданных не имеет таблиц данных + + + + + Use + + + ЗначениеПустойСсылки + + ru + Значение пустой ссылки + + АПК:1330 - №728.2.1 Допустимо использование универсального ссылочного типа, так как это универсальный механизм и мало данных + + ExchangePlanRef + BusinessProcessRef + DocumentRef + ChartOfCalculationTypesRef + TaskRef + ChartOfCharacteristicTypesRef + ChartOfAccountsRef + CatalogRef + + + ru + Для ссылочных типов объектов метаданных +содержит пустую ссылку своего типа, +для остальных - Неопределено +(в форме показано представление +типа значения пустой ссылки) + + + + + Index + Use + + + КлючОбъектаМетаданных + + ru + Ключ объекта метаданных + + + ValueStorage + + + ru + Хранилище ключа по которому определяется объект метаданных без использования полного имени + + + + + Use + + + НоваяСсылка + + ru + Новая ссылка + + + CatalogRef.ИдентификаторыОбъектовРасширений + + + ru + Используется при обработке дублей идентификаторов подчиненного узла распределенной информационной базы. + + + + + Use + + + ИмяРасширения + + ru + Имя расширения + + + String + + 128 + + + + ru + Имя расширения, которому принадлежит объект метаданных, соответствующий идентификатору + + + + + + + Use + Use + + + ХешСуммаРасширения + + ru + Хеш сумма расширения + + + String + + 30 + + + + + + + + Use + Use + + + ФормаСписка + + ru + Форма списка + + АПК:149 - #std702,1 Поле Ссылка используется вместо поля Наименование для динамического представления на разных языках + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\240\320\260\320\261\320\276\321\202\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\240\320\260\320\261\320\276\321\202\321\213/Form.form" new file mode 100644 index 00000000..64e3daf0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\240\320\260\320\261\320\276\321\202\321\213/Form.form" @@ -0,0 +1,512 @@ + + + + РасписаниеРаботы + 1 + + <key>ru</key> + <value>Расписание работы</value> + + true + true + + true + + + РасписаниеРаботы + + None + + РасписаниеРаботыВремяНачала + 6 + + <key>ru</key> + <value>Начало</value> + + true + true + + true + + + + РасписаниеРаботы.ВремяНачала + + + + РасписаниеРаботыВремяНачалаExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеРаботыВремяНачалаКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 10 + true + true + true + true + true + true + + + + РасписаниеРаботыВремяОкончания + 8 + + <key>ru</key> + <value>Окончание</value> + + true + true + + true + + + + РасписаниеРаботы.ВремяОкончания + + + + РасписаниеРаботыВремяОкончанияExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеРаботыВремяОкончанияКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + РасписаниеРаботыКоманднаяПанель + 3 + true + true + + true + + Left + true + + + OnEditEnd + РасписаниеРаботыПриОкончанииРедактирования + + + true + true + + true + + РасписаниеРаботыSearchString + 17 + + РасписаниеРаботыSearchStringExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеРаботыSearchStringContextMenu + 18 + true + true + + true + + true + + + true + + + + true + true + + true + + РасписаниеРаботыViewStatus + 20 + + РасписаниеРаботыViewStatusExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеРаботыViewStatusContextMenu + 21 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РасписаниеРаботыSearchControl + 23 + + РасписаниеРаботыSearchControlExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеРаботыSearchControlContextMenu + 24 + true + true + + true + + true + + SearchControlAddition + + true + + + + РасписаниеРаботыExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеРаботыКонтекстноеМеню + 2 + true + true + + true + + true + + true + 1 + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + true + +
+ Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОК + 10 + true + true + + true + + + ФормаОКExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 11 + true + true + + true + + + ФормаОтменаExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + РасписаниеРаботы + + <key>ru</key> + <value>Расписание работы</value> + + 1 + + ValueTable + + + true + + + true + + true + + ВремяНачала + + <key>ru</key> + <value>Время начала</value> + + 2 + + Date + + Time + + + + true + + + true + + + + ВремяОкончания + + <key>ru</key> + <value>Время окончания</value> + + 3 + + Date + + Time + + + + true + + + true + + + + + БылиНажатыКнопкиЗакрытия + 2 + + Boolean + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + Отмена + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Отмена + + + true + + + + Отмена + + + DontUse + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\240\320\260\320\261\320\276\321\202\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\240\320\260\320\261\320\276\321\202\321\213/Module.bsl" new file mode 100644 index 00000000..c3795d1b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\240\320\260\320\261\320\276\321\202\321\213/Module.bsl" @@ -0,0 +1,146 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + РасписаниеДня = Параметры.РасписаниеРаботы; + УточнитьФорматПолейВремени(); + + Для Каждого ОписаниеИнтервала Из РасписаниеДня Цикл + ЗаполнитьЗначенияСвойств(РасписаниеРаботы.Добавить(), ОписаниеИнтервала); + КонецЦикла; + РасписаниеРаботы.Сортировать("ВремяНачала"); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + Элементы.ФормаОтмена.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Оповещение = Новый ОписаниеОповещения("ВыбратьИЗакрыть", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура РасписаниеРаботыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + Если ОтменаРедактирования Тогда + Возврат; + КонецЕсли; + + ГрафикиРаботыКлиент.ВосстановитьПорядокСтрокКоллекцииПослеРедактирования(РасписаниеРаботы, "ВремяНачала", Элемент.ТекущиеДанные); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + ВыбратьИЗакрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура Отмена(Команда) + + Модифицированность = Ложь; + ОповеститьОВыборе(Неопределено); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция РасписаниеДня() + + Отказ = Ложь; + + РасписаниеДня = Новый Массив; + + ОкончаниеДня = Неопределено; + + Для Каждого СтрокаРасписания Из РасписаниеРаботы Цикл + ИндексСтроки = РасписаниеРаботы.Индекс(СтрокаРасписания); + Если СтрокаРасписания.ВремяНачала > СтрокаРасписания.ВремяОкончания + И ЗначениеЗаполнено(СтрокаРасписания.ВремяОкончания) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Время начала больше времени окончания'"), , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("РасписаниеРаботы[%1].ВремяОкончания", ИндексСтроки), , + Отказ); + КонецЕсли; + Если СтрокаРасписания.ВремяНачала = СтрокаРасписания.ВремяОкончания Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Длительность интервала не определена'"), , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("РасписаниеРаботы[%1].ВремяОкончания", ИндексСтроки), , + Отказ); + КонецЕсли; + Если ОкончаниеДня <> Неопределено Тогда + Если ОкончаниеДня > СтрокаРасписания.ВремяНачала + Или Не ЗначениеЗаполнено(ОкончаниеДня) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Обнаружены пересекающиеся интервалы'"), , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("РасписаниеРаботы[%1].ВремяНачала", ИндексСтроки), , + Отказ); + КонецЕсли; + КонецЕсли; + ОкончаниеДня = СтрокаРасписания.ВремяОкончания; + РасписаниеДня.Добавить(Новый Структура("ВремяНачала, ВремяОкончания", СтрокаРасписания.ВремяНачала, СтрокаРасписания.ВремяОкончания)); + КонецЦикла; + + Если Отказ Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат РасписаниеДня; + +КонецФункции + +&НаКлиенте +Процедура ВыбратьИЗакрыть(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт + + РасписаниеДня = РасписаниеДня(); + Если РасписаниеДня = Неопределено Тогда + Возврат; + КонецЕсли; + + Модифицированность = Ложь; + ОповеститьОВыборе(Новый Структура("РасписаниеРаботы", РасписаниеДня)); + +КонецПроцедуры + +&НаСервере +Процедура УточнитьФорматПолейВремени() + + ФорматВремени = НСтр("ru = 'ДФ=ЧЧ:мм; ДП='"); + + Элементы.РасписаниеРаботыВремяНачала.Формат = ФорматВремени; + Элементы.РасписаниеРаботыВремяНачала.ФорматРедактирования = ФорматВремени; + + Элементы.РасписаниеРаботыВремяОкончания.Формат = ФорматВремени; + Элементы.РасписаниеРаботыВремяОкончания.ФорматРедактирования = ФорматВремени; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..ec6bc9a0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,722 @@ + + + + ГруппаПользовательскихНастроек + 34 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 32 + + СписокИзменитьВыделенные + 30 + true + true + + true + + + СписокИзменитьВыделенныеРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Ссылка + 27 + true + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 28 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Наименование + 4 + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ПроизводственныйКалендарь + 17 + true + true + + true + + + + Список.ПроизводственныйКалендарь + + + + ПроизводственныйКалендарьExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + ПроизводственныйКалендарьКонтекстноеМеню + 18 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СпособЗаполнения + 15 + true + true + + true + + + + Список.СпособЗаполнения + + + + СпособЗаполненияExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + + СпособЗаполненияКонтекстноеМеню + 16 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ВозможнаяПричина + 19 + + <key>ru</key> + <value>Возможная причина</value> + + true + true + + true + + + + Список.ВозможнаяПричина + + + + ВозможнаяПричинаExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + + ВозможнаяПричинаКонтекстноеМеню + 20 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Описание + 13 + true + true + + true + + + + Список.Описание + + + + ОписаниеExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 14 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + 1 + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 36 + + СписокСтрокаПоискаРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 37 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 39 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 40 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 42 + + СписокУправлениеПоискомРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 43 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + + OnGetDataAtServer + СписокПриПолученииДанныхНаСервере + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + + Список.Ref + + + + Список.ВозможнаяПричина + + + Список.ДатаЗаполненности + + + Список.ДатаЗаполненностиПроизводственногоКалендаря + + + Список.ДатаНеобходимойЗаполненности + + + Список.Ссылка + + + Список.ТребуетЗаполнения + +
true
+ + ВЫБРАТЬ + СправочникГрафикиРаботы.Ссылка КАК Ссылка, + СправочникГрафикиРаботы.ВерсияДанных КАК ВерсияДанных, + СправочникГрафикиРаботы.ПометкаУдаления КАК ПометкаУдаления, + СправочникГрафикиРаботы.Предопределенный КАК Предопределенный, + СправочникГрафикиРаботы.Родитель КАК Родитель, + СправочникГрафикиРаботы.ЭтоГруппа КАК ЭтоГруппа, + СправочникГрафикиРаботы.Наименование КАК Наименование, + СправочникГрафикиРаботы.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь, + СправочникГрафикиРаботы.СпособЗаполнения КАК СпособЗаполнения, + СправочникГрафикиРаботы.ДатаНачала КАК ДатаНачала, + СправочникГрафикиРаботы.ДатаОкончания КАК ДатаОкончания, + СправочникГрафикиРаботы.ДатаОтсчета КАК ДатаОтсчета, + СправочникГрафикиРаботы.УчитыватьПраздники КАК УчитыватьПраздники, + СправочникГрафикиРаботы.Описание КАК Описание, + СправочникГрафикиРаботы.ГоризонтПланирования КАК ГоризонтПланирования, + СправочникГрафикиРаботы.ВладелецГрафика КАК ВладелецГрафика, + ДАТАВРЕМЯ(1, 1, 1) КАК ДатаНеобходимойЗаполненности, + ДАТАВРЕМЯ(1, 1, 1) КАК ДатаЗаполненности, + ДАТАВРЕМЯ(1, 1, 1) КАК ДатаЗаполненностиПроизводственногоКалендаря, + ЛОЖЬ КАК ТребуетЗаполнения, + ВЫРАЗИТЬ("" КАК СТРОКА(100)) КАК ВозможнаяПричина +ИЗ + Справочник.Календари КАК СправочникГрафикиРаботы + Catalog.Календари + true + true + true + true + true + +
+ + ИзменитьВыделенные + + <key>ru</key> + <value>Изменить выделенные...</value> + + 1 + + ru + Изменить выделенные объекты + + + true + + + + ИзменитьВыделенные + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..33270fe5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,144 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.РежимВыбора Тогда + Элементы.Список.РежимВыбора = Истина; + КонецЕсли; + + УстановитьПараметрыСписка(); + + МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.Календари); + ЕстьГрупповоеИзменениеРеквизитов = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов"); + Элементы.СписокИзменитьВыделенные.Видимость = ЕстьГрупповоеИзменениеРеквизитов И МожноРедактировать; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаСервереБезКонтекста +Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Календари", Строки.ПолучитьКлючи()); + Запрос.Текст = + "ВЫБРАТЬ + | КалендарныеГрафики.Календарь КАК ГрафикРаботы, + | МАКСИМУМ(КалендарныеГрафики.ДатаГрафика) КАК ДатаЗаполненности + |ПОМЕСТИТЬ ВТДатыЗаполненностиГрафиков + |ИЗ + | РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики + |ГДЕ + | КалендарныеГрафики.Календарь В(&Календари) + | + |СГРУППИРОВАТЬ ПО + | КалендарныеГрафики.Календарь + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь, + | МАКСИМУМ(ДанныеПроизводственныхКалендарей.Дата) КАК ДатаЗаполненности + |ПОМЕСТИТЬ ВТДатыЗаполненностиКалендарей + |ИЗ + | РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственныхКалендарей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Календари КАК Календари + | ПО (Календари.ПроизводственныйКалендарь = ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь) + | И (Календари.Ссылка В (&Календари)) + | + |СГРУППИРОВАТЬ ПО + | ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | СправочникГрафикиРаботы.Ссылка КАК Ссылка, + | СправочникГрафикиРаботы.ГоризонтПланирования КАК ГоризонтПланирования, + | СправочникГрафикиРаботы.ДатаОкончания КАК ДатаОкончания, + | СправочникГрафикиРаботы.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь, + | ЕСТЬNULL(ДанныеГрафиков.ДатаЗаполненности, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаЗаполненности, + | ЕСТЬNULL(ДанныеПроизводственныхКалендарей.ДатаЗаполненности, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаЗаполненностиПроизводственногоКалендаря + |ИЗ + | Справочник.Календари КАК СправочникГрафикиРаботы + | ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыЗаполненностиГрафиков КАК ДанныеГрафиков + | ПО СправочникГрафикиРаботы.Ссылка = ДанныеГрафиков.ГрафикРаботы + | ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыЗаполненностиКалендарей КАК ДанныеПроизводственныхКалендарей + | ПО СправочникГрафикиРаботы.ПроизводственныйКалендарь = ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь + |ГДЕ + | СправочникГрафикиРаботы.Ссылка В(&Календари) + | И НЕ СправочникГрафикиРаботы.ЭтоГруппа"; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + ДатаНеобходимойЗаполненности = ДобавитьМесяц(ТекущаяДатаСеанса(), Выборка.ГоризонтПланирования); + ТребуетЗаполнения = Выборка.ДатаЗаполненности < ДатаНеобходимойЗаполненности; + СтрокаСписка = Строки[Выборка.Ссылка]; + СтрокаСписка.Данные["ДатаЗаполненности"] = Выборка.ДатаЗаполненности; + СтрокаСписка.Данные["ДатаЗаполненностиПроизводственногоКалендаря"] = Выборка.ДатаЗаполненностиПроизводственногоКалендаря; + СтрокаСписка.Данные["ТребуетЗаполнения"] = ТребуетЗаполнения; + СтрокаСписка.Данные["ДатаНеобходимойЗаполненности"] = ДатаНеобходимойЗаполненности; + Если Не ТребуетЗаполнения Тогда + Продолжить; + КонецЕсли; + Для Каждого КлючИЗначение Из СтрокаСписка.Оформление Цикл + КлючИЗначение.Значение.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныеДанныеЦвет); + КонецЦикла; + ВозможнаяПричина = ""; + Если ЗначениеЗаполнено(Выборка.ПроизводственныйКалендарь) Тогда + Если Не ЗначениеЗаполнено(Выборка.ДатаЗаполненностиПроизводственногоКалендаря) Тогда + ВозможнаяПричина = НСтр("ru = 'Производственный календарь не заполнен'"); + Иначе + Если Выборка.ДатаЗаполненностиПроизводственногоКалендаря < ДатаНеобходимойЗаполненности Тогда + ВозможнаяПричина = НСтр("ru = 'Производственный календарь не заполнен на очередной календарный год'"); + КонецЕсли; + КонецЕсли; + Иначе + Если Не ЗначениеЗаполнено(Выборка.ДатаОкончания) Тогда + ВозможнаяПричина = НСтр("ru = 'График не был заполнен на очередной календарный год'"); + Иначе + Если Выборка.ДатаОкончания < ДатаНеобходимойЗаполненности Тогда + ВозможнаяПричина = НСтр("ru = 'Период заполнения графика ограничен (см. поле «Дата окончания»)'") + КонецЕсли; + КонецЕсли; + КонецЕсли; + СтрокаСписка.Данные["ВозможнаяПричина"] = ВозможнаяПричина; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ИзменитьВыделенные(Команда) + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") Тогда + МодульГрупповоеИзменениеОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ГрупповоеИзменениеОбъектовКлиент"); + МодульГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьПараметрыСписка() + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ВладелецГрафика", , ВидСравненияКомпоновкиДанных.НеЗаполнено, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..0451eff9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,3464 @@ + + + + Страницы + 282 + + НастройкаЗаполненияСтраница + 283 + + ГруппаНаименование + 75 + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 302 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 42 + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование</value> + + + ГруппаНаименованиеРасширеннаяПодсказка + 301 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + НастройкиОбъединеннаяГруппа + 373 + + НастройкиПроизводственногоКалендаряГруппа + 251 + + ПериодЗаполненияГруппа + 178 + + ПериодГруппа + 221 + + НадписьПериодЗаполнения + 375 + + <key>ru</key> + <value>Период заполнения графика</value> + + true + true + + true + + + НадписьПериодЗаполненияРасширеннаяПодсказка + 377 + true + true + + true + + Label + true + true + + Left + + + + НадписьПериодЗаполненияКонтекстноеМеню + 376 + true + true + + true + + true + + Label + true + true + + Left + + + + ГруппаДаты + 378 + + ДатаНачала + 171 + + <key>ru</key> + <value>с</value> + + true + true + + true + + + + Объект.ДатаНачала + + + + OnChange + ДатаНачалаПриИзменении + + + ДатаНачалаExtendedTooltip + 306 + true + true + + true + + Label + true + true + + Left + + + + ДатаНачалаКонтекстноеМеню + 172 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + true + true + true + true + + + + ДатаОкончания + 219 + + <key>ru</key> + <value>по</value> + + true + true + + true + + + + Объект.ДатаОкончания + + + + OnChange + ДатаОкончанияПриИзменении + + + ДатаОкончанияExtendedTooltip + 307 + true + true + + true + + Label + true + true + + Left + + + + ДатаОкончанияКонтекстноеМеню + 220 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Период</value> + + + ГруппаДатыРасширеннаяПодсказка + 379 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Период заполнения графика</value> + + + ru + Если дата «по» не заполнена, график будет заполняться +по указанному шаблону до конца года производственного календаря + + ShowBottom + + ПериодГруппаExtendedTooltip + 305 + true + true + + true + + Label + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Период заполнения группа</value> + + + ПериодЗаполненияГруппаExtendedTooltip + 304 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ПроизводственныйКалендарьГруппа + 175 + + ПроизводственныйКалендарь + 167 + true + true + + true + + + + Объект.ПроизводственныйКалендарь + + + + OnChange + ПроизводственныйКалендарьПриИзменении + + + ПроизводственныйКалендарьExtendedTooltip + 310 + true + true + + true + + Label + true + true + + Left + + + + ПроизводственныйКалендарьКонтекстноеМеню + 168 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Производственный календарь группа</value> + + + ru + При изменении производственного календаря график работы +автоматически заполняется за указанный период + + ShowBottom + + ПроизводственныйКалендарьГруппаExtendedTooltip + 309 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройки производственного календаря группа</value> + + + НастройкиПроизводственногоКалендаряГруппаExtendedTooltip + 303 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + Auto + Auto + + + + НастройкаЗаполненияГруппа + 166 + + НастройкиГруппа + 218 + + СпособЗаполненияГруппа + 176 + + СпособЗаполненияПоНеделям + 169 + true + true + + true + + + + Объект.СпособЗаполнения + + + Top + + OnChange + СпособЗаполненияПриИзменении + + + СпособЗаполненияПоНеделямExtendedTooltip + 315 + true + true + + true + + Label + true + true + + Left + + + + СпособЗаполненияПоНеделямКонтекстноеМеню + 170 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + По неделям + + + Enum.СпособыЗаполненияГрафикаРаботы.EnumValue.ПоНеделям + + + + + + СпособЗаполненияПоЦикламПроизвольнойДлиныГруппа + 250 + + СпособЗаполненияПоЦикламПроизвольнойДлины + 248 + true + true + + true + + + + Объект.СпособЗаполнения + + + None + + OnChange + СпособЗаполненияПриИзменении + + + СпособЗаполненияПоЦикламПроизвольнойДлиныExtendedTooltip + 317 + true + true + + true + + Label + true + true + + Left + + + + СпособЗаполненияПоЦикламПроизвольнойДлиныКонтекстноеМеню + 249 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + По циклам длиной + + + Enum.СпособыЗаполненияГрафикаРаботы.EnumValue.ПоЦикламПроизвольнойДлины + + + + + + ГруппаДлинаЦиклаДней + 188 + + ДлинаЦикла + 189 + true + true + + true + + + + ДлинаЦикла + + + None + + ru + Количество дней, заполнение для которых будет +повторяться в течение всего года + + + OnChange + ДлинаЦиклаПриИзменении + + + ДлинаЦиклаExtendedTooltip + 319 + true + true + + true + + Label + true + true + + Left + + + + ДлинаЦиклаКонтекстноеМеню + 190 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 5 + true + true + false + true + true + true + true + true + true + + 1 + + + + + ДлинаЦиклаЕдиницаИзмерения + 191 + + <key>ru</key> + <value>дней,</value> + + true + true + + true + + + ДлинаЦиклаЕдиницаИзмеренияExtendedTooltip + 320 + true + true + + true + + Label + true + true + + Left + + + + ДлинаЦиклаЕдиницаИзмеренияКонтекстноеМеню + 192 + true + true + + true + + true + + Label + true + + Left + + + + ДатаОтсчета + 229 + + <key>ru</key> + <value>начиная с</value> + + true + true + + true + + + + Объект.ДатаОтсчета + + + + OnChange + ДатаОтсчетаПриИзменении + + + ДатаОтсчетаExtendedTooltip + 321 + true + true + + true + + Label + true + true + + Left + + + + ДатаОтсчетаКонтекстноеМеню + 230 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Длина цикла дней</value> + + + ГруппаДлинаЦиклаДнейExtendedTooltip + 318 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Способ заполнения по циклам произвольной длины группа</value> + + + СпособЗаполненияПоЦикламПроизвольнойДлиныГруппаExtendedTooltip + 316 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Способ заполнения</value> + + + ru + Выберите шаблон, по которому будет заполнен график работы + + ShowBottom + + СпособЗаполненияГруппаExtendedTooltip + 314 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + УчитыватьПраздникиГруппа + 404 + + УчитыватьПраздники + 406 + true + true + + true + + + + Объект.УчитыватьПраздники + + + Right + + ru + Если установлено, то из состава рабочих дней +будут исключаться дни, выпадающие на праздники + + ShowBottom + + OnChange + УчитыватьПраздникиПриИзменении + + + УчитыватьПраздникиРасширеннаяПодсказка + 408 + true + true + + true + + Label + true + + Left + + + + УчитыватьПраздникиКонтекстноеМеню + 407 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Учитывать праздники</value> + + + УчитыватьПраздникиГруппаРасширеннаяПодсказка + 405 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + УчитыватьНерабочиеПериодыГруппа + 409 + + УчитыватьНерабочиеПериоды + 411 + true + true + + true + + + + Объект.УчитыватьНерабочиеПериоды + + + Right + + ru + Если установлено, то из состава рабочих дней будут исключаться дни нерабочих периодов производственного календаря + + + OnChange + УчитыватьНерабочиеПериодыПриИзменении + + + УчитыватьНерабочиеПериодыРасширеннаяПодсказка + 413 + true + true + + true + + Label + true + true + + Left + + + + УчитыватьНерабочиеПериодыКонтекстноеМеню + 412 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + НерабочиеПериодыГруппа + 396 + + НерабочиеПериодыКартинка + 398 + + <key>ru</key> + <value>Нерабочие периоды картинка</value> + + true + true + + true + + + НерабочиеПериодыКартинкаРасширеннаяПодсказка + 400 + true + true + + true + + Label + true + true + + Left + + + + НерабочиеПериодыКартинкаКонтекстноеМеню + 399 + true + true + + true + + true + + true + true + + + CommonPicture.Информация + + AsFileRef + + + + НерабочиеПериодыИнформация + 401 + + <key>ru</key> + <value>Нерабочие периоды информация</value> + + true + true + + true + + + НерабочиеПериодыИнформацияРасширеннаяПодсказка + 403 + true + true + + true + + Label + true + true + + Left + + + + НерабочиеПериодыИнформацияКонтекстноеМеню + 402 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Нерабочие периоды</value> + + + НерабочиеПериодыГруппаРасширеннаяПодсказка + 397 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Учитывать нерабочие периоды</value> + + + УчитыватьНерабочиеПериодыГруппаРасширеннаяПодсказка + 410 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройки группа</value> + + + НастройкиГруппаExtendedTooltip + 313 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Equal + Auto + Auto + + + + ШаблонЗаполненияГруппа + 195 + + ШаблонЗаполнения + 196 + + <key>ru</key> + <value>Шаблон заполнения</value> + + true + true + + true + + + Объект.ШаблонЗаполнения + + Top + + ru + Отмеченные дни будут включены в график работы + + ShowBottom + + ШаблонЗаполненияГруппаКолонок + 199 + + ШаблонЗаполненияНомерСтроки + 208 + true + true + + true + + + + Объект.ШаблонЗаполнения.LineNumber + + + + ШаблонЗаполненияНомерСтрокиExtendedTooltip + 330 + true + true + + true + + Label + true + true + + Left + + + + ШаблонЗаполненияНомерСтрокиКонтекстноеМеню + 209 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + ШаблонЗаполненияПредставлениеДня + 212 + true + true + + true + + + + Объект.ШаблонЗаполнения.ПредставлениеДня + + + + ШаблонЗаполненияПредставлениеДняExtendedTooltip + 331 + true + true + + true + + Label + true + true + + Left + + + + ШаблонЗаполненияПредставлениеДняКонтекстноеМеню + 213 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + false + + + + ШаблонЗаполненияДеньВключенВГрафик + 233 + true + true + + true + + + + Объект.ШаблонЗаполнения.ДеньВключенВГрафик + + + + ru + Признак того, что день включен в график + + + OnChange + ШаблонЗаполненияДеньВключенВГрафикПриИзменении + + + ШаблонЗаполненияДеньВключенВГрафикExtendedTooltip + 332 + true + true + + true + + Label + true + true + + Left + + + + ШаблонЗаполненияДеньВключенВГрафикКонтекстноеМеню + 234 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ШаблонЗаполненияПредставлениеРасписания + 214 + true + true + + true + + + + Объект.ШаблонЗаполнения.ПредставлениеРасписания + + + + ШаблонЗаполненияПредставлениеРасписанияExtendedTooltip + 333 + true + true + + true + + Label + true + true + + Left + + + + ШаблонЗаполненияПредставлениеРасписанияКонтекстноеМеню + 215 + true + true + + true + + true + + LabelField + EnterOnInput + true + true + Left + true + + 3 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шаблон заполнения группа колонок</value> + + + ШаблонЗаполненияГруппаКолонокExtendedTooltip + 329 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + None + + ШаблонЗаполненияКоманднаяПанель + 198 + true + true + + true + + Left + true + + + Selection + ШаблонЗаполненияВыбор + + + true + true + + true + + ШаблонЗаполненияСтрокаПоиска + 364 + + ШаблонЗаполненияСтрокаПоискаРасширеннаяПодсказка + 366 + true + true + + true + + Label + true + true + + Left + + + + ШаблонЗаполненияСтрокаПоискаКонтекстноеМеню + 365 + true + true + + true + + true + + + true + + + + true + true + + true + + ШаблонЗаполненияСостояниеПросмотра + 367 + + ШаблонЗаполненияСостояниеПросмотраРасширеннаяПодсказка + 369 + true + true + + true + + Label + true + true + + Left + + + + ШаблонЗаполненияСостояниеПросмотраКонтекстноеМеню + 368 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ШаблонЗаполненияУправлениеПоиском + 370 + + ШаблонЗаполненияУправлениеПоискомРасширеннаяПодсказка + 372 + true + true + + true + + Label + true + true + + Left + + + + ШаблонЗаполненияУправлениеПоискомКонтекстноеМеню + 371 + true + true + + true + + true + + SearchControlAddition + + true + + + + ШаблонЗаполненияExtendedTooltip + 328 + true + true + + true + + Label + true + true + + Left + + + + ШаблонЗаполненияКонтекстноеМеню + 197 + true + true + + true + + + 45 + 7 + true + true + MultiRow + 1 + 1 + AutoUse + true + Auto + Auto + true + true + + + + РасписаниеПредпраздничногоДня + 287 + true + true + + true + + + + РасписаниеПредпраздничногоДня + + + + РасписаниеПредпраздничногоДняExtendedTooltip + 326 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеПредпраздничногоДняКонтекстноеМеню + 288 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + РасписаниеПредпраздничногоДняНажатие + + true + true + false + true + + + true + true + + true + + + <key>ru</key> + <value>Шаблон заполнения</value> + + + ШаблонЗаполненияГруппаExtendedTooltip + 327 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройка заполнения</value> + + + НастройкаЗаполненияГруппаExtendedTooltip + 312 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройки объединенная</value> + + + НастройкиОбъединеннаяГруппаРасширеннаяПодсказка + 374 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + КонтрольЗаполненияГруппа + 255 + + ГоризонтПланированияГруппа + 235 + + ГоризонтПланированияЕдиницаГруппа + 238 + + ГоризонтПланирования + 236 + + <key>ru</key> + <value>Горизонт планирования, мес.</value> + + true + true + + true + + + + Объект.ГоризонтПланирования + + + + OnChange + ГоризонтПланированияПриИзменении + + + ГоризонтПланированияExtendedTooltip + 338 + true + true + + true + + Label + true + true + + Left + + + + ГоризонтПланированияКонтекстноеМеню + 237 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Горизонт планирования единица группа</value> + + + ru + Период времени, на который график должен быть заполнен вперед + + ShowRight + + ГоризонтПланированияЕдиницаГруппаExtendedTooltip + 337 + true + true + + true + + Label + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Горизонт планирования группа</value> + + + ГоризонтПланированияГруппаExtendedTooltip + 336 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ЗаполненностьГруппа + 245 + + ЗаполненностьДекорация + 246 + + <key>ru</key> + <value>Заполненность декорация</value> + + true + true + + true + + + ЗаполненностьДекорацияExtendedTooltip + 342 + true + true + + true + + Label + true + true + + Left + + + + ЗаполненностьДекорацияКонтекстноеМеню + 247 + true + true + + true + + true + + 2 + true + 1 + true + + + + ЗаполненностьИнформационныйТекст + 243 + true + true + + true + + + + ЗаполненностьИнформационныйТекст + + + None + + ЗаполненностьИнформационныйТекстExtendedTooltip + 343 + true + true + + true + + Label + true + true + + Left + + + + ЗаполненностьИнформационныйТекстКонтекстноеМеню + 244 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + + Style.ПоясняющийТекст + + + + true + true + + true + + + <key>ru</key> + <value>Заполненность группа</value> + + + ЗаполненностьГруппаExtendedTooltip + 341 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Контроль заполнения</value> + + true + + КонтрольЗаполненияГруппаExtendedTooltip + 335 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ОписаниеГруппа + 227 + + Описание + 162 + true + true + + true + + + + Объект.Описание + + + + ОписаниеExtendedTooltip + 345 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 163 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + КомментарийНачалоВыбора + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Описание группа</value> + + + ОписаниеГруппаExtendedTooltip + 344 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + РезультатЗаполненияКомандаПереходаГруппа + 290 + + ГодыРучногоРедактированияГруппа + 294 + + РучноеРедактированиеДекорация + 295 + + <key>ru</key> + <value>Ручное редактирование декорация</value> + + true + true + + true + + + РучноеРедактированиеДекорацияExtendedTooltip + 348 + true + true + + true + + Label + true + true + + Left + + + + РучноеРедактированиеДекорацияКонтекстноеМеню + 296 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.Предупреждение + + + + + РучноеРедактированиеИнформационныйТекст + 297 + true + true + + true + + + + РучноеРедактированиеИнформационныйТекст + + + None + + РучноеРедактированиеИнформационныйТекстExtendedTooltip + 349 + true + true + + true + + Label + true + true + + Left + + + + РучноеРедактированиеИнформационныйТекстКонтекстноеМеню + 298 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + false + + Style.ПросроченныеДанныеЦвет + + + + true + true + + true + + + <key>ru</key> + <value>Годы ручного редактирования</value> + + + ГодыРучногоРедактированияГруппаExtendedTooltip + 347 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + РезультатЗаполнения + 289 + true + true + + true + + + РезультатЗаполненияExtendedTooltip + 350 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.РезультатЗаполнения + Auto + true + true + Right + Bottom + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Результат заполнения команда перехода группа</value> + + + РезультатЗаполненияКомандаПереходаГруппаExtendedTooltip + 346 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройка заполнения страница</value> + + + НастройкаЗаполненияСтраницаExtendedTooltip + 300 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + РезультатЗаполненияСтраница + 284 + + РезультатЗаполненияГруппа + 252 + + ГрафикРаботыГруппа + 267 + + НастройкаРезультатаЗаполненияГруппа + 271 + + НомерТекущегоГода + 268 + + <key>ru</key> + <value>Результат заполнения графика на</value> + + true + true + + true + + + + НомерТекущегоГода + + + + OnChange + НомерТекущегоГодаПриИзменении + + + НомерТекущегоГодаExtendedTooltip + 355 + true + true + + true + + Label + true + true + + Left + + + + НомерТекущегоГодаКонтекстноеМеню + 269 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + + ru + ЧГ= + + true + true + true + + + + ГодПодпись + 273 + + <key>ru</key> + <value>год</value> + + true + true + + true + + + ГодПодписьExtendedTooltip + 356 + true + true + + true + + Label + true + true + + Left + + + + ГодПодписьКонтекстноеМеню + 274 + true + true + + true + + true + + Label + true + + Left + + + + ЗаполнитьПоШаблону + 270 + true + true + + true + + + ЗаполнитьПоШаблонуExtendedTooltip + 357 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ЗаполнитьПоШаблону + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Настройка результата заполнения группа</value> + + + НастройкаРезультатаЗаполненияГруппаExtendedTooltip + 354 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГрафикРаботы + 253 + + <key>ru</key> + <value>Результат заполнения графика</value> + + true + true + + true + + + + ГрафикРаботы + + + None + + ru + Для редактирования рабочих и выходных дней календаря используйте двойной щелчок левой кнопкой мыши. + + ShowBottom + + ГрафикРаботыExtendedTooltip + 358 + true + true + + true + + Label + true + + Left + + + + ГрафикРаботыКонтекстноеМеню + 254 + true + true + + true + + true + + CalendarField + Enter + true + Left + true + + + OnPeriodOutput + ГрафикРаботыПриВыводеПериода + + + Selection + ГрафикРаботыВыбор + + 1 + true + 1 + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>График работы</value> + + + ГрафикРаботыГруппаExtendedTooltip + 353 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Результат заполнения</value> + + + РезультатЗаполненияГруппаExtendedTooltip + 352 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + LeftWidest + Auto + Auto + + + + РезультатЗаполненияИнформационныйТекстГруппа + 279 + + РезультатЗаполненияДекорация + 280 + + <key>ru</key> + <value>Результат заполнения декорация</value> + + true + true + + true + + + РезультатЗаполненияДекорацияExtendedTooltip + 361 + true + true + + true + + Label + true + true + + Left + + + + РезультатЗаполненияДекорацияКонтекстноеМеню + 281 + true + true + + true + + true + + 2 + true + 1 + true + + + + РезультатЗаполненияИнформационныйТекст + 277 + true + true + + true + + + + РезультатЗаполненияИнформационныйТекст + + + None + + РезультатЗаполненияИнформационныйТекстExtendedTooltip + 362 + true + true + + true + + Label + true + true + + Left + + + + РезультатЗаполненияИнформационныйТекстКонтекстноеМеню + 278 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 2 + 2 + + Style.ПоясняющийТекст + + + + true + true + + true + + + <key>ru</key> + <value>Результат заполнения информационный текст группа</value> + + + РезультатЗаполненияИнформационныйТекстГруппаExtendedTooltip + 360 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + НастройкаЗаполнения + 293 + true + true + + true + + + НастройкаЗаполненияExtendedTooltip + 363 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.НастройкаЗаполнения + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Результат заполнения страница</value> + + + РезультатЗаполненияСтраницаExtendedTooltip + 351 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыExtendedTooltip + 299 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.Календари + + + true + + + true + +
true
+ true + + + Объект.ШаблонЗаполнения + + + ПредставлениеДня + + <key>ru</key> + <value>Представление дня</value> + + 1 + + String + + + + true + + + true + + + + ПредставлениеРасписания + + <key>ru</key> + <value>Представление расписания</value> + + 2 + + String + + + + true + + + true + + + + Действие + + <key>ru</key> + <value>Действие</value> + + 3 + + String + + + + true + + + true + + + +
+ + ДлинаЦикла + + <key>ru</key> + <value>Длина цикла</value> + + 10 + + Number + + 10 + true + + + + true + + + true + + true + + + ЗаполненностьИнформационныйТекст + + <key>ru</key> + <value>Заполненность информационный текст</value> + + 2 + + String + + + + true + + + true + + + + ДатаЗаполненности + 3 + + Date + + Date + + + + true + + + true + + + + ТребуетЗаполнения + 4 + + Boolean + + + true + + + true + + + + ГрафикРаботы + + <key>ru</key> + <value>График работы</value> + + 5 + + Date + + Date + + + + true + + + true + + + + ДниГрафика + 7 + + + true + + + true + + + + НомерТекущегоГода + + <key>ru</key> + <value>Год</value> + + 8 + + Number + + 4 + true + + + + true + + + true + + + + НомерПредыдущегоГода + 9 + + Number + + 4 + true + + + + true + + + true + + + + РезультатЗаполненПоШаблону + 12 + + Boolean + + + true + + + true + + + + РучноеРедактирование + 13 + + Boolean + + + true + + + true + + + + РезультатЗаполненияИнформационныйТекст + + <key>ru</key> + <value>Результат заполнения информационный текст</value> + + 14 + + String + + + + true + + + true + + + + МодифицированностьШаблона + 16 + + Boolean + + + true + + + true + + + + МодифицированностьРезультата + 17 + + Boolean + + + true + + + true + + + + ДниИзмененные + 6 + + + true + + + true + + + + РасписаниеПредпраздничногоДня + + <key>ru</key> + <value>Расписание предпраздничного дня</value> + + 11 + + String + + + + true + + + true + + + + РучноеРедактированиеИнформационныйТекст + + <key>ru</key> + <value>Ручное редактирование информационный текст</value> + + 18 + + String + + + + true + + + true + + + + ЗаполнитьПоШаблону + + <key>ru</key> + <value>Заполнить по шаблону</value> + + 1 + + ru + Заполнить по шаблону + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьПоШаблону + + + TextPicture + true + DontUse + + + РезультатЗаполнения + + <key>ru</key> + <value>Результат заполнения >></value> + + 2 + + ru + Результат заполнения графика работы по указанным настройкам + + + true + + + + РезультатЗаполнения + + + DontUse + + + НастройкаЗаполнения + + <key>ru</key> + <value><< Настройка заполнения</value> + + 3 + + ru + Настройка заполнения + + + true + + + + НастройкаЗаполнения + + + DontUse + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..42ded773 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,28 @@ + +

Сведения о графике работы.

+

График работы вводится на основании производственного календаряГрафики работы можно ввести как для предприятия в целом, так и для его подразделений (например, график работы склада).

+

В зависимости от производственной необходимости или от потребностей тех подразделений, для которых график работы предназначен, графики работы могут настраиваться на весь год или на определенный период. Также настройка графика работы может проводиться время от времени в течение всего года, на некоторое количество дней вперед.

+

Ввод нового графика работы

+
  • Введите Наименование, например, "График работы отдела информационных технологий". +
  • Укажите Период заполнения графика, например,с01.01.2014 по 31.07.2014. +
    • Для этого можно: +
      • написать необходимые даты вручную. +
      • выбрать из календаря, нажав .
    • по умолчанию началом периода является 1 января текущего года. +
    • если концом периода является 31 декабря, то это поле можно не заполнять - по умолчанию программа заполняет график до конца года.
  • Выберите из списка Производственный календарь, на основании которого будет настраиваться график. Их может быть несколько, т.к. в разных регионах предусмотрен разный состав праздничных дней и соответственно переносов. Если производственный календарь на предприятии единственный, то он проставляется программой по умолчанию. +
  • Выберите Способ заполнения: +
    • По неделям - недельный или почасовой график работы привязан к дням недели. Это самый простой график работы, наиболее часто встречающийся. К этому виду принадлежат графики "40-часовая рабочая неделя" и другие. Вариантами недельного графика являются пятидневка, шестидневка, два дня в неделю и т.д. Различаются они только количеством отработанного времени или отработанных дней. +
    • По циклам - такой график привязан к числам месяца, т.к. в качестве начала цикла указывается определенная дата, от которой отсчитываются дни цикла. Дни недели на этот график не влияют, очень редко учитываются праздничные дни. Вариантами циклических графиков являются сменные графики, а также графики со скользящими выходными: сутки через трое, два через два и т.д. +
      • В качестве примера рассмотрим график работы склада, который получает и выдает товар круглосуточно в течение 4 дней. На одни сутки склад закрывается для профилактики оборудования и дезинфекции. В этом случае длина цикла составляет 5 дней. +
        • Укажите длину цикла, например, По циклам длиной 5 дней. Поле является обязательным. +
        • Укажите начало цикла, например, начиная с 03.01.2014. Поле является обязательным, заполняется программой автоматически. По умолчанию цикл начинается с начала Периода заполнения графика (например, с 01.01.2014), при необходимости можно указать другое число.
  • Составьте Шаблон заполнения. Это можно сделать двумя способами: +
    • Укажите флажками рабочие дни. Этого достаточно, чтобы в графике работы отразились рабочие и выходные дни. После этого можно перейти к следующим шагам заполнения графика работы, просмотреть результат заполнения и сохранить график работы. +
    • Введите расписание работы для каждого рабочего дня с помощью ссылки Заполнить расписание. Обычно предприятие и его подразделения работают по определенному расписанию. +
      • Заполните Расписание работы для каждого рабочего дня недели или цикла с помощью кнопки Добавить. Введите Время начала и Время окончания рабочего дня. +
        • В расписание работы помещается только рабочее время. Если в работе предусмотрены перерывы, то расписание необходимо заполнить в несколько строк, т.к. перерывы в рабочее время не входят. Выходные дни не заполняются. +
        • После заполнения расписания нажмите ОК. В ссылке будет указано общее количество часов и режим работы, флажки у рабочих дней проставляются по умолчанию. 
  • При необходимости включите флажок Учитывать праздники. В этом случае из состава рабочих дней будут исключаться дни, выпадающие на праздники, указанные в выбранном производственном календаре. +
    • Если в графике работы учитываются праздники и расписание предпраздничного дня будет отличаться, с помощью ссылки Заполнить расписание заполните Расписание предпраздничного дня по аналогии с расписанием работы.
  • Укажите Горизонт планирования - введите количество месяцев, на которое график должен быть заполнен вперед. Если горизонт планирования заполнен, то программа сравнивает период заполнения графика с числом месяцев горизонта планирования, и выдает предупреждение, если график не был заполнен до нужной даты. +
  • В информационном поле под полем Горизонт планирования программа указывает, до какого числа заполнен график работы. +
  • Напишите Описание - заполните подробную информацию о введенном графике. Это поможет найти нужный график работы в списке, когда их будет много.

Как просмотреть новый график работы

+
  • Нажмите Результат заполнения. Будут показаны рабочие и выходные дни по месяцам. +
  • Нажмите Настройка заполнения, для того чтобы закончить просмотр и продолжить работу над графиком работы.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..bd238d42 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,1066 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Не Объект.Ссылка.Пустая() Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан("Справочник.Календари", ЭтотОбъект); + + // Если производственный календарь в системе единственный, заполняем его по умолчанию. + ПроизводственныеКалендари = Справочники.ПроизводственныеКалендари.СписокПроизводственныхКалендарей(); + Если ПроизводственныеКалендари.Количество() = 1 Тогда + Объект.ПроизводственныйКалендарь = ПроизводственныеКалендари[0]; + КонецЕсли; + + ДлинаЦикла = 7; + + Объект.ДатаНачала = НачалоГода(ТекущаяДатаСеанса()); + Объект.ДатаОтсчета = НачалоГода(ТекущаяДатаСеанса()); + + ЗаполнитьДаннымиТекущегоГода(Параметры.ЗначениеКопирования); + + ПриПолученииДанныхНаСервере(); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + ДлинаЦикла = Объект.ШаблонЗаполнения.Количество(); + ЗаполнитьДаннымиТекущегоГода(); + + ПриПолученииДанныхНаСервере(ТекущийОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + Перем НомерГода; + + Если Не ПараметрыЗаписи.Свойство("НомерГода", НомерГода) Тогда + НомерГода = НомерТекущегоГода; + КонецЕсли; + + // Если данные текущего года отредактированы вручную, + // то записываем их как есть, остальные периоды обновляем по шаблону. + + Если МодифицированностьРезультата Тогда + РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(ТекущийОбъект.Ссылка, ДниГрафика, + Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31), Истина); + КонецЕсли; + ЗаписатьПризнакРучногоРедактирования(ТекущийОбъект, НомерГода); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + ДлинаЦикла = Объект.ШаблонЗаполнения.Количество(); + + УстановитьЭлементыНастройкиЗаполнения(ЭтотОбъект); + + СформироватьШаблонЗаполнения(Объект.СпособЗаполнения, Объект.ШаблонЗаполнения, ДлинаЦикла, Объект.ДатаОтсчета); + + ЗаполнитьПредставлениеРасписания(ЭтотОбъект); + + УточнитьДатуЗаполненности(); + + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Ложь); + + ЗаполнитьДаннымиТекущегоГода(); + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + Если Объект.СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоЦикламПроизвольнойДлины Тогда + ПроверяемыеРеквизиты.Добавить("ДлинаЦикла"); + ПроверяемыеРеквизиты.Добавить("ДатаОтсчета"); + КонецЕсли; + + Если Объект.ШаблонЗаполнения.НайтиСтроки(Новый Структура("ДеньВключенВГрафик", Истина)).Количество() = 0 Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Не отмечены дни, включаемые в график работы'"), , "Объект.ШаблонЗаполнения", , Отказ); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПроизводственныйКалендарьПриИзменении(Элемент) + + УстановитьДоступностьУчитыватьПраздники(ЭтотОбъект); + УстановитьДоступностьУчитыватьНерабочиеПериоды(ЭтотОбъект); + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура СпособЗаполненияПриИзменении(Элемент) + + УстановитьЭлементыНастройкиЗаполнения(ЭтотОбъект); + + УточнитьДатуОтсчета(); + + СформироватьШаблонЗаполнения(Объект.СпособЗаполнения, Объект.ШаблонЗаполнения, ДлинаЦикла, Объект.ДатаОтсчета); + ЗаполнитьПредставлениеРасписания(ЭтотОбъект); + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ДатаНачалаПриИзменении(Элемент) + + Если Объект.ДатаНачала < Дата(1900, 1, 1) Тогда + Объект.ДатаНачала = НачалоГода(ОбщегоНазначенияКлиент.ДатаСеанса()); + КонецЕсли; + + УстановитьДоступностьУчитыватьНерабочиеПериоды(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ДатаОкончанияПриИзменении(Элемент) + УстановитьДоступностьУчитыватьНерабочиеПериоды(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ДатаОтсчетаПриИзменении(Элемент) + + УточнитьДатуОтсчета(); + + СформироватьШаблонЗаполнения(Объект.СпособЗаполнения, Объект.ШаблонЗаполнения, ДлинаЦикла, Объект.ДатаОтсчета); + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ДлинаЦиклаПриИзменении(Элемент) + + СформироватьШаблонЗаполнения(Объект.СпособЗаполнения, Объект.ШаблонЗаполнения, ДлинаЦикла, Объект.ДатаОтсчета); + ЗаполнитьПредставлениеРасписания(ЭтотОбъект); + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура УчитыватьПраздникиПриИзменении(Элемент) + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина); + + УстановитьДоступностьРасписанияПредпраздничногоДня(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура УчитыватьНерабочиеПериодыПриИзменении(Элемент) + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура РасписаниеПредпраздничногоДняНажатие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + НачатьЗаполнениеРасписанияДня(0); + +КонецПроцедуры + +&НаКлиенте +Процедура ГоризонтПланированияПриИзменении(Элемент) + + УточнитьЗаполненностьГрафика(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект, "Объект.Описание"); + +КонецПроцедуры + +&НаКлиенте +Процедура НомерТекущегоГодаПриИзменении(Элемент) + + Если НомерТекущегоГода < Год(Объект.ДатаНачала) + Или (ЗначениеЗаполнено(Объект.ДатаОкончания) И НомерТекущегоГода > Год(Объект.ДатаОкончания)) Тогда + НомерТекущегоГода = НомерПредыдущегоГода; + Возврат; + КонецЕсли; + + ЗаписыватьДанныеГрафика = Ложь; + + Если МодифицированностьРезультата Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Записать измененные данные за %1 год?'"), Формат(НомерПредыдущегоГода, "ЧГ=0")); + + Оповещение = Новый ОписаниеОповещения("НомерТекущегоГодаПриИзмененииЗавершение", ЭтотОбъект); + ПоказатьВопрос(Оповещение, ТекстСообщения, РежимДиалогаВопрос.ДаНет); + Возврат; + + КонецЕсли; + + ОбработатьИзменениеГода(ЗаписыватьДанныеГрафика); + + УстановитьСнятьМодифицированностьРезультата(ЭтотОбъект, Ложь); + + Элементы.ГрафикРаботы.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГрафикРаботыПриВыводеПериода(Элемент, ОформлениеПериода) + + Для Каждого СтрокаОформленияПериода Из ОформлениеПериода.Даты Цикл + Если ДниГрафика.Получить(СтрокаОформленияПериода.Дата) = Неопределено Тогда + ЦветТекстаДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняПроизводственногоКалендаряНеУказанЦвет"); + Иначе + ЦветТекстаДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняПроизводственногоКалендаряРабочийЦвет"); + КонецЕсли; + СтрокаОформленияПериода.ЦветТекста = ЦветТекстаДня; + // Ручное редактирование + Если ДниИзмененные.Получить(СтрокаОформленияПериода.Дата) = Неопределено Тогда + ЦветФонаДня = ОбщегоНазначенияКлиент.ЦветСтиля("ЦветФонаПоля"); + Иначе + ЦветФонаДня = ОбщегоНазначенияКлиент.ЦветСтиля("ДатаГрафикаИзмененнаяФон"); + КонецЕсли; + СтрокаОформленияПериода.ЦветФона = ЦветФонаДня; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ГрафикРаботыВыбор(Элемент, ВыбраннаяДата) + + Если ДниГрафика.Получить(ВыбраннаяДата) = Неопределено Тогда + // Включаем в график + ГрафикиРаботыКлиент.ВставитьВФиксированноеСоответствие(ДниГрафика, ВыбраннаяДата, Истина); + ДеньВключенВГрафик = Истина; + Иначе + // Исключаем из графика + ГрафикиРаботыКлиент.УдалитьИзФиксированногоСоответствия(ДниГрафика, ВыбраннаяДата); + ДеньВключенВГрафик = Ложь; + КонецЕсли; + + // Фиксируем ручное изменение на дату. + ГрафикиРаботыКлиент.ВставитьВФиксированноеСоответствие(ДниИзмененные, ВыбраннаяДата, ДеньВключенВГрафик); + + Элементы.ГрафикРаботы.Обновить(); + + УстановитьСнятьПризнакРучногоРедактирования(ЭтотОбъект, Истина); + УстановитьСнятьМодифицированностьРезультата(ЭтотОбъект, Истина); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыШаблонЗаполнения + +&НаКлиенте +Процедура ШаблонЗаполненияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + СтрокаШаблона = Объект.ШаблонЗаполнения.НайтиПоИдентификатору(ВыбраннаяСтрока); + НачатьЗаполнениеРасписанияДня(СтрокаШаблона.НомерСтроки, ВыбраннаяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ШаблонЗаполненияДеньВключенВГрафикПриИзменении(Элемент) + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаполнитьПоШаблону(Команда) + + ЗаполнитьПоШаблонуНаСервере(); + + Элементы.ГрафикРаботы.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура РезультатЗаполнения(Команда) + + Элементы.Страницы.ТекущаяСтраница = Элементы.РезультатЗаполненияСтраница; + + Если Не РезультатЗаполненПоШаблону Тогда + ЗаполнитьПоШаблонуНаСервере(Истина); + КонецЕсли; + + Элементы.ГрафикРаботы.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура НастройкаЗаполнения(Команда) + + Элементы.Страницы.ТекущаяСтраница = Элементы.НастройкаЗаполненияСтраница; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ПриПолученииДанныхНаСервере(ТекущийОбъект = Неопределено) + + Если ТекущийОбъект = Неопределено Тогда + ТекущийОбъект = Объект; + КонецЕсли; + + УстановитьЭлементыНастройкиЗаполнения(ЭтотОбъект); + + СформироватьШаблонЗаполнения( + ТекущийОбъект.СпособЗаполнения, Объект.ШаблонЗаполнения, ДлинаЦикла, ТекущийОбъект.ДатаОтсчета); + + УточнитьДатуЗаполненности(); + + ЗаполнитьПредставлениеРасписания(ЭтотОбъект); + + УстановитьДоступностьУчитыватьНерабочиеПериоды(ЭтотОбъект); + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Истина); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Ложь); + + УстановитьДоступностьУчитыватьПраздники(ЭтотОбъект); + УстановитьДоступностьРасписанияПредпраздничногоДня(ЭтотОбъект); + + УстановитьДоступностьРучныхИзменений(); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ШаблонЗаполненияПредставлениеРасписания.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ШаблонЗаполнения.ПредставлениеРасписания"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ШаблонЗаполнения.ДеньВключенВГрафик"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ПредставлениеПустогоРасписания()); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ШаблонЗаполненияНомерСтроки.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.СпособЗаполнения"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям; + + Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаполненностьИнформационныйТекст.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТребуетЗаполнения"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныеДанныеЦвет); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РезультатЗаполненияИнформационныйТекст.Имя); + + ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РезультатЗаполненПоШаблону"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РучноеРедактирование"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныеДанныеЦвет); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасписаниеПредпраздничногоДня.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РасписаниеПредпраздничногоДня"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.УчитыватьПраздники"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ПредставлениеПустогоРасписания()); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьЭлементыНастройкиЗаполнения(Форма) + + ДоступностьНастройки = Форма.Объект.СпособЗаполнения = ПредопределенноеЗначение("Перечисление.СпособыЗаполненияГрафикаРаботы.ПоЦикламПроизвольнойДлины"); + + Форма.Элементы.ДлинаЦикла.ТолькоПросмотр = Не ДоступностьНастройки; + Форма.Элементы.ДатаОтсчета.ТолькоПросмотр = Не ДоступностьНастройки; + + Форма.Элементы.ДатаОтсчета.АвтоОтметкаНезаполненного = ДоступностьНастройки; + Форма.Элементы.ДатаОтсчета.ОтметкаНезаполненного = ДоступностьНастройки И Не ЗначениеЗаполнено(Форма.Объект.ДатаОтсчета); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура СформироватьШаблонЗаполнения(СпособЗаполнения, ШаблонЗаполнения, Знач ДлинаЦикла, Знач ДатаОтсчета = Неопределено) + + // Формирует таблицу редактирования шаблона заполнения по дням. + + Если СпособЗаполнения = ПредопределенноеЗначение("Перечисление.СпособыЗаполненияГрафикаРаботы.ПоНеделям") Тогда + ДлинаЦикла = 7; + КонецЕсли; + + Пока ШаблонЗаполнения.Количество() > ДлинаЦикла Цикл + ШаблонЗаполнения.Удалить(ШаблонЗаполнения.Количество() - 1); + КонецЦикла; + + Пока ШаблонЗаполнения.Количество() < ДлинаЦикла Цикл + ШаблонЗаполнения.Добавить(); + КонецЦикла; + + Если СпособЗаполнения = ПредопределенноеЗначение("Перечисление.СпособыЗаполненияГрафикаРаботы.ПоНеделям") Тогда + ШаблонЗаполнения[0].ПредставлениеДня = НСтр("ru = 'Понедельник'"); + ШаблонЗаполнения[1].ПредставлениеДня = НСтр("ru = 'Вторник'"); + ШаблонЗаполнения[2].ПредставлениеДня = НСтр("ru = 'Среда'"); + ШаблонЗаполнения[3].ПредставлениеДня = НСтр("ru = 'Четверг'"); + ШаблонЗаполнения[4].ПредставлениеДня = НСтр("ru = 'Пятница'"); + ШаблонЗаполнения[5].ПредставлениеДня = НСтр("ru = 'Суббота'"); + ШаблонЗаполнения[6].ПредставлениеДня = НСтр("ru = 'Воскресенье'"); + Иначе + ДатаДня = ДатаОтсчета; + Для Каждого СтрокаДня Из ШаблонЗаполнения Цикл + СтрокаДня.ПредставлениеДня = Формат(ДатаДня, "ДФ=д.ММ"); + СтрокаДня.ПредставлениеРасписания = ПредставлениеПустогоРасписания(); + ДатаДня = ДатаДня + 86400; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьПредставлениеРасписания(Форма) + + Для Каждого СтрокаШаблона Из Форма.Объект.ШаблонЗаполнения Цикл + СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(Форма, СтрокаШаблона.НомерСтроки); + КонецЦикла; + + Форма.РасписаниеПредпраздничногоДня = ПредставлениеРасписанияДня(Форма, 0); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеРасписанияДня(Форма, НомерДня) + + ПредставлениеИнтервалов = ""; + Секунд = 0; + Для Каждого СтрокаРасписания Из Форма.Объект.РасписаниеРаботы Цикл + Если СтрокаРасписания.НомерДня <> НомерДня Тогда + Продолжить; + КонецЕсли; + ПредставлениеИнтервала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "%1-%2, ", + ПредставлениеВремениСуток(СтрокаРасписания.ВремяНачала), + ПредставлениеВремениСуток(СтрокаРасписания.ВремяОкончания)); + ПредставлениеИнтервалов = ПредставлениеИнтервалов + ПредставлениеИнтервала; + Если Не ЗначениеЗаполнено(СтрокаРасписания.ВремяОкончания) Тогда + СекундИнтервала = КонецДня(СтрокаРасписания.ВремяОкончания) - СтрокаРасписания.ВремяНачала + 1; + Иначе + СекундИнтервала = СтрокаРасписания.ВремяОкончания - СтрокаРасписания.ВремяНачала; + КонецЕсли; + Секунд = Секунд + СекундИнтервала; + КонецЦикла; + СтроковыеФункцииКлиентСервер.УдалитьПоследнийСимволВСтроке(ПредставлениеИнтервалов, 2); + + Если Секунд = 0 Тогда + Возврат ПредставлениеПустогоРасписания(); + КонецЕсли; + + Часов = Окр(Секунд / 3600, 1); + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 ч. (%2)'"), Часов, ПредставлениеИнтервалов); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеВремениСуток(Знач ВремяСуток) + + Если Не ЗначениеЗаполнено(ВремяСуток) Тогда + ВремяСуток = Дата(1980, 1, 1); + КонецЕсли; + + Возврат Формат(ВремяСуток, НСтр("ru = 'ДФ=ЧЧ:мм'")); + +КонецФункции + +&НаКлиенте +Функция РасписаниеРаботы(НомерДня) + + РасписаниеДня = Новый Массив; + + Для Каждого СтрокаРасписания Из Объект.РасписаниеРаботы Цикл + Если СтрокаРасписания.НомерДня = НомерДня Тогда + РасписаниеДня.Добавить(Новый Структура("ВремяНачала, ВремяОкончания", СтрокаРасписания.ВремяНачала, СтрокаРасписания.ВремяОкончания)); + КонецЕсли; + КонецЦикла; + + Возврат РасписаниеДня; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеПустогоРасписания() + + Возврат НСтр("ru = 'Заполнить расписание'"); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьУчитыватьПраздники(Форма) + + Форма.Элементы.УчитыватьПраздники.Доступность = ЗначениеЗаполнено(Форма.Объект.ПроизводственныйКалендарь); + Если Не Форма.Элементы.УчитыватьПраздники.Доступность Тогда + Форма.Объект.УчитыватьПраздники = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьУчитыватьНерабочиеПериоды(Форма) + + Элементы = Форма.Элементы; + Объект = Форма.Объект; + + Элементы.УчитыватьНерабочиеПериодыГруппа.Видимость = Ложь; + Если Не ЗначениеЗаполнено(Объект.ПроизводственныйКалендарь) Тогда + Возврат; + КонецЕсли; + + Периоды = ПериодыНерабочихДней(Объект.ПроизводственныйКалендарь, Объект.ДатаНачала, Объект.ДатаОкончания); + Если Периоды.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Элементы.УчитыватьНерабочиеПериодыГруппа.Видимость = Истина; + + Пояснение = ""; + Для Каждого ОписаниеПериода Из Периоды Цикл + Пояснение = Пояснение + ?(Не ПустаяСтрока(Пояснение), Символы.ПС, "") + ОписаниеПериода.Представление; + КонецЦикла; + Элементы.НерабочиеПериодыИнформация.Заголовок = Пояснение; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПериодыНерабочихДней(ПроизводственныйКалендарь, ДатаНачала, ДатаОкончания) + Возврат КалендарныеГрафики.ПериодыНерабочихДней( + ПроизводственныйКалендарь, Новый СтандартныйПериод(ДатаНачала, ДатаОкончания)); +КонецФункции + +&НаСервере +Процедура УточнитьДатуЗаполненности() + + ТекстЗапроса = + "ВЫБРАТЬ + | МАКСИМУМ(КалендарныеГрафики.ДатаГрафика) КАК Дата + |ИЗ + | РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики + |ГДЕ + | КалендарныеГрафики.Календарь = &ГрафикРаботы"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("ГрафикРаботы", Объект.Ссылка); + Выборка = Запрос.Выполнить().Выбрать(); + + ДатаЗаполненности = Неопределено; + Если Выборка.Следующий() Тогда + ДатаЗаполненности = Выборка.Дата; + КонецЕсли; + + УточнитьЗаполненностьГрафика(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УточнитьЗаполненностьГрафика(Форма) + + Форма.ТребуетЗаполнения = Ложь; + + Если Форма.Параметры.Ключ.Пустая() Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(Форма.ДатаЗаполненности) Тогда + Форма.ЗаполненностьИнформационныйТекст = НСтр("ru = 'График работы не заполнен'"); + Форма.ТребуетЗаполнения = Истина; + Иначе + Если Не ЗначениеЗаполнено(Форма.Объект.ГоризонтПланирования) Тогда + ИнформационныйТекст = НСтр("ru = 'График работы заполнен до %1'"); + Форма.ЗаполненностьИнформационныйТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИнформационныйТекст, Формат(Форма.ДатаЗаполненности, "ДЛФ=D")); + Иначе + #Если ВебКлиент Или ТонкийКлиент ИЛИ МобильныйКлиент Тогда + ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); + #Иначе + ТекущаяДата = ТекущаяДатаСеанса(); + #КонецЕсли + КонецГоризонтаПланирования = ДобавитьМесяц(ТекущаяДата, Форма.Объект.ГоризонтПланирования); + ИнформационныйТекст = НСтр("ru = 'График работы заполнен до %1, с учетом горизонта планирования график должен быть заполнен до %2'"); + Форма.ЗаполненностьИнформационныйТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИнформационныйТекст, Формат(Форма.ДатаЗаполненности, "ДЛФ=D"), Формат(КонецГоризонтаПланирования, "ДЛФ=D")); + Если КонецГоризонтаПланирования > Форма.ДатаЗаполненности Тогда + Форма.ТребуетЗаполнения = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + Форма.Элементы.ЗаполненностьДекорация.Картинка = ?(Форма.ТребуетЗаполнения, БиблиотекаКартинок.Предупреждение, БиблиотекаКартинок.Информация); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПоШаблонуНаСервере(СохранятьРучноеРедактирование = Ложь) + + ПараметрыЗаполнения = РегистрыСведений.КалендарныеГрафики.ПараметрыЗаполненияГрафика(); + ПараметрыЗаполнения.СпособЗаполнения = Объект.СпособЗаполнения; + ПараметрыЗаполнения.ШаблонЗаполнения = Объект.ШаблонЗаполнения; + ПараметрыЗаполнения.ПроизводственныйКалендарь = Объект.ПроизводственныйКалендарь; + ПараметрыЗаполнения.УчитыватьПраздники = Объект.УчитыватьПраздники; + ПараметрыЗаполнения.УчитыватьНерабочиеПериоды = Объект.УчитыватьНерабочиеПериоды; + ПараметрыЗаполнения.ДатаОтсчета = Объект.ДатаОтсчета; + + ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик( + Объект.ДатаНачала, Объект.ДатаОкончания, ПараметрыЗаполнения); + + Если РучноеРедактирование Тогда + Если СохранятьРучноеРедактирование Тогда + // Переносим ручные корректировки. + Для Каждого КлючИЗначение Из ДниИзмененные Цикл + ДатаИзменений = КлючИЗначение.Ключ; + ДеньВключенВГрафик = КлючИЗначение.Значение; + Если ДеньВключенВГрафик Тогда + ДниВключенныеВГрафик.Вставить(ДатаИзменений, Истина); + Иначе + ДниВключенныеВГрафик.Удалить(ДатаИзменений); + КонецЕсли; + КонецЦикла; + Иначе + УстановитьСнятьМодифицированностьРезультата(ЭтотОбъект, Истина); + УстановитьСнятьПризнакРучногоРедактирования(ЭтотОбъект, Ложь); + КонецЕсли; + КонецЕсли; + + // Переносим результат в исходное соответствие заполнения, + // чтобы не «затереть» даты, не входящие в интервал заполнения. + ДниГрафикаСоответствие = Новый Соответствие(ДниГрафика); + ДатаДня = Объект.ДатаНачала; + ДатаОкончания = Объект.ДатаОкончания; + Если Не ЗначениеЗаполнено(ДатаОкончания) Тогда + ДатаОкончания = КонецГода(Объект.ДатаНачала); + КонецЕсли; + Пока ДатаДня <= ДатаОкончания Цикл + ДеньВключенВГрафик = ДниВключенныеВГрафик[ДатаДня]; + Если ДеньВключенВГрафик = Неопределено Тогда + ДниГрафикаСоответствие.Удалить(ДатаДня); + Иначе + ДниГрафикаСоответствие.Вставить(ДатаДня, ДеньВключенВГрафик); + КонецЕсли; + ДатаДня = ДатаДня + 86400; + КонецЦикла; + + ДниГрафика = Новый ФиксированноеСоответствие(ДниГрафикаСоответствие); + + Если Не РезультатЗаполненПоШаблону Тогда + УстановитьСнятьМодифицированностьРезультата(ЭтотОбъект, Истина); + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьДаннымиТекущегоГода(ЗначениеКопирования = Неопределено) + + // Заполняет форму данными текущего года. + + НастроитьПолеКалендаря(); + + Если ЗначениеЗаполнено(ЗначениеКопирования) Тогда + ГрафикСсылка = ЗначениеКопирования; + Иначе + ГрафикСсылка = Объект.Ссылка; + КонецЕсли; + + ДниГрафика = Новый ФиксированноеСоответствие( + РегистрыСведений.КалендарныеГрафики.ПрочитатьДанныеГрафикаИзРегистра(ГрафикСсылка, НомерТекущегоГода)); + + ПрочитатьПризнакРучногоРедактирования(Объект, НомерТекущегоГода); + + // Если нет ручных корректировок и данных тоже нет, то формируем результат по шаблону за выбранный год. + Если ДниГрафика.Количество() = 0 И ДниИзмененные.Количество() = 0 Тогда + ПараметрыЗаполнения = РегистрыСведений.КалендарныеГрафики.ПараметрыЗаполненияГрафика(); + ПараметрыЗаполнения.СпособЗаполнения = Объект.СпособЗаполнения; + ПараметрыЗаполнения.ШаблонЗаполнения = Объект.ШаблонЗаполнения; + ПараметрыЗаполнения.ПроизводственныйКалендарь = Объект.ПроизводственныйКалендарь; + ПараметрыЗаполнения.УчитыватьПраздники = Объект.УчитыватьПраздники; + ПараметрыЗаполнения.УчитыватьНерабочиеПериоды = Объект.УчитыватьНерабочиеПериоды; + ПараметрыЗаполнения.ДатаОтсчета = Объект.ДатаОтсчета; + ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик( + Объект.ДатаНачала, Дата(НомерТекущегоГода, 12, 31), ПараметрыЗаполнения); + ДниГрафика = Новый ФиксированноеСоответствие(ДниВключенныеВГрафик); + КонецЕсли; + + УстановитьСнятьМодифицированностьРезультата(ЭтотОбъект, Ложь); + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Не МодифицированностьШаблона); + +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьПризнакРучногоРедактирования(ТекущийОбъект, НомерГода) + + Если ТекущийОбъект.Ссылка.Пустая() Тогда + УстановитьСнятьПризнакРучногоРедактирования(ЭтотОбъект, Ложь); + Возврат; + КонецЕсли; + + Запрос = Новый Запрос( + "ВЫБРАТЬ + | РучныеИзменения.ДатаГрафика + |ИЗ + | РегистрСведений.РучныеИзмененияГрафиковРаботы КАК РучныеИзменения + |ГДЕ + | РучныеИзменения.ГрафикРаботы = &ГрафикРаботы + | И РучныеИзменения.Год = &Год"); + + Запрос.УстановитьПараметр("ГрафикРаботы", ТекущийОбъект.Ссылка); + Запрос.УстановитьПараметр("Год", НомерГода); + + Соответствие = Новый Соответствие; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Соответствие.Вставить(Выборка.ДатаГрафика, Истина); + КонецЦикла; + ДниИзмененные = Новый ФиксированноеСоответствие(Соответствие); + + УстановитьСнятьПризнакРучногоРедактирования(ЭтотОбъект, ДниИзмененные.Количество() > 0); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьПризнакРучногоРедактирования(ТекущийОбъект, НомерГода) + + НаборЗаписей = РегистрыСведений.РучныеИзмененияГрафиковРаботы.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ГрафикРаботы.Установить(ТекущийОбъект.Ссылка); + НаборЗаписей.Отбор.Год.Установить(НомерГода); + + Для Каждого КлючИЗначение Из ДниИзмененные Цикл + СтрокаНабора = НаборЗаписей.Добавить(); + СтрокаНабора.ДатаГрафика = КлючИЗначение.Ключ; + СтрокаНабора.ГрафикРаботы = ТекущийОбъект.Ссылка; + СтрокаНабора.Год = НомерГода; + КонецЦикла; + + НаборЗаписей.Записать(); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьДанныеГрафикаРаботыНаГод(НомерГода) + + РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр(Объект.Ссылка, ДниГрафика, Дата(НомерГода, 1, 1), + Дата(НомерГода, 12, 31), Истина); + ЗаписатьПризнакРучногоРедактирования(Объект, НомерГода); + +КонецПроцедуры + +&НаСервере +Процедура ОбработатьИзменениеГода(ЗаписыватьДанныеГрафика) + + Если Не ЗаписыватьДанныеГрафика Тогда + ЗаполнитьДаннымиТекущегоГода(); + Возврат; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + Записать(Новый Структура("НомерГода", НомерПредыдущегоГода)); + Иначе + ЗаписатьДанныеГрафикаРаботыНаГод(НомерПредыдущегоГода); + ЗаполнитьДаннымиТекущегоГода(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСнятьПризнакРучногоРедактирования(Форма, РучноеРедактирование) + + Форма.РучноеРедактирование = РучноеРедактирование; + + Если Не РучноеРедактирование Тогда + Форма.ДниИзмененные = Новый ФиксированноеСоответствие(Новый Соответствие); + КонецЕсли; + + ЗаполнитьИнформационныйТекстРезультатаЗаполнения(Форма); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСнятьПризнакСоответствияРезультатовШаблону(Форма, РезультатЗаполненПоШаблону) + + Форма.РезультатЗаполненПоШаблону = РезультатЗаполненПоШаблону; + + ЗаполнитьИнформационныйТекстРезультатаЗаполнения(Форма); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСнятьМодифицированностьШаблона(Форма, МодифицированностьШаблона) + + Форма.МодифицированностьШаблона = МодифицированностьШаблона; + + Форма.Модифицированность = Форма.МодифицированностьШаблона Или Форма.МодифицированностьРезультата; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСнятьМодифицированностьРезультата(Форма, МодифицированностьРезультата) + + Форма.МодифицированностьРезультата = МодифицированностьРезультата; + + Форма.Модифицированность = Форма.МодифицированностьШаблона Или Форма.МодифицированностьРезультата; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьИнформационныйТекстРезультатаЗаполнения(Форма) + + ИнформационныйТекст = ""; + ИнформационнаяКартинка = Новый Картинка; + ДоступноЗаполнениеПоШаблону = Ложь; + Если Форма.РучноеРедактирование Тогда + ИнформационныйТекст = НСтр("ru = 'График работы на текущий год изменен вручную. + |Нажмите «Заполнить по шаблону» чтобы вернуться к автоматическому заполнению.'"); + ИнформационнаяКартинка = БиблиотекаКартинок.Предупреждение; + ДоступноЗаполнениеПоШаблону = Истина; + Иначе + Если Форма.РезультатЗаполненПоШаблону Тогда + Если ЗначениеЗаполнено(Форма.Объект.ПроизводственныйКалендарь) Тогда + ИнформационныйТекст = НСтр("ru = 'График работы автоматически обновляется при изменении производственного календаря за текущий год.'"); + ИнформационнаяКартинка = БиблиотекаКартинок.Информация; + КонецЕсли; + Иначе + ИнформационныйТекст = НСтр("ru = 'Отображаемый результат не соответствует настройке шаблона. + |Нажмите «Заполнить по шаблону», чтобы увидеть как выглядит график работы с учетом изменений шаблона.'"); + ИнформационнаяКартинка = БиблиотекаКартинок.Предупреждение; + ДоступноЗаполнениеПоШаблону = Истина; + КонецЕсли; + КонецЕсли; + + Форма.РезультатЗаполненияИнформационныйТекст = ИнформационныйТекст; + Форма.Элементы.РезультатЗаполненияДекорация.Картинка = ИнформационнаяКартинка; + Форма.Элементы.ЗаполнитьПоШаблону.Доступность = ДоступноЗаполнениеПоШаблону; + + ЗаполнитьИнформационныйТекстРучногоРедактирования(Форма); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьИнформационныйТекстРучногоРедактирования(Форма) + + ИнформационныйТекст = ""; + ИнформационнаяКартинка = Новый Картинка; + Если Форма.РучноеРедактирование Тогда + ИнформационнаяКартинка = БиблиотекаКартинок.Предупреждение; + ИнформационныйТекст = НСтр("ru = 'График работы на текущий год изменен вручную. Изменения выделены в результатах заполнения.'"); + КонецЕсли; + + Форма.РучноеРедактированиеИнформационныйТекст = ИнформационныйТекст; + Форма.Элементы.РучноеРедактированиеДекорация.Картинка = ИнформационнаяКартинка; + +КонецПроцедуры + +&НаСервере +Процедура НастроитьПолеКалендаря() + + Если НомерТекущегоГода = 0 Тогда + НомерТекущегоГода = Год(ТекущаяДатаСеанса()); + КонецЕсли; + НомерПредыдущегоГода = НомерТекущегоГода; + + ГрафикРаботы = Дата(НомерТекущегоГода, 1, 1); + Элементы.ГрафикРаботы.НачалоПериодаОтображения = Дата(НомерТекущегоГода, 1, 1); + Элементы.ГрафикРаботы.КонецПериодаОтображения = Дата(НомерТекущегоГода, 12, 31); + +КонецПроцедуры + +&НаКлиенте +Процедура НомерТекущегоГодаПриИзмененииЗавершение(Ответ, ДополнительныеПараметры) Экспорт + + ЗаписыватьДанныеГрафика = Ложь; + Если Ответ = КодВозвратаДиалога.Да Тогда + ЗаписыватьДанныеГрафика = Истина; + КонецЕсли; + + ОбработатьИзменениеГода(ЗаписыватьДанныеГрафика); + УстановитьСнятьМодифицированностьРезультата(ЭтотОбъект, Ложь); + Элементы.ГрафикРаботы.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура УточнитьДатуОтсчета() + + Если Объект.ДатаОтсчета < Дата(1900, 1, 1) Тогда + Объект.ДатаОтсчета = НачалоГода(ОбщегоНазначенияКлиент.ДатаСеанса()); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьРасписанияПредпраздничногоДня(Форма) + Элементы = Форма.Элементы; + Элементы.РасписаниеПредпраздничногоДня.Доступность = Форма.Объект.УчитыватьПраздники; +КонецПроцедуры + +&НаКлиенте +Функция ДополнительныеПараметрыЗаполненияРасписанияДня() + + ДополнительныеПараметры = Новый Структура( + "НомерДня, + |ИдентификаторСтрокиШаблона"); + Возврат ДополнительныеПараметры; + +КонецФункции + +&НаКлиенте +Процедура НачатьЗаполнениеРасписанияДня(НомерДня, ИдентификаторСтрокиШаблона = Неопределено) + + КонтекстВыбора = ДополнительныеПараметрыЗаполненияРасписанияДня(); + КонтекстВыбора.НомерДня = НомерДня; + КонтекстВыбора.ИдентификаторСтрокиШаблона = ИдентификаторСтрокиШаблона; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РасписаниеРаботы", РасписаниеРаботы(КонтекстВыбора.НомерДня)); + ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); + + ОбработчикЗакрытия = Новый ОписаниеОповещения("ЗавершитьЗаполнениеРасписанияДня", ЭтотОбъект, КонтекстВыбора); + ОткрытьФорму("Справочник.Календари.Форма.РасписаниеРаботы", ПараметрыФормы, ЭтотОбъект, , , , ОбработчикЗакрытия); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьЗаполнениеРасписанияДня(ВыбранноеЗначение, КонтекстВыбора) Экспорт + + Если ВыбранноеЗначение = Неопределено Или ТолькоПросмотр Тогда + Возврат; + КонецЕсли; + + // Удаляем ранее заполненное расписания для этого дня. + СтрокиДня = Новый Массив; + Для Каждого СтрокаРасписания Из Объект.РасписаниеРаботы Цикл + Если СтрокаРасписания.НомерДня = КонтекстВыбора.НомерДня Тогда + СтрокиДня.Добавить(СтрокаРасписания.ПолучитьИдентификатор()); + КонецЕсли; + КонецЦикла; + Для Каждого ИдентификаторСтроки Из СтрокиДня Цикл + Объект.РасписаниеРаботы.Удалить(Объект.РасписаниеРаботы.НайтиПоИдентификатору(ИдентификаторСтроки)); + КонецЦикла; + + // Заполняем расписание работы на день. + Для Каждого ОписаниеИнтервала Из ВыбранноеЗначение.РасписаниеРаботы Цикл + НоваяСтрока = Объект.РасписаниеРаботы.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ОписаниеИнтервала); + НоваяСтрока.НомерДня = КонтекстВыбора.НомерДня; + КонецЦикла; + + Если КонтекстВыбора.НомерДня = 0 Тогда + РасписаниеПредпраздничногоДня = ПредставлениеРасписанияДня(ЭтотОбъект, 0); + КонецЕсли; + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтотОбъект, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтотОбъект, Истина); + + Если КонтекстВыбора.ИдентификаторСтрокиШаблона <> Неопределено Тогда + СтрокаШаблона = Объект.ШаблонЗаполнения.НайтиПоИдентификатору(КонтекстВыбора.ИдентификаторСтрокиШаблона); + СтрокаШаблона.ДеньВключенВГрафик = ВыбранноеЗначение.РасписаниеРаботы.Количество() > 0; // расписание заполнено + СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(ЭтотОбъект, КонтекстВыбора.НомерДня); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьДоступностьРучныхИзменений() + + Если Не ПравоДоступа("Изменение", Метаданные.Справочники.Календари) Тогда + Элементы.ГрафикРаботы.ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Help/ru.html" new file mode 100644 index 00000000..ee6c52f4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Help/ru.html" @@ -0,0 +1,30 @@ + +

Список предназначен для ведения графиков работы.

+

Программа позволяет формировать и хранить графики работы, которые используются на предприятии. Графики работы формируются на основе производственных календарей. Можно использовать графики работы как для предприятия в целом, так и для его подразделений (например, график работы склада). В графике работы подразделения содержится информация о рабочих днях этого подразделения. Например, если склад предприятия работает на прием товара от поставщиков по вторникам и четвергам, то рабочими днями для графика работы "Прием товара на складе" будут являться вторники и четверги.

+

В зависимости от производственной необходимости или в зависимости от потребностей тех подразделений, для которых график работы предназначен, графики работы могут настраиваться на весь год или на определенный период. Также настройка графика работы может проводиться время от времени в течение всего года, на некоторое количество дней вперед.

+

В списке выводится:

+
  • +
    Наименование - заполняется при вводе графика;
    +
  • +
    Производственный календарь - при вводе указывается, на каком основании введен график работы.
    +
  • +
    Способ заполнения - вид графика. В зависимости от способа заполнения графики могут быть двух видов:
    +
    • +
      По неделям (почасовые) - такой график жестко привязан к дням недели. Это самый простой график работы, наиболее часто встречающийся. К этому виду принадлежат графики "40-часовая рабочая неделя" и другие. Различаются они только количеством отработанного времени или отработанных дней. Пятидневка, шестидневка, два рабочих дня в неделю - варианты этого графика работы.
      +
    • +
      По циклам произвольной длины. Такой график жестко привязан к числам месяца, т.к. в качестве начала цикла указывается определенная дата, от которой отсчитывается дни цикла. Дни недели на этот график не влияют, очень редко учитываются праздничные дни. Вариантами циклических графиков являются сменные графики, а также графики со скользящими выходными: сутки через трое, два через два и прочие.
  • +
    Возможная причина - результат проверки правильности заполнения графика. Выводится предупреждение об ошибках при заполнении графика работы.
    +
  • +
    Описание - подробное описание заполняется при вводе.

Красным цветом выделяются графики, которые неправильно заполнены.

+

Настройка графиков работы

+
  • Необходимо ввести нужное количество графиков работы на основании производственного календаря. +
  • Для каждого графика работы необходимо указать, какие дни являются в нем рабочими. График работы необходимо заполнять на столько дней вперед, на сколько это необходимо тем, кто его использует. +
  • В конце года необходимо заполнить имеющийся график работы несколько вперед на основании данных прошлого года на следующий год, чтобы не было ошибок при расчетах различных документов (на период до выхода общегосударственного календаря на следующий год).

Ввод нового графика работы

+

Нажмите Создать, заполните необходимые поля.

+

Группировка графиков работы

+

Если графиков работы в списке много, полезно разбить их на группы. Графики работы можно сгруппировать по разным признакам, например, по способу заполнения.

+
  • +
    Для ввода группы нажмите , введите наименование группы. Можно подчинить одну группу другой. Для этого при вводе выберите вышестоящую группу.
    +
  • +
    Введите необходимое количество групп, с помощью мыши перетащите графики работы в соответствующие группы.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ManagerModule.bsl" new file mode 100644 index 00000000..2499eca2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ManagerModule.bsl" @@ -0,0 +1,95 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ГрафикиРаботы.Ссылка КАК Ссылка + |ИЗ + | Справочник.Календари КАК ГрафикиРаботы + |ГДЕ + | НЕ ГрафикиРаботы.ЭтоГруппа"; + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ОбработкаЗавершена = Истина; + + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, Метаданные.Справочники.Календари.ПолноеИмя()); + + Обработано = 0; + Проблемных = 0; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.Календари"); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; + + Выборка.Сбросить(); + Пока Выборка.Следующий() Цикл + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + ГрафикОбъект = Выборка.Ссылка.ПолучитьОбъект(); + ГрафикОбъект.УчитыватьНерабочиеПериоды = Истина; + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ГрафикОбъект); + Обработано = Обработано + 1; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + Проблемных = Проблемных + 1; + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать график работы ""%1"" по причине: + |%2'"), + Выборка.Ссылка, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации( + ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Предупреждение, + Метаданные.Справочники.Календари, , + ТекстСообщения); + КонецПопытки; + КонецЦикла; + + Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, Метаданные.Справочники.Календари.ПолноеИмя()) Тогда + ОбработкаЗавершена = Ложь; + КонецЕсли; + + ИмяПроцедуры = "Справочник.Календари.ОбработатьДанныеДляПереходаНаНовуюВерсию"; + + Если Обработано = 0 И Проблемных <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре %1 не удалось обработать некоторые записи (пропущены): %2'"), + ИмяПроцедуры, + Проблемных); + ВызватьИсключение ТекстСообщения; + КонецЕсли; + + ЗаписьЖурналаРегистрации( + ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, , , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедура %1 обработала очередную порцию записей: %2'"), + ИмяПроцедуры, + Обработано)); + Параметры.ОбработкаЗавершена = ОбработкаЗавершена; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..25ff61fd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ObjectModule.bsl" @@ -0,0 +1,76 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если ЗначениеЗаполнено(ДатаОкончания) И ДатаОкончания < ДатаНачала Тогда + ТекстСообщения = НСтр("ru = 'Дата окончания меньше даты начала. Скорее всего, дата окончания заполнена неверно.'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Ссылка, , , Отказ); + КонецЕсли; + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан("Справочник.Календари"); + + Если Не УчитыватьПраздники Тогда + // Если график работы не учитывает праздники, то нужно удалить интервалы предпраздничного дня. + РасписаниеПредпраздничногоДня = РасписаниеРаботы.НайтиСтроки(Новый Структура("НомерДня", 0)); + Для Каждого СтрокаРасписания Из РасписаниеПредпраздничногоДня Цикл + РасписаниеРаботы.Удалить(СтрокаРасписания); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + // Если дата окончания не указана, она будет подобрана по производственному календарю. + ДатаОкончанияЗаполнения = ДатаОкончания; + + ПараметрыЗаполнения = РегистрыСведений.КалендарныеГрафики.ПараметрыЗаполненияГрафика(); + ПараметрыЗаполнения.СпособЗаполнения = СпособЗаполнения; + ПараметрыЗаполнения.ШаблонЗаполнения = ШаблонЗаполнения; + ПараметрыЗаполнения.ПроизводственныйКалендарь = ПроизводственныйКалендарь; + ПараметрыЗаполнения.УчитыватьПраздники = УчитыватьПраздники; + ПараметрыЗаполнения.УчитыватьНерабочиеПериоды = УчитыватьНерабочиеПериоды; + ПараметрыЗаполнения.ДатаОтсчета = ДатаОтсчета; + ДниВключенныеВГрафик = РегистрыСведений.КалендарныеГрафики.ДниВключенныеВГрафик( + ДатаНачала, ДатаОкончанияЗаполнения, ПараметрыЗаполнения); + + РегистрыСведений.КалендарныеГрафики.ЗаписатьДанныеГрафикаВРегистр( + Ссылка, ДниВключенныеВГрафик, ДатаНачала, ДатаОкончанияЗаполнения); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270.mdo" new file mode 100644 index 00000000..e3377e68 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270.mdo" @@ -0,0 +1,529 @@ + + + + + + + + + + Календари + + ru + Графики работы + + true + Catalog.Календари.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа графиков работы + + + ru + Группа, в которую входит текущий график + + true + + Catalog.Календари.EmptyRef + + Use + + + + + Use + Description + + ru + Название графика работы + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + График работы + + + ru + Графики работы логистических центров, складов, поставщиков и покупателей. + + true + 2 + true + 100 + String + AsDescription + InDialog + BothWays + Catalog.Календари.Form.ФормаЭлемента + Catalog.Календари.Form.ФормаСписка + Catalog.Календари.Form.ФормаСписка + + ПроизводственныйКалендарь + + ru + Производственный календарь + + + CatalogRef.ПроизводственныеКалендари + + + ru + Производственный календарь, на основании которого выполняется заполнение графика + + + + + Use + Use + + + СпособЗаполнения + + ru + Способ заполнения + + + EnumRef.СпособыЗаполненияГрафикаРаботы + + + ru + Способ заполнения графика работы по данным производственного календаря + + + + + Enum.СпособыЗаполненияГрафикаРаботы.EnumValue.ПоНеделям + + Use + Use + + + ДатаНачала + + ru + Дата начала + + + Date + + Date + + + + ru + Дата начала заполнения графика + + + + ShowError + + Use + Use + + + ДатаОкончания + + ru + Дата окончания + + + Date + + Date + + + + ru + Дата окончания периода автоматического заполнения графика на основании производственного календаря + + + + + Use + Use + + + ДатаОтсчета + + ru + Дата отсчета + + + Date + + Date + + + + ru + Дата, от которой начинается отсчет произвольного цикла заполнения + + + + + Use + Use + + + УчитыватьПраздники + + ru + Учитывать праздники + + + Boolean + + + ru + Если установлено, то из состава рабочих дней будут исключаться дни, выпадающие на праздники + + + + + true + + Use + Use + + + УчитыватьНерабочиеПериоды + + ru + Учитывать нерабочие периоды + + + Boolean + + + ru + Если установлено, то из состава рабочих дней будут исключаться дни нерабочих периодов производственного календаря + + + + + true + + Use + Use + + + Описание + + ru + Описание + + + String + + + + ru + Произвольный текст + + true + true + + + + Use + Use + + + ГоризонтПланирования + + ru + Горизонт планирования + + + Number + + 3 + true + + + + ru + Период времени, на который график должен быть заполнен вперед + + + + + Use + Use + + + ВладелецГрафика + + ru + Владелец графика + + + DefinedType.ВладелецГрафикаРаботы + + + ru + Служебный реквизит для связи с владельцем графика работы + + + + + Use + Use + + + + + + + ШаблонЗаполнения + + ru + Шаблон заполнения + + + ru + Цикл заполнения графика работы + + + Use + LineNumber + + ru + Номер дня + + + Use + + + + + ДеньВключенВГрафик + + ru + День включен в график + + + Boolean + + + ru + Признак того, что указанный день цикла включен в график + + + + Use + Use + + + + + + + + РасписаниеРаботы + + ru + Расписание работы + + + ru + Интервалы рабочего времени + + + Use + LineNumber + + Use + + + + + НомерДня + + ru + Номер дня + + + Number + + 7 + true + + + + ru + Номер дня в цикле + + + + Use + Use + + + ВремяНачала + + ru + Время начала + + + Date + + Time + + + + ru + ДФ=ЧЧ:мм + + + ru + ДФ=ЧЧ:мм + + + ru + Подсистема + + + + Use + Use + + + ВремяОкончания + + ru + Время окончания + + + Date + + Time + + + + ru + ДФ=ЧЧ:мм + + + ru + ДФ=ЧЧ:мм + + + ru + Время окончания интервала + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + РасписаниеРаботы + + ru + Расписание работы + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..cb3fb13f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,754 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 40 + true + true + true + true + true + + + + Код + 6 + + <key>ru</key> + <value>БИК</value> + + true + true + + true + + + + Список.Code + + + + КодExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + КоррСчет + 10 + + <key>ru</key> + <value>Корр.счет</value> + + true + true + + + + Список.КоррСчет + + + + КоррСчетExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + КоррСчетКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Город + 12 + true + true + + + + Список.Город + + + + ГородExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + ГородКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + + + + Адрес + 14 + true + true + + true + + + + Список.Адрес + + + + АдресExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + + АдресКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Телефоны + 17 + true + true + + + + Список.Телефоны + + + + ТелефоныExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + + ТелефоныКонтекстноеМеню + 18 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 30 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 31 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокSearchString + 33 + + СписокSearchStringExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 34 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 36 + + СписокViewStatusExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 37 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 39 + + СписокSearchControlExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 40 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + +
+ + ФормаКоманднаяПанель + -1 + + ФормаЗагрузитьКлассификатор + 20 + true + true + + true + + + ФормаЗагрузитьКлассификаторExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗагрузитьКлассификатор + Auto + true + true + UserCmds + Auto + + + ФормаПоказыватьНедействующиеБанки + 19 + true + true + + true + + + ФормаПоказыватьНедействующиеБанкиExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьНедействующиеБанки + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.КлассификаторБанков + true + true + true + true + +
+ + ПредлагатьЗагрузкуКлассификатора + 3 + + Boolean + + + true + + + true + + + + ВыбранныйБИК + 2 + + CatalogRef.КлассификаторБанков + + + true + + + true + + + + ЗагрузитьКлассификатор + + <key>ru</key> + <value>Загрузить классификатор</value> + + 1 + + ru + Загрузить классификатор + + + true + + + + ЗагрузитьКлассификатор + + + DontUse + + + ПоказыватьНедействующиеБанки + + <key>ru</key> + <value>Показывать недействующие банки</value> + + 2 + + ru + Показывать недействующие банки + + + true + + + + ПоказыватьНедействующиеБанки + + + DontUse + + + БИК + + String + + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..d6607143 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,31 @@ + +

Предназначена для выбора сведений о банках, которые используются при заполнении реквизитов банковских счетов, в документах и списках программы.

+

В списке выводится:

+
  • +
    Наименование - полное наименование банка;
    +
  • +
  • +
    БИК - БИК банка;
    +
  • +
  • +
    Корр. счет - корреспондентский счет;
    +
  • +
  • +
    Город - город, в котором находится банк;
    +
  • +
  • +
    Адрес - полный адрес банка.

Банки, деятельность которых прекращена, по умолчанию скрыты. Для того чтобы увидеть в списке эти банки, выполните команду Еще - Показывать недействующие банки.

+

Выбор банка

+
  • +
    Выделите нужный банк.
    +
  • +
  • +
    Нажмите Выбрать.
    +
  • +
  • +
    Также можно воспользоваться двойным щелчком мыши.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..7d680ab9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,117 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + ИмяОбработки = "ЗагрузкаКлассификатораБанков"; + ЕстьИсточникЗагрузкиДанных = Метаданные.Обработки.Найти(ИмяОбработки) <> Неопределено; + + МожноОбновлятьКлассификатор = Ложь; + ИмяОбработки = "ЗагрузкаКлассификатораБанков"; + Если Метаданные.Обработки.Найти(ИмяОбработки) <> Неопределено Тогда + МожноОбновлятьКлассификатор = Обработки[ИмяОбработки].ДоступнаЗагрузкаКлассификатора(); + КонецЕсли; + + МожноОбновлятьКлассификатор = МожноОбновлятьКлассификатор + И Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() // В узле РИБ обновляется автоматически. + И ПравоДоступа("Изменение", Метаданные.Справочники.КлассификаторБанков); // Пользователь с необходимыми правами. + + Элементы.ФормаЗагрузитьКлассификатор.Видимость = МожноОбновлятьКлассификатор И ЕстьИсточникЗагрузкиДанных; + + Если ОбщегоНазначения.РазделениеВключено() Или ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + ПредлагатьЗагрузкуКлассификатора = МожноОбновлятьКлассификатор И ЕстьИсточникЗагрузкиДанных + И РаботаСБанкамиСлужебный.ПредлагатьЗагрузкуКлассификатора(); + + ПереключитьВидимостьНедействующихБанков(Ложь); + + Если ЗначениеЗаполнено(Параметры.БИК) Тогда + Элементы.Список.Отображение = ОтображениеТаблицы.ИерархическийСписок; + СведенияБИК = РаботаСБанками.СведенияБИК(Параметры.БИК).ВыгрузитьКолонку("Ссылка"); + Если СведенияБИК.Количество() = 1 Тогда + ВыбранныйБИК = СведенияБИК[0]; + ИначеЕсли СведенияБИК.Количество() > 1 Тогда + Элементы.Список.Отображение = ОтображениеТаблицы.Список; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Код", Параметры.БИК,,,Истина); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ЗначениеЗаполнено(ВыбранныйБИК) Тогда + Закрыть(ВыбранныйБИК); + Возврат; + КонецЕсли; + + Если ПредлагатьЗагрузкуКлассификатора Тогда + ПодключитьОбработчикОжидания("ПредложитьЗагрузкуКлассификатора", 1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗагрузитьКлассификатор(Команда) + РаботаСБанкамиКлиент.ОткрытьФормуЗагрузкиКлассификатора(); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНедействующиеБанки(Команда) + ПереключитьВидимостьНедействующихБанков(Не Элементы.ФормаПоказыватьНедействующиеБанки.Пометка); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ПереключитьВидимостьНедействующихБанков(Видимость) + + Элементы.ФормаПоказыватьНедействующиеБанки.Пометка = Видимость; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ДеятельностьПрекращена", Ложь, , , Не Видимость); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеятельностьПрекращена"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредложитьЗагрузкуКлассификатора() + + РаботаСБанкамиКлиент.ПредложитьЗагрузкуКлассификатора(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..1e00fc61 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,149 @@ + + + + Наименование + 4 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 7 + true + true + + true + + + + Объект.Parent + + + + РодительРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.КлассификаторБанков + + + true + + + true + +
true
+ true +
+ + + + + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..a87cfe26 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,719 @@ + + + + ГруппаПользовательскихНастроек + 27 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 29 + + ФормаЗагрузитьКлассификатор + 16 + true + true + + true + + + ФормаЗагрузитьКлассификаторExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗагрузитьКлассификатор + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + true + + КоманднаяПанельРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 4 + + <key>ru</key> + <value>Наименование банка</value> + + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 40 + true + true + true + true + true + + Style.BorderColor + + + + + Код + 6 + + <key>ru</key> + <value>БИК</value> + + true + true + + true + + + + Список.Code + + + + КодExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + Style.BorderColor + + + + + КоррСчет + 10 + true + true + + true + + + + Список.КоррСчет + + + + КоррСчетExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + КоррСчетКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Город + 14 + true + true + + true + + + + Список.Город + + + + ГородExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + ГородКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + + + + Адрес + 12 + true + true + + true + + + + Список.Адрес + + + + АдресExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + АдресКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Ссылка + 24 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 25 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокSearchString + 31 + + СписокSearchStringExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 32 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 34 + + СписокViewStatusExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 35 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 37 + + СписокSearchControlExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 38 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + 10 + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + + Список.DefaultPicture + + + Style.BorderColor + + + true + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.КлассификаторБанков + true + true + true + true + +
+ + ПредлагатьЗагрузкуКлассификатора + 2 + + Boolean + + + true + + + true + + + + ЗагрузитьКлассификатор + + <key>ru</key> + <value>Загрузить классификатор</value> + + 1 + + ru + Загрузить классификатор + + + true + + + + ЗагрузитьКлассификатор + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..70e36cc1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,86 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + ИмяОбработки = "ЗагрузкаКлассификатораБанков"; + ЕстьИсточникЗагрузкиДанных = Метаданные.Обработки.Найти(ИмяОбработки) <> Неопределено; + + МожноОбновлятьКлассификатор = Ложь; + ИмяОбработки = "ЗагрузкаКлассификатораБанков"; + Если Метаданные.Обработки.Найти(ИмяОбработки) <> Неопределено Тогда + МожноОбновлятьКлассификатор = Обработки[ИмяОбработки].ДоступнаЗагрузкаКлассификатора(); + КонецЕсли; + + МожноОбновлятьКлассификатор = МожноОбновлятьКлассификатор + И Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() // В узле РИБ обновляется автоматически. + И ПравоДоступа("Изменение", Метаданные.Справочники.КлассификаторБанков); // Пользователь с необходимыми правами. + + Элементы.ФормаЗагрузитьКлассификатор.Видимость = МожноОбновлятьКлассификатор И ЕстьИсточникЗагрузкиДанных; + + Если ОбщегоНазначения.РазделениеВключено() Или ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + ПредлагатьЗагрузкуКлассификатора = МожноОбновлятьКлассификатор И ЕстьИсточникЗагрузкиДанных + И РаботаСБанкамиСлужебный.ПредлагатьЗагрузкуКлассификатора(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ПредлагатьЗагрузкуКлассификатора Тогда + ПодключитьОбработчикОжидания("ПредложитьЗагрузкуКлассификатора", 1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗагрузитьКлассификатор(Команда) + + РаботаСБанкамиКлиент.ОткрытьФормуЗагрузкиКлассификатора(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеятельностьПрекращена"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредложитьЗагрузкуКлассификатора() + + РаботаСБанкамиКлиент.ПредложитьЗагрузкуКлассификатора(); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..12a4b944 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1194 @@ + + + + ГруппаШапка + 16 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 30 + true + true + true + true + true + true + true + + + + Родитель + 5 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + + ИНН + 45 + true + true + + true + + + + Объект.ИНН + + + + ИННРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + ИННКонтекстноеМеню + 46 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 12 + true + true + false + true + true + true + true + + + + Телефоны + 13 + true + true + + true + + + + Объект.Телефоны + + + + ТелефоныExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + + ТелефоныКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 20 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + + + + СтраницыДеятельностьПрекращена + 21 + + СтраницаНадписьДеятельностьПрекращена + 22 + + НадписьДеятельностьБанкаПрекращена + 19 + + <key>ru</key> + <value>Деятельность прекращена</value> + + true + true + + true + + + НадписьДеятельностьБанкаПрекращенаРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + НадписьДеятельностьБанкаПрекращенаКонтекстноеМеню + 20 + true + true + + true + + true + + true + Label + true + + Style.ПросроченныеДанныеЦвет + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница надпись деятельность прекращена</value> + + + СтраницаНадписьДеятельностьПрекращенаExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаФлажокДеятельностьПрекращена + 23 + + ДеятельностьБанкаПрекращена + 17 + + <key>ru</key> + <value>Деятельность банка прекращена</value> + + true + true + + true + + + + Объект.ДеятельностьПрекращена + + + Right + + ДеятельностьБанкаПрекращенаРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + ДеятельностьБанкаПрекращенаКонтекстноеМеню + 18 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Страница флажок деятельность прекращена</value> + + + СтраницаФлажокДеятельностьПрекращенаExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы деятельность прекращена</value> + + + СтраницыДеятельностьПрекращенаExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ГруппаРеквизитыДляПлатежейВнутриСтраны + 64 + + ГруппаКоррСчетБИК + 15 + + Коды + 41 + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 12 + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Коды</value> + + + КодыРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + КоррСчет + 7 + true + true + + true + + + + Объект.КоррСчет + + + + КоррСчетExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + КоррСчетКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 24 + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Корр счет БИК</value> + + + ГруппаКоррСчетБИКExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + + + + Город + 9 + true + true + + true + + + + Объект.Город + + + + ГородExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + ГородКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 30 + true + true + true + true + true + true + + + + Адрес + 11 + true + true + + true + + + + Объект.Адрес + + + + АдресExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + АдресКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 30 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Реквизиты для платежей внутри страны</value> + + + ГруппаРеквизитыДляПлатежейВнутриСтраныРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + + + + БИКРКЦ + 68 + true + true + + true + + + + Объект.БИКРКЦ + + + + БИКРКЦРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + + БИКРКЦКонтекстноеМеню + 69 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаРеквизитыДляМеждународныхПлатежей + 66 + + НаименованиеМеждународное + 48 + + <key>ru</key> + <value>Наименование / Bank name</value> + + true + true + + true + + + + Объект.МеждународноеНаименование + + + 1 + + НаименованиеМеждународноеРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеМеждународноеКонтекстноеМеню + 49 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + true + true + true + true + true + + + + СВИФТКод + 38 + + <key>ru</key> + <value>SWIFT BIC</value> + + true + true + + true + + + + Объект.СВИФТБИК + + + + СВИФТКодРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + + СВИФТКодКонтекстноеМеню + 39 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 11 + true + true + false + true + true + true + true + + + + ГородМеждународный + 54 + + <key>ru</key> + <value>Город / City</value> + + true + true + + true + + + + Объект.ГородМеждународный + + + Left + + ГородМеждународныйРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + + ГородМеждународныйКонтекстноеМеню + 55 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + true + true + true + true + + + + АдресМеждународный + 57 + + <key>ru</key> + <value>Адрес / Address</value> + + true + true + + true + + + + Объект.АдресМеждународный + + + + АдресМеждународныйРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + АдресМеждународныйКонтекстноеМеню + 58 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + true + true + true + true + + + + Страна + 51 + + <key>ru</key> + <value>Страна / Country</value> + + true + true + + true + + + + Объект.Страна + + + + СтранаРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + СтранаКонтекстноеМеню + 52 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Реквизиты для международных платежей</value> + + + ГруппаРеквизитыДляМеждународныхПлатежейРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.КлассификаторБанков + + + true + + + true + +
true
+ true +
+ + + + + + + OnReadAtServer + ПриЧтенииНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..2e68492b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,23 @@ + +

Описание свойств банка:

+
  • +
    Наименование - полное наименование участника расчетов.
    +
  • +
  • +
    +
    Регион - по умолчанию указывается регион, в котором находится банк. Можно включить банк в новую группу, для этого выберите из списка нужную группу, нажав Показать все, для ввода новой группы нажмите Создать
    +
    +
  • +
  • ИНН.
  • +
  • +
    Телефоны.
  • +
  • Деятельность банка прекращена - программа учитывает недействующие банки и автоматически включает флажок для таких банков. Также можно его включить вручную, если получены сведения о закрытии банка.
+
  • Данные о банке сгруппированы в разделы:
  • +
    • Реквизиты для платежей внутри страны:
+
      • БИК - БИК банка.
      • +
      • СВИФТ БИК.
      • +
      • Корр. счет - корреспондентский счет.
      • +
      • Город - город, в котором находится банк.
      • +
      • Адрес - полный адрес банка.
    • Реквизиты для международных платежей - заполнены, если банк ведет международные платежи. 

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..a0acafe0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,43 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.СтраницыДеятельностьПрекращена.Видимость = Объект.ДеятельностьПрекращена Или Пользователи.ЭтоПолноправныйПользователь(); + Элементы.СтраницыДеятельностьПрекращена.ТекущаяСтраница = ?(Пользователи.ЭтоПолноправныйПользователь(), + Элементы.СтраницаФлажокДеятельностьПрекращена, Элементы.СтраницаНадписьДеятельностьПрекращена); + + Если Объект.ДеятельностьПрекращена Тогда + КлючСохраненияПоложенияОкна = "ДеятельностьПрекращена"; + Элементы.НадписьДеятельностьБанкаПрекращена.Заголовок = РаботаСБанками.ПояснениеНедействительногоБанка(Объект.Ссылка); + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ГруппаШапка.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + Элементы.ГруппаРеквизитыДляПлатежейВнутриСтраны.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + Элементы.ГруппаРеквизитыДляМеждународныхПлатежей.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда + + МодульАвтономнаяРабота = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРабота"); + МодульАвтономнаяРабота.ОбъектПриЧтенииНаСервере(ТекущийОбъект, ЭтотОбъект.ТолькоПросмотр); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..eb17d507 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/Help/ru.html" @@ -0,0 +1,37 @@ + +

Хранятся сведения об участниках расчетов, которые используются при заполнении реквизитов банковских счетов, в документах и списках программы.

+

Справочник БИК может быть заполнен автоматически с использованием Общероссийского справочника БИК. При использовании автоматической загрузки справочника БИК существенно снижается трудоемкость ввода информации, ввод информации об участнике расчетов в различных документах сводится к выбору из классификатора, соответственно сводится к минимуму количество ошибок в отчетности, и кроме того, программа позволяет всегда поддерживать классификатор в актуальном состоянии. Загрузка классификаторов производится с портала 1С:ИТС.

+

Банки, деятельность которых прекращена, в списке становятся неактивными.

+

Открывается по команде Справочник БИК раздела Справочники.

+

В классификаторе выводится:

+
  • +
    Наименование банка - полное наименование банка;
    +
  • +
  • +
    БИК - БИК банка;
    +
  • +
  • +
    Корр. счет - корреспондентский счет;
    +
  • +
  • +
    Город - город, в котором находится банк;
    +
  • +
  • +
    Адрес - полный адрес банка.

С помощью команды Еще - Изменить форму можно вывести дополнительную информацию:

+
  • +
    Деятельность прекращена - программа учитывает недействующих участников расчетов и автоматически включает флажок. Также можно его включить вручную, если получены сведения о закрытии участника расчетов.
    +
  • +
  • +
    Группа банков - по умолчанию регион, в котором находится участник расчетов.
    +
  • +
  • +
    СВИФТ БИК;
    +
  • +
  • +
    Телефоны.

Ввод участника расчетов

+
+
  • При необходимости (например, создан новый банк, который еще не отражен в справочнике БИК) можно ввести нового участника расчетов, нажав Создать. Заполните необходимые параметры.
  • +
  • В приложении в Интернете справочник БИК заполняется автоматически.
+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..c7b1d07d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,58 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("*"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Возвращает реквизиты справочника, которые образуют естественный ключ +// для элементов справочника. +// +// Возвращаемое значение: +// Массив - массив имен реквизитов, образующих естественный ключ. +// +Функция ПоляЕстественногоКлюча() Экспорт + + Результат = Новый Массив(); + + Результат.Добавить("Код"); + Результат.Добавить("КоррСчет"); + + Возврат Результат; + +КонецФункции + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262.mdo" new file mode 100644 index 00000000..6927577a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\221\320\260\320\275\320\272\320\276\320\262.mdo" @@ -0,0 +1,492 @@ + + + + + + + + + + КлассификаторБанков + + ru + Справочник БИК + + true + Catalog.КлассификаторБанков.StandardAttribute.Description + Catalog.КлассификаторБанков.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Регион + + + ru + Регион, в котором находится банк + + true + + Catalog.КлассификаторБанков.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование + + Наименование банка + + ru + Наименование банка + + + + + ShowError + Use + + + + + Use + Code + + ru + БИК + + БИК банка + + ru + БИК банка + + + + + Use + + + + Use + + + ru + + + Use + + ru + Участник расчетов + + true + 2 + true + 9 + 100 + String + AsDescription + BothWays + BothWays + Catalog.КлассификаторБанков.Form.ФормаЭлемента + Catalog.КлассификаторБанков.Form.ФормаГруппы + Catalog.КлассификаторБанков.Form.ФормаСписка + Catalog.КлассификаторБанков.Form.ФормаВыбора + + КоррСчет + + ru + Корр. счет + + Корреспондентский счет банка + + String + + 20 + + + + ru + Корреспондентский счет банка + + 99999999999999999999 + + + + + + Index + Use + Use + + + Город + + ru + Город + + + String + + 50 + + + + ru + Город банка + + + + + + + Use + Use + + + Адрес + + ru + Адрес + + + String + + 500 + + + + ru + Адрес банка + + + + + + + Use + Use + + + Телефоны + + ru + Телефоны + + + String + + 250 + + + + ru + Телефоны банка + + + + + + + Use + Use + + + ДеятельностьПрекращена + + ru + Деятельность прекращена + + + Boolean + + + ru + Банк по каким-либо причинам прекратил свою деятельность + + + + + Index + Use + Use + + + СВИФТБИК + + ru + СВИФТ БИК + + + String + + 11 + + + + ru + Международный банковский идентификационный код (SWIFT BIC) + + + + + + + Use + Use + + + ИНН + + ru + ИНН + + + String + + 12 + + + + ru + Идентификационный номер налогоплательщика + + + + + + + Index + Use + Use + + + Страна + + ru + Страна + + + CatalogRef.СтраныМира + + + ru + Страна регистрации банка + + + + + Use + Use + + + МеждународноеНаименование + + ru + Международное наименование + + + String + + 100 + + + + ru + Международное наименование банка латиницей + + + + + + + Use + Use + + + ГородМеждународный + + ru + Город + + + String + + 50 + + + + ru + Город банка латиницей в международном формате. + + + + + + + Use + Use + + + АдресМеждународный + + ru + Адрес + + + String + + 500 + + + + ru + Адрес банка латиницей в международном формате + + + + + + + Use + Use + + + БИКРКЦ + + ru + БИК РКЦ + + + CatalogRef.КлассификаторБанков + + + + + Use + Use + + + ВнутреннийКодЦБ + + ru + Внутренний код ЦБ + + + String + + 15 + + + + + + + + Index + Use + Use + + + ФормаВыбора + + ru + Форма выбора + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..921d49b4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,357 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 19 + true + true + + true + + + + Список.Description + + + + НаименованиеРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Ссылка + 6 + true + true + + + + Список.Ref + + + + СсылкаExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокSearchString + 10 + + СписокSearchStringExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 11 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 13 + + СписокViewStatusExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 14 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 16 + + СписокSearchControlExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 17 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.Приоритет + + + Список.ЦелевоеВремя + +
true
+ + Catalog.КлючевыеОперации + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..81ad4acc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОценкаПроизводительностиКлиентСервер.УстановитьЭлементОтбора( + Список.Отбор, + "ПометкаУдаления", + Ложь, + ВидСравненияКомпоновкиДанных.Равно); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..7af1af42 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + Приоритет + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..38888aea --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,562 @@ + + + + ГруппаПользовательскихНастроек + 19 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 17 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Приоритет + 6 + true + true + + true + + + + Список.Приоритет + + + + ПриоритетExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + ПриоритетКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ЦелевоеВремя + 8 + true + true + + true + + + + Список.ЦелевоеВремя + + + + ЦелевоеВремяExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + ЦелевоеВремяКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + МинимальноДопустимыйУровень + 10 + true + true + + true + + + + Список.МинимальноДопустимыйУровень + + + + МинимальноДопустимыйУровеньExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + МинимальноДопустимыйУровеньКонтекстноеМеню + 11 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 30 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 31 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 21 + + СписокСтрокаПоискаРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 22 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 24 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 25 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 27 + + СписокУправлениеПоискомРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 28 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.КлючевыеОперации + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..069ed00f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлементОбщаяПроизводительность = ОценкаПроизводительностиСлужебный.ПолучитьЭлементОбщаяПроизводительностьСистемы(); + Если ЗначениеЗаполнено(ЭлементОбщаяПроизводительность) Тогда + ОценкаПроизводительностиКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", ЭлементОбщаяПроизводительность, + ВидСравненияКомпоновкиДанных.НеРавно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..992a1c78 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,314 @@ + + + + Название + 15 + true + true + + true + + + + Объект.Имя + + + + НазваниеРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + НазваниеКонтекстноеМеню + 16 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Приоритет + 7 + true + true + + true + + + + Объект.Приоритет + + + + ПриоритетExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ПриоритетКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + + ЦелевоеВремя + 9 + true + true + + true + + + + Объект.ЦелевоеВремя + + + + ЦелевоеВремяExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + + ЦелевоеВремяКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + МинимальноДопустимыйУровень + 5 + true + true + + true + + + + Объект.МинимальноДопустимыйУровень + + + + МинимальноДопустимыйУровеньExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + МинимальноДопустимыйУровеньКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.КлючевыеОперации + + + true + + + true + +
true
+ true +
+ + + + 3:b6c94efd-5994-4c4c-a641-b062ecc38b65 + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..358d81a6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,11 @@ + +

Описание свойств ключевых операций.

+

В программе имеются предопределенные ключевые операции. При необходимости можно добавить новые. В качестве ключевых операций могут выступать различные операции программы, например, проведение документа, формирование отчета и т.п. Для того чтобы оценивать производительность программы, необходимо в начале работы программы заполнить параметры ключевых операций в профиле ключевых операций (после установки программы параметры ключевых операций не заполнены).

+

Сведения о ключевых операциях

+
  • Наименование - для предопределенных операций заполнено по умолчанию, для вновь вводимых операций необходимо ввести. Поле является обязательным; +
  • Приоритет - напишите приоритет каждой операции - целое число, при этом приоритет не должен повторяться. Поле является обязательным; +
  • Целевое время - напишите время в секундах. Поле является обязательным; +
  • Минимально допустимый уровень - выберите из списка, например, Удовлетворительно.

Выбранные параметры ключевых операций будут применены при замерах производительности.

+

Контроль замеров времени

+
  • В ходе оценки производительности работы программы производятся замеры времени по каждой ключевой операции. Для просмотра истории замеров по каждой ключевой операции нажмите Замеры времени на панели навигации.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..6708da42 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлементОбщаяПроизводительность = ОценкаПроизводительностиСлужебный.ПолучитьЭлементОбщаяПроизводительностьСистемы(); + Если Объект.Ссылка = ЭлементОбщаяПроизводительность Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Help/ru.html" new file mode 100644 index 00000000..db4efbcc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/Help/ru.html" @@ -0,0 +1,16 @@ + +

Предназначен для хранения параметров ключевых операций.

+

Параметры ключевых операций необходимы для оценки производительности работы программы. В программе предусмотрены встроенные средства для сбора и анализа данных о производительности работы по APDEX, которая является международным стандартом оценки производительности информационных систем.

+

Список открывается по команде Ключевые операции раздела Сервисные подсистемы.

+

Для того чтобы оценивать производительность программы, необходимо в начале работы программы заполнить параметры ключевых операций (после установки программы параметры ключевых операций не заполнены). В программе имеются предопределенные ключевые операции. При необходимости можно добавить операции в список. Перечислены различные операции программы, например, проведение документа, формирование отчета и т.п. В списке выводятся сведения:

+
  • Наименование - полное наименование операции; +
  • Приоритет - целое число, при этом приоритет не должен повторяться; +
  • Целевое время - время, затраченное на операцию в секундах; +
  • Минимально допустимый уровень - для сравнения взяты оценки по apdex в цифровом выражении, например, Удовлетворительно (apdex > = 0.75).

Выбранные параметры ключевых операций будут применены при замерах производительности.

+

Заполнение сведений о ключевых операциях

+
  • Выделите имеющиеся в списке ключевую операцию, нажмите Еще - Изменить и заполните необходимые поля. +
  • Также можно воспользоваться двойным щелчком мыши.

Ввод новой ключевой операции

+
  • Нажмите Создать, заполните необходимые поля.

Автоматический подбор целевого времени

+
  • +
    Для того чтобы правильно заполнить поле Целевое время, можно воспользоваться автоматическим подбором. Нажмите кнопку Подбор целевого времени.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..0de3cfc4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" @@ -0,0 +1,73 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ПроверитьПриоритет(Отказ); + Если Отказ Тогда + Возврат; + КонецЕсли; + + ХешMD5 = Новый ХешированиеДанных(ХешФункция.MD5); + ХешMD5.Добавить(Имя); + ИмяХешТемп = ХешMD5.ХешСумма; + ИмяХеш = СтрЗаменить(Строка(ИмяХешТемп), " ", ""); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПроверитьПриоритет(Отказ) + + Если ДополнительныеСвойства.Свойство(ОценкаПроизводительностиКлиентСервер.НеПроверятьПриоритет()) Или Приоритет = 0 Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Приоритет", Приоритет); + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | КлючевыеОперации.Ссылка КАК Ссылка, + | КлючевыеОперации.Наименование КАК Наименование + |ИЗ + | Справочник.КлючевыеОперации КАК КлючевыеОперации + |ГДЕ + | КлючевыеОперации.Приоритет = &Приоритет + | И КлючевыеОперации.Ссылка <> &Ссылка"; + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + ТекстСообщения = НСтр("ru = 'Ключевая операция с приоритетом ""%1"" уже существует (%2).'"); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Строка(Приоритет)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", Выборка.Наименование); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Справочник.КлючевыеОперации.МодульОбъекта.ПередЗаписью'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, + , + НСтр("ru = 'Оценка производительности'"), + ТекстСообщения); + ОценкаПроизводительностиСлужебный.СообщитьПользователю(ТекстСообщения); + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.mdo" new file mode 100644 index 00000000..07992d19 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270/\320\232\320\273\321\216\321\207\320\265\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.mdo" @@ -0,0 +1,317 @@ + + + + + + + + + + КлючевыеОперации + + ru + Ключевые операции + + true + Catalog.КлючевыеОперации.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование ключевой операции + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Catalog.КлючевыеОперации.Attribute.Имя + Managed + + ru + Ключевая операция + + + ru + Ключевая операция замера производительности + + + ru + Ключевые операции замеров производительности + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + Catalog.КлючевыеОперации.Form.ФормаЭлемента + Catalog.КлючевыеОперации.Form.ФормаСписка + Catalog.КлючевыеОперации.Form.ФормаВыбора + + Имя + + ru + Имя + + + String + + 1000 + + + + ru + Название ключевой операции + + + + + + + Use + Use + + + МинимальноДопустимыйУровень + + ru + Минимально допустимый уровень + + + EnumRef.УровниПроизводительности + + + ru + Минимально допустимый уровень оценки производительности + + + + + Use + Use + + + Приоритет + + ru + Приоритет + + + Number + + 15 + true + + + + ru + Приоритет ключевой операции + + + + + Index + Use + Use + + + ЦелевоеВремя + + ru + Целевое время + + + Number + + 15 + 2 + true + + + + ru + Целевое время ключевой операции + + + + ShowError + + Use + Use + + + ИмяХеш + + ru + Имя хеш + + + String + + 40 + + + + ru + Хеш сумма имени + + + + + + + Index + Use + Use + + + ВыполненаСОшибкой + + ru + Выполнена с ошибкой + + + Boolean + + + ru + Свойство ключевой операции замера, служит для разделения выполнения замеров + + + + + Index + Use + + + Длительная + + ru + Длительная + + + Boolean + + + ru + Свойство ключевой операции замера. Для длительных ключевых операций рассчитывается удельное время выполнения. + + + + + Index + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..f02b83df --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,618 @@ + + + + ГруппаПользовательскихНастроек + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 19 + + ФормаВключитьВозможностьРедактирования + 23 + true + true + + true + + + ФормаВключитьВозможностьРедактированияExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + СписокНаименование + 16 + true + true + + true + + + + Список.Description + + + true + + СписокНаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокНаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокСписок + 25 + true + true + + true + + + + Список.Список + + + + СписокСписокРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокСписокКонтекстноеМеню + 26 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ДляВнешнихПользователей + 28 + + <key>ru</key> + <value>ВП</value> + + true + true + + true + + + + Список.ДляВнешнихПользователей + + + + ДляВнешнихПользователейРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + + ДляВнешнихПользователейКонтекстноеМеню + 29 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Хеш + 31 + true + true + + true + + + + Список.Хеш + + + + ХешРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + + ХешКонтекстноеМеню + 32 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 34 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 35 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.КлючиДоступа + true + true + true + true + +
+ + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..f3cb72fe --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,35 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + + Если Параметры.РежимВыбора Тогда + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + Иначе + Элементы.Список.РежимВыбора = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..9c0258a9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,3548 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ГруппаСписок + 200 + + Список + 4 + true + true + + true + + + + Объект.Список + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ДляВнешнихПользователей + 7 + true + true + + true + + + + Объект.ДляВнешнихПользователей + + + Right + + ДляВнешнихПользователейРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + ДляВнешнихПользователейКонтекстноеМеню + 8 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Список</value> + + + ГруппаСписокРасширеннаяПодсказка + 201 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаХешИНеИспользуетсяС + 212 + + Хеш + 13 + true + true + + true + + + + Объект.Хеш + + + + ХешРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + ХешКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + НеИспользуетсяС + 209 + true + true + + true + + + + Объект.НеИспользуетсяС + + + + НеИспользуетсяСРасширеннаяПодсказка + 211 + true + true + + true + + Label + true + true + + Left + + + + НеИспользуетсяСКонтекстноеМеню + 210 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Хеш и Не используется с</value> + + + ГруппаХешИНеИспользуетсяСРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаСоставПолей + 204 + + СоставПолей + 10 + true + true + + true + + + + Объект.СоставПолей + + + + СоставПолейРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СоставПолейКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + РасшифровкаСоставаПолей + 206 + true + true + + true + + + + РасшифровкаСоставаПолей + + + None + + РасшифровкаСоставаПолейРасширеннаяПодсказка + 208 + true + true + + true + + Label + true + true + + Left + + + + РасшифровкаСоставаПолейКонтекстноеМеню + 207 + true + true + + true + + true + + LabelField + Center + Enter + true + Left + true + + 2 + true + + + true + true + + true + + + <key>ru</key> + <value>Состав полей</value> + + + ГруппаСоставПолейРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Center + true + true + Auto + Auto + + + + Страницы + 31 + + ГруппаШапка + 198 + + Значение1 + 16 + true + true + + true + + + + Объект.Значение1 + + + + Значение1РасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + Значение1КонтекстноеМеню + 17 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Значение2 + 19 + true + true + + true + + + + Объект.Значение2 + + + + Значение2РасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + Значение2КонтекстноеМеню + 20 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Значение3 + 22 + true + true + + true + + + + Объект.Значение3 + + + + Значение3РасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + Значение3КонтекстноеМеню + 23 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Значение4 + 25 + true + true + + true + + + + Объект.Значение4 + + + + Значение4РасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + Значение4КонтекстноеМеню + 26 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Значение5 + 28 + true + true + + true + + + + Объект.Значение5 + + + + Значение5РасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + + Значение5КонтекстноеМеню + 29 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ГруппаШапкаДополнительно + 33 + + Шапка + 35 + + <key>ru</key> + <value>Шапка</value> + + true + true + + true + + + Объект.Шапка + + None + + ШапкаНомерСтроки + 48 + true + true + + true + + + + Объект.Шапка.LineNumber + + + + ШапкаНомерСтрокиРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + ШапкаНомерСтрокиКонтекстноеМеню + 49 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + ШапкаЗначение6 + 51 + true + true + + true + + + + Объект.Шапка.Значение6 + + + + ШапкаЗначение6РасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + ШапкаЗначение6КонтекстноеМеню + 52 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ШапкаЗначение7 + 54 + true + true + + true + + + + Объект.Шапка.Значение7 + + + + ШапкаЗначение7РасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + + ШапкаЗначение7КонтекстноеМеню + 55 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ШапкаЗначение8 + 57 + true + true + + true + + + + Объект.Шапка.Значение8 + + + + ШапкаЗначение8РасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + ШапкаЗначение8КонтекстноеМеню + 58 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ШапкаЗначение9 + 60 + true + true + + true + + + + Объект.Шапка.Значение9 + + + + ШапкаЗначение9РасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + + ШапкаЗначение9КонтекстноеМеню + 61 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ШапкаЗначение10 + 63 + true + true + + true + + + + Объект.Шапка.Значение10 + + + + ШапкаЗначение10РасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + + ШапкаЗначение10КонтекстноеМеню + 64 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ШапкаКоманднаяПанель + 37 + true + true + + true + + Left + true + + + true + true + + true + + ШапкаСтрокаПоиска + 39 + + ШапкаСтрокаПоискаРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + + ШапкаСтрокаПоискаКонтекстноеМеню + 40 + true + true + + true + + true + + + true + + + + true + true + + true + + ШапкаСостояниеПросмотра + 42 + + ШапкаСостояниеПросмотраРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + ШапкаСостояниеПросмотраКонтекстноеМеню + 43 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ШапкаУправлениеПоиском + 45 + + ШапкаУправлениеПоискомРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + ШапкаУправлениеПоискомКонтекстноеМеню + 46 + true + true + + true + + true + + SearchControlAddition + + true + + + + ШапкаРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + + ШапкаКонтекстноеМеню + 36 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Шапка (дополнительно)</value> + + + ГруппаШапкаДополнительноРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + ГруппаТабличнаяЧасть1 + 66 + + ТабличнаяЧасть1 + 68 + + <key>ru</key> + <value>Табличная часть 1</value> + + true + true + + true + + + Объект.ТабличнаяЧасть1 + + None + + ТабличнаяЧасть1НомерСтроки + 81 + true + true + + true + + + + Объект.ТабличнаяЧасть1.LineNumber + + + + ТабличнаяЧасть1НомерСтрокиРасширеннаяПодсказка + 83 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1НомерСтрокиКонтекстноеМеню + 82 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + ТабличнаяЧасть1Значение1 + 84 + true + true + + true + + + + Объект.ТабличнаяЧасть1.Значение1 + + + + ТабличнаяЧасть1Значение1РасширеннаяПодсказка + 86 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1Значение1КонтекстноеМеню + 85 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть1Значение2 + 87 + true + true + + true + + + + Объект.ТабличнаяЧасть1.Значение2 + + + + ТабличнаяЧасть1Значение2РасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1Значение2КонтекстноеМеню + 88 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть1Значение3 + 90 + true + true + + true + + + + Объект.ТабличнаяЧасть1.Значение3 + + + + ТабличнаяЧасть1Значение3РасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1Значение3КонтекстноеМеню + 91 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть1Значение4 + 93 + true + true + + true + + + + Объект.ТабличнаяЧасть1.Значение4 + + + + ТабличнаяЧасть1Значение4РасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1Значение4КонтекстноеМеню + 94 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть1Значение5 + 96 + true + true + + true + + + + Объект.ТабличнаяЧасть1.Значение5 + + + + ТабличнаяЧасть1Значение5РасширеннаяПодсказка + 98 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1Значение5КонтекстноеМеню + 97 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть1КоманднаяПанель + 70 + true + true + + true + + Left + true + + + true + true + + true + + ТабличнаяЧасть1СтрокаПоиска + 72 + + ТабличнаяЧасть1СтрокаПоискаРасширеннаяПодсказка + 74 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1СтрокаПоискаКонтекстноеМеню + 73 + true + true + + true + + true + + + true + + + + true + true + + true + + ТабличнаяЧасть1СостояниеПросмотра + 75 + + ТабличнаяЧасть1СостояниеПросмотраРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1СостояниеПросмотраКонтекстноеМеню + 76 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ТабличнаяЧасть1УправлениеПоиском + 78 + + ТабличнаяЧасть1УправлениеПоискомРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1УправлениеПоискомКонтекстноеМеню + 79 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТабличнаяЧасть1РасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть1КонтекстноеМеню + 69 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Табличная часть 1</value> + + + ГруппаТабличнаяЧасть1РасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + ГруппаТабличнаяЧасть2 + 99 + + ТабличнаяЧасть2 + 101 + + <key>ru</key> + <value>Табличная часть 2</value> + + true + true + + true + + + Объект.ТабличнаяЧасть2 + + None + + ТабличнаяЧасть2НомерСтроки + 114 + true + true + + true + + + + Объект.ТабличнаяЧасть2.LineNumber + + + + ТабличнаяЧасть2НомерСтрокиРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2НомерСтрокиКонтекстноеМеню + 115 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + ТабличнаяЧасть2Значение1 + 117 + true + true + + true + + + + Объект.ТабличнаяЧасть2.Значение1 + + + + ТабличнаяЧасть2Значение1РасширеннаяПодсказка + 119 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2Значение1КонтекстноеМеню + 118 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть2Значение2 + 120 + true + true + + true + + + + Объект.ТабличнаяЧасть2.Значение2 + + + + ТабличнаяЧасть2Значение2РасширеннаяПодсказка + 122 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2Значение2КонтекстноеМеню + 121 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть2Значение3 + 123 + true + true + + true + + + + Объект.ТабличнаяЧасть2.Значение3 + + + + ТабличнаяЧасть2Значение3РасширеннаяПодсказка + 125 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2Значение3КонтекстноеМеню + 124 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть2Значение4 + 126 + true + true + + true + + + + Объект.ТабличнаяЧасть2.Значение4 + + + + ТабличнаяЧасть2Значение4РасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2Значение4КонтекстноеМеню + 127 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть2Значение5 + 129 + true + true + + true + + + + Объект.ТабличнаяЧасть2.Значение5 + + + + ТабличнаяЧасть2Значение5РасширеннаяПодсказка + 131 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2Значение5КонтекстноеМеню + 130 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть2КоманднаяПанель + 103 + true + true + + true + + Left + true + + + true + true + + true + + ТабличнаяЧасть2СтрокаПоиска + 105 + + ТабличнаяЧасть2СтрокаПоискаРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2СтрокаПоискаКонтекстноеМеню + 106 + true + true + + true + + true + + + true + + + + true + true + + true + + ТабличнаяЧасть2СостояниеПросмотра + 108 + + ТабличнаяЧасть2СостояниеПросмотраРасширеннаяПодсказка + 110 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2СостояниеПросмотраКонтекстноеМеню + 109 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ТабличнаяЧасть2УправлениеПоиском + 111 + + ТабличнаяЧасть2УправлениеПоискомРасширеннаяПодсказка + 113 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2УправлениеПоискомКонтекстноеМеню + 112 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТабличнаяЧасть2РасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть2КонтекстноеМеню + 102 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Табличная часть 2</value> + + + ГруппаТабличнаяЧасть2РасширеннаяПодсказка + 100 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + ГруппаТабличнаяЧасть3 + 132 + + ТабличнаяЧасть3 + 134 + + <key>ru</key> + <value>Табличная часть 3</value> + + true + true + + true + + + Объект.ТабличнаяЧасть3 + + None + + ТабличнаяЧасть3НомерСтроки + 147 + true + true + + true + + + + Объект.ТабличнаяЧасть3.LineNumber + + + + ТабличнаяЧасть3НомерСтрокиРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3НомерСтрокиКонтекстноеМеню + 148 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + ТабличнаяЧасть3Значение1 + 150 + true + true + + true + + + + Объект.ТабличнаяЧасть3.Значение1 + + + + ТабличнаяЧасть3Значение1РасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3Значение1КонтекстноеМеню + 151 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть3Значение2 + 153 + true + true + + true + + + + Объект.ТабличнаяЧасть3.Значение2 + + + + ТабличнаяЧасть3Значение2РасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3Значение2КонтекстноеМеню + 154 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть3Значение3 + 156 + true + true + + true + + + + Объект.ТабличнаяЧасть3.Значение3 + + + + ТабличнаяЧасть3Значение3РасширеннаяПодсказка + 158 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3Значение3КонтекстноеМеню + 157 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть3Значение4 + 159 + true + true + + true + + + + Объект.ТабличнаяЧасть3.Значение4 + + + + ТабличнаяЧасть3Значение4РасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3Значение4КонтекстноеМеню + 160 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть3Значение5 + 162 + true + true + + true + + + + Объект.ТабличнаяЧасть3.Значение5 + + + + ТабличнаяЧасть3Значение5РасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3Значение5КонтекстноеМеню + 163 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть3КоманднаяПанель + 136 + true + true + + true + + Left + true + + + true + true + + true + + ТабличнаяЧасть3СтрокаПоиска + 138 + + ТабличнаяЧасть3СтрокаПоискаРасширеннаяПодсказка + 140 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3СтрокаПоискаКонтекстноеМеню + 139 + true + true + + true + + true + + + true + + + + true + true + + true + + ТабличнаяЧасть3СостояниеПросмотра + 141 + + ТабличнаяЧасть3СостояниеПросмотраРасширеннаяПодсказка + 143 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3СостояниеПросмотраКонтекстноеМеню + 142 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ТабличнаяЧасть3УправлениеПоиском + 144 + + ТабличнаяЧасть3УправлениеПоискомРасширеннаяПодсказка + 146 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3УправлениеПоискомКонтекстноеМеню + 145 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТабличнаяЧасть3РасширеннаяПодсказка + 137 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть3КонтекстноеМеню + 135 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Табличная часть 3</value> + + + ГруппаТабличнаяЧасть3РасширеннаяПодсказка + 133 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + ГруппаТабличнаяЧасть4 + 165 + + ТабличнаяЧасть4 + 167 + + <key>ru</key> + <value>Табличная часть 4</value> + + true + true + + true + + + Объект.ТабличнаяЧасть4 + + None + + ТабличнаяЧасть4НомерСтроки + 180 + true + true + + true + + + + Объект.ТабличнаяЧасть4.LineNumber + + + + ТабличнаяЧасть4НомерСтрокиРасширеннаяПодсказка + 182 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4НомерСтрокиКонтекстноеМеню + 181 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + ТабличнаяЧасть4Значение1 + 183 + true + true + + true + + + + Объект.ТабличнаяЧасть4.Значение1 + + + + ТабличнаяЧасть4Значение1РасширеннаяПодсказка + 185 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4Значение1КонтекстноеМеню + 184 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть4Значение2 + 186 + true + true + + true + + + + Объект.ТабличнаяЧасть4.Значение2 + + + + ТабличнаяЧасть4Значение2РасширеннаяПодсказка + 188 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4Значение2КонтекстноеМеню + 187 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть4Значение3 + 189 + true + true + + true + + + + Объект.ТабличнаяЧасть4.Значение3 + + + + ТабличнаяЧасть4Значение3РасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4Значение3КонтекстноеМеню + 190 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть4Значение4 + 192 + true + true + + true + + + + Объект.ТабличнаяЧасть4.Значение4 + + + + ТабличнаяЧасть4Значение4РасширеннаяПодсказка + 194 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4Значение4КонтекстноеМеню + 193 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть4Значение5 + 195 + true + true + + true + + + + Объект.ТабличнаяЧасть4.Значение5 + + + + ТабличнаяЧасть4Значение5РасширеннаяПодсказка + 197 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4Значение5КонтекстноеМеню + 196 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТабличнаяЧасть4КоманднаяПанель + 169 + true + true + + true + + Left + true + + + true + true + + true + + ТабличнаяЧасть4СтрокаПоиска + 171 + + ТабличнаяЧасть4СтрокаПоискаРасширеннаяПодсказка + 173 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4СтрокаПоискаКонтекстноеМеню + 172 + true + true + + true + + true + + + true + + + + true + true + + true + + ТабличнаяЧасть4СостояниеПросмотра + 174 + + ТабличнаяЧасть4СостояниеПросмотраРасширеннаяПодсказка + 176 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4СостояниеПросмотраКонтекстноеМеню + 175 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ТабличнаяЧасть4УправлениеПоиском + 177 + + ТабличнаяЧасть4УправлениеПоискомРасширеннаяПодсказка + 179 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4УправлениеПоискомКонтекстноеМеню + 178 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТабличнаяЧасть4РасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + + ТабличнаяЧасть4КонтекстноеМеню + 168 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Табличная часть 4</value> + + + ГруппаТабличнаяЧасть4РасширеннаяПодсказка + 166 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
+ + ФормаКоманднаяПанель + -1 + + ФормаВключитьВозможностьРедактирования + 202 + true + true + + true + + + ФормаВключитьВозможностьРедактированияExtendedTooltip + 203 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.КлючиДоступа + + + true + + + true + +
true
+ true +
+ + РасшифровкаСоставаПолей + + <key>ru</key> + <value>Расшифровка состава полей</value> + + 2 + + String + + + + true + + + true + + + + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..e140c8f2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,62 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + + РасшифровкаСоставаПолей = РасшифровкаСоставаПолей(Объект.СоставПолей); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + + ПоказатьПредупреждение(, + НСтр("ru = 'Ключ доступа не следует изменять, так как он сопоставлен с разными объектами. + |Чтобы исправить нестандартную проблему следует удалить ключ доступа или + |связь с ним в регистрах и выполнить процедуру обновления доступа.'")); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция РасшифровкаСоставаПолей(СоставПолей) + + ТекущееЧисло = СоставПолей; + Расшифровка = ""; + + НомерТабличнойЧасти = 0; + Пока ТекущееЧисло > 0 Цикл + Остаток = ТекущееЧисло - Цел(ТекущееЧисло / 16) * 16; + Если НомерТабличнойЧасти = 0 Тогда + Расшифровка = НСтр("ru = 'Шапка'") + ": " + Остаток; + Иначе + Расшифровка = Расшифровка + ", " + НСтр("ru = 'Табличная часть'") + " " + НомерТабличнойЧасти + ": " + Остаток; + КонецЕсли; + ТекущееЧисло = Цел(ТекущееЧисло / 16); + НомерТабличнойЧасти = НомерТабличнойЧасти + 1; + КонецЦикла; + + Возврат Расшифровка; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" new file mode 100644 index 00000000..d717143c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\232\320\273\321\216\321\207\320\270\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" @@ -0,0 +1,917 @@ + + + + + + + + + + КлючиДоступа + + ru + Ключи доступа + + Catalog.КлючиДоступа.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + Catalog.КлючиДоступа.Attribute.Хеш + Catalog.КлючиДоступа.Attribute.Список + Catalog.КлючиДоступа.Attribute.ДляВнешнихПользователей + Catalog.КлючиДоступа.Attribute.СоставПолей + Managed + + ru + Ключ доступа + + + ru + Группа однотипных объектов или записей регистра с одинаковым доступом. Ключ доступа содержит проверяемые значения (организацию, группу доступа контрагентов, … произвольное значение), полученные через поля доступа. + + 2 + true + 36 + String + Variable + AsDescription + InDialog + BothWays + Catalog.КлючиДоступа.Form.ФормаЭлемента + Catalog.КлючиДоступа.Form.ФормаСписка + Catalog.КлючиДоступа.Form.ФормаСписка + + Список + + ru + Список + + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Список элементов справочников, документов, регистров и др., для которого используется ключ доступа. + + + + + Index + Use + Use + + + ДляВнешнихПользователей + + ru + Для внешних пользователей + + + Boolean + + + ru + Ключ доступа для внешних пользователей + + + + + Use + Use + + + Хеш + + ru + Хеш + + + Number + + 10 + true + + + + ru + Хеш-сумма содержимого ключа, позволяющая сделать быстрый поиск по индексу + + + + + Index + Use + Use + + + СоставПолей + + ru + Состав полей + + + Number + + 17 + true + + + + ru + Количество полей в шапке и табличных частях, которые задействованы в ключе доступа (количество закодировано в группах по 4 бита, начиная с младших). +Используется при поиске объектов и записей регистров с устаревшими ключами доступа. + + + + + Use + Use + + + Значение1 + + ru + Значение 1 + + + DefinedType.ЗначениеДоступа + + + ru + Значение доступа, группа значений доступа, ключ доступа, идентификатор списка или значение для условия, которое извлекается через поле доступа (непосредственно или как группа значения доступа или через «точку» или через соединение) + + + + + Index + Use + Use + + + Значение2 + + ru + Значение 2 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + + Index + Use + Use + + + Значение3 + + ru + Значение 3 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + + Index + Use + Use + + + Значение4 + + ru + Значение 4 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + + Index + Use + Use + + + Значение5 + + ru + Значение 5 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + + Index + Use + Use + + + НеИспользуетсяС + + ru + Не используется с + + + Date + + + + ru + Когда заполнено, тогда ключ доступа не используется +ни одним элементом данных. Через некоторое время +неиспользуемый ключ доступа удаляется. + + + + + Index + Use + Use + + + + + + + Шапка + + ru + Шапка + + + Use + LineNumber + + Use + + + + + Значение6 + + ru + Значение 6 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение7 + + ru + Значение 7 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение8 + + ru + Значение 8 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение9 + + ru + Значение 9 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение10 + + ru + Значение 10 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + + + + + + ТабличнаяЧасть1 + + ru + Табличная часть 1 + + + Use + LineNumber + + Use + + + + + Значение1 + + ru + Значение 1 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение2 + + ru + Значение 2 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение3 + + ru + Значение 3 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение4 + + ru + Значение 4 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение5 + + ru + Значение 5 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + + + + + + ТабличнаяЧасть2 + + ru + Табличная часть 2 + + + Use + LineNumber + + Use + + + + + Значение1 + + ru + Значение 1 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение2 + + ru + Значение 2 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение3 + + ru + Значение 3 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение4 + + ru + Значение 4 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение5 + + ru + Значение 5 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + + + + + + ТабличнаяЧасть3 + + ru + Табличная часть 3 + + + Use + LineNumber + + Use + + + + + Значение1 + + ru + Значение 1 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение2 + + ru + Значение 2 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение3 + + ru + Значение 3 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение4 + + ru + Значение 4 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение5 + + ru + Значение 5 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + + + + + + ТабличнаяЧасть4 + + ru + Табличная часть 4 + + + Use + LineNumber + + Use + + + + + Значение1 + + ru + Значение 1 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение2 + + ru + Значение 2 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение3 + + ru + Значение 3 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение4 + + ru + Значение 4 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + Значение5 + + ru + Значение 5 + + + DefinedType.ЗначениеДоступа + + + ru + Тоже, что реквизит Значение 1 + + + + Use + Index + Use + + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..62245602 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,25 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + ПорядокПоТипу + Asc + + + Наименование + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..2240d114 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,769 @@ + + + + ГруппаПользовательскихНастроек + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КомандыФормы + 19 + + ФормаВключитьВозможностьРедактирования + 30 + true + true + + true + + + ФормаВключитьВозможностьРедактированияExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 3 + + <key>ru</key> + <value>Наборы групп доступа</value> + + true + true + + true + + + Список + + true + None + + ru + Тип элементов набора (Группы доступа, Группы пользователей, Группы внешних пользователей, Пользователи, Внешние пользователи) + + + Наименование + 16 + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 40 + true + true + + + + ДляВнешнихПользователей + 37 + + <key>ru</key> + <value>ВП</value> + + true + true + + true + + + + Список.ДляВнешнихПользователей + + + + ДляВнешнихПользователейРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + ДляВнешнихПользователейКонтекстноеМеню + 38 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ТипЭлементов + 24 + + <key>ru</key> + <value>Тип элементов</value> + + true + true + + + + Список.ТипЭлементов + + + + ТипЭлементовРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + ТипЭлементовКонтекстноеМеню + 25 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 10 + true + true + + + + Хеш + 40 + true + true + + true + + + + Список.Хеш + + + + ХешРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + + ХешКонтекстноеМеню + 41 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + НеИспользуетсяС + 27 + true + true + + true + + + + Список.НеИспользуетсяС + + + + НеИспользуетсяСРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + НеИспользуетсяСКонтекстноеМеню + 28 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + КоличествоГруппВНаборе + 34 + + <key>ru</key> + <value>Групп</value> + + true + true + + true + + + + Список.КоличествоГруппВНаборе + + + + ru + Количество групп в наборе + + + КоличествоГруппВНабореРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + КоличествоГруппВНабореКонтекстноеМеню + 35 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 3 + true + true + + + + Ссылка + 21 + true + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 22 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + СправочникНаборыГруппДоступа.Ссылка КАК Ссылка, + СправочникНаборыГруппДоступа.ПометкаУдаления КАК ПометкаУдаления, + СправочникНаборыГруппДоступа.Наименование КАК Наименование, + СправочникНаборыГруппДоступа.ДляВнешнихПользователей КАК ДляВнешнихПользователей, + СправочникНаборыГруппДоступа.ТипЭлементовНабора КАК ТипЭлементовНабора, + ТИПЗНАЧЕНИЯ(СправочникНаборыГруппДоступа.ТипЭлементовНабора) КАК ТипЭлементов, + СправочникНаборыГруппДоступа.Хеш КАК Хеш, + СправочникНаборыГруппДоступа.НеИспользуетсяС КАК НеИспользуетсяС, + СправочникНаборыГруппДоступа.Пользователь КАК Пользователь, + ЕСТЬNULL(КоличествоГруппВНаборах.Количество, 0) КАК КоличествоГруппВНаборе, + ВЫБОР + КОГДА ТИПЗНАЧЕНИЯ(СправочникНаборыГруппДоступа.ТипЭлементовНабора) = ТИП(Справочник.ГруппыДоступа) + ТОГДА 1 + КОГДА ТИПЗНАЧЕНИЯ(СправочникНаборыГруппДоступа.ТипЭлементовНабора) = ТИП(Справочник.ГруппыПользователей) + ТОГДА 2 + КОГДА ТИПЗНАЧЕНИЯ(СправочникНаборыГруппДоступа.ТипЭлементовНабора) = ТИП(Справочник.Пользователи) + ТОГДА 3 + КОГДА ТИПЗНАЧЕНИЯ(СправочникНаборыГруппДоступа.ТипЭлементовНабора) = ТИП(Справочник.ГруппыВнешнихПользователей) + ТОГДА 4 + КОГДА ТИПЗНАЧЕНИЯ(СправочникНаборыГруппДоступа.ТипЭлементовНабора) = ТИП(Справочник.ВнешниеПользователи) + ТОГДА 5 + ИНАЧЕ 0 + КОНЕЦ КАК ПорядокПоТипу, + СправочникНаборыГруппДоступа.Предопределенный КАК Предопределенный, + СправочникНаборыГруппДоступа.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных +ИЗ + Справочник.НаборыГруппДоступа КАК СправочникНаборыГруппДоступа + ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ + Группы.Ссылка КАК Набор, + КОЛИЧЕСТВО(Группы.Ссылка) КАК Количество + ИЗ + Справочник.НаборыГруппДоступа.Группы КАК Группы + + СГРУППИРОВАТЬ ПО + Группы.Ссылка) КАК КоличествоГруппВНаборах + ПО (КоличествоГруппВНаборах.Набор = СправочникНаборыГруппДоступа.Ссылка) + Catalog.НаборыГруппДоступа + true + true + true + true + true + +
+ + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..a4e52368 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,36 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + Иначе + Элементы.Список.РежимВыбора = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..03e4d92d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1094 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ГоризонтальнаяГруппа + 55 + + НеИспользуетсяС + 4 + true + true + + true + + + + Объект.НеИспользуетсяС + + + + НеИспользуетсяСРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + НеИспользуетсяСКонтекстноеМеню + 5 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ДляВнешнихПользователей + 52 + true + true + + true + + + + Объект.ДляВнешнихПользователей + + + Right + + ДляВнешнихПользователейРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + ДляВнешнихПользователейКонтекстноеМеню + 53 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Горизонтальная группа</value> + + + ГоризонтальнаяГруппаРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ТипЭлементовНабораИХеш + 60 + + ТипЭлементовНабора + 10 + true + true + + true + + + + Объект.ТипЭлементовНабора + + + + OnChange + ТипЭлементовНабораПриИзменении + + + ТипЭлементовНабораРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + ТипЭлементовНабораКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + false + ShowInInputField + false + false + true + true + true + true + + + + Хеш + 57 + true + true + + true + + + + Объект.Хеш + + + + ХешРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + ХешКонтекстноеМеню + 58 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Тип элементов набора и хеш</value> + + + ТипЭлементовНабораИХешРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + РеквизитыНаборов + 34 + + РеквизитыНабораГрупп + 36 + + Группы + 13 + + <key>ru</key> + <value>Группы</value> + + true + true + + true + + + Объект.Группы + + None + + ГруппыНомерСтроки + 26 + true + true + + true + + + + Объект.Группы.LineNumber + + + + ГруппыНомерСтрокиРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + ГруппыНомерСтрокиКонтекстноеМеню + 27 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + ГруппыГруппа + 29 + true + true + + true + + + + Объект.Группы.Группа + + + + ГруппыГруппаРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + ГруппыГруппаКонтекстноеМеню + 30 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ГруппыКоманднаяПанель + 15 + true + true + + true + + Left + true + + + true + true + + true + + ГруппыСтрокаПоиска + 17 + + ГруппыСтрокаПоискаРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + ГруппыСтрокаПоискаКонтекстноеМеню + 18 + true + true + + true + + true + + + true + + + + true + true + + true + + ГруппыСостояниеПросмотра + 20 + + ГруппыСостояниеПросмотраРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + ГруппыСостояниеПросмотраКонтекстноеМеню + 21 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ГруппыУправлениеПоиском + 23 + + ГруппыУправлениеПоискомРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + ГруппыУправлениеПоискомКонтекстноеМеню + 24 + true + true + + true + + true + + SearchControlAddition + + true + + + + ГруппыРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + ГруппыКонтекстноеМеню + 14 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Реквизиты набора групп</value> + + + РеквизитыНабораГруппРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + РеквизитыНабораИзОдногоПользователя + 38 + + Пользователь + 7 + true + true + + true + + + + Объект.Пользователь + + + + ПользовательРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + ПользовательКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + РазрешенныйНаборГруппДоступа + 40 + + <key>ru</key> + <value>Разрешенный набор +групп доступа</value> + + true + true + + true + + + + Объект.РазрешенныйНаборГруппДоступа + + + + РазрешенныйНаборГруппДоступаРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + + РазрешенныйНаборГруппДоступаКонтекстноеМеню + 41 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + РазрешенныйНаборГруппПользователей + 43 + + <key>ru</key> + <value>Разрешенный набор +групп пользователей</value> + + true + true + + true + + + + Объект.РазрешенныйНаборГруппПользователей + + + + РазрешенныйНаборГруппПользователейРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + + РазрешенныйНаборГруппПользователейКонтекстноеМеню + 44 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + НовыйНаборГруппДоступа + 46 + + <key>ru</key> + <value>Новый набор +групп доступа</value> + + true + true + + true + + + + Объект.НовыйНаборГруппДоступа + + + + НовыйНаборГруппДоступаРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + НовыйНаборГруппДоступаКонтекстноеМеню + 47 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + НовыйНаборГруппПользователей + 49 + + <key>ru</key> + <value>Новый набор +групп пользователей</value> + + true + true + + true + + + + Объект.НовыйНаборГруппПользователей + + + + НовыйНаборГруппПользователейРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + + НовыйНаборГруппПользователейКонтекстноеМеню + 50 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Реквизиты набора из одного пользователя</value> + + + РеквизитыНабораИзОдногоПользователяРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + Double + true + + + true + true + + true + + + <key>ru</key> + <value>Реквизиты наборов</value> + + + РеквизитыНаборовРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
+ + ФормаКоманднаяПанель + -1 + + ФормаВключитьВозможностьРедактирования + 32 + true + true + + true + + + ФормаВключитьВозможностьРедактированияExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.НаборыГруппДоступа + + + true + + + true + +
true
+ true +
+ + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..af710667 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,82 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + + СписокВыбора = Элементы.ТипЭлементовНабора.СписокВыбора; + ДобавитьЭлементСписка(СписокВыбора, "ГруппыДоступа"); + ДобавитьЭлементСписка(СписокВыбора, "ГруппыПользователей"); + ДобавитьЭлементСписка(СписокВыбора, "Пользователи"); + ДобавитьЭлементСписка(СписокВыбора, "ГруппыВнешнихПользователей"); + ДобавитьЭлементСписка(СписокВыбора, "ВнешниеПользователи"); + + УстановитьСтраницуРеквизитовПоТипу(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ТипЭлементовНабораПриИзменении(Элемент) + + УстановитьСтраницуРеквизитовПоТипу(ЭтотОбъект); + Объект.Группы.Очистить(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + + ПоказатьПредупреждение(, + НСтр("ru = 'Набор групп доступа не следует изменять, так как он сопоставлен с разными ключами доступа. + |Чтобы исправить нестандартную проблему следует удалить набор групп доступа или + |связь с ним в регистрах и выполнить процедуру обновления доступа.'")); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ДобавитьЭлементСписка(СписокВыбора, ИмяСправочника) + + ПустойИдентификатор = ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор(); + + СписокВыбора.Добавить(Справочники[ИмяСправочника].ПолучитьСсылку(ПустойИдентификатор), + Метаданные.Справочники[ИмяСправочника].Представление()); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСтраницуРеквизитовПоТипу(Форма) + + Если ТипЗнч(Форма.Объект.ТипЭлементовНабора) = Тип("СправочникСсылка.Пользователи") + Или ТипЗнч(Форма.Объект.ТипЭлементовНабора) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда + + Форма.Элементы.РеквизитыНаборов.ТекущаяСтраница = Форма.Элементы.РеквизитыНабораИзОдногоПользователя; + Иначе + Форма.Элементы.РеквизитыНаборов.ТекущаяСтраница = Форма.Элементы.РеквизитыНабораГрупп; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ManagerModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" new file mode 100644 index 00000000..e61eb734 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\235\320\260\320\261\320\276\321\200\321\213\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" @@ -0,0 +1,437 @@ + + + + + + + + + + НаборыГруппДоступа + + ru + Наборы групп доступа + + Catalog.НаборыГруппДоступа.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + Catalog.НаборыГруппДоступа.Attribute.ДляВнешнихПользователей + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + Catalog.НаборыГруппДоступа.Attribute.Хеш + Managed + + ru + Набор групп доступа + + + ru + Технологический справочник, который используется для объединения 2 вариантов по 3 группы элементов: +а) наборы групп доступа, наборы групп пользователей, пользователи; +б) наборы групп доступа, наборы групп внешних пользователей, внешние пользователи. + + 2 + true + 80 + String + Variable + AsDescription + InDialog + BothWays + Catalog.НаборыГруппДоступа.Form.ФормаЭлемента + Catalog.НаборыГруппДоступа.Form.ФормаСписка + Catalog.НаборыГруппДоступа.Form.ФормаСписка + + ДляВнешнихПользователей + + ru + Для внешних пользователей + + + Boolean + + + ru + Набор для внешних пользователей + + + + + Index + Use + Use + + + ТипЭлементовНабора + + ru + Тип элементов набора + + + CatalogRef.ГруппыДоступа + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + + ru + Тип элементов набора (представлен пустой ссылкой справочников Группы доступа, Группы пользователей, Группы внешних пользователей, Пользователи, Внешние пользователи) + + + + + Catalog.ГруппыДоступа.EmptyRef + + Index + Use + Use + + + Хеш + + ru + Хеш + + + Number + + 10 + true + + + + ru + Хеш-сумма состава групп, позволяющая +сделать быстрый поиск по индексу + + + + + Index + Use + Use + + + НеИспользуетсяС + + ru + Не используется с + + + Date + + + + ru + Когда заполнено, тогда набор не используется ни одним из пользователей +по текущим настройкам, но еще может использоваться в параметрах сеансов. +Через некоторое время неиспользуемый набор удаляется. + + + + + Index + Use + Use + + + Пользователь + + ru + Пользователь + + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + ru + Пользователь или внешний пользователь набора из одного элемента (устранение составного типа в измерении регистра) + + + + + ТипЭлементовНабора + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + + + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + + + Index + Use + Use + + + РазрешенныйНаборГруппДоступа + + ru + Разрешенный набор групп доступа + + + CatalogRef.НаборыГруппДоступа + + + ru + Когда свойство Пользователь заполнено означает разрешенный набор групп доступа этого пользователя + + + + + Отбор.ТипЭлементовНабора + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + + + Отбор.ТипЭлементовНабора + + Catalog.ГруппыДоступа.EmptyRef + + + + Index + Use + Use + + + РазрешенныйНаборГруппПользователей + + ru + Разрешенный набор групп пользователей + + + CatalogRef.НаборыГруппДоступа + + + ru + Когда свойство Пользователь заполнено означает разрешенный набор групп пользователей этого пользователя + + + + + Отбор.ТипЭлементовНабора + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + + + Отбор.ТипЭлементовНабора + + + Catalog.ГруппыПользователей.EmptyRef + + + Catalog.ГруппыВнешнихПользователей.EmptyRef + + + + + Index + Use + Use + + + НовыйНаборГруппДоступа + + ru + Новый набор групп доступа + + + CatalogRef.НаборыГруппДоступа + + + ru + Когда свойство Пользователь заполнено означает новый набор групп доступа, который станет разрешенным набором этого пользователя после обновления регистров + + + + + Отбор.ТипЭлементовНабора + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + + + Отбор.ТипЭлементовНабора + + Catalog.ГруппыДоступа.EmptyRef + + + + Index + Use + Use + + + НовыйНаборГруппПользователей + + ru + Новый набор групп пользователей + + + CatalogRef.НаборыГруппДоступа + + + ru + Когда свойство Пользователь заполнено означает новый набор групп пользователей, который станет разрешенным набором этого пользователя после обновления регистров + + + + + Отбор.ТипЭлементовНабора + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + + + Отбор.ТипЭлементовНабора + + + Catalog.ГруппыПользователей.EmptyRef + + + Catalog.ГруппыВнешнихПользователей.EmptyRef + + + + + Index + Use + Use + + + + + + + Группы + + ru + Группы + + + Use + LineNumber + + Use + + + + + Группа + + ru + Группа + + + CatalogRef.ГруппыДоступа + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + + + ru + Группа доступа или группа пользователей или группа внешних пользователей, входящая в состав набора + + + + + ТипЭлементовНабора + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + + + Catalog.НаборыГруппДоступа.Attribute.ТипЭлементовНабора + + Use + Index + Use + + + + ФормаСписка + + ru + Форма списка + + АПК:494 - №656 Соединение с вложенным запросом допустимо, так как объем данных небольшой (от единиц до нескольких тысяч). + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Commands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Commands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213/CommandModule.bsl" new file mode 100644 index 00000000..217be059 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Commands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213/CommandModule.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПоказатьДополнительныеРеквизиты"); + ОткрытьФорму("Справочник.НаборыДополнительныхРеквизитовИСведений.ФормаСписка", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + "ДополнительныеРеквизиты", + ПараметрыВыполненияКоманды.Окно, + ПараметрыВыполненияКоманды.НавигационнаяСсылка); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Commands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Commands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/CommandModule.bsl" new file mode 100644 index 00000000..341dac5f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Commands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/CommandModule.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПоказатьДополнительныеСведения"); + ОткрытьФорму("Справочник.НаборыДополнительныхРеквизитовИСведений.ФормаСписка", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + "ДополнительныеСведения", + ПараметрыВыполненияКоманды.Окно, + ПараметрыВыполненияКоманды.НавигационнаяСсылка); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..397bea14 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,358 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Copy + Create + CreateFolder + Delete + MoveItem + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Ссылка + 8 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокСтрокаПоиска + 11 + + СписокСтрокаПоискаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 12 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 14 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 15 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 17 + + СписокУправлениеПоискомРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 18 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.НаборыДополнительныхРеквизитовИСведений + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..3da745ec --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,112 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 3 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + Style.BorderColor + + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Write + WriteAndClose + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + +
true
+ true +
+ + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..600715ab --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,56 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + + ВидыСвойствНабора = УправлениеСвойствамиСлужебный.ВидыСвойствНабора(Объект.Ссылка); + ИспользоватьДопРеквизиты = ВидыСвойствНабора.ДополнительныеРеквизиты; + ИспользоватьДопСведения = ВидыСвойствНабора.ДополнительныеСведения; + + Если ИспользоватьДопРеквизиты И ИспользоватьДопСведения Тогда + Заголовок = Объект.Наименование + " " + НСтр("ru = '(Группа наборов дополнительных реквизитов и сведений)'") + + ИначеЕсли ИспользоватьДопРеквизиты Тогда + Заголовок = Объект.Наименование + " " + НСтр("ru = '(Группа наборов дополнительных реквизитов)'") + + ИначеЕсли ИспользоватьДопСведения Тогда + Заголовок = Объект.Наименование + " " + НСтр("ru = '(Группа наборов дополнительных сведений)'") + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\235\320\265\320\270\321\201\320\277\320\276\320\273\321\214\320\267\321\203\320\265\320\274\321\213\320\265\320\235\320\260\320\261\320\276\321\200\321\213/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\235\320\265\320\270\321\201\320\277\320\276\320\273\321\214\320\267\321\203\320\265\320\274\321\213\320\265\320\235\320\260\320\261\320\276\321\200\321\213/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\235\320\265\320\270\321\201\320\277\320\276\320\273\321\214\320\267\321\203\320\265\320\274\321\213\320\265\320\235\320\260\320\261\320\276\321\200\321\213/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..89de46db --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,2937 @@ + + + + ЭтоНаборыДополнительныхСведений + 71 + true + true + + true + + + + ЭтоНаборыДополнительныхСведений + + + + OnChange + ЭтоНаборыДополнительныхСведенийПриИзменении + + + ЭтоНаборыДополнительныхСведенийExtendedTooltip + 103 + true + true + + true + + Label + true + true + + Left + + + + ЭтоНаборыДополнительныхСведенийКонтекстноеМеню + 72 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + true + true + true + true + true + + + ru + Дополнительные реквизиты + + + + + + ru + Дополнительные сведения + + + true + + + + Style.ФонУправляющегоПоля + + + + + ГруппаПользовательскихНастроек + 145 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 146 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаСвойства + 70 + + СтраницыНаборы + 188 + + Основная + 190 + + НаборыСвойств + 1 + + <key>ru</key> + <value>Наборы свойств</value> + + true + true + + true + + + НаборыСвойств + + false + None + Change + + Представление + 4 + + <key>ru</key> + <value>Набор</value> + + true + true + + true + + + + НаборыСвойств.Представление + + + true + + ПредставлениеExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + + Style.BorderColor + + + + + Ссылка + 139 + true + true + + + + НаборыСвойств.Ссылка + + + + СсылкаРасширеннаяПодсказка + 141 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 140 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + НаборыСвойствКоманднаяПанель + 3 + true + true + + true + + Left + + + DragCheck + НаборыСвойствПроверкаПеретаскивания + + + OnActivateRow + НаборыСвойствПриАктивизацииСтроки + + + Drag + НаборыСвойствПеретаскивание + + + BeforeRowChange + НаборыСвойствПередНачаломИзменения + + + true + true + + true + + НаборыСвойствСтрокаПоиска + 147 + + НаборыСвойствСтрокаПоискаРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + + НаборыСвойствСтрокаПоискаКонтекстноеМеню + 148 + true + true + + true + + true + + + true + + + + true + true + + true + + НаборыСвойствСостояниеПросмотра + 150 + + НаборыСвойствСостояниеПросмотраРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + + НаборыСвойствСостояниеПросмотраКонтекстноеМеню + 151 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НаборыСвойствУправлениеПоиском + 153 + + НаборыСвойствУправлениеПоискомРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + + НаборыСвойствУправлениеПоискомКонтекстноеМеню + 154 + true + true + + true + + true + + SearchControlAddition + + true + + + + НаборыСвойствExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + + НаборыСвойствКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + + НаборыСвойств.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + + Style.BorderColor + + SelectionPresentation + + + OnGetDataAtServer + НаборыСвойствПриПолученииДанныхНаСервере + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + + + true + true + + true + + + <key>ru</key> + <value>Основная</value> + + + ОсновнаяРасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Неиспользуемые + 192 + + НеиспользуемыеНаборы + 194 + + <key>ru</key> + <value>Неиспользуемые наборы</value> + + true + true + + true + + + НеиспользуемыеНаборы + + false + None + ListSettings + + НеиспользуемыеНаборыПредставление + 210 + + <key>ru</key> + <value>Представление</value> + + true + true + + true + + + + НеиспользуемыеНаборы.Представление + + + + НеиспользуемыеНаборыПредставлениеРасширеннаяПодсказка + 212 + true + true + + true + + Label + true + true + + Left + + + + НеиспользуемыеНаборыПредставлениеКонтекстноеМеню + 211 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + НеиспользуемыеНаборыКоманднаяПанель + 196 + true + true + + true + + Left + true + + + true + true + + true + + НеиспользуемыеНаборыСтрокаПоиска + 198 + + НеиспользуемыеНаборыСтрокаПоискаРасширеннаяПодсказка + 200 + true + true + + true + + Label + true + true + + Left + + + + НеиспользуемыеНаборыСтрокаПоискаКонтекстноеМеню + 199 + true + true + + true + + true + + + true + + + + true + true + + true + + НеиспользуемыеНаборыСостояниеПросмотра + 201 + + НеиспользуемыеНаборыСостояниеПросмотраРасширеннаяПодсказка + 203 + true + true + + true + + Label + true + true + + Left + + + + НеиспользуемыеНаборыСостояниеПросмотраКонтекстноеМеню + 202 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НеиспользуемыеНаборыУправлениеПоиском + 204 + + НеиспользуемыеНаборыУправлениеПоискомРасширеннаяПодсказка + 206 + true + true + + true + + Label + true + true + + Left + + + + НеиспользуемыеНаборыУправлениеПоискомКонтекстноеМеню + 205 + true + true + + true + + true + + SearchControlAddition + + true + + + + НеиспользуемыеНаборыРасширеннаяПодсказка + 197 + true + true + + true + + Label + true + true + + Left + + + + НеиспользуемыеНаборыКонтекстноеМеню + 195 + true + true + + true + + true + + Tree + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + + НеиспользуемыеНаборы.DefaultPicture + + + CommonPicture.ПиктограммыЭлементов + + SelectionPresentation + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + true + true + + true + + + <key>ru</key> + <value>Неиспользуемые</value> + + + НеиспользуемыеРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы наборы</value> + + + СтраницыНаборыРасширеннаяПодсказка + 189 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + Свойства + 38 + + <key>ru</key> + <value>Свойства</value> + + true + true + + true + + + Свойства + + None + CancelSearch + EndEdit + Find + SortListAsc + SortListDesc + + СвойстваЗаголовок + 41 + + <key>ru</key> + <value>Имя</value> + + true + true + + true + + + + Свойства.Заголовок + + + + СвойстваЗаголовокExtendedTooltip + 134 + true + true + + true + + Label + true + true + + Left + + + + СвойстваЗаголовокКонтекстноеМеню + 42 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СвойстваТипЗначения + 93 + true + true + + true + + + + Свойства.ТипЗначения + + + + ru + Типы значения, которое можно ввести при заполнении реквизита. + + + СвойстваТипЗначенияExtendedTooltip + 135 + true + true + + true + + Label + true + true + + Left + + + + СвойстваТипЗначенияКонтекстноеМеню + 94 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СвойстваЗаполнятьОбязательно + 99 + true + true + + + + Свойства.ЗаполнятьОбязательно + + + + ru + Настройка проверки заполненности дополнительного реквизита. + + + СвойстваЗаполнятьОбязательноExtendedTooltip + 136 + true + true + + true + + Label + true + true + + Left + + + + СвойстваЗаполнятьОбязательноКонтекстноеМеню + 100 + true + true + + true + + true + + CheckBoxField + true + EnterOnInput + true + Left + true + + + + СвойстваОбщиеЗначения + 97 + true + true + + + + Свойства.ОбщиеЗначения + + + + ru + Реквизит использует список значений реквизита-образца. + + + СвойстваОбщиеЗначенияExtendedTooltip + 137 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбщиеЗначенияКонтекстноеМеню + 98 + true + true + + true + + true + + CheckBoxField + true + EnterOnInput + true + Left + true + + + + СвойстваОбщее + 95 + true + true + + + + Свойства.Общее + + + + ru + Реквизит может быть в нескольких разных наборах. + + + СвойстваОбщееExtendedTooltip + 138 + true + true + + true + + Label + true + true + + Left + + + + СвойстваОбщееКонтекстноеМеню + 96 + true + true + + true + + true + + CheckBoxField + true + EnterOnInput + true + Left + true + + + + СвойстваСсылка + 142 + true + true + + + + Свойства.Свойство + + + + СвойстваСсылкаРасширеннаяПодсказка + 144 + true + true + + true + + Label + true + true + + Left + + + + СвойстваСсылкаКонтекстноеМеню + 143 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СвойстваКоманднаяПанель + 40 + true + true + + true + + Left + + + DragCheck + СвойстваПроверкаПеретаскивания + + + BeforeAddRow + СвойстваПередНачаломДобавления + + + BeforeDeleteRow + СвойстваПередУдалением + + + OnActivateRow + СвойстваПриАктивизацииСтроки + + + DragStart + СвойстваНачалоПеретаскивания + + + ChoiceProcessing + СвойстваОбработкаВыбора + + + BeforeRowChange + СвойстваПередНачаломИзменения + + + true + true + + true + + СвойстваСтрокаПоиска + 156 + + СвойстваСтрокаПоискаРасширеннаяПодсказка + 158 + true + true + + true + + Label + true + true + + Left + + + + СвойстваСтрокаПоискаКонтекстноеМеню + 157 + true + true + + true + + true + + + true + + + + true + true + + true + + СвойстваСостояниеПросмотра + 159 + + СвойстваСостояниеПросмотраРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + + СвойстваСостояниеПросмотраКонтекстноеМеню + 160 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СвойстваУправлениеПоиском + 162 + + СвойстваУправлениеПоискомРасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + + СвойстваУправлениеПоискомКонтекстноеМеню + 163 + true + true + + true + + true + + SearchControlAddition + + true + + + + СвойстваExtendedTooltip + 133 + true + true + + true + + Label + true + true + + Left + + + + СвойстваКонтекстноеМеню + 39 + + СвойстваКонтекстноеМенюПодменюДобавить + 84 + + СвойстваКонтекстноеМенюСоздать + 83 + true + true + + true + + + СвойстваКонтекстноеМенюСоздатьExtendedTooltip + 126 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Создать + Auto + true + true + UserCmds + Auto + + + СвойстваКонтекстноеМенюДобавитьИзНабора + 167 + true + true + + true + + + СвойстваКонтекстноеМенюДобавитьИзНабораРасширеннаяПодсказка + 168 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзНабора + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавить</value> + + + СвойстваКонтекстноеМенюПодменюДобавитьExtendedTooltip + 125 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.CreateListItem + + Auto + + + + СвойстваКонтекстноеМенюГруппаКнопок2 + 87 + + СвойстваКонтекстноеМенюСкопировать + 74 + true + true + + true + + + СвойстваКонтекстноеМенюСкопироватьExtendedTooltip + 130 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Скопировать + Auto + true + true + UserCmds + Auto + + + СвойстваКонтекстноеМенюИзменить + 89 + true + true + + true + + + СвойстваКонтекстноеМенюИзменитьExtendedTooltip + 131 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Изменить + Auto + true + true + UserCmds + Auto + + + СвойстваКонтекстноеМенюПометитьНаУдаление + 75 + true + true + + true + + + СвойстваКонтекстноеМенюПометитьНаУдалениеExtendedTooltip + 132 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПометитьНаУдаление + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Свойства контекстное меню группа кнопок 2</value> + + + СвойстваКонтекстноеМенюГруппаКнопок2ExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + + + + СвойстваКонтекстноеМенюКопироватьРеквизит + 175 + true + true + + true + + + СвойстваКонтекстноеМенюКопироватьРеквизитРасширеннаяПодсказка + 176 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КопироватьРеквизит + Auto + true + true + UserCmds + Auto + + + СвойстваКонтекстноеМенюВставитьРеквизит + 173 + true + true + + true + + + СвойстваКонтекстноеМенюВставитьРеквизитРасширеннаяПодсказка + 174 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВставитьРеквизит + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + true +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + true + true + + Свойства.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + + Style.FormBackColor + + +
+ true + true + + true + + + <key>ru</key> + <value>Свойства</value> + + + ГруппаСвойстваРасширеннаяПодсказка + 121 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + +
+ + ПоказатьНеиспользуемыеРеквизиты + 185 + true + true + + true + + + + ПоказатьНеиспользуемыеРеквизиты + + + Right + + OnChange + ПоказатьНеиспользуемыеРеквизитыПриИзменении + + + ПоказатьНеиспользуемыеРеквизитыРасширеннаяПодсказка + 187 + true + true + + true + + Label + true + true + + Left + + + + ПоказатьНеиспользуемыеРеквизитыКонтекстноеМеню + 186 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + Top + + ФормаКоманднаяПанель + -1 + + СвойстваПодменюДобавить + 80 + + СвойстваСоздать + 62 + true + true + + true + + + СвойстваСоздатьExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Создать + Auto + true + true + UserCmds + Auto + + + ДобавитьИзНабора + 165 + true + true + + true + + + ДобавитьИзНабораРасширеннаяПодсказка + 166 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзНабора + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавить</value> + + + СвойстваПодменюДобавитьExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.CreateListItem + + + + + СвойстваГруппаКнопокДействия + 57 + + СвойстваСкопировать + 65 + true + true + + true + + + СвойстваСкопироватьExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Скопировать + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СвойстваИзменить + 66 + true + true + + true + + + СвойстваИзменитьExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Изменить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СвойстваПометитьНаУдаление + 67 + true + true + + true + + + СвойстваПометитьНаУдалениеExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПометитьНаУдаление + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Свойства группа кнопок 2</value> + + + СвойстваГруппаКнопокДействияРасширеннаяПодсказка + 110 + true + true + + true + + Label + true + true + + Left + + + + + + СвойстваГруппаКнопокПорядок + 56 + + СвойстваПереместитьВверх + 63 + true + true + + true + + + СвойстваПереместитьВверхExtendedTooltip + 115 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВверх + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СвойстваПереместитьВниз + 64 + true + true + + true + + + СвойстваПереместитьВнизExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереместитьВниз + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Свойства группа кнопок порядок</value> + + + СвойстваГруппаКнопокПорядокРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + + + + ПоискИУдалениеДублей + 169 + true + true + + true + + + ПоискИУдалениеДублейРасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоискИУдалениеДублей + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокНайти + 36 + true + true + + true + + + СписокНайтиExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + Form.Item.НаборыСвойств.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + СписокОтменитьПоиск + 37 + true + true + + true + + + СписокОтменитьПоискExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + Form.Item.НаборыСвойств.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ГруппаКнопокКопирование + 177 + + КопироватьРеквизит + 183 + true + true + + true + + + КопироватьРеквизитРасширеннаяПодсказка + 184 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КопироватьРеквизит + Auto + true + true + UserCmds + Auto + + + ВставитьРеквизит + 181 + true + true + + true + + + ВставитьРеквизитРасширеннаяПодсказка + 182 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВставитьРеквизит + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопок копирование</value> + + + ГруппаКнопокКопированиеРасширеннаяПодсказка + 178 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаИзменитьФорму + 79 + true + true + + true + + + ФормаИзменитьФормуExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 78 + true + true + + true + + + ФормаСправкаExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + Change + true + Vertical + true + true + true + UseIfNecessary + true + true + + НаборыСвойств + + <key>ru</key> + <value>Наборы свойств</value> + + 1 + + DynamicList + + + true + + + true + + + НаборыСвойств.КоличествоРеквизитов + + + НаборыСвойств.КоличествоСведений + + + НаборыСвойств.НаименованиеНаДругихЯзыках + + + НаборыСвойств.Родитель + + + НаборыСвойств.Ссылка + + + НаборыСвойств.ЭтоГруппа + + + НаборыСвойств.ЭтоСведения + +
true
+ + ВЫБРАТЬ + Наборы.Ссылка КАК Ссылка, + Наборы.ВерсияДанных КАК ВерсияДанных, + Наборы.ПометкаУдаления КАК ПометкаУдаления, + Наборы.Предопределенный КАК Предопределенный, + Наборы.Родитель КАК Родитель, + Наборы.ЭтоГруппа КАК ЭтоГруппа, + Наборы.Наименование КАК Наименование, + Наборы.Используется КАК Используется, + ВЫРАЗИТЬ("" КАК СТРОКА(150)) КАК Представление, + &ЭтоНаборыДополнительныхСведений КАК ЭтоСведения, + НаборыПредставления.Наименование КАК НаименованиеНаДругихЯзыках, + ВЫБОР + КОГДА Наборы.ПометкаУдаления + ТОГДА 1 + ИНАЧЕ 0 + КОНЕЦ + ВЫБОР + КОГДА Наборы.Предопределенный + ТОГДА 2 + ИНАЧЕ 0 + КОНЕЦ КАК НомерКартинки, + Наборы.КоличествоРеквизитов КАК КоличествоРеквизитов, + Наборы.КоличествоСведений КАК КоличествоСведений +ИЗ + Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.Представления КАК НаборыПредставления + ПО (НаборыПредставления.Ссылка = Наборы.Ссылка) + И (НаборыПредставления.КодЯзыка = &КодЯзыка) +ГДЕ + ВЫБОР + КОГДА Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) + ТОГДА Наборы.Ссылка В (&Наборы) + ИНАЧЕ Наборы.Родитель В (&Наборы) + КОНЕЦ + И Наборы.Используется + И ЕСТЬNULL(Наборы.Родитель.Используется, ИСТИНА) + Catalog.НаборыДополнительныхРеквизитовИСведений + true + true + true + true + true + +
+ + Свойства + + <key>ru</key> + <value>Свойства</value> + + 2 + + ValueTable + + + true + + + true + + + Заголовок + + <key>ru</key> + <value>Реквизит</value> + + 1 + + String + + + + true + + + true + + + + Общее + + <key>ru</key> + <value>Общий</value> + + 3 + + Boolean + + + true + + + true + + 1511c2e3-aeb4-422a-b6ae-03412b714c93 + + + ПометкаУдаления + 4 + + Boolean + + + true + + + true + + + + Свойство + + <key>ru</key> + <value>Ссылка</value> + + 5 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + + + НомерСтроки + 6 + + Number + + 10 + true + + + + true + + + true + + + + ВладелецДополнительныхЗначений + 7 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + + + НомерКартинки + 2 + + Number + + 1 + true + + + + true + + + true + + + + ТипЗначения + + <key>ru</key> + <value>Тип значения</value> + + 8 + + String + + + + true + + + true + + + + ЗаполнятьОбязательно + + <key>ru</key> + <value>Обязательный</value> + + 9 + + Boolean + + + true + + + true + + + + ОбщиеЗначения + + <key>ru</key> + <value>По образцу</value> + + 10 + + Boolean + + + true + + + true + + 0f8e87d4-ffb7-4cff-a2d3-6d5c5219ff0b + + + + ЭтоНаборыДополнительныхСведений + + <key>ru</key> + <value>Показать</value> + + 3 + + Boolean + + + true + + + true + + + + ЦветФормы + 4 + + + true + + + true + + + + ТекущийНабор + 5 + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + + + + ТекущийНаборЭтоГруппа + 6 + + Boolean + + + true + + + true + + + + ТекущийНаборВерсияДанных + 7 + + String + + + + true + + + true + + + + ДоступныеНаборыСписок + 8 + + ValueList + + + true + + + true + + + + + + + КопируемыйРеквизит + 9 + + + true + + + true + + + + НаборПриемник + 10 + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + + + + ВажностьУстановлена + 11 + + Boolean + + + true + + + true + + + + ПоказатьНеиспользуемыеРеквизиты + + <key>ru</key> + <value>Показать неиспользуемые реквизиты</value> + + 12 + + Boolean + + + true + + + true + + + + НеиспользуемыеНаборы + + <key>ru</key> + <value>Неиспользуемые наборы</value> + + 14 + + DynamicList + + + true + + + true + + + ВЫБРАТЬ + ВЫБОР + КОГДА &ЭтоДополнительноеСведение + ТОГДА &ОбщиеДополнительныеСведения + ИНАЧЕ &ОбщиеДополнительныеРеквизиты + КОНЕЦ КАК Представление, + 0 КАК НомерКартинки + true + true + true + true + + + + ПереместитьВверх + + <key>ru</key> + <value>Переместить вверх</value> + + 3 + + ru + Переместить текущий реквизит вверх + + + true + + + StdPicture.MoveUp + + + + ПереместитьВверх + + + DontUse + + + ПереместитьВниз + + <key>ru</key> + <value>Переместить вниз</value> + + 4 + + ru + Переместить текущий реквизит вниз + + + true + + + StdPicture.MoveDown + + + + ПереместитьВниз + + + DontUse + + + Скопировать + + <key>ru</key> + <value>Скопировать</value> + + 5 + + ru + Создать новый реквизит копированием текущего + + + true + + F9 + + StdPicture.CloneListItem + + + + Скопировать + + + DontUse + + + Изменить + + <key>ru</key> + <value>Изменить</value> + + 6 + + ru + Изменить (или открыть) текущий реквизит + + + true + + F2 + + StdPicture.Change + + + + Изменить + + + Text + DontUse + + + ПометитьНаУдаление + + <key>ru</key> + <value>Пометить на удаление</value> + + 7 + + ru + Пометить текущий элемент на удаление / Снять пометку (Del) + + + true + + + StdPicture.MarkToDelete + + + + ПометитьНаУдаление + + + Picture + DontUse + + + Создать + + <key>ru</key> + <value>Новый (Ins)</value> + + 8 + + ru + Создать уникальный реквизит + + + true + + + + Создать + + + Text + DontUse + + + ДобавитьИзНабора + + <key>ru</key> + <value>Из другого набора...</value> + + 9 + + ru + Добавить из набора + + + true + + + + ДобавитьИзНабора + + + DontUse + + + ПоискИУдалениеДублей + + <key>ru</key> + <value>Поиск и удаление дублей...</value> + + 10 + + ru + Поиск и удаление дублей + + + true + + + + ПоискИУдалениеДублей + + + DontUse + + + КопироватьРеквизит + + <key>ru</key> + <value>Копировать</value> + + 11 + + ru + Копирует выделенный дополнительный реквизит + + + true + + + + СкопироватьВыделенныйРеквизит + + + DontUse + + + ВставитьРеквизит + + <key>ru</key> + <value>Вставить</value> + + 12 + + ru + Добавляет скопированный дополнительный реквизит в текущий набор + + + true + + + + ВставитьРеквизит + + + DontUse + + + ТекущийНабор + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..a08b51fe --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,1365 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("ПоказатьДополнительныеРеквизиты") Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, + "НаборыДополнительныхРеквизитов"); + Элементы.ЭтоНаборыДополнительныхСведений.Видимость = Ложь; + + ИначеЕсли Параметры.Свойство("ПоказатьДополнительныеСведения") Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, + "НаборыДополнительныхСведений"); + Элементы.ЭтоНаборыДополнительныхСведений.Видимость = Ложь; + ЭтоНаборыДополнительныхСведений = Истина; + КонецЕсли; + + ЦветФормы = Элементы.Свойства.ЦветФона; + + НастроитьОтображениеНаборов(); + ОформитьНаборыИСвойства(); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПоискИУдалениеДублей") Тогда + Элементы.ПоискИУдалениеДублей.Видимость = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.НаборыСвойств.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; + Элементы.НаборыСвойств.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.Свойства.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.СвойстваПодменюДобавить.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_ДополнительныеРеквизитыИСведения" + ИЛИ ИмяСобытия = "Запись_ЗначенияСвойствОбъектов" + ИЛИ ИмяСобытия = "Запись_ЗначенияСвойствОбъектовИерархия" Тогда + + // При записи свойства необходимо перенести свойство в соответствующую группу. + // При записи значения необходимо обновить список первых 3-х значений. + ПриИзмененииТекущегоНабораНаСервере(); + + ИначеЕсли ИмяСобытия = "Переход_НаборыДополнительныхРеквизитовИСведений" Тогда + // При открытии формы для редактирования состава свойств конкретного объекта метаданных + // необходимо перейти к набору или группе наборов этого объекта метаданных. + Если ТипЗнч(Параметр) = Тип("Структура") Тогда + ВыбратьУказанныеСтроки(Параметр); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ЭтоНаборыДополнительныхСведенийПриИзменении(Элемент) + + НастроитьОтображениеНаборов(); + ОформитьНаборыИСвойства(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьНеиспользуемыеРеквизитыПриИзменении(Элемент) + ПереключитьСписокНаборов(); + ПриИзмененииТекущегоНабора(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыНаборыСвойств + +&НаКлиенте +Процедура НаборыСвойствПриАктивизацииСтроки(Элемент) + + ПодключитьОбработчикОжидания("ПриИзмененииТекущегоНабора", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура НаборыСвойствПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура НаборыСвойствПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + СтандартнаяОбработка = Ложь; + + Если Строка = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Элементы.НаборыСвойств.ДанныеСтроки(Строка).ЭтоГруппа Тогда + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НаборыСвойствПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + СтандартнаяОбработка = Ложь; + + Если ПараметрыПеретаскивания.Значение.ОбщиеЗначения Тогда + ПеретаскиваемыйЭлемент = ПараметрыПеретаскивания.Значение.ВладелецДополнительныхЗначений; + Иначе + ПеретаскиваемыйЭлемент = ПараметрыПеретаскивания.Значение.Свойство; + КонецЕсли; + + Если ТипЗнч(ПеретаскиваемыйЭлемент) <> Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения") Тогда + Возврат; + КонецЕсли; + + НаборПриемник = Строка; + ДобавитьРеквизитВНабор(ПеретаскиваемыйЭлемент, Строка); +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура НаборыСвойствПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + Для Каждого СтрокаДинамическогоСписка Из Строки Цикл + Данные = СтрокаДинамическогоСписка.Значение.Данные; + Если Данные.ЭтоГруппа Тогда + Данные.Представление = Строка(Данные.Ссылка); + Продолжить; + КонецЕсли; + + Если Данные.ЭтоСведения Тогда + Если Не ЗначениеЗаполнено(Данные.КоличествоСведений) Тогда + Данные.Представление = Строка(Данные.Ссылка); + Продолжить; + КонецЕсли; + Если ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда + Данные.Представление = Данные.НаименованиеНаДругихЯзыках + " (" + Данные.КоличествоСведений + ")"; + Продолжить; + КонецЕсли; + Данные.Представление = Строка(Данные.Ссылка) + " (" + Данные.КоличествоСведений + ")"; + Иначе + Если Не ЗначениеЗаполнено(Данные.КоличествоРеквизитов) Тогда + Данные.Представление = Строка(Данные.Ссылка); + Продолжить; + КонецЕсли; + Если ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда + Данные.Представление = Данные.НаименованиеНаДругихЯзыках + " (" + Данные.КоличествоРеквизитов + ")"; + Продолжить; + КонецЕсли; + Данные.Представление = Строка(Данные.Ссылка) + " (" + Данные.КоличествоРеквизитов + ")"; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСвойства + +&НаКлиенте +Процедура СвойстваПриАктивизацииСтроки(Элемент) + + СвойстваУстановитьДоступностьКоманд(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура СвойстваПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если Копирование Тогда + Скопировать(); + Иначе + Создать(); + КонецЕсли; + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура СвойстваПередНачаломИзменения(Элемент, Отказ) + + Изменить(); + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура СвойстваПередУдалением(Элемент, Отказ) + + ИзменитьПометкуУдаления(); + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура СвойстваОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Если ВыбранноеЗначение.Свойство("ВладелецДополнительныхЗначений") Тогда + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ЭтоНаборыДополнительныхСведений); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНабор); + ПараметрыФормы.Вставить("ВладелецДополнительныхЗначений", ВыбранноеЗначение.ВладелецДополнительныхЗначений); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", + ПараметрыФормы, Элементы.Свойства); + + ИначеЕсли ВыбранноеЗначение.Свойство("ОбщееСвойство") Тогда + + ИзменяемыйНабор = ТекущийНабор; + Если ВыбранноеЗначение.Свойство("Перетаскивание") Тогда + ДобавитьОбщееСвойствоПеретаскиванием(ВыбранноеЗначение.ОбщееСвойство); + Иначе + ВыполнитьКомандуНаСервере("ДобавитьОбщееСвойство", ВыбранноеЗначение.ОбщееСвойство); + ИзменяемыйНабор = НаборПриемник; + КонецЕсли; + + Оповестить("Запись_НаборыДополнительныхРеквизитовИСведений", + Новый Структура("Ссылка", ИзменяемыйНабор), ИзменяемыйНабор); + Иначе + ВыбратьУказанныеСтроки(ВыбранноеЗначение); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СвойстваПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура СвойстваНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение) + // Перемещение свойств и реквизитов не поддерживается, всегда выполняется копирование. + // Иконка курсора при этом должна быть соответствующая. + ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.Копирование; + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Копирование; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Создать(Команда = Неопределено) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("НаборСвойств", ТекущийНабор); + ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ЭтоНаборыДополнительныхСведений); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНабор); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", + ПараметрыФормы, Элементы.Свойства); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьИзНабора(Команда) + + ПараметрыФормы = Новый Структура; + + ВыбранныеЗначения = Новый Массив; + НайденныеСтроки = Свойства.НайтиСтроки(Новый Структура("Общее", Истина)); + Для каждого Строка Из НайденныеСтроки Цикл + ВыбранныеЗначения.Добавить(Строка.Свойство); + КонецЦикла; + + Если ЭтоНаборыДополнительныхСведений Тогда + ПараметрыФормы.Вставить("ВыборОбщегоСвойства", Истина); + Иначе + ПараметрыФормы.Вставить("ВыборВладельцаДополнительныхЗначений", Истина); + КонецЕсли; + + ПараметрыФормы.Вставить("ВыбранныеЗначения", ВыбранныеЗначения); + ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ЭтоНаборыДополнительныхСведений); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНабор); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ФормаЭлемента", + ПараметрыФормы, Элементы.Свойства); +КонецПроцедуры + +&НаКлиенте +Процедура Изменить(Команда = Неопределено) + + Если Элементы.Свойства.ТекущиеДанные <> Неопределено Тогда + // Открытие формы свойства. + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ключ", Элементы.Свойства.ТекущиеДанные.Свойство); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНабор); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", + ПараметрыФормы, Элементы.Свойства); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Скопировать(Команда = Неопределено, ВставкаИзБуфера = Ложь) + + ПараметрыФормы = Новый Структура; + ЗначениеКопирования = Элементы.Свойства.ТекущиеДанные.Свойство; + ПараметрыФормы.Вставить("ВладелецДополнительныхЗначений", ЗначениеКопирования); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНабор); + ПараметрыФормы.Вставить("ЗначениеКопирования", ЗначениеКопирования); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", ПараметрыФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРеквизитВНабор(ВладелецДополнительныхЗначений, Набор = Неопределено) + + ПараметрыФормы = Новый Структура; + Если Набор = Неопределено Тогда + ТекущийНаборСвойств = ТекущийНабор; + Иначе + ТекущийНаборСвойств = Набор; + ПараметрыФормы.Вставить("Перетаскивание", Истина); + КонецЕсли; + + ПараметрыФормы.Вставить("КопированиеСВопросом", Истина); + ПараметрыФормы.Вставить("ВладелецДополнительныхЗначений", ВладелецДополнительныхЗначений); + ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ЭтоНаборыДополнительныхСведений); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", ПараметрыФормы, Элементы.Свойства); + +КонецПроцедуры + +&НаКлиенте +Процедура ПометитьНаУдаление(Команда) + + ИзменитьПометкуУдаления(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПереместитьВверх(Команда) + + ВыполнитьКомандуНаСервере("ПереместитьВверх"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПереместитьВниз(Команда) + + ВыполнитьКомандуНаСервере("ПереместитьВниз"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоискИУдалениеДублей(Команда) + МодульПоискИУдалениеДублейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПоискИУдалениеДублейКлиент"); + ИмяФормыПоискИУдалениеДублей = МодульПоискИУдалениеДублейКлиент.ИмяФормыОбработкиПоискИУдалениеДублей(); + ОткрытьФорму(ИмяФормыПоискИУдалениеДублей); +КонецПроцедуры + +&НаКлиенте +Процедура СкопироватьВыделенныйРеквизит(Команда) + КопируемыйРеквизит = Новый Структура; + КопируемыйРеквизит.Вставить("КопируемыйРеквизит", Элементы.Свойства.ТекущиеДанные.Свойство); + КопируемыйРеквизит.Вставить("ОбщиеЗначения", Элементы.Свойства.ТекущиеДанные.ОбщиеЗначения); + КопируемыйРеквизит.Вставить("ВладелецДополнительныхЗначений", Элементы.Свойства.ТекущиеДанные.ВладелецДополнительныхЗначений); + + Элементы.ВставитьРеквизит.Доступность = Не ПоказатьНеиспользуемыеРеквизиты; +КонецПроцедуры + +&НаКлиенте +Процедура ВставитьРеквизит(Команда) + Если КопируемыйРеквизит.ОбщиеЗначения Тогда + ВладелецДополнительныхЗначений = КопируемыйРеквизит.ВладелецДополнительныхЗначений; + Иначе + ВладелецДополнительныхЗначений = КопируемыйРеквизит.КопируемыйРеквизит; + КонецЕсли; + + ДобавитьРеквизитВНабор(ВладелецДополнительныхЗначений); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОформитьНаборыИСвойства() + + // Оформление корня списка наборов. + ЭлементУсловногоОформления = НаборыСвойств.УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Text"); + ЭлементЦветаОформления.Значение = НСтр("ru = 'Наборы'"); + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("Представление"); + ЭлементОформляемогоПоля.Использование = Истина; + + // Оформление недоступных групп наборов, которые безусловно отображаются платформой, как часть дерева групп. + ЭлементУсловногоОформления = НаборыСвойств.УсловноеОформление.Элементы.Добавить(); + + ЭлементВидимость = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Видимость"); + ЭлементВидимость.Значение = Ложь; + ЭлементВидимость.Использование = Истина; + + ГруппаЭлементовОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаЭлементовОтбораДанных.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + ГруппаЭлементовОтбораДанных.Использование = Истина; + + ЭлементОтбораДанных = ГруппаЭлементовОтбораДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке; + ЭлементОтбораДанных.ПравоеЗначение = ДоступныеНаборыСписок; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОтбораДанных = ГруппаЭлементовОтбораДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке; + ЭлементОтбораДанных.ПравоеЗначение = ДоступныеНаборыСписок; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОтбораДанных = ГруппаЭлементовОтбораДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("Представление"); + ЭлементОформляемогоПоля.Использование = Истина; + + // Оформление свойств, обязательных для заполнения. + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Font"); + ЭлементЦветаОформления.Значение = ШрифтыСтиля.ОсновнойЭлементСписка; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Свойства.ЗаполнятьОбязательно"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("СвойстваЗаголовок"); + ЭлементОформляемогоПоля.Использование = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьУказанныеСтроки(Описание) + + Если Описание.Свойство("Набор") Тогда + + Если ТипЗнч(Описание.Набор) = Тип("Строка") Тогда + ПреобразоватьСтрокиВСсылки(Описание); + КонецЕсли; + + Если Описание.ЭтоДополнительноеСведение <> ЭтоНаборыДополнительныхСведений Тогда + ЭтоНаборыДополнительныхСведений = Описание.ЭтоДополнительноеСведение; + НастроитьОтображениеНаборов(); + КонецЕсли; + + Элементы.НаборыСвойств.ТекущаяСтрока = Описание.Набор; + ТекущийНабор = Неопределено; + ПриИзмененииТекущегоНабора(); + НайденныеСтроки = Свойства.НайтиСтроки(Новый Структура("Свойство", Описание.Свойство)); + Если НайденныеСтроки.Количество() > 0 Тогда + Элементы.Свойства.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор(); + Иначе + Элементы.Свойства.ТекущаяСтрока = Неопределено; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПереключитьСписокНаборов() + + Если Не ПоказатьНеиспользуемыеРеквизиты Тогда + Элементы.СтраницыНаборы.ТекущаяСтраница = Элементы.Основная; + Возврат; + КонецЕсли; + + Элементы.СтраницыНаборы.ТекущаяСтраница = Элементы.Неиспользуемые; + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НеиспользуемыеНаборы, "ЭтоДополнительноеСведение", (ЭтоНаборыДополнительныхСведений = 1), Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НеиспользуемыеНаборы, "ОбщиеДополнительныеСведения", НСтр("ru = 'Неиспользуемые дополнительные сведения'"), Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НеиспользуемыеНаборы, "ОбщиеДополнительныеРеквизиты", НСтр("ru = 'Неиспользуемые дополнительные реквизиты'"), Истина); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ПреобразоватьСтрокиВСсылки(Описание) + + Описание.Вставить("Набор", Справочники.НаборыДополнительныхРеквизитовИСведений.ПолучитьСсылку( + Новый УникальныйИдентификатор(Описание.Набор))); + + Описание.Вставить("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолучитьСсылку( + Новый УникальныйИдентификатор(Описание.Свойство))); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьОтображениеНаборов() + + КомандаСоздать = Команды.Найти("Создать"); + КомандаСкопировать = Команды.Найти("Скопировать"); + КомандаИзменить = Команды.Найти("Изменить"); + КомандаПометитьНаУдаление = Команды.Найти("ПометитьНаУдаление"); + КомандаПереместитьВверх = Команды.Найти("ПереместитьВверх"); + КомандаПереместитьВниз = Команды.Найти("ПереместитьВниз"); + + Если ЭтоНаборыДополнительныхСведений Тогда + Заголовок = НСтр("ru = 'Дополнительные сведения'"); + + КомандаСоздать.Подсказка = НСтр("ru = 'Создать уникальное сведение'"); + КомандаСоздать.Заголовок = НСтр("ru = 'Новое'"); + КомандаСоздать.Подсказка = НСтр("ru = 'Создать уникальное сведение'"); + + КомандаСкопировать.Подсказка = НСтр("ru = 'Создать новое сведение копированием текущего'"); + КомандаИзменить.Подсказка = НСтр("ru = 'Изменить (или открыть) текущее сведение'"); + КомандаПометитьНаУдаление.Подсказка = НСтр("ru = 'Пометить текущее сведение на удаление (Del)'"); + КомандаПереместитьВверх.Подсказка = НСтр("ru = 'Переместить текущее сведение вверх'"); + КомандаПереместитьВниз.Подсказка = НСтр("ru = 'Переместить текущее сведение вниз'"); + + МетаданныеТабличнаяЧасть = + Метаданные.Справочники.НаборыДополнительныхРеквизитовИСведений.ТабличныеЧасти.ДополнительныеСведения; + + Элементы.СвойстваЗаголовок.Подсказка = МетаданныеТабличнаяЧасть.Реквизиты.Свойство.Подсказка; + + Элементы.СвойстваЗаполнятьОбязательно.Видимость = Ложь; + + Элементы.СвойстваТипЗначения.Подсказка = + НСтр("ru = 'Типы значения, которое можно ввести при заполнении сведения.'"); + + Элементы.СвойстваОбщиеЗначения.Подсказка = + НСтр("ru = 'Сведение использует список значений сведения-образца.'"); + + Элементы.ПоказатьНеиспользуемыеРеквизиты.Заголовок = НСтр("ru = 'Показать неиспользуемые сведения'"); + + Элементы.СвойстваОбщее.Заголовок = НСтр("ru = 'Общее'"); + Элементы.СвойстваОбщее.Подсказка = НСтр("ru = 'Общее дополнительное сведение, которое используется в + |нескольких наборах дополнительных сведений.'"); + Иначе + Заголовок = НСтр("ru = 'Дополнительные реквизиты'"); + КомандаСоздать.Заголовок = НСтр("ru = 'Новый'"); + КомандаСоздать.Подсказка = НСтр("ru = 'Создать уникальный реквизит'"); + + КомандаСкопировать.Подсказка = НСтр("ru = 'Создать новый реквизит копированием текущего'"); + КомандаИзменить.Подсказка = НСтр("ru = 'Изменить (или открыть) текущий реквизит'"); + КомандаПометитьНаУдаление.Подсказка = НСтр("ru = 'Пометить текущий реквизит на удаление (Del)'"); + КомандаПереместитьВверх.Подсказка = НСтр("ru = 'Переместить текущий реквизит вверх'"); + КомандаПереместитьВниз.Подсказка = НСтр("ru = 'Переместить текущий реквизит вниз'"); + + МетаданныеТабличнаяЧасть = + Метаданные.Справочники.НаборыДополнительныхРеквизитовИСведений.ТабличныеЧасти.ДополнительныеРеквизиты; + + Элементы.СвойстваЗаголовок.Подсказка = МетаданныеТабличнаяЧасть.Реквизиты.Свойство.Подсказка; + + Элементы.СвойстваЗаполнятьОбязательно.Видимость = Истина; + Элементы.СвойстваЗаполнятьОбязательно.Подсказка = + Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.Реквизиты.ЗаполнятьОбязательно.Подсказка; + + Элементы.СвойстваТипЗначения.Подсказка = + НСтр("ru = 'Типы значения, которое можно ввести при заполнении реквизита.'"); + + Элементы.СвойстваОбщиеЗначения.Подсказка = + НСтр("ru = 'Реквизит использует список значений реквизита-образца.'"); + + Элементы.ПоказатьНеиспользуемыеРеквизиты.Заголовок = НСтр("ru = 'Показать неиспользуемые реквизиты'"); + + Элементы.СвойстваОбщее.Заголовок = НСтр("ru = 'Общий'"); + Элементы.СвойстваОбщее.Подсказка = НСтр("ru = 'Общий дополнительный реквизит, который используется в + |нескольких наборах дополнительных реквизитов.'"); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Наборы.Ссылка КАК Ссылка + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы + |ГДЕ + | Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)"; + + Наборы = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + ДоступныеНаборы = Новый Массив; + ДоступныеНаборыСписок.Очистить(); + + Для каждого Ссылка Из Наборы Цикл + ВидыСвойствНабора = УправлениеСвойствамиСлужебный.ВидыСвойствНабора(Ссылка, Ложь); + + Если ЭтоНаборыДополнительныхСведений + И ВидыСвойствНабора.ДополнительныеСведения + ИЛИ НЕ ЭтоНаборыДополнительныхСведений + И ВидыСвойствНабора.ДополнительныеРеквизиты Тогда + + ДоступныеНаборы.Добавить(Ссылка); + ДоступныеНаборыСписок.Добавить(Ссылка); + КонецЕсли; + КонецЦикла; + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "ЭтоНаборыДополнительныхСведений", ЭтоНаборыДополнительныхСведений, Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "Наборы", ДоступныеНаборы, Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + + ПриИзмененииТекущегоНабораНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииТекущегоНабора() + + Если ПоказатьНеиспользуемыеРеквизиты Тогда + ТекущийНабор = Неопределено; + ПриИзмененииТекущегоНабораНаСервере(); + ИначеЕсли Элементы.НаборыСвойств.ТекущиеДанные = Неопределено Тогда + Если ЗначениеЗаполнено(ТекущийНабор) Тогда + ТекущийНабор = Неопределено; + ПриИзмененииТекущегоНабораНаСервере(); + КонецЕсли; + + ИначеЕсли Элементы.НаборыСвойств.ТекущиеДанные.Ссылка <> ТекущийНабор Тогда + ТекущийНабор = Элементы.НаборыСвойств.ТекущиеДанные.Ссылка; + ТекущийНаборЭтоГруппа = Элементы.НаборыСвойств.ТекущиеДанные.ЭтоГруппа; + ПриИзмененииТекущегоНабораНаСервере(); + КонецЕсли; + +#Если МобильныйКлиент Тогда + ТекущийЭлемент = Элементы.Свойства; + Если Не ВажностьУстановлена Тогда + Элементы.НаборыСвойств.ВажностьПриОтображении = ВажностьПриОтображении.ОченьНизкая; + ВажностьУстановлена = Истина; + КонецЕсли; + Элементы.Свойства.Заголовок = Строка(ТекущийНабор); +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьПометкуУдаления() + + Если Элементы.Свойства.ТекущиеДанные <> Неопределено Тогда + + Если ЭтоНаборыДополнительныхСведений Тогда + Если Не ПоказатьНеиспользуемыеРеквизиты Тогда + ТекстВопроса = НСтр("ru = 'Исключить сведение из набора?'"); + + ИначеЕсли Элементы.Свойства.ТекущиеДанные.ПометкаУдаления Тогда + ТекстВопроса = НСтр("ru = 'Снять с текущего сведения пометку на удаление?'"); + Иначе + ТекстВопроса = НСтр("ru = 'Пометить текущее сведение на удаление?'"); + КонецЕсли; + Иначе + Если Не ПоказатьНеиспользуемыеРеквизиты Тогда + ТекстВопроса = НСтр("ru = 'Исключить реквизит из набора?'"); + + ИначеЕсли Элементы.Свойства.ТекущиеДанные.ПометкаУдаления Тогда + ТекстВопроса = НСтр("ru = 'Снять с текущего реквизита пометку на удаление?'"); + Иначе + ТекстВопроса = НСтр("ru = 'Пометить текущий реквизит на удаление?'"); + КонецЕсли; + КонецЕсли; + + ПоказатьВопрос( + Новый ОписаниеОповещения("ИзменитьПометкуУдаленияЗавершение", ЭтотОбъект, ТекущийНабор), + ТекстВопроса, РежимДиалогаВопрос.ДаНет); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьПометкуУдаленияЗавершение(Ответ, ТекущийНабор) Экспорт + + Если Ответ <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + ВыполнитьКомандуНаСервере("ИзменитьПометкуУдаления"); + + Оповестить("Запись_НаборыДополнительныхРеквизитовИСведений", + Новый Структура("Ссылка", ТекущийНабор), ТекущийНабор); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененииТекущегоНабораНаСервере() + + Если ЗначениеЗаполнено(ТекущийНабор) + И НЕ ТекущийНаборЭтоГруппа + Или ПоказатьНеиспользуемыеРеквизиты Тогда + + ТекущаяДоступность = Истина; + Если Элементы.Свойства.ЦветФона <> Элементы.НаборыСвойств.ЦветФона Тогда + Элементы.Свойства.ЦветФона = Элементы.НаборыСвойств.ЦветФона; + КонецЕсли; + ОбновитьСписокСвойствТекущегоНабора(ТекущаяДоступность); + Иначе + ТекущаяДоступность = Ложь; + Если Элементы.Свойства.ЦветФона <> ЦветФормы Тогда + Элементы.Свойства.ЦветФона = ЦветФормы; + КонецЕсли; + Свойства.Очистить(); + КонецЕсли; + + Если Элементы.Свойства.ТолькоПросмотр = ТекущаяДоступность Тогда + Элементы.Свойства.ТолькоПросмотр = НЕ ТекущаяДоступность; + КонецЕсли; + + СвойстваУстановитьДоступностьКоманд(ЭтотОбъект); + + Элементы.НаборыСвойств.Обновить(); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура СвойстваУстановитьДоступностьКоманд(Контекст) + + Элементы = Контекст.Элементы; + ПоказатьНеиспользуемыеРеквизиты = Контекст.ПоказатьНеиспользуемыеРеквизиты; + + ОбщаяДоступность = НЕ Элементы.Свойства.ТолькоПросмотр; + ДоступностьВставки = ОбщаяДоступность И (Контекст.КопируемыйРеквизит <> Неопределено); + + ДоступностьДляСтроки = ОбщаяДоступность + И Контекст.Элементы.Свойства.ТекущаяСтрока <> Неопределено; + + ОбщаяДоступность = ОбщаяДоступность И Не ПоказатьНеиспользуемыеРеквизиты; + + // Настройка команд командной панели. + Элементы.ДобавитьИзНабора.Доступность = ОбщаяДоступность; + Элементы.СвойстваСоздать.Доступность = ОбщаяДоступность; + + Элементы.СвойстваСкопировать.Доступность = ДоступностьДляСтроки И Не ПоказатьНеиспользуемыеРеквизиты; + Элементы.СвойстваИзменить.Доступность = ДоступностьДляСтроки; + Элементы.СвойстваПометитьНаУдаление.Доступность = ДоступностьДляСтроки; + + Элементы.СвойстваПереместитьВверх.Доступность = ДоступностьДляСтроки; + Элементы.СвойстваПереместитьВниз.Доступность = ДоступностьДляСтроки; + + Элементы.КопироватьРеквизит.Доступность = ДоступностьДляСтроки; + Элементы.ВставитьРеквизит.Доступность = ДоступностьВставки И Не ПоказатьНеиспользуемыеРеквизиты; + + // Настройка команд контекстного меню. + Элементы.СвойстваКонтекстноеМенюСоздать.Доступность = ОбщаяДоступность; + Элементы.СвойстваКонтекстноеМенюДобавитьИзНабора.Доступность = ОбщаяДоступность; + + Элементы.СвойстваКонтекстноеМенюСкопировать.Доступность = ДоступностьДляСтроки И Не ПоказатьНеиспользуемыеРеквизиты; + Элементы.СвойстваКонтекстноеМенюИзменить.Доступность = ДоступностьДляСтроки; + Элементы.СвойстваКонтекстноеМенюПометитьНаУдаление.Доступность = ДоступностьДляСтроки; + + Элементы.СвойстваКонтекстноеМенюКопироватьРеквизит.Доступность = ДоступностьДляСтроки; + Элементы.СвойстваКонтекстноеМенюВставитьРеквизит.Доступность = ДоступностьВставки И Не ПоказатьНеиспользуемыеРеквизиты; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокСвойствТекущегоНабора(ТекущаяДоступность) + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Набор", ТекущийНабор); + Запрос.УстановитьПараметр("ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык); + Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка); + + Если Не ПоказатьНеиспользуемыеРеквизиты Тогда + Запрос.Текст = + "ВЫБРАТЬ + | СвойстваНаборов.НомерСтроки, + | СвойстваНаборов.Свойство, + | СвойстваНаборов.ПометкаУдаления, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.Заголовок + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) + | КОНЕЦ КАК Заголовок, + | Свойства.ВладелецДополнительныхЗначений, + | Свойства.ЗаполнятьОбязательно, + | Свойства.ТипЗначения КАК ТипЗначения, + | ИСТИНА КАК Общее, + | ВЫБОР + | КОГДА СвойстваНаборов.ПометкаУдаления = ИСТИНА + | ТОГДА 4 + | ИНАЧЕ 3 + | КОНЕЦ КАК НомерКартинки + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНаборов + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + | ПО СвойстваНаборов.Свойство = Свойства.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления + | ПО (СвойстваПредставления.Ссылка = Свойства.Ссылка) + | И СвойстваПредставления.КодЯзыка = &КодЯзыка + |ГДЕ + | СвойстваНаборов.Ссылка = &Набор + | + |УПОРЯДОЧИТЬ ПО + | СвойстваНаборов.НомерСтроки + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | Наборы.ВерсияДанных КАК ВерсияДанных + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы + |ГДЕ + | Наборы.Ссылка = &Набор"; + Иначе + Запрос.Текст = + "ВЫБРАТЬ + | Свойства.Ссылка КАК Свойство, + | Свойства.ПометкаУдаления КАК ПометкаУдаления, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.Заголовок + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) + | КОНЕЦ КАК Заголовок, + | Свойства.ВладелецДополнительныхЗначений, + | Свойства.ТипЗначения КАК ТипЗначения, + | ИСТИНА КАК Общее, + | ВЫБОР + | КОГДА Свойства.ПометкаУдаления = ИСТИНА + | ТОГДА 4 + | ИНАЧЕ 3 + | КОНЕЦ КАК НомерКартинки, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.Подсказка + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150)) + | КОНЕЦ КАК Подсказка, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.ЗаголовокФормыЗначения + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150)) + | КОНЕЦ КАК ЗаголовокФормыЗначения, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.ЗаголовокФормыВыбораЗначения + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150)) + | КОНЕЦ КАК ЗаголовокФормыВыбораЗначения + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления + | ПО Свойства.Ссылка = СвойстваПредставления.Ссылка + | И СвойстваПредставления.КодЯзыка = &КодЯзыка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СоставНабора + | ПО Свойства.Ссылка = СоставНабора.Свойство + | + |ГДЕ + | Свойства.ЭтоДополнительноеСведение = &ЭтоДополнительноеСведение + | И СоставНабора.Свойство ЕСТЬ NULL + | + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ""ВерсияДанных"" КАК ВерсияДанных"; + + Запрос.УстановитьПараметр("ЭтоДополнительноеСведение", (ЭтоНаборыДополнительныхСведений = 1)); + КонецЕсли; + + Если ЭтоНаборыДополнительныхСведений Тогда + Запрос.Текст = СтрЗаменить( + Запрос.Текст, + "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты", + "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения"); + КонецЕсли; + + НачатьТранзакцию(); + Попытка + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если Элементы.Свойства.ТекущаяСтрока = Неопределено Тогда + Строка = Неопределено; + Иначе + Строка = Свойства.НайтиПоИдентификатору(Элементы.Свойства.ТекущаяСтрока); + КонецЕсли; + ТекущееСвойство = ?(Строка = Неопределено, Неопределено, Строка.Свойство); + + Свойства.Очистить(); + + Если РезультатыЗапроса[1].Пустой() Тогда + ТекущаяДоступность = Ложь; + Возврат; + КонецЕсли; + + ТекущийНаборВерсияДанных = РезультатыЗапроса[1].Выгрузить()[0].ВерсияДанных; + + Выборка = РезультатыЗапроса[0].Выбрать(); + Пока Выборка.Следующий() Цикл + + НоваяСтрока = Свойства.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); + + НоваяСтрока.ОбщиеЗначения = ЗначениеЗаполнено(Выборка.ВладелецДополнительныхЗначений); + + Если Выборка.ТипЗначения <> NULL + И УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(Выборка.ТипЗначения) Тогда + + НоваяСтрока.ТипЗначения = Строка(Новый ОписаниеТипов( + Выборка.ТипЗначения, + , + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия, + |СправочникСсылка.ЗначенияСвойствОбъектов")); + + Запрос = Новый Запрос; + Если ЗначениеЗаполнено(Выборка.ВладелецДополнительныхЗначений) Тогда + Запрос.УстановитьПараметр("Владелец", Выборка.ВладелецДополнительныхЗначений); + Иначе + Запрос.УстановитьПараметр("Владелец", Выборка.Свойство); + КонецЕсли; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 4 + | ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектов.Ссылка) КАК Наименование + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов + |ГДЕ + | ЗначенияСвойствОбъектов.Владелец = &Владелец + | И НЕ ЗначенияСвойствОбъектов.ЭтоГруппа + | И НЕ ЗначенияСвойствОбъектов.ПометкаУдаления + | + |ОБЪЕДИНИТЬ + | + |ВЫБРАТЬ ПЕРВЫЕ 4 + | ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектовИерархия.Ссылка) КАК Наименование + |ИЗ + | Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия + |ГДЕ + | ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец + | И НЕ ЗначенияСвойствОбъектовИерархия.ПометкаУдаления + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов + |ГДЕ + | ЗначенияСвойствОбъектов.Владелец = &Владелец + | И НЕ ЗначенияСвойствОбъектов.ЭтоГруппа + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + |ИЗ + | Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия + |ГДЕ + | ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец"; + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + + ПервыеЗначения = РезультатыЗапроса[0].Выгрузить().ВыгрузитьКолонку("Наименование"); + + Если ПервыеЗначения.Количество() = 0 Тогда + Если РезультатыЗапроса[1].Пустой() Тогда + ПредставлениеЗначений = НСтр("ru = 'Значения еще не введены'"); + Иначе + ПредставлениеЗначений = НСтр("ru = 'Значения помечены на удаление'"); + КонецЕсли; + Иначе + ПредставлениеЗначений = ""; + Номер = 0; + Для каждого Значение Из ПервыеЗначения Цикл + Номер = Номер + 1; + Если Номер = 4 Тогда + ПредставлениеЗначений = ПредставлениеЗначений + ",..."; + Прервать; + КонецЕсли; + ПредставлениеЗначений = ПредставлениеЗначений + ?(Номер > 1, ", ", "") + Значение; + КонецЦикла; + КонецЕсли; + ПредставлениеЗначений = "<" + ПредставлениеЗначений + ">"; + Если ЗначениеЗаполнено(НоваяСтрока.ТипЗначения) Тогда + ПредставлениеЗначений = ПредставлениеЗначений + ", "; + КонецЕсли; + НоваяСтрока.ТипЗначения = ПредставлениеЗначений + НоваяСтрока.ТипЗначения; + КонецЕсли; + + Если Выборка.Свойство = ТекущееСвойство Тогда + Элементы.Свойства.ТекущаяСтрока = + Свойства[Свойства.Количество()-1].ПолучитьИдентификатор(); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ДобавитьОбщееСвойствоПеретаскиванием(ДобавляемоеСвойство) + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", НаборПриемник); + + Попытка + ЗаблокироватьДанныеДляРедактирования(НаборПриемник); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + ЗаблокироватьДанныеДляРедактирования(НаборПриемник); + + НаборПриемникОбъект = НаборПриемник.ПолучитьОбъект(); + + ТабличнаяЧасть = НаборПриемникОбъект[?(ЭтоНаборыДополнительныхСведений, + "ДополнительныеСведения", "ДополнительныеРеквизиты")]; + + НайденнаяСтрока = ТабличнаяЧасть.Найти(ДобавляемоеСвойство, "Свойство"); + + Если НайденнаяСтрока = Неопределено Тогда + НоваяСтрока = ТабличнаяЧасть.Добавить(); + НоваяСтрока.Свойство = ДобавляемоеСвойство; + НаборПриемникОбъект.Записать(); + + ИначеЕсли НайденнаяСтрока.ПометкаУдаления Тогда + НайденнаяСтрока.ПометкаУдаления = Ложь; + НаборПриемникОбъект.Записать(); + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + Исключение + РазблокироватьДанныеДляРедактирования(НаборПриемник); + ВызватьИсключение; + КонецПопытки; + + Элементы.НаборыСвойств.Обновить(); + НаборПриемник = Неопределено; + +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(Команда, Параметр = Неопределено) + + Блокировка = Новый БлокировкаДанных; + + Если Команда = "ИзменитьПометкуУдаления" Тогда + ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений"); + ЭлементБлокировки = Блокировка.Добавить("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения"); + ЭлементБлокировки = Блокировка.Добавить("Справочник.ЗначенияСвойствОбъектов"); + ЭлементБлокировки = Блокировка.Добавить("Справочник.ЗначенияСвойствОбъектовИерархия"); + Иначе + ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ТекущийНабор); + КонецЕсли; + + Если ПоказатьНеиспользуемыеРеквизиты Тогда + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + Строка = Свойства.НайтиПоИдентификатору(Элементы.Свойства.ТекущаяСтрока); + ИзменитьПометкуУдаленияИВладельцаЗначений(Строка.Свойство, Неопределено); + ПриИзмененииТекущегоНабораНаСервере(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Возврат; + КонецЕсли; + + Попытка + ЗаблокироватьДанныеДляРедактирования(ТекущийНабор); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + ЗаблокироватьДанныеДляРедактирования(ТекущийНабор); + + ТекущийНаборОбъект = ТекущийНабор.ПолучитьОбъект(); + Если ТекущийНаборОбъект.ВерсияДанных <> ТекущийНаборВерсияДанных Тогда + ПриИзмененииТекущегоНабораНаСервере(); + Если ЭтоНаборыДополнительныхСведений Тогда + ВызватьИсключение + НСтр("ru = 'Действие не выполнено, так как состав дополнительных сведений + |был изменен другим пользователем. + |Новый состав дополнительных сведений прочитан. + | + |Повторите действие, если требуется.'"); + Иначе + ВызватьИсключение + НСтр("ru = 'Действие не выполнено, так как состав дополнительных реквизитов + |был изменен другим пользователем. + |Новый состав дополнительных реквизитов прочитан. + | + |Повторите действие, если требуется.'"); + КонецЕсли; + КонецЕсли; + + ТабличнаяЧасть = ТекущийНаборОбъект[?(ЭтоНаборыДополнительныхСведений, + "ДополнительныеСведения", "ДополнительныеРеквизиты")]; + + Если Команда = "ДобавитьОбщееСвойство" Тогда + НайденнаяСтрока = ТабличнаяЧасть.Найти(Параметр, "Свойство"); + + Если НайденнаяСтрока = Неопределено Тогда + НоваяСтрока = ТабличнаяЧасть.Добавить(); + НоваяСтрока.Свойство = Параметр; + ТекущийНаборОбъект.Записать(); + + ИначеЕсли НайденнаяСтрока.ПометкаУдаления Тогда + НайденнаяСтрока.ПометкаУдаления = Ложь; + ТекущийНаборОбъект.Записать(); + КонецЕсли; + Иначе + Строка = Свойства.НайтиПоИдентификатору(Элементы.Свойства.ТекущаяСтрока); + + Если Строка <> Неопределено Тогда + Индекс = Строка.НомерСтроки-1; + + Если Команда = "ПереместитьВверх" Тогда + ИндексВерхнейСтроки = Свойства.Индекс(Строка)-1; + Если ИндексВерхнейСтроки >= 0 Тогда + Сдвиг = Свойства[ИндексВерхнейСтроки].НомерСтроки - Строка.НомерСтроки; + ТабличнаяЧасть.Сдвинуть(Индекс, Сдвиг); + КонецЕсли; + ТекущийНаборОбъект.Записать(); + + ИначеЕсли Команда = "ПереместитьВниз" Тогда + ИндексНижнейСтроки = Свойства.Индекс(Строка)+1; + Если ИндексНижнейСтроки < Свойства.Количество() Тогда + Сдвиг = Свойства[ИндексНижнейСтроки].НомерСтроки - Строка.НомерСтроки; + ТабличнаяЧасть.Сдвинуть(Индекс, Сдвиг); + КонецЕсли; + ТекущийНаборОбъект.Записать(); + + ИначеЕсли Команда = "ИзменитьПометкуУдаления" Тогда + Строка = Свойства.НайтиПоИдентификатору(Элементы.Свойства.ТекущаяСтрока); + + Если Строка.Общее Тогда + ТабличнаяЧасть.Удалить(Индекс); + ТекущийНаборОбъект.Записать(); + Свойства.Удалить(Строка); + Если ТабличнаяЧасть.Количество() > Индекс Тогда + Элементы.Свойства.ТекущаяСтрока = Свойства[Индекс].ПолучитьИдентификатор(); + ИначеЕсли ТабличнаяЧасть.Количество() > 0 Тогда + Элементы.Свойства.ТекущаяСтрока = Свойства[Свойства.Количество()-1].ПолучитьИдентификатор(); + КонецЕсли; + Иначе + ТабличнаяЧасть[Индекс].ПометкаУдаления = НЕ ТабличнаяЧасть[Индекс].ПометкаУдаления; + ТекущийНаборОбъект.Записать(); + + ИзменитьПометкуУдаленияИВладельцаЗначений( + ТабличнаяЧасть[Индекс].Свойство, + ТабличнаяЧасть[Индекс].ПометкаУдаления); + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + Исключение + РазблокироватьДанныеДляРедактирования(ТекущийНабор); + ВызватьИсключение; + КонецПопытки; + + ПриИзмененииТекущегоНабораНаСервере(); + +КонецПроцедуры + +&НаСервере +Процедура ИзменитьПометкуУдаленияИВладельцаЗначений(ТекущееСвойство, ПометкаУдаленияСвойства) + + СтарыйВладелецЗначений = ТекущееСвойство; + + НоваяПометкаЗначений = Неопределено; + НовыйВладелецЗначений = Неопределено; + + СвойствоОбъект = ТекущееСвойство.ПолучитьОбъект(); + + Если ПометкаУдаленияСвойства = Неопределено Тогда + ПометкаУдаленияСвойства = Не СвойствоОбъект.ПометкаУдаления; + КонецЕсли; + + Если ПометкаУдаленияСвойства Тогда + // При пометке уникального свойства: + // - пометить свойство, + // - если есть созданные по образцу не помеченные на удаление + // тогда установить нового владельца значений, + // и всем свойствам указать новый образец, + // иначе пометить на удаление все значения. + СвойствоОбъект.ПометкаУдаления = Истина; + + Если НЕ ЗначениеЗаполнено(СвойствоОбъект.ВладелецДополнительныхЗначений) Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Свойство", СвойствоОбъект.Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | Свойства.Ссылка, + | Свойства.ПометкаУдаления + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + |ГДЕ + | Свойства.ВладелецДополнительныхЗначений = &Свойство"; + Выгрузка = Запрос.Выполнить().Выгрузить(); + НайденнаяСтрока = Выгрузка.Найти(Ложь, "ПометкаУдаления"); + Если НайденнаяСтрока <> Неопределено Тогда + НовыйВладелецЗначений = НайденнаяСтрока.Ссылка; + СвойствоОбъект.ВладелецДополнительныхЗначений = НовыйВладелецЗначений; + Для каждого Строка Из Выгрузка Цикл + ТекущийОбъект = Строка.Ссылка.ПолучитьОбъект(); + Если ТекущийОбъект.Ссылка = НовыйВладелецЗначений Тогда + ТекущийОбъект.ВладелецДополнительныхЗначений = Неопределено; + Иначе + ТекущийОбъект.ВладелецДополнительныхЗначений = НовыйВладелецЗначений; + КонецЕсли; + ТекущийОбъект.Записать(); + КонецЦикла; + Иначе + НоваяПометкаЗначений = Истина; + КонецЕсли; + КонецЕсли; + СвойствоОбъект.Записать(); + Иначе + Если СвойствоОбъект.ПометкаУдаления Тогда + СвойствоОбъект.ПометкаУдаления = Ложь; + СвойствоОбъект.Записать(); + КонецЕсли; + // При снятии пометки с уникального свойства: + // - снять пометку со свойства, + // - если свойство создано по образцу + // тогда если образец помечен на удаление + // тогда установить нового владельца значений (текущего) + // для всех свойств и снять пометку удаления со значений + // иначе снять пометку удаления со значений. + Если НЕ ЗначениеЗаполнено(СвойствоОбъект.ВладелецДополнительныхЗначений) Тогда + НоваяПометкаЗначений = Ложь; + + ИначеЕсли ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + СвойствоОбъект.ВладелецДополнительныхЗначений, "ПометкаУдаления") Тогда + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Свойство", СвойствоОбъект.ВладелецДополнительныхЗначений); + Запрос.Текст = + "ВЫБРАТЬ + | Свойства.Ссылка КАК Ссылка + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + |ГДЕ + | Свойства.ВладелецДополнительныхЗначений = &Свойство"; + Массив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + Массив.Добавить(СвойствоОбъект.ВладелецДополнительныхЗначений); + НовыйВладелецЗначений = СвойствоОбъект.Ссылка; + Для каждого ТекущаяСсылка Из Массив Цикл + Если ТекущаяСсылка = НовыйВладелецЗначений Тогда + Продолжить; + КонецЕсли; + ТекущийОбъект = ТекущаяСсылка.ПолучитьОбъект(); + ТекущийОбъект.ВладелецДополнительныхЗначений = НовыйВладелецЗначений; + ТекущийОбъект.Записать(); + КонецЦикла; + СтарыйВладелецЗначений = СвойствоОбъект.ВладелецДополнительныхЗначений; + СвойствоОбъект.ВладелецДополнительныхЗначений = Неопределено; + СвойствоОбъект.Записать(); + НоваяПометкаЗначений = Ложь; + КонецЕсли; + КонецЕсли; + + Если НоваяПометкаЗначений = Неопределено + И НовыйВладелецЗначений = Неопределено Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Владелец", СтарыйВладелецЗначений); + Запрос.Текст = + "ВЫБРАТЬ + | ЗначенияСвойствОбъектов.Ссылка КАК Ссылка, + | ЗначенияСвойствОбъектов.ПометкаУдаления КАК ПометкаУдаления + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов + |ГДЕ + | ЗначенияСвойствОбъектов.Владелец = &Владелец + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ЗначенияСвойствОбъектовИерархия.Ссылка, + | ЗначенияСвойствОбъектовИерархия.ПометкаУдаления + |ИЗ + | Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия + |ГДЕ + | ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец"; + + Выгрузка = Запрос.Выполнить().Выгрузить(); + + Если НовыйВладелецЗначений <> Неопределено Тогда + Для каждого Строка Из Выгрузка Цикл + ТекущийОбъект = Строка.Ссылка.ПолучитьОбъект(); + + Если ТекущийОбъект.Владелец <> НовыйВладелецЗначений Тогда + ТекущийОбъект.Владелец = НовыйВладелецЗначений; + КонецЕсли; + + Если ТекущийОбъект.Модифицированность() Тогда + ТекущийОбъект.ОбменДанными.Загрузка = Истина; + ТекущийОбъект.Записать(); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если НоваяПометкаЗначений <> Неопределено Тогда + Для каждого Строка Из Выгрузка Цикл + ТекущийОбъект = Строка.Ссылка.ПолучитьОбъект(); + + Если ТекущийОбъект.ПометкаУдаления <> НоваяПометкаЗначений Тогда + ТекущийОбъект.ПометкаУдаления = НоваяПометкаЗначений; + КонецЕсли; + + Если ТекущийОбъект.Модифицированность() Тогда + ТекущийОбъект.Записать(); + КонецЕсли; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..db6a0e36 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,656 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 96 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Родитель + 94 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 97 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 95 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДополнительныеРеквизиты + 72 + + <key>ru</key> + <value>Дополнительные реквизиты</value> + + true + true + + true + + + Объект.ДополнительныеРеквизиты + + None + + ДополнительныеРеквизитыСвойство + 77 + true + true + + true + + + + Объект.ДополнительныеРеквизиты.Свойство + + + + ДополнительныеРеквизитыСвойствоExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеРеквизитыСвойствоКонтекстноеМеню + 78 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + None + + ДополнительныеРеквизитыКоманднаяПанель + 74 + true + true + + true + + Left + true + + + true + true + + true + + ДополнительныеРеквизитыSearchString + 104 + + ДополнительныеРеквизитыSearchStringExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеРеквизитыSearchStringContextMenu + 105 + true + true + + true + + true + + + true + + + + true + true + + true + + ДополнительныеРеквизитыViewStatus + 107 + + ДополнительныеРеквизитыViewStatusExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеРеквизитыViewStatusContextMenu + 108 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДополнительныеРеквизитыSearchControl + 110 + + ДополнительныеРеквизитыSearchControlExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеРеквизитыSearchControlContextMenu + 111 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДополнительныеРеквизитыExtendedTooltip + 98 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеРеквизитыКонтекстноеМеню + 73 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ + ДополнительныеСведения + 85 + + <key>ru</key> + <value>Дополнительные сведения</value> + + true + true + + true + + + Объект.ДополнительныеСведения + + None + + ДополнительныеСведенияСвойство + 90 + true + true + + true + + + + Объект.ДополнительныеСведения.Свойство + + + + ДополнительныеСведенияСвойствоExtendedTooltip + 102 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеСведенияСвойствоКонтекстноеМеню + 91 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + None + + ДополнительныеСведенияКоманднаяПанель + 87 + true + true + + true + + Left + true + + + true + true + + true + + ДополнительныеСведенияSearchString + 113 + + ДополнительныеСведенияSearchStringExtendedTooltip + 115 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеСведенияSearchStringContextMenu + 114 + true + true + + true + + true + + + true + + + + true + true + + true + + ДополнительныеСведенияViewStatus + 116 + + ДополнительныеСведенияViewStatusExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеСведенияViewStatusContextMenu + 117 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДополнительныеСведенияSearchControl + 119 + + ДополнительныеСведенияSearchControlExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеСведенияSearchControlContextMenu + 120 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДополнительныеСведенияExtendedTooltip + 101 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеСведенияКонтекстноеМеню + 86 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Delete + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + +
true
+ true +
+ + СкрытьДополнительныеРеквизиты + + Boolean + + true + + + СкрытьДополнительныеСведения + + Boolean + + true + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..5f48e7b2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,7 @@ + +

Предназначена для просмотра набора дополнительных реквизитов и сведений.

+

Выводится Наименование набора, указывается группа справочника, которой соответствует данный набор.

+

Включает в себясписки дополнительных реквизитов и сведений, входящих в набор. Списки предназначены только для просмотра, изменить в них ничего невозможно. Для изменения воспользуйтесь командами Дополнительные реквизиты или Дополнительные сведения в разделах Администрирование - Общие настройки.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..e98e648e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,64 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + + ВидыСвойствНабора = УправлениеСвойствамиСлужебный.ВидыСвойствНабора(Объект.Ссылка); + ИспользоватьДопРеквизиты = ВидыСвойствНабора.ДополнительныеРеквизиты; + ИспользоватьДопСведения = ВидыСвойствНабора.ДополнительныеСведения; + + Если ИспользоватьДопРеквизиты И ИспользоватьДопСведения Тогда + Заголовок = Объект.Наименование + " " + НСтр("ru = '(Набор дополнительных реквизитов и сведений)'") + + ИначеЕсли ИспользоватьДопРеквизиты Тогда + Заголовок = Объект.Наименование + " " + НСтр("ru = '(Набор дополнительных реквизитов)'") + + ИначеЕсли ИспользоватьДопСведения Тогда + Заголовок = Объект.Наименование + " " + НСтр("ru = '(Набор дополнительных сведений)'") + КонецЕсли; + + Если НЕ ИспользоватьДопРеквизиты И Объект.ДополнительныеРеквизиты.Количество() = 0 Тогда + Элементы.ДополнительныеРеквизиты.Видимость = Ложь; + КонецЕсли; + + Если НЕ ИспользоватьДопСведения И Объект.ДополнительныеСведения.Количество() = 0 Тогда + Элементы.ДополнительныеСведения.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Help/ru.html" new file mode 100644 index 00000000..6f38bef4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Help/ru.html" @@ -0,0 +1,127 @@ + +

Предназначен для настройки наборов дополнительных свойств.

+

Можно настроить наборы дополнительных свойств для определенных объектов программы. 

+

Способ хранения дополнительного свойства в программе и место размещения в окне объекта программы зависит от типа свойства:

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

Для разных объектов программы может быть предусмотрено использование дополнительных реквизитов и сведений в разных сочетаниях: или дополнительных реквизитов и сведений, или дополнительных реквизитов, или дополнительных сведений.

+

Для того чтобы использовать дополнительные свойства, необходимо включить флажок Дополнительные реквизиты и сведения в разделе Администрирование - Общие настройки. После этого становятся доступными соответствующие команды.

+

Работа с дополнительными реквизитами (сведениями) осуществляется в списках, которые открываются по команде Дополнительные реквизиты или Дополнительные сведения в разделе Администрирование - Общие настройки

+

Список наборов дополнительных реквизитов можно также открыть из объектов программы, для которых они настроены, по команде Еще - Изменить состав дополнительных реквизитов.

+

Список наборов дополнительных сведений можно также открыть по команде Еще - Изменить состав дополнительных сведений из окна Дополнительные сведения объекта программы.

+

Список Дополнительные реквизиты (сведения) представляет собой таблицу из двух частей:

+
  • В левой части располагаются наборы дополнительных реквизитов и сведений, назначенных справочникам или документам, которые показаны в виде групп. Группы в наборах дополнительных реквизитов и сведений соответствуют некоему состоянию объекта (его виду), например, для номенклатуры наборы по имени соответствуют видам номенклатуры. +
  • +
  • В правой части в виде таблицы располагается список дополнительных реквизитов (сведений), входящих в выделенный набор. Жирным шрифтом в списке дополнительных реквизитов отражаются реквизиты, обязательные для заполнения. Для дополнительных сведений такая возможность не предусмотрена. +
  • +
  • В таблице выводится: +
    • Дополнительный реквизит (сведение) - включает перечень наименований дополнительных реквизитов (сведений); +
    • +
    • Тип значения - указывается тип дополнительных реквизитов (сведений) и количество значений.

Предопределенные наборы дополнительных реквизитов и сведений соответствуют объектам программы (спискам или документам), в которых можно использовать дополнительные реквизиты и сведения. Добавление новых наборов в этом списке невозможно. Наборы автоматически создаются при создании групп в списках.

+

Программа позволяет создать набор дополнительных реквизитов и сведений, как для всех элементов справочника, так и для части. В этом случае справочник является группой, а элементами группы являются реквизиты справочника или значения реквизитов справочника (в этом случае количество элементов группы будет равно количеству значений реквизита).

+

Назначение нового дополнительного реквизита (сведения) справочнику или документу

+
  • В зависимости от настройки может быть доступна одна из команд ввода новых реквизитов (сведений): +
    • Выберите соответствующий этому справочнику или документу набор, нажмите Создать. По умолчанию дополнительный реквизит (сведение) может быть добавлен только в один набор. Заполните необходимые поля. +
    • +
    • Выберите соответствующий этому справочнику или документу набор, нажмите Добавить - Новый (Новое) - аналогична команде Создать. С помощью этой команды дополнительный реквизит (сведение) может быть добавлен только в один набор. Заполните необходимые поля.

Общие наборы дополнительных реквизитов и сведений

+
  • Для некоторых справочников предусмотрены предопределенные наборы Общие. Введенные в такой набор дополнительные реквизиты и сведения по умолчанию становятся общими для всех элементов этих справочников. +
  • +
  • +
    Выберите набор Общий.
    +
  • +
  • +
    Нажмите Создать или Добавить - Новый (Новое). Заполните необходимые поля.

Добавление из другого набора

+
  • В программе предусмотрена возможность использовать ранее введенные дополнительные реквизиты и сведения для других наборов. +
  • +
  • Наиболее актуален этот способ для дополнительных реквизитов и сведений типа Дополнительное значение и Дополнительное значение (иерархия). Если проведены соответствующие настройки (включен хотя бы один из флажков в разделе Администрирование - Общие настройки), становится доступной кнопка Добавить. +
  • +
  • Выберите набор дополнительных реквизитов (сведений), нажмите кнопку Добавить, в выпадающем меню выполните команду Из другого набора. +
  • +
  • Открывается помощник по добавлению дополнительного реквизита (сведения). +
    • В левой части первой страницы помощника отображается список ранее введенных реквизитов (сведений). В правой части отражаются значения и другие параметры выбранного реквизита.
  • +
  • На первой странице помощника выберите дополнительный реквизит (сведение). Обратите внимание, что создать дополнительный реквизит или сведение в данном списке невозможно. +
    • Для выбора варианта добавления дополнительного реквизита (сведения) нажмите кнопку Далее. +
    • +
    • Также можно добавить реквизит из одного набора в другой с помощью перетаскивания мышью. Если были произведены соответствующие настройки, открывается вторая страница помощника Добавление дополнительного реквизита (сведения).
  • +
  • На второй странице помощника с помощью переключателя выберите вариант добавления дополнительного реквизита (сведения): +
    • Сделать копию реквизита - в новом наборе будет создан такой же дополнительный реквизит (сведение). +
    • +
    • Сделать копию реквизита по образцу - создается дополнительный реквизит (сведение) с общим списком значений. Должен быть включен флажок Реквизиты и сведения с общим списком значений в разделе Администрирование - Общие настройки. +
    • +
    • Добавить общий реквизит в набор - сделать дополнительный реквизит (сведение) общим. В этом случае общим становится не список значений, а сам реквизит. Должен быть включен флажок Общие реквизиты и сведения в разделе Администрирование - Общие настройки.

Копирование дополнительных реквизитов (сведений)

+
  • В программе предусмотрена возможность копирования дополнительных реквизитов (сведений). +
  • +
  • В этом случае для набора дополнительных реквизитов (сведений) будет создана копия - самостоятельный дополнительный реквизит (сведение) со своим списком значений, никак не связанный с оригиналом, по которому был создан. +
  • +
  • В зависимости от настроек производится несколькими способами: +
    • В помощнике добавления дополнительных реквизитов и сведений; +
      • Выделите набор дополнительных реквизитов в списке, нажмите Добавить - Из другого набора. +
      • +
      • На первой странице помощника в списке выбора реквизитов для копирования выберите нужный реквизит, нажмите Далее. +
      • +
      • На второй странице помощника с помощью переключателя выберите Сделать копию реквизита, нажмите Далее. +
      • +
      • Заполните недостающие поля. После копирования реквизита список значений доступен для редактирования.
    • +
    • перетаскиванием мышью; +
      • Можно перетащить нужный дополнительный реквизит (сведение) из одного набора в другой с помощью мыши. +
      • +
      • Если в списке имеется кнопка Добавить, то открывается вторая страница помощника добавления дополнительного реквизита (сведения). +
      • +
      • Если в списке только кнопка Создать, то открывается карточка дополнительного реквизита (сведения), который будет скопирован. Заполните недостающие поля.
    • +
    • с помощью кнопок Копировать и Вставить. +
      • Выделите дополнительный реквизит (сведение), нажмите кнопку Копировать. Выделите набор, в который нужно добавить дополнительный реквизит (сведение). Нажмите кнопку Вставить. Если были произведены соответствующие настройки, то открывается вторая страница помощника добавления дополнительных реквизитов (сведений). Если выбранный дополнительный реквизит (сведение) уже входит в какой-либо набор, то предлагается сделать его общим. +
      • +
      • Команды Копировать и Вставить также доступны в контекстном меню по правой кнопке мыши или в меню Еще.

Добавление по образцу

+
  • Для того чтобы использовать эту возможность, необходимо включить флажок Реквизиты и сведения с общим списком значений в разделе Администрирование - Общие настройки. +
  • +
  • Можно использовать ранее введенные дополнительные реквизиты и сведения из других наборов, добавлять реквизиты с общим списком значений сразу для нескольких однотипных реквизитов (например, Цвет двери по образцу реквизита Цвет). Список значений в этом случае используется из реквизита-образца. Удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов. +
  • +
  • +
    Выберите набор из списка.
    +
  • +
  • +
    Нажмите Добавить - Из другого набора.
    +
  • +
  • +
    Будет открыт список всех дополнительных реквизитов (сведений), уже существующих в программе. Выберите дополнительный реквизит (сведение) из списка уже существующих в программе, нажмите Далее.
    +
  • +
  • +
    +
    С помощью переключателя выберите способ создания элемента Сделать копию реквизита по образцу, нажмите Далее.
    +
  • +
  • +
    Тип и все значения выбранного в качестве образца дополнительного реквизита (сведения) будут скопированы в новый элемент.
    +
  • +
  • +
    Заполните все необходимые поля. По умолчанию реквизит становится общим с набором, из которого был использован образец. Ввод новых значений в этом случае невозможен. Программа выводит напоминание, что список значений является общим с другим реквизитом.
    +
  • +
  • +
    После сохранения дополнительного реквизита (сведения) с помощью ссылки можно просмотреть реквизит-образец и добавить значения, если необходимо.

Добавление общих дополнительных реквизитов (сведений)

+
  • Общий реквизит входит в несколько наборов. Этот вариант подходит для тех случаев, когда общим должен быть не только список значений, но и сам реквизит. В списках и отчетах по элементам различных справочников и документов общие реквизиты группируются и выводятся как один реквизит в одной колонке или поле. Например, с помощью общего реквизита Цвет можно отобрать всю желтую одежду и обувь. +
  • +
  • Для того чтобы использовать эту возможность, необходимо включить флажок Общие реквизиты и сведения в разделе Администрирование - Общие настройки. +
  • +
  • +
    Для того чтобы добавить в набор общий дополнительный реквизит (сведение), выделите нужный набор, нажмите Добавить - Из другого набора.
    +
  • +
  • +
    Выберите из предлагаемого списка уже существующий общий дополнительный реквизит (сведение).Нажмите кнопку Далее.
    +
  • +
  • Открывается вторая страница помощника. Выберите с помощью переключателя вариант добавления Сделать реквизит общим и добавить в набор, нажмите Далее. Открывается общий дополнительный реквизит. +
  • +
  • +
    Также можно добавить общий дополнительный реквизит (сведение) с помощью перетаскивания мышью или кнопок Копировать и Вставить.
    +
  • +
  • +
    Для того чтобы добавить общий реквизит в несколько наборов, повторите эти действия для каждого набора.

Особенности удаления дополнительных реквизитов (сведений)

+
  • +
    Для того чтобы удалить общий дополнительный реквизит (сведение), необходимо удалить его из всех наборов, в который входил данный реквизит. Возможно, для окончательного удаления придется очистить дополнительные реквизиты от значений.
    +
  • +
  • +
    При пометке на удаление свойства в наборе значения свойства сохраняется в объектах до тех пор, пока не будут очищены. Свойство, помеченное на удаление в наборе, будет отображаться в окне объекта или окне дополнительных сведений особым образом.
    +
  • +
  • +
    При необходимости можно снять пометку удаления.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..2eca2ecd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/ManagerModule.bsl" @@ -0,0 +1,408 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + Поля.Добавить("ИмяПредопределенногоНабора"); + Поля.Добавить("Наименование"); + Поля.Добавить("Ссылка"); + Поля.Добавить("Родитель"); + + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(Данные.Родитель) Тогда +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(Данные.ИмяПредопределенногоНабора) Тогда + ИмяНабора = Данные.ИмяПредопределенногоНабора; + Иначе +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + ИмяНабора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Данные.Ссылка, "ИмяПредопределенныхДанных"); +#Иначе + ИмяНабора = ""; +#КонецЕсли + КонецЕсли; + Представление = ПредставлениеНабораВерхнегоУровня(ИмяНабора, Данные); + + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +// Обновляет состав наименований предопределенных наборов в +// параметрах дополнительных реквизитов и сведений. +// +// Параметры: +// ЕстьИзменения - Булево - (возвращаемое значение) - если производилась запись, +// устанавливается Истина, иначе не изменяется. +// +Процедура ОбновитьСоставНаименованийПредопределенныхНаборов(ЕстьИзменения = Неопределено) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПредопределенныеНаборы = ПредопределенныеНаборыСвойств(); + + НачатьТранзакцию(); + Попытка + ЕстьТекущиеИзменения = Ложь; + СтароеЗначение = Неопределено; + + СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы( + "СтандартныеПодсистемы.Свойства.ПредопределенныеНаборыДополнительныхРеквизитовИСведений", + ПредопределенныеНаборы, ЕстьТекущиеИзменения, СтароеЗначение); + + СтандартныеПодсистемыСервер.ДобавитьИзмененияПараметраРаботыПрограммы( + "СтандартныеПодсистемы.Свойства.ПредопределенныеНаборыДополнительныхРеквизитовИСведений", + ?(ЕстьТекущиеИзменения, + Новый ФиксированнаяСтруктура("ЕстьИзменения", Истина), + Новый ФиксированнаяСтруктура()) ); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если ЕстьТекущиеИзменения Тогда + ЕстьИзменения = Истина; + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработатьНаборыСвойствДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ПредопределенныеНаборыСвойств = УправлениеСвойствамиПовтИсп.ПредопределенныеНаборыСвойств(); + ПроблемныхОбъектов = 0; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Наборы.Ссылка КАК Ссылка, + | Наборы.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + | Наборы.ДополнительныеРеквизиты.( + | Свойство КАК Свойство + | ) КАК ДополнительныеРеквизиты, + | Наборы.ДополнительныеСведения.( + | Свойство КАК Свойство + | ) КАК ДополнительныеСведения, + | Наборы.Родитель КАК Родитель, + | Наборы.ЭтоГруппа КАК ЭтоГруппа + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы + |ГДЕ + | Наборы.Предопределенный = ИСТИНА"; + Результат = Запрос.Выполнить().Выгрузить(); + + Для Каждого ОбновляемыйНабор Из Результат Цикл + + НачатьТранзакцию(); + Попытка + Если Не ЗначениеЗаполнено(ОбновляемыйНабор.ИмяПредопределенныхДанных) Тогда + ОтменитьТранзакцию(); + Продолжить; + КонецЕсли; + Если Не СтрНачинаетсяС(ОбновляемыйНабор.ИмяПредопределенныхДанных, "Удалить") Тогда + ОтменитьТранзакцию(); + Продолжить; + КонецЕсли; + Если ОбновляемыйНабор.ДополнительныеРеквизиты.Количество() = 0 + И ОбновляемыйНабор.ДополнительныеСведения.Количество() = 0 Тогда + ОтменитьТранзакцию(); + Продолжить; + КонецЕсли; + ИмяНабора = Сред(ОбновляемыйНабор.ИмяПредопределенныхДанных, 8, СтрДлина(ОбновляемыйНабор.ИмяПредопределенныхДанных) - 7); + ОписаниеНовогоНабора = ПредопределенныеНаборыСвойств.Получить(ИмяНабора); // см. Справочники.НаборыДополнительныхРеквизитовИСведений.СвойстваНабора + Если ОписаниеНовогоНабора = Неопределено Тогда + ОтменитьТранзакцию(); + Продолжить; + КонецЕсли; + НовыйНабор = ОписаниеНовогоНабора.Ссылка; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", НовыйНабор); + Блокировка.Заблокировать(); + + // Заполнение нового набора. + НовыйНаборОбъект = НовыйНабор.ПолучитьОбъект(); + Если ОбновляемыйНабор.ЭтоГруппа <> НовыйНаборОбъект.ЭтоГруппа Тогда + ОтменитьТранзакцию(); + Продолжить; + КонецЕсли; + Для Каждого СтрокаРеквизит Из ОбновляемыйНабор.ДополнительныеРеквизиты Цикл + НоваяСтрокаРеквизиты = НовыйНаборОбъект.ДополнительныеРеквизиты.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрокаРеквизиты, СтрокаРеквизит); + НоваяСтрокаРеквизиты.ИмяПредопределенногоНабора = НовыйНаборОбъект.ИмяПредопределенногоНабора; + КонецЦикла; + Для Каждого СтрокаСведение Из ОбновляемыйНабор.ДополнительныеСведения Цикл + НоваяСтрокаСведения = НовыйНаборОбъект.ДополнительныеСведения.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрокаСведения, СтрокаСведение); + НоваяСтрокаСведения.ИмяПредопределенногоНабора = НовыйНаборОбъект.ИмяПредопределенногоНабора; + КонецЦикла; + + Если Не ОбновляемыйНабор.ЭтоГруппа Тогда + КоличествоРеквизитов = Формат(НовыйНаборОбъект.ДополнительныеРеквизиты.НайтиСтроки( + Новый Структура("ПометкаУдаления", Ложь)).Количество(), "ЧГ="); + КоличествоСведений = Формат(НовыйНаборОбъект.ДополнительныеСведения.НайтиСтроки( + Новый Структура("ПометкаУдаления", Ложь)).Количество(), "ЧГ="); + + НовыйНаборОбъект.КоличествоРеквизитов = КоличествоРеквизитов; + НовыйНаборОбъект.КоличествоСведений = КоличествоСведений; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(НовыйНаборОбъект); + + // Очистка старого набора. + УстаревшийНаборОбъект = ОбновляемыйНабор.Ссылка.ПолучитьОбъект(); + УстаревшийНаборОбъект.ДополнительныеРеквизиты.Очистить(); + УстаревшийНаборОбъект.ДополнительныеСведения.Очистить(); + УстаревшийНаборОбъект.Используется = Ложь; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(УстаревшийНаборОбъект); + + Если ОбновляемыйНабор.ЭтоГруппа Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Родитель", ОбновляемыйНабор.Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | НаборыДополнительныхРеквизитовИСведений.Ссылка КАК Ссылка + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений КАК НаборыДополнительныхРеквизитовИСведений + |ГДЕ + | НаборыДополнительныхРеквизитовИСведений.Родитель = &Родитель + | И НаборыДополнительныхРеквизитовИСведений.Предопределенный = ЛОЖЬ"; + ПереносимыеНаборы = Запрос.Выполнить().Выгрузить(); + Для Каждого Строка Из ПереносимыеНаборы Цикл + НаборОбъект = Строка.Ссылка.ПолучитьОбъект(); + НаборОбъект.Родитель = НовыйНабор; + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(НаборОбъект); + КонецЦикла; + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать набор свойств: %1 по причине: + |%2'"), + ОбновляемыйНабор.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.Справочники.НаборыДополнительныхРеквизитовИСведений, ОбновляемыйНабор.Ссылка, ТекстСообщения); + КонецПопытки; + + КонецЦикла; + + Если ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = НСтр("ru = 'Процедура ОбработатьНаборыСвойствДляПереходаНаНовуюВерсию завершилась с ошибкой. Не все наборы свойств удалось обновить.'"); + ВызватьИсключение ТекстСообщения; + КонецЕсли; + + Параметры.ОбработкаЗавершена = Истина; + +КонецПроцедуры + + + +#КонецОбласти + +#КонецЕсли + +#Область СлужебныеПроцедурыИФункции + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +Функция ПредопределенныеНаборыСвойств() Экспорт + + ДеревоНаборов = Новый ДеревоЗначений; + ДеревоНаборов.Колонки.Добавить("Имя"); + ДеревоНаборов.Колонки.Добавить("ЭтоГруппа", Новый ОписаниеТипов("Булево")); + ДеревоНаборов.Колонки.Добавить("Используется"); + ДеревоНаборов.Колонки.Добавить("Идентификатор"); + ИнтеграцияПодсистемБСП.ПриПолученииПредопределенныхНаборовСвойств(ДеревоНаборов); + УправлениеСвойствамиПереопределяемый.ПриПолученииПредопределенныхНаборовСвойств(ДеревоНаборов); + + НаименованияНаборовСвойств = УправлениеСвойствамиСлужебный.НаименованияНаборовСвойств(); + Наименования = НаименованияНаборовСвойств[ТекущийЯзык().КодЯзыка]; + + НаборыСвойств = Новый Соответствие; + Для Каждого Набор Из ДеревоНаборов.Строки Цикл + СвойстваНабора = СвойстваНабора(НаборыСвойств, Набор); + Для Каждого ДочернийНабор Из Набор.Строки Цикл + СвойстваДочернегоНабора = СвойстваНабора(НаборыСвойств, ДочернийНабор, СвойстваНабора.Ссылка, Наименования); + СвойстваНабора.ДочерниеНаборы.Вставить(ДочернийНабор.Имя, СвойстваДочернегоНабора); + КонецЦикла; + СвойстваНабора.ДочерниеНаборы = Новый ФиксированноеСоответствие(СвойстваНабора.ДочерниеНаборы); + НаборыСвойств[СвойстваНабора.Имя] = Новый ФиксированнаяСтруктура(НаборыСвойств[СвойстваНабора.Имя]); + НаборыСвойств[СвойстваНабора.Ссылка] = Новый ФиксированнаяСтруктура(НаборыСвойств[СвойстваНабора.Ссылка]); + КонецЦикла; + + Возврат Новый ФиксированноеСоответствие(НаборыСвойств); + +КонецФункции + +// Только для внутреннего использования. +// +// Возвращаемое значение: +// Структура: +// * Имя - Строка +// * ЭтоГруппа - Булево +// * Используется - Булево +// * Ссылка - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений +// * Родитель - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений +// * ДочерниеНаборы - Соответствие из КлючИЗначение: +// ** Ключ - Строка +// ** Значение - см. СвойстваНабора +// * Наименование - Строка +// +Функция СвойстваНабора(НаборыСвойств, Набор, Родитель = Неопределено, Наименования = Неопределено) Экспорт + + ЗаголовокОшибки = + НСтр("ru = 'Ошибка в процедуре ПриСозданииПредопределенныхНаборовСвойств + |общего модуля УправлениеСвойствамиПереопределяемый.'") + + Символы.ПС + + Символы.ПС; + + Если Не ЗначениеЗаполнено(Набор.Имя) Тогда + ВызватьИсключение ЗаголовокОшибки + НСтр("ru = 'Имя набора свойств не заполнено.'"); + КонецЕсли; + + Если НаборыСвойств.Получить(Набор.Имя) <> Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Имя набора свойств ""%1"" уже определено.'"), + Набор.Имя); + КонецЕсли; + + Если Не ЗначениеЗаполнено(Набор.Идентификатор) Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификатор набора свойств ""%1"" не заполнен.'"), + Набор.Имя); + КонецЕсли; + + Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + НаборСсылка = Набор.Идентификатор; + Иначе + НаборСсылка = ПолучитьСсылку(Набор.Идентификатор); + КонецЕсли; + + Если НаборыСвойств.Получить(НаборСсылка) <> Неопределено Тогда + СвойстваНабора = НаборыСвойств.Получить(НаборСсылка); + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификатор ""%1"" набора свойств + |""%2"" уже используется для набора ""%3"".'"), + Набор.Идентификатор, Набор.Имя, СвойстваНабора.Имя); + КонецЕсли; + + СвойстваНабора = Новый Структура; + СвойстваНабора.Вставить("Имя", Набор.Имя); + СвойстваНабора.Вставить("ЭтоГруппа", Набор.ЭтоГруппа); + СвойстваНабора.Вставить("Используется", Набор.Используется); + СвойстваНабора.Вставить("Ссылка", НаборСсылка); + СвойстваНабора.Вставить("Родитель", Родитель); + СвойстваНабора.Вставить("ДочерниеНаборы", ?(Родитель = Неопределено, Новый Соответствие, Неопределено)); + Если Наименования = Неопределено Тогда + СвойстваНабора.Вставить("Наименование", ПредставлениеНабораВерхнегоУровня(Набор.Имя)); + Иначе + СвойстваНабора.Вставить("Наименование", Наименования[Набор.Имя]); + КонецЕсли; + + Если Родитель <> Неопределено Тогда + СвойстваНабора = Новый ФиксированнаяСтруктура(СвойстваНабора); + КонецЕсли; + НаборыСвойств.Вставить(СвойстваНабора.Имя, СвойстваНабора); + НаборыСвойств.Вставить(СвойстваНабора.Ссылка, СвойстваНабора); + + Возврат СвойстваНабора; + +КонецФункции + +#КонецЕсли + +// АПК:361-выкл нет обращения к серверному коду. +Функция ПредставлениеНабораВерхнегоУровня(ИмяПредопределенного, СвойстваНабора = Неопределено) + + Представление = ""; + Позиция = СтрНайти(ИмяПредопределенного, "_"); + ПерваяЧастьИмени = Лев(ИмяПредопределенного, Позиция - 1); + ВтораяЧастьИмени = Прав(ИмяПредопределенного, СтрДлина(ИмяПредопределенного) - Позиция); + + ПолноеИмя = ПерваяЧастьИмени + "." + ВтораяЧастьИмени; + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + Если ОбъектМетаданных = Неопределено Тогда + Возврат Представление; + КонецЕсли; + + Если ЗначениеЗаполнено(ОбъектМетаданных.ПредставлениеСписка) Тогда + Представление = ОбъектМетаданных.ПредставлениеСписка; + ИначеЕсли ЗначениеЗаполнено(ОбъектМетаданных.Синоним) Тогда + Представление = ОбъектМетаданных.Синоним; + ИначеЕсли СвойстваНабора <> Неопределено Тогда + Представление = СвойстваНабора.Наименование; + КонецЕсли; + + Возврат Представление; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..c1ff8194 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/ObjectModule.bsl" @@ -0,0 +1,103 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЭтоГруппа Или Не ЗначениеЗаполнено(Родитель) Тогда + Для Каждого ДополнительныйРеквизит Из ДополнительныеРеквизиты Цикл + Если ДополнительныйРеквизит.ИмяПредопределенногоНабора <> ИмяПредопределенногоНабора Тогда + ДополнительныйРеквизит.ИмяПредопределенногоНабора = ИмяПредопределенногоНабора; + КонецЕсли; + КонецЦикла; + + Для Каждого ДополнительноеСведение Из ДополнительныеСведения Цикл + Если ДополнительноеСведение.ИмяПредопределенногоНабора <> ИмяПредопределенногоНабора Тогда + ДополнительноеСведение.ИмяПредопределенногоНабора = ИмяПредопределенногоНабора; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если Не ЭтоГруппа Тогда + // Удаление дублей и пустых строк. + ВыбранныеСвойства = Новый Соответствие; + УдаляемыеСвойства = Новый Массив; + + // Дополнительные реквизиты. + Для каждого ДополнительныйРеквизит Из ДополнительныеРеквизиты Цикл + + Если ДополнительныйРеквизит.Свойство.Пустая() + ИЛИ ВыбранныеСвойства.Получить(ДополнительныйРеквизит.Свойство) <> Неопределено Тогда + + УдаляемыеСвойства.Добавить(ДополнительныйРеквизит); + Иначе + ВыбранныеСвойства.Вставить(ДополнительныйРеквизит.Свойство, Истина); + КонецЕсли; + КонецЦикла; + + Для каждого УдаляемоеСвойство Из УдаляемыеСвойства Цикл + ДополнительныеРеквизиты.Удалить(УдаляемоеСвойство); + КонецЦикла; + + ВыбранныеСвойства.Очистить(); + УдаляемыеСвойства.Очистить(); + + // Дополнительные сведения. + Для каждого ДополнительноеСведение Из ДополнительныеСведения Цикл + + Если ДополнительноеСведение.Свойство.Пустая() + ИЛИ ВыбранныеСвойства.Получить(ДополнительноеСведение.Свойство) <> Неопределено Тогда + + УдаляемыеСвойства.Добавить(ДополнительноеСведение); + Иначе + ВыбранныеСвойства.Вставить(ДополнительноеСведение.Свойство, Истина); + КонецЕсли; + КонецЦикла; + + Для каждого УдаляемоеСвойство Из УдаляемыеСвойства Цикл + ДополнительныеСведения.Удалить(УдаляемоеСвойство); + КонецЦикла; + + // Вычисление количества свойств не помеченных на удаление. + КоличествоРеквизитов = Формат(ДополнительныеРеквизиты.НайтиСтроки( + Новый Структура("ПометкаУдаления", Ложь)).Количество(), "ЧГ="); + + КоличествоСведений = Формат(ДополнительныеСведения.НайтиСтроки( + Новый Структура("ПометкаУдаления", Ложь)).Количество(), "ЧГ="); + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если НЕ ЭтоГруппа Тогда + // Обновление состава верхней группы для использования при настройке + // состава полей динамического списка и его настройки (отборы, ...). + Если ЗначениеЗаполнено(Родитель) Тогда + УправлениеСвойствамиСлужебный.ПроверитьОбновитьСоставСвойствГруппы(Родитель); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mdo" new file mode 100644 index 00000000..13aef689 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/\320\235\320\260\320\261\320\276\321\200\321\213\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mdo" @@ -0,0 +1,565 @@ + + + + + + + + + + НаборыДополнительныхРеквизитовИСведений + + ru + Наборы дополнительных реквизитов и сведений + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Входит в группу + + + ru + Группа, к которой относится набор. + + true + + Catalog.НаборыДополнительныхРеквизитовИСведений.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование набора свойств + + + + + ShowError + Use + + + + + Use + Code + + + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Набор дополнительных реквизитов и сведений + + true + true + 2 + true + 100 + String + AsDescription + + + УдалитьСправочник_ВнешниеПользователи + Внешние пользователи + + + + + + УдалитьДокумент_Встреча + Встреча + + + + + + УдалитьДокумент_ЗапланированноеВзаимодействие + Запланированное взаимодействие + + + + + + УдалитьСправочник_ПапкиФайлов + Папка + + + + + + УдалитьСправочник_Пользователи + Пользователи + + + + + + УдалитьДокумент_СообщениеSMS + Сообщение SMS + + + + + + УдалитьДокумент_ТелефонныйЗвонок + Телефонный звонок + + + + + + УдалитьСправочник_Файлы + Файл + + + + + + УдалитьДокумент_ЭлектронноеПисьмоВходящее + Электронное письмо входящее + + + + + + УдалитьДокумент_ЭлектронноеПисьмоИсходящее + Электронное письмо исходящее + + + + + + InDialog + BothWays + Catalog.НаборыДополнительныхРеквизитовИСведений.Form.ФормаЭлемента + Catalog.НаборыДополнительныхРеквизитовИСведений.Form.ФормаГруппы + Catalog.НаборыДополнительныхРеквизитовИСведений.Form.ФормаСписка + Catalog.НаборыДополнительныхРеквизитовИСведений.Form.ФормаВыбора + + КоличествоРеквизитов + + ru + Количество реквизитов + + + String + + 5 + + + + ru + Количество реквизитов в наборе не помеченных на удаление. + + + + + Use + Use + + + КоличествоСведений + + ru + Количество сведений + + + String + + 5 + + + + ru + Количество сведений в наборе не помеченных на удаление. + + + + + Use + Use + + + Используется + + ru + Используется + + + Boolean + + + ru + Набор свойств отображается в форме списка + + + + + true + + Use + ForFolderAndItem + Use + + + ИмяПредопределенногоНабора + + ru + Имя предопределенного набора + + + String + + 150 + + + + + + + + ForFolderAndItem + Use + + + + + + + ДополнительныеРеквизиты + + ru + Дополнительные реквизиты + + + Use + LineNumber + + Use + + + + + Свойство + + ru + Дополнительный реквизит + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + ru + Дополнительный реквизит этого набора + + + + DontUse + Use + Use + Index + Use + + + ПометкаУдаления + + ru + Пометка удаления + + + Boolean + + + ru + Устанавливается при исключении дополнительного реквизита из набора, +чтобы можно было вернуть связь с уникальным дополнительным реквизитом. + + + + Use + Use + + + ИмяПредопределенногоНабора + + ru + Имя предопределенного набора + + + String + + 150 + + + + + Use + Use + + ForFolderAndItem + + + + + + + ДополнительныеСведения + + ru + Дополнительные сведения + + + Use + LineNumber + + Use + + + + + Свойство + + ru + Дополнительное сведение + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + ru + Дополнительное сведение этого набора + + + + DontUse + Use + Use + Index + Use + + + ПометкаУдаления + + ru + Пометка удаления + + + Boolean + + + ru + Устанавливается при исключении дополнительного сведения из набора, +чтобы можно было вернуть связь с уникальным дополнительным сведением. + + + + Use + Use + + + ИмяПредопределенногоНабора + + ru + Имя предопределенного набора + + + String + + 150 + + + + + Use + Use + + ForFolderAndItem + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + + Use + Use + + + Наименование + + ru + Наименование + + + String + + 150 + + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + + ДополнительныеРеквизиты + + ru + Дополнительные реквизиты + + NavigationPanelOrdinary + + Auto + + + + ДополнительныеСведения + + ru + Дополнительные сведения + + NavigationPanelOrdinary + + Auto + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..dd0612db --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/ManagerModule.bsl" @@ -0,0 +1,91 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Возвращает ссылку на справочник внешней компоненты по идентификатору и версии. +// +// Параметры: +// Идентификатор - Строка - идентификатор объекта внешнего компонента. +// Версия - Строка - версия компоненты. +// +// Возвращаемое значение: +// СправочникСсылка.ВнешниеКомпоненты - ссылка на контейнер внешней компоненты в информационной базе. +// +Функция НайтиПоИдентификатору(Идентификатор, Версия = Неопределено) Экспорт + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + + Если Не ЗначениеЗаполнено(Версия) Тогда + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ВнешниеКомпоненты.Ссылка КАК Ссылка + |ИЗ + | Справочник.ОбщиеВнешниеКомпоненты КАК ВнешниеКомпоненты + |ГДЕ + | ВнешниеКомпоненты.Идентификатор = &Идентификатор + | + |УПОРЯДОЧИТЬ ПО + | ВнешниеКомпоненты.ДатаВерсии УБЫВ"; + Иначе + Запрос.УстановитьПараметр("Версия", Версия); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ВнешниеКомпоненты.Ссылка КАК Ссылка + |ИЗ + | Справочник.ОбщиеВнешниеКомпоненты КАК ВнешниеКомпоненты + |ГДЕ + | ВнешниеКомпоненты.Идентификатор = &Идентификатор + | И ВнешниеКомпоненты.Версия = &Версия"; + + КонецЕсли; + + Результат = Запрос.Выполнить(); + + Если Результат.Пустой() Тогда + Возврат ПустаяСсылка(); + КонецЕсли; + + Выборка = Результат.Выбрать(); + Выборка.Следующий(); + + Возврат Результат.Выгрузить()[0].Ссылка; + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" new file mode 100644 index 00000000..e956919f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\236\320\261\321\211\320\270\320\265\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" @@ -0,0 +1,406 @@ + + + + + + + + + + ОбщиеВнешниеКомпоненты + + ru + Общие внешние компоненты + + true + Catalog.ОбщиеВнешниеКомпоненты.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + Use + + ru + Общая внешняя компонента + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Идентификатор + + ru + Идентификатор + + + String + + 150 + + + + ru + Внутренний идентификатор объекта внешней компоненты. + + + + ShowError + + + + Index + Use + Use + + + Версия + + ru + Версия + + + String + + 20 + + + + ru + Версия внешней компоненты + + + + ShowError + + + + Use + Use + + + ДатаВерсии + + ru + Дата версии + + + Date + + + + + + Index + Use + Use + + + ХранилищеКомпоненты + + ru + Хранилище компоненты + + + ValueStorage + + + ru + Двоичные данные внешней компоненты, содержит ZIP-архив (служебное поле) + + + + + Use + Use + + + Windows_x86 + + ru + Windows x86 + + + Boolean + + + + + Use + Use + + + Windows_x86_64 + + ru + Windows x86_64 + + + Boolean + + + + + Use + Use + + + Linux_x86 + + ru + Linux x86 + + + Boolean + + + + + Use + Use + + + Linux_x86_64 + + ru + Linux x86_64 + + + Boolean + + + + + Use + Use + + + Windows_x86_Firefox + + ru + Windows x86 Firefox + + + Boolean + + + + + Use + Use + + + Linux_x86_Firefox + + ru + Linux x86 Firefox + + + Boolean + + + + + Use + Use + + + Linux_x86_64_Firefox + + ru + Linux x86_64 Firefox + + + Boolean + + + + + Use + Use + + + Windows_x86_MSIE + + ru + Windows x86 MSIE + + + Boolean + + + + + Use + Use + + + Windows_x86_64_MSIE + + ru + Windows x86_64 MSIE + + + Boolean + + + + + Use + Use + + + Windows_x86_Chrome + + ru + Windows x86 Chrome + + + Boolean + + + + + Use + Use + + + Linux_x86_Chrome + + ru + Linux x86 Chrome + + + Boolean + + + + + Use + Use + + + Linux_x86_64_Chrome + + ru + Linux x86_64 Chrome + + + Boolean + + + + + Use + Use + + + MacOS_x86_64 + + ru + macOS x86_64 + + + Boolean + + + + + Use + Use + + + MacOS_x86_64_Safari + + ru + macOS x86_64 Safari + + + Boolean + + + + + Use + Use + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..918c500a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,474 @@ + + + + <key>ru</key> + <value>Выбор папки</value> + + + ГруппаПользовательскихНастроек + 11 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 13 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Copy + Create + Delete + MoveItem + SetDeletionMark + + СписокНаименование + 4 + true + true + + true + + + + Список.Description + + + true + + СписокНаименованиеРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + + СписокНаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокСсылка + 8 + true + true + + + + Список.Ref + + + + СписокСсылкаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокSearchString + 15 + + СписокSearchStringExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 16 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 18 + + СписокViewStatusExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 19 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 21 + + СписокSearchControlExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 22 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + 7 + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + ExpandTopLevel + true + true + + Список.ИндексКартинки + + + CommonPicture.Папки + + None + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Create + Delete + HierarchicalList + List + MoveItem + SetDeletionMark + Tree + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ + СправочникПапкиФайловПереопределяемый.Ссылка, + СправочникПапкиФайловПереопределяемый.ПометкаУдаления, + СправочникПапкиФайловПереопределяемый.Предопределенный, + СправочникПапкиФайловПереопределяемый.Родитель, + СправочникПапкиФайловПереопределяемый.Код, + СправочникПапкиФайловПереопределяемый.Наименование, + СправочникПапкиФайловПереопределяемый.Описание, + СправочникПапкиФайловПереопределяемый.Ответственный, + СправочникПапкиФайловПереопределяемый.ДатаСоздания, + Выбор + Когда ПометкаУдаления = Истина Тогда 1 + Иначе 0 + Конец как ИндексКартинки +ИЗ + Справочник.ПапкиФайлов КАК СправочникПапкиФайловПереопределяемый + + Catalog.ПапкиФайлов + true + true + true + true + true + +
+ + + + + CommonCommand.НастроитьПрава + + + + CommonCommand.ДополнительныеСведенияКоманднаяПанель + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..3f2f53b3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("ТекущаяПапка") Тогда + Элементы.Список.ТекущаяСтрока = Параметры.ТекущаяПапка; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..c3d75ba3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,473 @@ + + + + ГруппаПользовательскихНастроек + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 13 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 7 + true + true + + true + + + + Список.Description + + + true + + НаименованиеРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 8 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Код + 10 + true + true + + true + + + + Список.Code + + + + КодРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 11 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 24 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 25 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 15 + + СписокСтрокаПоискаРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 16 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 18 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 19 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 21 + + СписокУправлениеПоискомРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 22 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + None + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ПапкиФайлов + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..5e842642 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,779 @@ + + + + ГруппаПояснениеОблачногоСервиса + 45 + + ДекорацияКартинкаОблачногоСервиса + 53 + + <key>ru</key> + <value>Декорация картинка облачного сервиса</value> + + true + true + + true + + + ДекорацияКартинкаОблачногоСервисаРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияКартинкаОблачногоСервисаКонтекстноеМеню + 54 + true + true + + true + + true + + true + true + + + CommonPicture.ПапкаОблачногоСервиса + + + + + ДекорацияПояснение + 50 + + <key>ru</key> + <value>Работа с файлами этой папки ведется в облачном сервисе <link 1>%1</></value> + + true + true + + true + + + ДекорацияПояснениеРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПояснениеКонтекстноеМеню + 51 + true + true + + true + + true + + true + Label + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Пояснение облачного сервиса</value> + + + ГруппаПояснениеОблачногоСервисаРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Center + true + true + Auto + Auto + + + + Код + 2 + true + true + + + + Объект.Code + + + + КодExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 3 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + + Style.BorderColor + + + + + Наименование + 4 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + + Style.BorderColor + + + + + Родитель + 6 + + <key>ru</key> + <value>В папке</value> + + true + true + + true + + + + Объект.Parent + + + + OnChange + РодительПриИзменении + + + РодительExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 40 + true + true + true + true + + Style.BorderColor + + + + + ПолныйПуть + 28 + true + true + + true + + + + ПолныйПуть + + + + ПолныйПутьExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + ПолныйПутьКонтекстноеМеню + 29 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + Описание + 8 + true + true + + true + + + + Объект.Описание + + + + ОписаниеExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + Ответственный + 10 + true + true + + true + + + + Объект.Ответственный + + + + ОтветственныйExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + + ОтветственныйКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 40 + true + true + true + true + + Style.BorderColor + + + + + ДатаСоздания + 12 + true + true + + true + + + + Объект.ДатаСоздания + + + + ДатаСозданияExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + ДатаСозданияКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + РабочийКаталог + 26 + true + true + + true + + + + РабочийКаталог + + + + РабочийКаталогExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + РабочийКаталогКонтекстноеМеню + 27 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + РабочийКаталогВладельцаНачалоВыбора + + + Clearing + РабочийКаталогВладельцаОчистка + + 40 + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаНастроитьСинхронизацию + 43 + true + true + + true + + + ФормаНастроитьСинхронизациюРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НастроитьСинхронизацию + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОбщаяКомандаНастроитьПрава + 41 + true + true + + true + + + Объект.Ref + + + ФормаОбщаяКомандаНастроитьПраваРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + CommonCommand.НастроитьПрава + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПапкиФайлов + + + true + + + true + +
true
+ true +
+ + РабочийКаталог + + <key>ru</key> + <value>Рабочий каталог</value> + + 2 + + String + + + + true + + + true + + + + ПолныйПуть + + <key>ru</key> + <value>Полный путь</value> + + 3 + + String + + + + true + + + true + + + + НастроитьСинхронизацию + + <key>ru</key> + <value>Синхронизация с облаком ...</value> + + 2 + + ru + Настроить синхронизацию + + + true + + + + НастроитьСинхронизацию + + + FunctionalOption.ИспользоватьСинхронизациюФайлов + DontUse + + + + + 0:114c80b3-473b-4d93-a4f9-3a16744a1d34 + + true + + + + CommonCommand.ПрисоединенныеФайлы + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..6b5c583a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,13 @@ + +

Просмотр сведений о папке файлов.

+

Сведения о папке

+
  • Заполните Наименование папки. Поле является обязательным; +
  • Одна папка может входить в другую. При необходимости в поле В папке выберите вышестоящую папку из списка; +
  • Поле Полный путь заполняется программой автоматически; +
  • В поле Описание напишите подробную информацию о папке; +
  • В поле Ответственный выберите из списка пользователя, ответственного за папку файлов; +
  • В поле Дата создания автоматически проставляются дата и время создания папки. +
  • При необходимости  выберите Рабочий каталог для папки файлов. В этом случае после редактирования файлы этой папки будут храниться отдельно, в указанном рабочем каталоге.

Права доступа к папке

+
  • Папкам можно назначать различные права доступа. Для перехода к работе над правами доступа папки нажмите Настроить права.

Быстрый переход к списку файлов

+
  • Нажмите Открыть список папок и файлов, для того чтобы перейти в список Файлы.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..3e99100b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,441 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("Родитель") Тогда + Объект.Родитель = Параметры.Родитель; + КонецЕсли; + + ОбновитьДоступностьКомандПоНастройкеПрав(); + + РабочийКаталог = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Объект.Ссылка); + + Если Объект.Ссылка = ПредопределенноеЗначение("Справочник.ПапкиФайлов.Шаблоны") Тогда + Элементы.Родитель.Видимость = Ложь; + КонецЕсли; + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + + ОбновитьПолныйПуть(); + + ОбновитьПояснениеОблачногоСервиса(); + Элементы.ФормаНастроитьСинхронизацию.Видимость = ПравоДоступа("Редактирование", Метаданные.Справочники.УчетныеЗаписиСинхронизацииФайлов); + Элементы.Ответственный.Видимость = ТипЗнч(Пользователи.АвторизованныйПользователь()) <> Тип("СправочникСсылка.ВнешниеПользователи"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + Если МодульУправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда + ОбновитьЭлементыДополнительныхРеквизитов(); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + + Если ИмяСобытия = "Запись_НастройкиПравОбъектов" Тогда + ОбновитьДоступностьКомандПоНастройкеПрав(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект) + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + РабочийКаталог = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Объект.Ссылка); + + ОбновитьДоступностьКомандПоНастройкеПрав(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура РодительПриИзменении(Элемент) + + ОбновитьПолныйПуть(); + +КонецПроцедуры + +&НаКлиенте +Процедура РабочийКаталогВладельцаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Обработчик = Новый ОписаниеОповещения("РаботыСФайламиПодключеноРабочийКаталогВладельцаНачалоВыбораПродолжение", ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Обработчик); + +КонецПроцедуры + +&НаКлиенте +Процедура РабочийКаталогВладельцаОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + РодительСсылка = Объект.Родитель; + РабочийКаталогРодителя = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(РодительСсылка); + РабочийКаталогПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Объект.Ссылка); + + РабочийКаталогПапкиУнаследованный = РабочийКаталогРодителя + + Объект.Наименование + ПолучитьРазделительПути(); + + Если ПустаяСтрока(РабочийКаталогРодителя) Тогда + + РабочийКаталог = ""; // Новый рабочий каталог папки. + РаботаСФайламиСлужебныйВызовСервера.ОчиститьРабочийКаталог(Объект.Ссылка); + + ИначеЕсли РабочийКаталогПапкиУнаследованный <> РабочийКаталогПапки Тогда + + РабочийКаталог = РабочийКаталогПапкиУнаследованный; // Новый рабочий каталог папки. + РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Объект.Ссылка, РабочийКаталог); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура НастроитьСинхронизацию(Команда) + + НастройкаСинхронизации = ПараметрыНастройкиСинхронизации(Объект.Ссылка); + + Если ЗначениеЗаполнено(НастройкаСинхронизации.УчетнаяЗапись) Тогда + ТипЗначения = Тип("РегистрСведенийКлючЗаписи.НастройкиСинхронизацииФайлов"); + ПараметрыЗаписи = Новый Массив(1); + ПараметрыЗаписи[0] = НастройкаСинхронизации; + + КлючЗаписи = Новый(ТипЗначения, ПараметрыЗаписи); + + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("Ключ", КлючЗаписи); + Иначе + НастройкаСинхронизации.Вставить("ЭтоФайл", Истина); + ПараметрыЗаписи = НастройкаСинхронизации; + КонецЕсли; + + ОткрытьФорму("РегистрСведений.НастройкиСинхронизацииФайлов.Форма.ПростаяФормаЗаписиНастройки", ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +// СтандартныеПодсистемы.Свойства + +&НаКлиенте +Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.Свойства + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура РаботыСФайламиПодключеноРабочийКаталогВладельцаНачалоВыбораПродолжение(Результат, ДополнительныеПараметры) Экспорт + + Если Не РаботаСФайламиСлужебныйКлиент.РасширениеРаботыСФайламиПодключено() Тогда + РаботаСФайламиСлужебныйКлиент.ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами(Неопределено); + Возврат; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + Если Записать()= Ложь Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + ОчиститьСообщения(); + + Режим = РежимДиалогаВыбораФайла.ВыборКаталога; + + ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); + ДиалогОткрытияФайла.Каталог = РабочийКаталог; + ДиалогОткрытияФайла.ПолноеИмяФайла = ""; + Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'"); + ДиалогОткрытияФайла.Фильтр = Фильтр; + ДиалогОткрытияФайла.МножественныйВыбор = Ложь; + ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите папку'"); + Если ДиалогОткрытияФайла.Выбрать() Тогда + + ИмяКаталога = ДиалогОткрытияФайла.Каталог; + ИмяКаталога = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяКаталога); + + // Создать каталог для файлов + Попытка + СоздатьКаталог(ИмяКаталога); + ИмяКаталогаТестовое = ИмяКаталога + "ПроверкаДоступа\"; + СоздатьКаталог(ИмяКаталогаТестовое); + УдалитьФайлы(ИмяКаталогаТестовое); + Исключение + // Нет прав на создание каталога, или такой путь отсутствует. + + ТекстОшибки = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный путь или отсутствуют права на запись в папку ""%1""'"), ИмяКаталога); + + ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "РабочийКаталог"); + Возврат; + КонецПопытки; + + РабочийКаталог = ИмяКаталога; + РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Объект.Ссылка, РабочийКаталог); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьПолныйПуть() + + ПапкаРодитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Родитель"); + + Если ЗначениеЗаполнено(ПапкаРодитель) Тогда + + ПолныйПуть = ""; + Пока ЗначениеЗаполнено(ПапкаРодитель) Цикл + + ПолныйПуть = Строка(ПапкаРодитель) + "\" + ПолныйПуть; + ПапкаРодитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПапкаРодитель, "Родитель"); + Если Не ЗначениеЗаполнено(ПапкаРодитель) Тогда + Прервать; + КонецЕсли; + + КонецЦикла; + + ПолныйПуть = ПолныйПуть + Строка(Объект.Ссылка); + + Если Не ПустаяСтрока(ПолныйПуть) Тогда + ПолныйПуть = """" + ПолныйПуть + """"; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьДоступностьКомандПоНастройкеПрав() + + Если НЕ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") + ИЛИ Элементы.Найти("ФормаОбщаяКомандаНастроитьПрава") = Неопределено Тогда + Возврат; + КонецЕсли; + + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + + Если ЗначениеЗаполнено(Объект.Ссылка) + И НЕ МодульУправлениеДоступом.ЕстьПраво("ИзменениеПапок", Объект.Ссылка) Тогда + + ТолькоПросмотр = Истина; + КонецЕсли; + + УправлениеПравами = ЗначениеЗаполнено(Объект.Ссылка) + И МодульУправлениеДоступом.ЕстьПраво("УправлениеПравами", Объект.Ссылка); + + Если Элементы.ФормаОбщаяКомандаНастроитьПрава.Видимость <> УправлениеПравами Тогда + Элементы.ФормаОбщаяКомандаНастроитьПрава.Видимость = УправлениеПравами; + КонецЕсли; + +КонецПроцедуры + +// СтандартныеПодсистемы.Свойства + +&НаСервере +Процедура ОбновитьЭлементыДополнительныхРеквизитов() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьЗависимостиДополнительныхРеквизитов() + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.Свойства + +&НаСервере +Функция ПараметрыНастройкиСинхронизации(ВладелецФайла) + + ТипВладельцаФайла = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Тип("СправочникСсылка.Файлы")); + + Отбор = Новый Структура( + "ВладелецФайла, ТипВладельцаФайла, УчетнаяЗапись", + ВладелецФайла, + ТипВладельцаФайла, + Справочники.УчетныеЗаписиСинхронизацииФайлов.ПустаяСсылка()); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | НастройкиСинхронизацииФайлов.ВладелецФайла, + | НастройкиСинхронизацииФайлов.ТипВладельцаФайла, + | НастройкиСинхронизацииФайлов.УчетнаяЗапись + |ИЗ + | РегистрСведений.НастройкиСинхронизацииФайлов КАК НастройкиСинхронизацииФайлов + |ГДЕ + | НастройкиСинхронизацииФайлов.ВладелецФайла = &ВладелецФайла + | И НастройкиСинхронизацииФайлов.ТипВладельцаФайла = &ТипВладельцаФайла"; + + Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайла); + Запрос.УстановитьПараметр("ТипВладельцаФайла", ТипВладельцаФайла); + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Отбор.УчетнаяЗапись = ВыборкаДетальныеЗаписи.УчетнаяЗапись; + КонецЦикла; + КонецЕсли; + + Возврат Отбор; + +КонецФункции + +&НаСервере +Процедура ОбновитьПояснениеОблачногоСервиса() + + ВидимостьПояснения = Ложь; + + Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюФайлов") Тогда + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | СтатусыСинхронизацииФайловСОблачнымСервисом.Файл, + | СтатусыСинхронизацииФайловСОблачнымСервисом.Href, + | СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись.Наименование, + | СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись.Сервис КАК Сервис + |ИЗ + | РегистрСведений.СтатусыСинхронизацииФайловСОблачнымСервисом КАК СтатусыСинхронизацииФайловСОблачнымСервисом + |ГДЕ + | СтатусыСинхронизацииФайловСОблачнымСервисом.Файл = &ВладелецФайла"; + + Запрос.УстановитьПараметр("ВладелецФайла", Объект.Ссылка); + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + + АдресПапкиВОблачномСервисе = РаботаСФайламиСлужебныйКлиентСервер.АдресВОблачномСервисе( + ВыборкаДетальныеЗаписи.Сервис, ВыборкаДетальныеЗаписи.Href); + + ВидимостьПояснения = Истина; + + Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункции.ФорматированнаяСтрока( + НСтр("ru = 'Работа с файлами ведется в облачном сервисе %2'"), + Строка(АдресПапкиВОблачномСервисе), Строка(ВыборкаДетальныеЗаписи.УчетнаяЗаписьНаименование)); + + КонецЦикла; + + КонецЕсли; + + Элементы.ГруппаПояснениеОблачногоСервиса.Видимость = ВидимостьПояснения; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..3302aff6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" @@ -0,0 +1,13 @@ + +

Список папок имеет иерархическую структуру, предназначен для выбора файлов и работы с ними.

+

Все файлы хранятся в структуре папок, которую удобно вести, например:

+
  • в соответствии с организационной структурой Вашего предприятия; +
  • по типам файлов (например, "Договоры", "Приказы", "Служебные записки"); +
  • по уровню доступа (например, "Общие", "Конфиденциальные").

В списке имеются предопределенные папки, которые нельзя удалить, например, Шаблоны файлов.

+

Настройка прав доступа к папкам

+
  • Папкам можно назначать различные права доступа (с помощью кнопки Настроить права в списке или карточке папки).

Ввод новой папки

+
  • Ввести новую папку можно в списке Файлы с помощью команды Создать контекстного меню по правой кнопке мыши.

Изменение папки

+
  • Изменить выбранную папку (при наличии прав доступа) можно с помощью соответствующей команды меню Еще.

Выбор папки

+
  • Выделите папку, нажмите Выбрать. Также можно воспользоваться двойным щелчком мыши.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..0e36b3e7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,109 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + РедактируемыеРеквизиты.Добавить("Описание"); + РедактируемыеРеквизиты.Добавить("Ответственный"); + РедактируемыеРеквизиты.Добавить("ДатаСоздания"); + + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(Ссылка) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(Ссылка)"; + + Ограничение.ТекстДляВнешнихПользователей = Ограничение.Текст; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + Если ВидФормы = "ФормаСписка" Тогда + ТекущаяСтрока = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ТекущаяСтрока"); + Если ТипЗнч(ТекущаяСтрока) = Тип("СправочникСсылка.ПапкиФайлов") И Не ТекущаяСтрока.Пустая() Тогда + СтандартнаяОбработка = Ложь; + Параметры.Удалить("ТекущаяСтрока"); + Параметры.Вставить("Папка", ТекущаяСтрока); + ВыбраннаяФорма = "Справочник.Файлы.Форма.Файлы"; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "Шаблоны"; + Элемент.Наименование = НСтр("ru = 'Шаблоны файлов'", ОбщегоНазначения.КодОсновногоЯзыка()); + +КонецПроцедуры + +#КонецОбласти + + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" new file mode 100644 index 00000000..93fbaa23 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" @@ -0,0 +1,186 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ТекущаяПапка = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, + "Наименование, Родитель, ПометкаУдаления"); + + Если Ссылка = ПредопределенноеЗначение("Справочник.ПапкиФайлов.Шаблоны") + И ТекущаяПапка.Родитель <> Справочники.ПапкиФайлов.ПустаяСсылка() Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Запрещено перемещать папку ""%1"".'"), ТекущаяПапка.Наименование); + КонецЕсли; + + Если ЭтоНовый() Или ТекущаяПапка.Родитель <> Родитель Тогда + // Проверка прав на исходную папку. + Если НЕ РаботаСФайламиСлужебный.ЕстьПраво("ИзменениеПапок", ТекущаяПапка.Родитель) Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недостаточно прав для перемещения из папки файлов ""%1"".'"), + Строка(?(ЗначениеЗаполнено(ТекущаяПапка.Родитель), ТекущаяПапка.Родитель, НСтр("ru = 'Папки'")))); + КонецЕсли; + // Проверка права на папку назначения. + Если НЕ РаботаСФайламиСлужебный.ЕстьПраво("ИзменениеПапок", Родитель) Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недостаточно прав для добавления подпапок в папку файлов ""%1"".'"), + Строка(?(ЗначениеЗаполнено(Родитель), Родитель, НСтр("ru = 'Папки'")))); + КонецЕсли; + КонецЕсли; + + Если ПометкаУдаления И ТекущаяПапка.ПометкаУдаления <> Истина Тогда + + // Проверка права "Пометка на удаление". + Если НЕ РаботаСФайламиСлужебный.ЕстьПраво("ИзменениеПапок", Ссылка) Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недостаточно прав для изменения папки файлов ""%1"".'"), + Строка(Ссылка)); + КонецЕсли; + КонецЕсли; + + Если ПометкаУдаления <> ТекущаяПапка.ПометкаУдаления И Не Ссылка.Пустая() Тогда + // Отбираем файлы и пытаемся поставить им пометку удаления. + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Файлы.Ссылка, + | Файлы.Редактирует + |ИЗ + | Справочник.Файлы КАК Файлы + |ГДЕ + | Файлы.ВладелецФайла = &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", Ссылка); + + Результат = Запрос.Выполнить(); + Выборка = Результат.Выбрать(); + Пока Выборка.Следующий() Цикл + Если ЗначениеЗаполнено(Выборка.Редактирует) Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Папку %1 нельзя удалить, т.к. она содержит файл ""%2"", занятый для редактирования.'"), + Строка(Ссылка), + Строка(Выборка.Ссылка)); + КонецЕсли; + + ФайлОбъект = Выборка.Ссылка.ПолучитьОбъект(); + ФайлОбъект.Заблокировать(); + ФайлОбъект.УстановитьПометкуУдаления(ПометкаУдаления); + КонецЦикла; + КонецЕсли; + + ДополнительныеСвойства.Вставить("ПрошлыйЭтоНовый", ЭтоНовый()); + + Если НЕ ЭтоНовый() Тогда + + Если Наименование <> ТекущаяПапка.Наименование Тогда // переименована папка + РабочийКаталогПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Ссылка); + РабочийКаталогРодителяПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(ТекущаяПапка.Родитель); + Если РабочийКаталогРодителяПапки <> "" Тогда + + // Добавляем слэш в конце, если его нет. + РабочийКаталогРодителяПапки = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( + РабочийКаталогРодителяПапки); + + РабочийКаталогПапкиУнаследованныйПрежний = РабочийКаталогРодителяПапки + + ТекущаяПапка.Наименование + ПолучитьРазделительПути(); + + Если РабочийКаталогПапкиУнаследованныйПрежний = РабочийКаталогПапки Тогда + + НовыйРабочийКаталогПапки = РабочийКаталогРодителяПапки + + Наименование + ПолучитьРазделительПути(); + + РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Ссылка, НовыйРабочийКаталогПапки); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если Родитель <> ТекущаяПапка.Родитель Тогда // Перенесли папку в другую папку. + РабочийКаталогПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Ссылка); + РабочийКаталогРодителяПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(ТекущаяПапка.Родитель); + РабочийКаталогНовогоРодителяПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Родитель); + + Если РабочийКаталогРодителяПапки <> "" ИЛИ РабочийКаталогНовогоРодителяПапки <> "" Тогда + + РабочийКаталогПапкиУнаследованныйПрежний = РабочийКаталогРодителяПапки; + + Если РабочийКаталогРодителяПапки <> "" Тогда + РабочийКаталогПапкиУнаследованныйПрежний = РабочийКаталогРодителяПапки + + ТекущаяПапка.Наименование + ПолучитьРазделительПути(); + КонецЕсли; + + // Рабочий каталог автоформируется от родителя. + Если РабочийКаталогПапкиУнаследованныйПрежний = РабочийКаталогПапки Тогда + Если РабочийКаталогНовогоРодителяПапки <> "" Тогда + + НовыйРабочийКаталогПапки = РабочийКаталогНовогоРодителяПапки + + Наименование + ПолучитьРазделительПути(); + + РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Ссылка, НовыйРабочийКаталогПапки); + Иначе + РаботаСФайламиСлужебныйВызовСервера.ОчиститьРабочийКаталог(Ссылка); + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ДополнительныеСвойства.ПрошлыйЭтоНовый Тогда + РабочийКаталогПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Родитель); + Если РабочийКаталогПапки <> "" Тогда + + // Добавляем слэш в конце, если его нет. + РабочийКаталогПапки = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( + РабочийКаталогПапки); + + РабочийКаталогПапки = РабочийКаталогПапки + + Наименование + ПолучитьРазделительПути(); + + РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Ссылка, РабочийКаталогПапки); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) + ДатаСоздания = ТекущаяДатаСеанса(); + Ответственный = Пользователи.АвторизованныйПользователь(); +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + МассивНайденныхНедопустимыхСимволов = ОбщегоНазначенияКлиентСервер.НайтиНедопустимыеСимволыВИмениФайла(Наименование); + Если МассивНайденныхНедопустимыхСимволов.Количество() <> 0 Тогда + Отказ = Истина; + + Текст = НСтр("ru = 'Наименование папки содержит запрещенные символы ( \ / : * ? "" < > | .. )'"); + ОбщегоНазначения.СообщитьПользователю(Текст, ЭтотОбъект, "Наименование"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" new file mode 100644 index 00000000..39bfca30 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\237\320\260\320\277\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" @@ -0,0 +1,369 @@ + + + + + + + + + + ПапкиФайлов + + ru + Папки + + Структура папок для хранения файлов + Catalog.ПапкиФайлов.StandardAttribute.Description + Catalog.ПапкиФайлов.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Папка + + + ru + Вышестоящая папка, включающая эту папку. + + true + + Catalog.ПапкиФайлов.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование папки. + + + + + ShowError + Use + + + + + Use + Code + + ru + Код папки + + + + + Use + + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.ИмяПредопределенногоНабора + + Справочник_ПапкиФайлов + + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты.StandardAttribute.Ref + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты.Attribute.Значение + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.ИмяПредопределенногоНабора + + Справочник_ПапкиФайлов + + InformationRegister.ДополнительныеСведения + InformationRegister.ДополнительныеСведения.Dimension.Объект + InformationRegister.ДополнительныеСведения.Dimension.Свойство + InformationRegister.ДополнительныеСведения.Resource.Значение + + Use + true + + + ru + + + Catalog.ПапкиФайлов.StandardAttribute.Parent + Managed + Use + + ru + Папка + + + ru + Папки файлов + + true + HierarchyOfItems + 2 + true + 11 + 150 + String + Variable + true + true + AsDescription + + + Шаблоны + Шаблоны файлов + + 000000001 + + + + InDialog + Catalog.ПапкиФайлов.Form.ФормаЭлемента + Catalog.ПапкиФайлов.Form.ФормаСписка + Catalog.ПапкиФайлов.Form.ФормаВыбора + + Описание + + ru + Описание + + + String + + + + ru + Описание папки + + true + + + + + + Use + Use + + + Ответственный + + ru + Ответственный + + + CatalogRef.Пользователи + + + ru + Ответственный за папку + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата создания папки + + + + + 0001-01-01T00:00:00 + + Use + Use + + + + + + + ДополнительныеРеквизиты + + ru + Дополнительные реквизиты + + + ru + Дополнительные реквизиты объекта + + + Use + LineNumber + + Use + + + + + Свойство + + ru + Свойство + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + ru + Дополнительный реквизит + + + + DontUse + Use + Use + Use + + + Значение + + ru + Значение + + + Characteristic.ДополнительныеРеквизитыИСведения + + + ru + Значение дополнительного реквизита + + + + + Отбор.Владелец + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + + DontUse + Use + Use + Use + + + ТекстоваяСтрока + + ru + Текстовая строка + + + String + + + + ru + Полный текст строкового дополнительного реквизита + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..64f0da83 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,464 @@ + + + + Владелец + 22 + true + true + + true + + + + Владелец + + + + OnChange + ВладелецПриИзменении + + + ВладелецРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 23 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + ВладелецОчистка + + 27 + true + true + true + true + true + + + + ГруппаПользовательскихНастроек + 11 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 8 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокSearchString + 13 + + СписокSearchStringExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 14 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 16 + + СписокViewStatusExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 17 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 19 + + СписокSearchControlExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 20 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + End + ExpandTopLevel + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + true + + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ПапкиЭлектронныхПисем + true + true + true + true + +
+ + Владелец + + <key>ru</key> + <value>Учетная запись</value> + + 2 + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + true + + + true + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..5b1026de --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,33 @@ + +

Предназначена для выбора папки электронных писем.

+

Открывается по кнопке выбора, например, из окна папки.

+

Шесть папок для каждой учетной записи являются предопределенными и не могут быть удалены и изменены:

+
  • Входящие - в эту папку попадают по умолчанию все входящие письма. +
  • +
  • Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма. +
  • +
  • Нежелательная почта - в данную папку попадают письма, которые почтовый сервер опознал как спам (подробнее см. документацию почтового сервера). +
  • +
  • Отправленные - в эту папку по умолчанию попадают все отправленные письма. +
  • +
  • Удаленные - в эту папку попадают все помеченные к удалению письма. +
  • +
  • Черновики - папка, в которой находятся письма, редактирование которых не завершено.

Правила, по которым письмам назначаются папки, можно установить при помощи Правил обработки электронной почты. К работе с правилами можно перейти из панели навигации Учетной записи электронной почты.

+

В каждую папку письма попадают автоматически при получении или смене статуса, а также при применении правил обработки.

+

Ввод папки

+
  • +
    Помимо предопределенных папок электронной почты можно создавать собственные папки.
    +
  • +
  • +
    Собственные папки можно создать и в предопределенных папках, тогда можно рассортировать имеющуюся в них почту.
    +
  • +
  • +
    Для ввода новой папки нажмите Создать, заполните необходимые поля.

Редактирование папки

+
  • +
    Выполните команду Еще - Изменить, внесите необходимые изменения.

Группировка папок

+
  • +
    Новую папку можно подчинить другой папке во время ввода (редактирования) или с помощью перетаскивания мышью.

Выбор папки

+
  • +
    Выделите нужную папку, нажмите Выбрать.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..9b6f8ec3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,86 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОбработатьПереданныеПараметры(); + + УстановитьПредопределенныеОтборы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВладелецПриИзменении(Элемент) + + ПриИзмененииВладельцаНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВладелецОчистка(Элемент, СтандартнаяОбработка) + + ПриИзмененииВладельцаНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбработатьПереданныеПараметры() + + Если Параметры.Отбор.Свойство("Владелец") + И ЗначениеЗаполнено(Параметры.Отбор.Владелец) Тогда + + Владелец = Параметры.Отбор.Владелец; + Элементы.Владелец.Видимость = Ложь; + + КонецЕсли; + + Если Не ЗначениеЗаполнено(Владелец) Тогда + Владелец = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(); + ПриИзмененииВладельцаНаСервере(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПредопределенныеОтборы() + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "ПометкаУдаления", + Ложь, + ВидСравненияКомпоновкиДанных.Равно, + НСтр("ru = 'Отображение только не помеченных на удаление папок'"), + Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененииВладельцаНаСервере() + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Владелец", + Владелец, + ВидСравненияКомпоновкиДанных.Равно, + НСтр("ru = 'Отбор по владельцу папок'"), + ЗначениеЗаполнено(Владелец), + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..30c45d69 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,393 @@ + + + + ГруппаПользовательскихНастроек + 11 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 8 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокСтрокаПоиска + 13 + + СписокСтрокаПоискаРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 14 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 16 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 17 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 19 + + СписокУправлениеПоискомРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 20 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + MultiRow + Row +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + true + + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + List + Use + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.ПредопределеннаяПапка + +
true
+ + Catalog.ПапкиЭлектронныхПисем + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..1aed81c1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,33 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Отбор.Свойство("Владелец") Тогда + + Если НЕ Взаимодействия.ПользовательЯвляетсяОтветственнымЗаВедениеПапок(Параметры.Отбор.Владелец) Тогда + + ТолькоПросмотр = Истина; + + КонецЕсли; + + Иначе + + Отказ = Истина; + + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Владелец", Справочники.УчетныеЗаписиЭлектроннойПочты.ПустаяСсылка(), + ВидСравненияКомпоновкиДанных.Равно, , Ложь); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..e4a8168b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,303 @@ + + + + ГруппаКодПредопределенная + 7 + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ПредопределеннаяПапка + 8 + + <key>ru</key> + <value>Это предопределенная папка</value> + + true + true + + true + + + + Объект.ПредопределеннаяПапка + + + Right + + ПредопределеннаяПапкаExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ПредопределеннаяПапкаКонтекстноеМеню + 9 + true + true + + true + + true + + CheckBoxField + true + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Код предопределенная</value> + + + ГруппаКодПредопределеннаяExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 5 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПапкиЭлектронныхПисем + + + true + + + true + +
true
+ true +
+ + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..c06f85bc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,23 @@ + +

Описание свойств папки электронных писем.

+

Шесть папок для каждой учетной записи электронной почты являются предопределенными и не могут быть удалены и изменены:

+
  • Входящие - в эту папку попадают по умолчанию все входящие письма. +
  • +
  • Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма. +
  • +
  • Нежелательная почта - в данную папку попадают письма, которые почтовый сервер опознал как спам. +
  • +
  • Отправленные - в эту папку по умолчанию попадают все отправленные письма. +
  • +
  • Удаленные - в эту папку попадают все помеченные к удалению письма. +
  • +
  • Черновики - папка, в которой находятся письма, редактирование которых не завершено.

Правила, по которым письмам назначаются папки, можно установить при помощи Правил обработки электронной почты, к которым можно перейти из панели навигации Учетной записи электронной почты.

+

Ввод папки

+

Помимо предопределенных папок электронной почты можно создавать собственные папки. Собственные папки можно создать и в предопределенных папках, тогда можно рассортировать имеющуюся в них почту.

+
  • +
    При необходимости выберите предопределенную или собственную папку, в которой необходимо создать новую папку.
    +
  • +
  • Введите Наименование папки. +
  • +
  • Если предварительно была выбрана папка, Родительская папка проставляется программой по умолчанию. При необходимости выберите из списка.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..9ae7fd84 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,67 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не ЗначениеЗаполнено(Объект.Владелец) Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + Если Объект.ПредопределеннаяПапка Тогда + ТолькоПросмотр = Истина; + Возврат; + КонецЕсли; + + ЕстьПравоНаВедениеПапок = Взаимодействия.ПользовательЯвляетсяОтветственнымЗаВедениеПапок(Объект.Владелец); + + Если НЕ ЕстьПравоНаВедениеПапок Тогда + Если Объект.Ссылка.Пустая() Тогда + Отказ = Истина; + Иначе + ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_ПапкиЭлектронныхПисем", ПараметрыЗаписи, Объект.Ссылка); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Help/ru.html" new file mode 100644 index 00000000..2fc06478 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/Help/ru.html" @@ -0,0 +1,31 @@ + +

Предназначен для категоризации входящей и исходящей почтовой корреспонденции. Владельцем папок является Учетная запись электронной почты.

+

Открывается по команде Папки электронных писем панели навигации учетной записи электронной почты. Также работать с папками электронной почты можно в списке взаимодействий, выбрав группировку По папкам.

+

Шесть папок для каждой учетной записи являются предопределенными и не могут быть удалены и изменены:

+
  • Входящие - в эту папку попадают по умолчанию все входящие письма. +
  • +
  • Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма. +
  • +
  • Нежелательная почта - в данную папку попадают письма, которые почтовый сервер опознал как спам (подробнее см. документацию почтового сервера). +
  • +
  • Отправленные - в эту папку по умолчанию попадают все отправленные письма. +
  • +
  • Удаленные - в эту папку попадают все помеченные к удалению письма. +
  • +
  • Черновики - папка, в которой находятся письма, редактирование которых не завершено.

Правила, по которым письмам назначаются папки, можно установить при помощи Правил обработки электронной почты. К работе с правилами можно перейти из панели навигации Учетной записи электронной почты.

+

В каждую папку письма попадают автоматически при получении или смене статуса, а также при применении правил обработки.

+

Ввод папки

+
  • +
    Помимо предопределенных папок электронной почты можно создавать собственные папки.
    +
  • +
  • +
    Собственные папки можно создать и в предопределенных папках, тогда можно рассортировать имеющуюся в них почту.
    +
  • +
  • +
    Для ввода новой папки нажмите Создать, заполните необходимые поля.

Редактирование папки

+
  • +
    Выполните команду Еще - Изменить, внесите изменения.

Группировка папок

+
  • +
    Новую папку можно подчинить другой папке во время ввода (редактирования) или с помощью перетаскивания мышью.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/ManagerModule.bsl" new file mode 100644 index 00000000..f79da8c5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/ManagerModule.bsl" @@ -0,0 +1,56 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Код"); + Результат.Добавить("Наименование"); + Результат.Добавить("ПредопределеннаяПапка"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЗначениеРазрешено(Владелец) + | ИЛИ ЗначениеРазрешено(Владелец.ВладелецУчетнойЗаписи, ПустаяСсылка КАК Ложь)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/ObjectModule.bsl" new file mode 100644 index 00000000..291f7bdd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/ObjectModule.bsl" @@ -0,0 +1,65 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Владелец.ПометкаУдаления Тогда + Возврат; + КонецЕсли; + + Если НЕ Взаимодействия.ПользовательЯвляетсяОтветственнымЗаВедениеПапок(Владелец) Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Данная операция доступна только ответственному за ведение папок для данной учетной записи'"), + Ссылка,,,Отказ); + ИначеЕсли ПредопределеннаяПапка И ПометкаУдаления И (НЕ Владелец.ПометкаУдаления) Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Нельзя установить пометку удаления для предопределенной папки'"), + Ссылка,,,Отказ); + ИначеЕсли ПредопределеннаяПапка И (Не Родитель.Пустая()) Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Нельзя переместить предопределенную папку в другую папку'"), + Ссылка,,,Отказ); + КонецЕсли; + + ДополнительныеСвойства.Вставить("Родитель",ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка,"Родитель")); + +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + + ПредопределеннаяПапка = Ложь; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ДополнительныеСвойства.Свойство("Родитель") И Родитель <> ДополнительныеСвойства.Родитель Тогда + Если НЕ ДополнительныеСвойства.Свойство("ОбработаноИзменениеРодителя") Тогда + Взаимодействия.УстановитьРодителяУПапки(Ссылка,Родитель,Истина) + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274.mdo" new file mode 100644 index 00000000..d77b59fa --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274/\320\237\320\260\320\277\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\270\321\201\320\265\320\274.mdo" @@ -0,0 +1,213 @@ + + + + + + + + + + ПапкиЭлектронныхПисем + + ru + Папки электронных писем + + true + Catalog.ПапкиЭлектронныхПисем.StandardAttribute.Description + Catalog.ПапкиЭлектронныхПисем.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + + ru + Учетная запись + + + ru + Учетная запись, к которой принадлежит данная папка + + true + + Catalog.УчетныеЗаписиЭлектроннойПочты.EmptyRef + + ShowError + Use + + + + + Use + Parent + + ru + Родительская папка + + + ru + Папка, в которую входит данная папка + + true + + Catalog.ПапкиЭлектронныхПисем.EmptyRef + + + Отбор.Владелец + Catalog.ПапкиЭлектронныхПисем.StandardAttribute.Owner + + Use + + + + + Use + Description + + ru + Имя папки + + + ShowError + Use + + + + + Use + Code + + ru + Код папки электронных писем + + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Папка электронных писем + + true + HierarchyOfItems + 2 + true + Catalog.УчетныеЗаписиЭлектроннойПочты + 9 + 25 + String + Variable + WithinOwnerSubordination + true + true + AsDescription + InDialog + BothWays + Catalog.ПапкиЭлектронныхПисем.Form.ФормаЭлемента + Catalog.ПапкиЭлектронныхПисем.Form.ФормаСписка + Catalog.ПапкиЭлектронныхПисем.Form.ФормаВыбора + + ПредопределеннаяПапка + + ru + Предопределенная папка + + + Boolean + + + ru + Признак того что папка является предопределенной и не подлежит переименованию или удалению + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + + + ru + + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Commands/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Commands/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/CommandModule.bsl" new file mode 100644 index 00000000..a0d790c4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Commands/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/CommandModule.bsl" @@ -0,0 +1,39 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура; + + Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("ФормаКлиентскогоПриложения") Тогда + + Если ПараметрыВыполненияКоманды.Источник.ИмяФормы = + "Справочник.Пользователи.Форма.ФормаСписка" Тогда + + ПараметрыФормы.Вставить("Отбор", "Пользователи"); + + ИначеЕсли ПараметрыВыполненияКоманды.Источник.ИмяФормы = + "Справочник.ВнешниеПользователи.Форма.ФормаСписка" Тогда + + ПараметрыФормы.Вставить("Отбор", "ВнешниеПользователи"); + КонецЕсли; + КонецЕсли; + + ОткрытьФорму( + "Справочник.Пользователи.Форма.ПользователиИнформационнойБазы", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\320\262\320\276\320\264\320\237\320\260\321\200\320\276\320\273\321\217/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\320\262\320\276\320\264\320\237\320\260\321\200\320\276\320\273\321\217/Form.form" new file mode 100644 index 00000000..ace2b09d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\320\262\320\276\320\264\320\237\320\260\321\200\320\276\320\273\321\217/Form.form" @@ -0,0 +1,228 @@ + + + + ПояснениеПриВходе + 10 + + <key>ru</key> + <value>Для изменения электронной почты, используемой для восстановления пароля, необходимо ввести пароль</value> + + true + true + + true + + + ПояснениеПриВходеРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеПриВходеКонтекстноеМеню + 11 + true + true + + true + + true + + Label + true + + Left + 2 + + + + Пароль + 1 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + + Пароль + + + None + + ПарольРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОК + 8 + true + true + + true + + true + + ФормаОКРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 6 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + true + Vertical + true + true + true + true + true + + Пароль + 1 + + String + + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + Auto + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\320\262\320\276\320\264\320\237\320\260\321\200\320\276\320\273\321\217/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\320\262\320\276\320\264\320\237\320\260\321\200\320\276\320\273\321\217/Module.bsl" new file mode 100644 index 00000000..a3cf3c8b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\320\262\320\276\320\264\320\237\320\260\321\200\320\276\320\273\321\217/Module.bsl" @@ -0,0 +1,27 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Заголовок = НСтр("ru='Введите текущий пароль'"); + АвтоЗаголовок = Ложь; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + Закрыть(Пароль); +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Form.form" new file mode 100644 index 00000000..7a019d65 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Form.form" @@ -0,0 +1,1140 @@ + + + + ДоменыИПользователи + 2 + + ГруппаДомены + 51 + + ТаблицаДоменов + 5 + true + true + + true + + + СписокДоменов + + false + None + Add + Change + Copy + CopyToClipboard + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + Домены + 11 + + <key>ru</key> + <value>Домены</value> + + true + true + + true + + + + СписокДоменов.ИмяДомена + + + + ДоменыExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + ДоменыКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + Style.BorderColor + + + + + ТаблицаДоменовКоманднаяПанель + 7 + + ТаблицаДоменовНайти + 41 + true + true + + true + + + ТаблицаДоменовНайтиРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаДоменов.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ТаблицаДоменовОтменитьПоиск + 43 + true + true + + true + + + ТаблицаДоменовОтменитьПоискРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаДоменов.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnActivateRow + ТаблицаДоменовПриАктивизацииСтроки + + + true + true + + true + + ТаблицаДоменовSearchString + 53 + + ТаблицаДоменовSearchStringExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаДоменовSearchStringContextMenu + 54 + true + true + + true + + true + + + true + + + + true + true + + true + + ТаблицаДоменовViewStatus + 56 + + ТаблицаДоменовViewStatusExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаДоменовViewStatusContextMenu + 57 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ТаблицаДоменовSearchControl + 59 + + ТаблицаДоменовSearchControlExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаДоменовSearchControlContextMenu + 60 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТаблицаДоменовExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаДоменовКонтекстноеМеню + 6 + + ТаблицаДоменовКонтекстноеМенюНайти + 17 + true + true + + true + + + ТаблицаДоменовКонтекстноеМенюНайтиExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаДоменов.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ТаблицаДоменовКонтекстноеМенюОтменитьПоиск + 18 + true + true + + true + + + ТаблицаДоменовКонтекстноеМенюОтменитьПоискExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаДоменов.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ТаблицаДоменовКонтекстноеМенюВывестиСписок + 21 + true + true + + true + + + ТаблицаДоменовКонтекстноеМенюВывестиСписокExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаДоменов.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + 40 + true + true + 4 + true + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Домены:</value> + + + ГруппаДоменыРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + + ГруппаПользователи + 49 + + ТаблицаПользователейДомена + 8 + true + true + + true + + + СписокПользователейТекущегоДомена + + false + None + Add + Change + Copy + CopyToClipboard + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + Пользователи + 13 + + <key>ru</key> + <value>Пользователи</value> + + true + true + + true + + + + СписокПользователейТекущегоДомена.ИмяПользователя + + + + ПользователиExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + ПользователиКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + Style.BorderColor + + + + + ТаблицаПользователейДоменаКоманднаяПанель + 10 + + ТаблицаПользователейДоменаНайти + 45 + true + true + + true + + + ТаблицаПользователейДоменаНайтиРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаПользователейДомена.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ТаблицаПользователейДоменаОтменитьПоиск + 47 + true + true + + true + + + ТаблицаПользователейДоменаОтменитьПоискРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаПользователейДомена.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + Selection + ТаблицаПользователейДоменаВыбор + + + true + true + + true + + ТаблицаПользователейДоменаSearchString + 62 + + ТаблицаПользователейДоменаSearchStringExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаПользователейДоменаSearchStringContextMenu + 63 + true + true + + true + + true + + + true + + + + true + true + + true + + ТаблицаПользователейДоменаViewStatus + 65 + + ТаблицаПользователейДоменаViewStatusExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаПользователейДоменаViewStatusContextMenu + 66 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ТаблицаПользователейДоменаSearchControl + 68 + + ТаблицаПользователейДоменаSearchControlExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаПользователейДоменаSearchControlContextMenu + 69 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТаблицаПользователейДоменаExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаПользователейДоменаКонтекстноеМеню + 9 + + ТаблицаПользователейДоменаКонтекстноеМенюВыбрать + 27 + true + true + + true + + + ТаблицаПользователейДоменаКонтекстноеМенюВыбратьExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + UserCmds + Auto + + + ТаблицаПользователейДоменаКонтекстноеМенюНайти + 22 + true + true + + true + + + ТаблицаПользователейДоменаКонтекстноеМенюНайтиExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаПользователейДомена.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ТаблицаПользователейДоменаКонтекстноеМенюОтменитьПоиск + 23 + true + true + + true + + + ТаблицаПользователейДоменаКонтекстноеМенюОтменитьПоискExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаПользователейДомена.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ТаблицаПользователейДоменаКонтекстноеМенюВывестиСписок + 26 + true + true + + true + + + ТаблицаПользователейДоменаКонтекстноеМенюВывестиСписокExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаПользователейДомена.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + 40 + true + true + 4 + true + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Пользователи:</value> + + + ГруппаПользователиРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + ДоменыИПользователиExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + Выбрать + 16 + true + true + + true + + false + + ВыбратьExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + Auto + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + Abort + Cancel + Close + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + 80 + 20 + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + СписокДоменов + + <key>ru</key> + <value>Список доменов</value> + + 1 + + ValueTable + + + true + + + true + + + ИмяДомена + + <key>ru</key> + <value>Имя домена</value> + + 1 + + String + + + + true + + + true + + + + + СписокПользователейТекущегоДомена + + <key>ru</key> + <value>Список пользователей текущего домена</value> + + 3 + + ValueTable + + + true + + + true + + + ИмяПользователя + + <key>ru</key> + <value>Имя пользователя</value> + + 1 + + String + + + + true + + + true + + + + + ТаблицаДоменовИПользователей + 2 + + + true + + + true + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать пользователя операционной системы + + + true + + + StdPicture.ChooseValue + + + + Выбрать + + + TextPicture + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Help/ru.html" new file mode 100644 index 00000000..3dc14a4f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Help/ru.html" @@ -0,0 +1,14 @@ + +

Предназначен для выбора имени пользователя, зарегистрированного в операционной системе, при регистрации в программе.

+

Эта возможность позволяет пользователю входить в программу с регистрацией ОС.

+

Список состоит из двух частей:

+
  • +
    В списке Домены отображаются имена доменов, видимых с данного компьютера.
    +
  • +
    В списке Пользователи отображаются имена пользователей, зарегистрированных в выбранном домене.

Выбор пользователя

+
  • +
    Выберите домен;
    +
  • +
    Выберите одного из пользователя в этом домене, нажмите Выбрать. Также можно дважды щелкнуть по нужному пользователю левой кнопкой мыши.

См. также:

+

 

\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Module.bsl" new file mode 100644 index 00000000..e42522b4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\222\321\213\320\261\320\276\321\200\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Module.bsl" @@ -0,0 +1,114 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + +#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда + ТаблицаДоменовИПользователей = ПользователиОС(); +#ИначеЕсли ТонкийКлиент Тогда + ТаблицаДоменовИПользователей = Новый ФиксированныйМассив (ПользователиОС()); +#КонецЕсли + + ЗаполнитьСписокДоменов(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДоменов + +&НаКлиенте +Процедура ТаблицаДоменовПриАктивизацииСтроки(Элемент) + + СписокПользователейТекущегоДомена.Очистить(); + + Если Элемент.ТекущиеДанные <> Неопределено Тогда + ИмяДомена = Элемент.ТекущиеДанные.ИмяДомена; + + Для Каждого Запись Из ТаблицаДоменовИПользователей Цикл + Если Запись.ИмяДомена = ИмяДомена Тогда + + Для Каждого Пользователь Из Запись.Пользователи Цикл + ПользовательДомена = СписокПользователейТекущегоДомена.Добавить(); + ПользовательДомена.ИмяПользователя = Пользователь; + КонецЦикла; + Прервать; + + КонецЕсли; + КонецЦикла; + + СписокПользователейТекущегоДомена.Сортировать("ИмяПользователя"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаПользователей + +&НаКлиенте +Процедура ТаблицаПользователейДоменаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СкомпоноватьРезультатИЗакрытьФорму(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + + Если Элементы.ТаблицаДоменов.ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите домен.'")); + Возврат; + КонецЕсли; + + Если Элементы.ТаблицаПользователейДомена.ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите пользователя домена.'")); + Возврат; + КонецЕсли; + + СкомпоноватьРезультатИЗакрытьФорму(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ЗаполнитьСписокДоменов() + + СписокДоменов.Очистить(); + + Для Каждого Запись Из ТаблицаДоменовИПользователей Цикл + Домен = СписокДоменов.Добавить(); + Домен.ИмяДомена = Запись.ИмяДомена; + КонецЦикла; + + СписокДоменов.Сортировать("ИмяДомена"); + +КонецПроцедуры + +&НаКлиенте +Процедура СкомпоноватьРезультатИЗакрытьФорму() + + ИмяДомена = Элементы.ТаблицаДоменов.ТекущиеДанные.ИмяДомена; + ИмяПользователя = Элементы.ТаблицаПользователейДомена.ТекущиеДанные.ИмяПользователя; + + РезультатВыбора = "\\" + ИмяДомена + "\" + ИмяПользователя; + ОповеститьОВыборе(РезультатВыбора); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Form.form" new file mode 100644 index 00000000..a2d66ae0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Form.form" @@ -0,0 +1,677 @@ + + + + Отступ + 53 + + ВидСрокаНеУказан + 1 + true + true + + true + + + + ВидСрока + + + None + + OnChange + ВидСрокаПриИзменении + + + ВидСрокаНеУказанРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ВидСрокаНеУказанКонтекстноеМеню + 2 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Согласно общим настройкам входа + + + НеУказан + + + + + + ВидСрокаНеОграничен + 29 + true + true + + true + + + + ВидСрока + + + None + + OnChange + ВидСрокаПриИзменении + + + ВидСрокаНеОграниченРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + ВидСрокаНеОграниченКонтекстноеМеню + 30 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Без ограничения срока + + + НеОграничен + + + + + + ГруппаВидСрокаДоДаты + 32 + + ВидСрокаДоДаты + 26 + true + true + + true + + + + ВидСрока + + + None + + OnChange + ВидСрокаПриИзменении + + + ВидСрокаДоДатыРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + ВидСрокаДоДатыКонтекстноеМеню + 27 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Вход разрешен до: + + + ДоДаты + + + + + + Срок + 36 + true + true + + true + + + + Срок + + + None + + СрокРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + + СрокКонтекстноеМеню + 37 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Вид срока до даты</value> + + + ГруппаВидСрокаДоДатыРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаВидСрокаДоПросрочки + 34 + + ВидСрокаПросрочка + 23 + true + true + + true + + + + ВидСрока + + + None + + OnChange + ВидСрокаПриИзменении + + + ВидСрокаПросрочкаРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + ВидСрокаПросрочкаКонтекстноеМеню + 24 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Запретить вход, если не работает более: + + + Просрочка + + + + + + Просрочка + 39 + true + true + + true + + + + Просрочка + + + None + + ПросрочкаРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + + ПросрочкаКонтекстноеМеню + 40 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + 1 + + + + + НадписьПросрочка + 42 + + <key>ru</key> + <value>дн.</value> + + true + true + + true + + + НадписьПросрочкаРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + НадписьПросрочкаКонтекстноеМеню + 43 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Вид срока до просрочки</value> + + + ГруппаВидСрокаДоПросрочкиРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Отступ</value> + + + ОтступРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОК + 49 + true + true + + true + + + ФормаОКРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 51 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + ВидСрока + + <key>ru</key> + <value>Вид срока</value> + + 1 + + String + + + + true + + + true + + + + Срок + + <key>ru</key> + <value>Срок</value> + + 2 + + Date + + Date + + + + true + + + true + + + + Просрочка + + <key>ru</key> + <value>Просрочка</value> + + 3 + + Number + + 3 + true + + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + true + + + + ОК + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Help/ru.html" new file mode 100644 index 00000000..da82803a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Help/ru.html" @@ -0,0 +1,12 @@ + +

Предназначена для установки ограничение на вход в программу только для этого пользователя.

+

С помощью переключателя можно установить ограничение:

+
  • Согласно общим настройкам входа - как указано для всех пользователей в настройке Запрещать вход в программу пользователям, которые не работали в программе более: [k] дней; +
  • +
  • Без ограничения срока - бессрочный доступ, только для этого пользователя; +
  • +
  • Вход разрешен до (установите срок - введите дату вручную или выберите из календаря с помощью кнопки , удобно, если работник временно пользуется данной программой. Для защиты от несанкционированного доступа к программе у любого пользователя может быть настроен срок действия, который позволяет автоматически отключить пользователя после достижения указанной даты; +
  • +
  • +
    Запретить вход, если не работает более (укажите количество дней) - если пользователь не войдет в программу больше указанного количества дней, то вход в программу будет невозможен. 
    +
    • В этом случае пользователь должен будет обратиться к администратору для возобновления работы в программе, также удобно для временных работников.
Ограничение отражается в карточке пользователя, после настройки ссылка принимает значение Изменить ограничение. \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Module.bsl" new file mode 100644 index 00000000..6e838e9c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\236\320\263\321\200\320\260\320\275\320\270\321\207\320\265\320\275\320\270\320\265\320\235\320\260\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203/Module.bsl" @@ -0,0 +1,124 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.Срок.Подсказка + = Метаданные.РегистрыСведений.СведенияОПользователях.Ресурсы.СрокДействия.Подсказка; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ТипЗнч(ВладелецФормы) <> Тип("ФормаКлиентскогоПриложения") Тогда + Возврат; + КонецЕсли; + + Просрочка = ВладелецФормы.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода; + Срок = ВладелецФормы.СрокДействия; + + Если ВладелецФормы.СрокДействияНеОграничен Тогда + ВидСрока = "НеОграничен"; + ТекущийЭлемент = Элементы.ВидСрокаНеОграничен; + + ИначеЕсли ЗначениеЗаполнено(Срок) Тогда + ВидСрока = "ДоДаты"; + ТекущийЭлемент = Элементы.ВидСрокаДоДаты; + + ИначеЕсли ЗначениеЗаполнено(Просрочка) Тогда + ВидСрока = "Просрочка"; + ТекущийЭлемент = Элементы.ВидСрокаПросрочка; + Иначе + ВидСрока = "НеУказан"; + ТекущийЭлемент = Элементы.ВидСрокаНеУказан; + КонецЕсли; + + ОбновитьДоступность(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВидСрокаПриИзменении(Элемент) + + ОбновитьДоступность(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + ОчиститьСообщения(); + + Если ВидСрока = "ДоДаты" Тогда + Если Не ЗначениеЗаполнено(Срок) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Дата не указана.'"),, "Срок"); + Возврат; + + ИначеЕсли Срок <= НачалоДня(ОбщегоНазначенияКлиент.ДатаСеанса()) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Ограничение должно быть до завтра или более.'"),, "Срок"); + Возврат; + КонецЕсли; + КонецЕсли; + + ВладелецФормы.Модифицированность = Истина; + ВладелецФормы.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода = Просрочка; + ВладелецФормы.СрокДействия = Срок; + ВладелецФормы.СрокДействияНеОграничен = (ВидСрока = "НеОграничен"); + + Элементы.ФормаОК.Доступность = Ложь; + ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбновитьДоступность() + + Если ВидСрока = "ДоДаты" Тогда + Элементы.Срок.АвтоОтметкаНезаполненного = Истина; + Элементы.Срок.Доступность = Истина; + Иначе + Элементы.Срок.АвтоОтметкаНезаполненного = Ложь; + Срок = Неопределено; + Элементы.Срок.Доступность = Ложь; + КонецЕсли; + + Если ВидСрока <> "Просрочка" Тогда + Просрочка = 0; + ИначеЕсли Просрочка = 0 Тогда + Просрочка = 60; + КонецЕсли; + Элементы.Просрочка.Доступность = ВидСрока = "Просрочка"; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму() + + Закрыть(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Form.form" new file mode 100644 index 00000000..e8c445b4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Form.form" @@ -0,0 +1,1672 @@ + + + + ПоказатьТолькоОбработанныеВКонфигураторе + 91 + true + true + + true + + + + ПоказатьТолькоОбработанныеВКонфигураторе + + + Right + + OnChange + ПоказатьТолькоОбработанныеВКонфигуратореПриИзменении + + + ПоказатьТолькоОбработанныеВКонфигуратореРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + + ПоказатьТолькоОбработанныеВКонфигуратореКонтекстноеМеню + 92 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + КоманднаяПанель + 49 + + ПользователиИБСопоставить + 94 + true + true + + true + + + ПользователиИБСопоставитьРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Сопоставить + Auto + true + true + UserCmds + Auto + + + ПользователиИБСопоставитьСНовым + 98 + true + true + + true + + + ПользователиИБСопоставитьСНовымРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СопоставитьСНовым + Auto + true + true + UserCmds + Auto + + + ПользователиИБОтменитьСопоставление + 102 + true + true + + true + + + ПользователиИБОтменитьСопоставлениеРасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОтменитьСопоставление + Auto + true + true + UserCmds + Auto + + + ПользователиИБНайти + 20 + true + true + + true + + false + + ПользователиИБНайтиРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиИБ.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ПользователиИБОтменитьПоиск + 21 + true + true + + true + + false + + ПользователиИБОтменитьПоискРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиИБ.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ПользователиИБОбновить + 31 + true + true + + true + + false + + ПользователиИБОбновитьРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + + + ПользователиИБУдалить + 40 + true + + true + + false + + ПользователиИБУдалитьРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиИБ.StandardCommand.Delete + PictureAndText + true + true + UserCmds + Auto + + + ПользователиИБПерейтиКПользователю + 96 + true + true + + true + + + ПользователиИБПерейтиКПользователюРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКПользователю + Auto + true + true + UserCmds + Auto + + + ПользователиИБВывестиСписок + 120 + true + true + + true + + + ПользователиИБВывестиСписокРасширеннаяПодсказка + 121 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиИБ.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + ПользователиИБ + 1 + + <key>ru</key> + <value>Пользователи ИБ</value> + + true + true + + true + + + ПользователиИБ + + false + None + Add + Change + Copy + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + ПолноеИмя + 6 + true + true + + true + + + + ПользователиИБ.ПолноеИмя + + + + ru + Полное имя пользователя информационной базы + + + ПолноеИмяExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + + ПолноеИмяКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + + + + Имя + 8 + true + true + + true + + + + ПользователиИБ.Имя + + + + ru + Имя пользователя информационной базы + + + ИмяExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + + ИмяКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + + + + АутентификацияСтандартная + 10 + true + true + + true + + + + ПользователиИБ.АутентификацияСтандартная + + + + ru + Способ входа в программу с помощью имени и пароля, +указанного для пользователя 1С:Предприятия. + + + АутентификацияСтандартнаяExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + + АутентификацияСтандартнаяКонтекстноеМеню + 11 + true + true + + true + + true + + LabelField + true + Center + EnterOnInput + true + Left + true + + true + true + + ru + БЛ=; БИ=Да + + + + + АутентификацияOpenID + 88 + true + true + + true + + + + ПользователиИБ.АутентификацияOpenID + + + + ru + Способ входа в программу с помощью имени, указанного для пользователя 1С:Предприятия, +которое передается службе аутентификации по протоколу OpenID. +Используется только при подключении через веб-сервер (адрес службы должен быть настроен). + + + АутентификацияOpenIDРасширеннаяПодсказка + 90 + true + true + + true + + Label + true + true + + Left + + + + АутентификацияOpenIDКонтекстноеМеню + 89 + true + true + + true + + true + + LabelField + true + Center + EnterOnInput + true + Left + true + + true + true + + ru + БЛ=; БИ=Да + + + + + ПользователиИБНастройкиАутентификацияОС + 50 + + АутентификацияОС + 12 + true + true + + true + + + + ПользователиИБ.АутентификацияОС + + + + ru + Способ входа в программу с помощью имени и пароля, +указанного для пользователя операционной системы, +связанного с пользователем 1С:Предприятия. + + + АутентификацияОСExtendedTooltip + 71 + true + true + + true + + Label + true + true + + Left + + + + АутентификацияОСКонтекстноеМеню + 13 + true + true + + true + + true + + LabelField + true + EnterOnInput + true + Left + true + + true + true + + + + ПользовательОС + 14 + true + true + + true + + + + ПользователиИБ.ПользовательОС + + + + ru + Пользователь операционной системы + + + ПользовательОСExtendedTooltip + 72 + true + true + + true + + Label + true + true + + Left + + + + ПользовательОСКонтекстноеМеню + 15 + true + true + + true + + true + + LabelField + true + EnterOnInput + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пользователи ИБ настройки аутентификация ОС</value> + + + ПользователиИБНастройкиАутентификацияОСРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + СопоставленСВнешнимПользователем + 115 + true + true + + + + ПользователиИБ.СопоставленСВнешнимПользователем + + + + СопоставленСВнешнимПользователемРасширеннаяПодсказка + 117 + true + true + + true + + Label + true + true + + Left + + + + СопоставленСВнешнимПользователемКонтекстноеМеню + 116 + true + true + + true + + true + + LabelField + true + Center + EnterOnInput + true + Left + true + + true + true + + ru + БЛ=; БИ=Да + + + + + ДобавленВКонфигураторе + 106 + true + true + + + + ПользователиИБ.ДобавленВКонфигураторе + + + + ДобавленВКонфигуратореРасширеннаяПодсказка + 108 + true + true + + true + + Label + true + true + + Left + + + + ДобавленВКонфигуратореКонтекстноеМеню + 107 + true + true + + true + + true + + LabelField + true + Center + EnterOnInput + true + Left + true + + true + true + + ru + БЛ=; БИ=Да + + + + + ИзмененВКонфигураторе + 109 + true + true + + + + ПользователиИБ.ИзмененВКонфигураторе + + + + ИзмененВКонфигуратореРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + + ИзмененВКонфигуратореКонтекстноеМеню + 110 + true + true + + true + + true + + LabelField + true + Center + EnterOnInput + true + Left + true + + true + true + + ru + БЛ=; БИ=Да + + + + + УдаленВКонфигураторе + 112 + true + true + + + + ПользователиИБ.УдаленВКонфигураторе + + + + УдаленВКонфигуратореРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + + УдаленВКонфигуратореКонтекстноеМеню + 113 + true + true + + true + + true + + LabelField + true + Center + EnterOnInput + true + Left + true + + true + true + + ru + БЛ=; БИ=Да + + + + None + + ПользователиИБКоманднаяПанель + 3 + true + true + + true + + Left + true + + + BeforeDeleteRow + ПользователиИБПередУдалением + + + OnActivateRow + ПользователиИБПриАктивизацииСтроки + + + true + true + + true + + ПользователиИБСтрокаПоиска + 122 + + ПользователиИБСтрокаПоискаРасширеннаяПодсказка + 124 + true + true + + true + + Label + true + true + + Left + + + + ПользователиИБСтрокаПоискаКонтекстноеМеню + 123 + true + true + + true + + true + + + true + + + + true + true + + true + + ПользователиИБСостояниеПросмотра + 125 + + ПользователиИБСостояниеПросмотраРасширеннаяПодсказка + 127 + true + true + + true + + Label + true + true + + Left + + + + ПользователиИБСостояниеПросмотраКонтекстноеМеню + 126 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПользователиИБУправлениеПоиском + 128 + + ПользователиИБУправлениеПоискомРасширеннаяПодсказка + 130 + true + true + + true + + Label + true + true + + Left + + + + ПользователиИБУправлениеПоискомКонтекстноеМеню + 129 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПользователиИБРасширеннаяПодсказка + 66 + true + true + + true + + Label + true + true + + Left + + + + ПользователиИБКонтекстноеМеню + 2 + + ПользователиИБКонтекстноеМенюПерейтиКПользователю + 104 + true + true + + true + + + ПользователиИБКонтекстноеМенюПерейтиКПользователюРасширеннаяПодсказка + 105 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКПользователю + Auto + true + true + UserCmds + Auto + + + ПользователиИБКонтекстноеМенюОбновить + 39 + true + true + + true + + false + + ПользователиИБКонтекстноеМенюОбновитьРасширеннаяПодсказка + 64 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + + + ПользователиИБКонтекстноеМенюВывестиСписок + 118 + true + true + + true + + + ПользователиИБКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 119 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиИБ.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + true + Row +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + true + true + + ПользователиИБ.Картинка + + +
+ None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + ПользователиИБ + + <key>ru</key> + <value>Пользователи ИБ</value> + + 1 + + ValueTable + + + true + + + true + + + Картинка + 1 + + Number + + 2 + true + + + + true + + + true + + + + ПолноеИмя + + <key>ru</key> + <value>Полное имя</value> + + 2 + + String + + + + true + + + true + + + + Имя + + <key>ru</key> + <value>Имя (для входа)</value> + + 3 + + String + + + + true + + + true + + + + АутентификацияСтандартная + + <key>ru</key> + <value>Аутентификация 1С</value> + + 4 + + Boolean + + + true + + + true + + + + АутентификацияОС + + <key>ru</key> + <value>Аутентификация ОС</value> + + 5 + + Boolean + + + true + + + true + + + + ПользовательОС + + <key>ru</key> + <value>Пользователь ОС</value> + + 6 + + String + + + + true + + + true + + + + ИдентификаторПользователяИБ + 7 + + UUID + + + true + + + true + + + + Ссылка + 9 + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + true + + + true + + + + СопоставленСВнешнимПользователем + + <key>ru</key> + <value>Сопоставлен с внешним пользователем</value> + + 11 + + Boolean + + + true + + + true + + + + АутентификацияOpenID + + <key>ru</key> + <value>Аутентификация OpenID</value> + + 14 + + Boolean + + + true + + + true + + + + ДобавленВКонфигураторе + + <key>ru</key> + <value>Добавлен в конфигураторе</value> + + 8 + + Boolean + + + true + + + true + + + + ИзмененВКонфигураторе + + <key>ru</key> + <value>Изменен в конфигураторе</value> + + 10 + + Boolean + + + true + + + true + + + + УдаленВКонфигураторе + + <key>ru</key> + <value>Удален в конфигураторе</value> + + 12 + + Boolean + + + true + + + true + + + + + ТипыПользователей + 5 + + ValueList + + + true + + + true + + + + + + + ИдентификаторыНесуществующихПользователейИБ + 6 + + ValueList + + + true + + + true + + + + + + + ПоказатьТолькоОбработанныеВКонфигураторе + + <key>ru</key> + <value>Показать только добавленные, измененные или удаленные с помощью конфигуратора</value> + + 7 + + Boolean + + + true + + + true + + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 1 + + ru + Обновить + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + DontUse + + + Сопоставить + + <key>ru</key> + <value>Сопоставить</value> + + 2 + + ru + Сопоставить с существующим пользователем в справочнике + + + true + + + + Сопоставить + + + DontUse + + + СопоставитьСНовым + + <key>ru</key> + <value>Сопоставить с новым</value> + + 3 + + ru + Сопоставить с новым пользователем в справочнике + + + true + + + + СопоставитьСНовым + + + DontUse + + + ПерейтиКПользователю + + <key>ru</key> + <value>Перейти к пользователю</value> + + 4 + + ru + Перейти к сопоставленному пользователю в справочнике + + + true + + + CommonPicture.СостояниеПользователя02 + + + + ПерейтиКПользователю + + + TextPicture + DontUse + + + ОтменитьСопоставление + + <key>ru</key> + <value>Отменить сопоставление</value> + + 5 + + ru + Отменить сопоставление с пользователем в справочнике + + + true + + + + ОтменитьСопоставление + + + DontUse + + + Отбор + + String + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Help/ru.html" new file mode 100644 index 00000000..e5204e6a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Help/ru.html" @@ -0,0 +1,54 @@ + +

Список предназначен для удобства согласования пользователей ИБ в Конфигураторе со списками Пользователи и Внешние пользователи.

+

Список можно открыть по команде Еще - Пользователи информационной базы в меню списка пользователей (или внешних пользователей).

+

При записи пользователя (или внешнего пользователя) вместе с ним автоматически создается или изменяется соответствующий ему пользователь ИБ. Однако есть ряд ситуаций, когда список пользователей ИБ становится несогласованным со списком пользователей. Тогда с помощью данного списка могут быть решены следующие задачи:

+
  • Найти "некорректных" (несопоставленных) пользователей ИБ: +
    • Программа автоматически сопоставляет пользователей ИБ и пользователей в списках. +
    • По результатам автоматического сопоставления пользователи ИБ становятся неактивными (выделяются серым цветом), если пользователи в программе были добавлены, изменены или удалены с помощью конфигуратора. +
    • Красным шрифтом выделены пользователи ИБ, не сопоставленные с пользователями в списках программы.
  • Найти рассогласования списка пользователей ИБ со списками пользователей списков программы: +
    • если пользователь ИБ был добавлен с помощью конфигуратора (или каким-либо нештатным программным способом), предлагается сопоставить такого пользователя ИБ с пользователем в списке или  Удалить; +
    • если пользователь ИБ был удален с помощью конфигуратора (или каким-либо нештатным программным способом), но при этом осталась ссылка на него из пользователя в списке, предлагается открыть пользователя в списке и перезаписать его, для того чтобы очистить эту ссылку (или обновить эту ссылку путем создания нового пользователя ИБ); +
    • если полное имя пользователя ИБ было изменено с помощью конфигуратора (или каким-либо нештатным программным способом), нужно открыть карточку пользователя и перезаписать ее, для того чтобы восстановить полное имя пользователя ИБ: +
      • В этом случае в карточке пользователя появляется предупреждение о необходимости устранения отличий и под ним две кнопки: +
        • Заполнить из пользователя ИБ - в этом случае в поле Полное имя пользователя помещается его измененное имя из списка Пользователи информационной базы; +
        • Записать - в этом случае в список Пользователи информационной базы записывается полное имя из карточки пользователя.
  • Посмотреть список всех пользователей ИБ (этот список также доступен в конфигураторе).

В списке выводятся сведения:

+
  • +
    Полное имя - полное имя пользователя ИБ (при рассогласовании может не совпадать с полным именем пользователя в списке Пользователи (Внешние пользователи);
    +
  • +
    Имя (для входа) - при рассогласовании может не совпадать с именем для входа в списке Пользователи (Внешние Пользователи)
    +
  • +
    Аутентификация 1С - принимает значение "Да", если для пользователя включена аутентификация ОС;
    +
  • +
    Аутентификация OpenID - принимает значение "Да", если для пользователя включена аутентификация OpenID;
    +
  • +
    Аутентификация ОС - принимает значение "Да", если для пользователя включена аутентификация ОС.

Дополнительно выводится (по команде Еще - Изменить форму):

+
  • +
    Пользователь ОС - имя, с которым пользователь входит в ОС, и которое используется для входа в программу в случае, если аутентификация ОС включена.
    +
  • +
    Сопоставлен с внешним пользователем - принимает значение "Да", если это внешний пользователь программы;
    +
  • +
    Добавлен в конфигураторе - принимает значение "Да" или остается пустым, если значение поля Ложь;
    +
  • +
    Изменен в конфигураторе - принимает значение "Да" или остается пустым, если значение поля Ложь;
    +
  • +
    Удален в конфигураторе - принимает значение "Да" или остается пустым, если значение поля Ложь.

Просмотр проблемных записей или всего списка

+
  • +
    Включите флажок Показать только добавленные, измененные или удаленные с помощью конфигуратора, для того чтобы увидеть только несопоставленные записи, требующие вмешательства. При отключенном флажке показывается весь список пользователей ИБ.

Сопоставление пользователей

+

Для согласования списков предусмотрены следующие возможности:

+
  • +
    Сопоставить - можно вручную сопоставить пользователя ИБ с существующим в программе пользователем, для этого:
    +
    • +
      выберите для сопоставления значение Пользователь или Внешний пользователь, нажмите ОК
      +
    • +
      выберите пользователя из соответствующего списка двойным щелчком мыши или выделив его и нажав Выбрать.
      +
    • +
      в открывшемся окне Пользователь (Внешний пользователь) внесите необходимые исправления, нажмите Записать и закрыть. После этого сопоставление данных пользователя в двух списках будет восстановлено.
  • +
    Сопоставить с новым - можно вручную сопоставить с пользователем ИБ, введя нового пользователя, для этого:
    +
    • +
      выберите для сопоставления значение Пользователь или Внешний пользователь, нажмите ОК
      +
    • +
      введите нового пользователя (внешнего пользователя) программы. После записи данных сопоставление данных пользователя в двух списках будет восстановлено.
  • +
    Отменить сопоставление - можно отменить автоматическое сопоставление пользователей ИБ и пользователей списков программы для того чтобы сопоставить пользователей вручную. Отмена сопоставления требуется крайне редко - только если сопоставление было выполнено некорректно, например, при обновлении информационной базы, поэтому не рекомендуется отменять сопоставление по любой другой причине.

Просмотр сопоставленного пользователя

+
  • +
    Выделите пользователя ИБ. Выполните команду Перейти к пользователю меню Еще или контекстного меню по правой кнопке мыши, для того чтобы открыть пользователя программы (внешнего пользователя), сопоставленного пользователю ИБ.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Module.bsl" new file mode 100644 index 00000000..23da4e73 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213/Module.bsl" @@ -0,0 +1,532 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); + Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Не РазделениеВключено) Тогда + ВызватьИсключение НСтр("ru = 'Недостаточно прав для открытия списка пользователей информационной базы.'"); + КонецЕсли; + + Пользователи.НайтиНеоднозначныхПользователейИБ(Неопределено); + + ТипыПользователей.Добавить(Тип("СправочникСсылка.Пользователи")); + Если ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда + ТипыПользователей.Добавить(Тип("СправочникСсылка.ВнешниеПользователи")); + КонецЕсли; + + ПоказатьТолькоОбработанныеВКонфигураторе = Истина; + + ЗаполнитьПользователейИБ(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ДобавленПользовательИБ" + ИЛИ ИмяСобытия = "ИзмененПользовательИБ" + ИЛИ ИмяСобытия = "УдаленПользовательИБ" + ИЛИ ИмяСобытия = "ОчищеноСопоставлениеСНесуществующимПользователемИБ" Тогда + + ЗаполнитьПользователейИБ(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПоказатьТолькоОбработанныеВКонфигуратореПриИзменении(Элемент) + + ЗаполнитьПользователейИБ(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователиИБ + +&НаКлиенте +Процедура ПользователиИБПриАктивизацииСтроки(Элемент) + + ТекущиеДанные = Элементы.ПользователиИБ.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + МожноУдалить = Ложь; + МожноСопоставить = Ложь; + МожноПерейтиКПользователю = Ложь; + МожноОтменитьСопоставление = Ложь; + Иначе + МожноУдалить = Не ЗначениеЗаполнено(ТекущиеДанные.Ссылка); + МожноСопоставить = Не ЗначениеЗаполнено(ТекущиеДанные.Ссылка); + МожноПерейтиКПользователю = ЗначениеЗаполнено(ТекущиеДанные.Ссылка); + МожноОтменитьСопоставление = ЗначениеЗаполнено(ТекущиеДанные.Ссылка); + КонецЕсли; + + Элементы.ПользователиИБУдалить.Доступность = МожноУдалить; + + Элементы.ПользователиИБПерейтиКПользователю.Доступность = МожноПерейтиКПользователю; + Элементы.ПользователиИБКонтекстноеМенюПерейтиКПользователю.Доступность = МожноПерейтиКПользователю; + + Элементы.ПользователиИБСопоставить.Доступность = МожноСопоставить; + Элементы.ПользователиИБСопоставитьСНовым.Доступность = МожноСопоставить; + + Элементы.ПользователиИБОтменитьСопоставление.Доступность = МожноОтменитьСопоставление; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиИБПередУдалением(Элемент, Отказ) + + Отказ = Истина; + + Если Не ЗначениеЗаполнено(Элементы.ПользователиИБ.ТекущиеДанные.Ссылка) Тогда + УдалитьТекущегоПользователяИБ(Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Обновить(Команда) + + ЗаполнитьПользователейИБ(); + +КонецПроцедуры + +&НаКлиенте +Процедура Сопоставить(Команда) + + СопоставитьПользователяИБ(); + +КонецПроцедуры + +&НаКлиенте +Процедура СопоставитьСНовым(Команда) + + СопоставитьПользователяИБ(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиКПользователю(Команда) + + ОткрытьПользователяПоСсылке(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьСопоставление(Команда) + + Если Элементы.ПользователиИБ.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ОтменитьСопоставление", НСтр("ru = 'Отменить сопоставление'")); + Кнопки.Добавить("ОставитьСопоставление", НСтр("ru = 'Оставить сопоставление'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ОтменитьСопоставлениеПродолжение", ЭтотОбъект), + НСтр("ru = 'Отмена сопоставления пользователя информационной базы с пользователем в справочнике. + | + |Отмена сопоставления требуется крайне редко - только если сопоставление было выполнено некорректно, например, + |при обновлении информационной базы, поэтому не рекомендуется отменять сопоставление по любой другой причине.'"), + Кнопки, + , + "ОставитьСопоставление"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПолноеИмя.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Имя.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияСтандартная.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияОС.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПользовательОС.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияOpenID.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользователиИБ.ДобавленВКонфигураторе"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветОсобогоТекста); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПолноеИмя.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Имя.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияСтандартная.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияОС.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПользовательОС.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияOpenID.Имя); + + ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользователиИБ.ИзмененВКонфигураторе"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользователиИБ.УдаленВКонфигураторе"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Имя.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияСтандартная.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияОС.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияOpenID.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользователиИБ.УдаленВКонфигураторе"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<Нет данных>'")); + Элемент.Оформление.УстановитьЗначениеПараметра("Формат", НСтр("ru = 'БЛ=Нет; БИ=Да'")); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АутентификацияОС.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользователиИБ.ПользовательОС"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + Элемент.Оформление.УстановитьЗначениеПараметра("Формат", НСтр("ru = 'БЛ=; БИ=Да'")); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПользователейИБ() + + ПустойУникальныйИдентификатор = ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор(); + + Если Элементы.ПользователиИБ.ТекущаяСтрока <> Неопределено Тогда + Строка = ПользователиИБ.НайтиПоИдентификатору(Элементы.ПользователиИБ.ТекущаяСтрока); + Иначе + Строка = Неопределено; + КонецЕсли; + + ТекущийИдентификаторПользователяИБ = + ?(Строка = Неопределено, ПустойУникальныйИдентификатор, Строка.ИдентификаторПользователяИБ); + + ПользователиИБ.Очистить(); + ИдентификаторыНесуществующихПользователейИБ.Очистить(); + ИдентификаторыНесуществующихПользователейИБ.Добавить(ПустойУникальныйИдентификатор); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор", ПустойУникальныйИдентификатор); + Запрос.Текст = + "ВЫБРАТЬ + | Пользователи.Ссылка КАК Ссылка, + | Пользователи.Наименование КАК ПолноеИмя, + | Пользователи.ИдентификаторПользователяИБ, + | ЛОЖЬ КАК ЭтоВнешнийПользователь + |ИЗ + | Справочник.Пользователи КАК Пользователи + |ГДЕ + | Пользователи.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ВнешниеПользователи.Ссылка, + | ВнешниеПользователи.Наименование, + | ВнешниеПользователи.ИдентификаторПользователяИБ, + | ИСТИНА + |ИЗ + | Справочник.ВнешниеПользователи КАК ВнешниеПользователи + |ГДЕ + | ВнешниеПользователи.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор"; + + Выгрузка = Запрос.Выполнить().Выгрузить(); + Выгрузка.Индексы.Добавить("ИдентификаторПользователяИБ"); + Выгрузка.Колонки.Добавить("Сопоставлен", Новый ОписаниеТипов("Булево")); + + ВсеПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей(); + + Для Каждого ПользовательИБ Из ВсеПользователиИБ Цикл + + ИзмененВКонфигураторе = Ложь; + Строка = Выгрузка.Найти(ПользовательИБ.УникальныйИдентификатор, "ИдентификаторПользователяИБ"); + СвойстваПользовательИБ = Пользователи.СвойстваПользователяИБ(ПользовательИБ.УникальныйИдентификатор); + Если СвойстваПользовательИБ = Неопределено Тогда + СвойстваПользовательИБ = Пользователи.НовоеОписаниеПользователяИБ(); + КонецЕсли; + + Если Строка <> Неопределено Тогда + Строка.Сопоставлен = Истина; + Если Строка.ПолноеИмя <> СвойстваПользовательИБ.ПолноеИмя Тогда + ИзмененВКонфигураторе = Истина; + КонецЕсли; + КонецЕсли; + + Если ПоказатьТолькоОбработанныеВКонфигураторе + И Строка <> Неопределено + И Не ИзмененВКонфигураторе Тогда + + Продолжить; + КонецЕсли; + + НоваяСтрока = ПользователиИБ.Добавить(); + НоваяСтрока.ПолноеИмя = СвойстваПользовательИБ.ПолноеИмя; + НоваяСтрока.Имя = СвойстваПользовательИБ.Имя; + НоваяСтрока.АутентификацияСтандартная = СвойстваПользовательИБ.АутентификацияСтандартная; + НоваяСтрока.АутентификацияОС = СвойстваПользовательИБ.АутентификацияОС; + НоваяСтрока.ИдентификаторПользователяИБ = СвойстваПользовательИБ.УникальныйИдентификатор; + НоваяСтрока.ПользовательОС = СвойстваПользовательИБ.ПользовательОС; + НоваяСтрока.АутентификацияOpenID = СвойстваПользовательИБ.АутентификацияOpenID; + + Если Строка = Неопределено Тогда + // Пользователя ИБ нет в справочнике. + НоваяСтрока.ДобавленВКонфигураторе = Истина; + Иначе + НоваяСтрока.Ссылка = Строка.Ссылка; + НоваяСтрока.СопоставленСВнешнимПользователем = Строка.ЭтоВнешнийПользователь; + + НоваяСтрока.ИзмененВКонфигураторе = ИзмененВКонфигураторе; + КонецЕсли; + + КонецЦикла; + + Отбор = Новый Структура("Сопоставлен", Ложь); + Строки = Выгрузка.НайтиСтроки(Отбор); + Для каждого Строка Из Строки Цикл + НоваяСтрока = ПользователиИБ.Добавить(); + НоваяСтрока.ПолноеИмя = Строка.ПолноеИмя; + НоваяСтрока.Ссылка = Строка.Ссылка; + НоваяСтрока.СопоставленСВнешнимПользователем = Строка.ЭтоВнешнийПользователь; + НоваяСтрока.УдаленВКонфигураторе = Истина; + ИдентификаторыНесуществующихПользователейИБ.Добавить(Строка.ИдентификаторПользователяИБ); + КонецЦикла; + + Отбор = Новый Структура("ИдентификаторПользователяИБ", ТекущийИдентификаторПользователяИБ); + Строки = ПользователиИБ.НайтиСтроки(Отбор); + Если Строки.Количество() > 0 Тогда + Элементы.ПользователиИБ.ТекущаяСтрока = Строки[0].ПолучитьИдентификатор(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УдалитьПользователяИБ(ИдентификаторПользователяИБ, Отказ) + + Попытка + Пользователи.УдалитьПользователяИБ(ИдентификаторПользователяИБ); + Исключение + ОбщегоНазначения.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), , , , Отказ); + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьПользователяПоСсылке() + + ТекущиеДанные = Элементы.ПользователиИБ.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда + ОткрытьФорму( + ?(ТекущиеДанные.СопоставленСВнешнимПользователем, + "Справочник.ВнешниеПользователи.ФормаОбъекта", + "Справочник.Пользователи.ФормаОбъекта"), + Новый Структура("Ключ", ТекущиеДанные.Ссылка)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьТекущегоПользователяИБ(УдалитьСтроку = Ложь) + + ПоказатьВопрос( + Новый ОписаниеОповещения("УдалитьТекущегоПользователяИБЗавершение", ЭтотОбъект, УдалитьСтроку), + НСтр("ru = 'Удалить пользователя информационной базы?'"), + РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьТекущегоПользователяИБЗавершение(Ответ, УдалитьСтроку) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + Отказ = Ложь; + УдалитьПользователяИБ( + Элементы.ПользователиИБ.ТекущиеДанные.ИдентификаторПользователяИБ, Отказ); + + Если Не Отказ И УдалитьСтроку Тогда + ПользователиИБ.Удалить(Элементы.ПользователиИБ.ТекущиеДанные); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СопоставитьПользователяИБ(СНовым = Ложь) + + Если ТипыПользователей.Количество() > 1 Тогда + ТипыПользователей.ПоказатьВыборЭлемента( + Новый ОписаниеОповещения("СопоставитьПользователяИБДляТипаЭлемента", ЭтотОбъект, СНовым), + НСтр("ru = 'Выбор типа данных'"), + ТипыПользователей[0]); + Иначе + СопоставитьПользователяИБДляТипаЭлемента(ТипыПользователей[0], СНовым); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СопоставитьПользователяИБДляТипаЭлемента(ЭлементСписка, СНовым) Экспорт + + Если ЭлементСписка = Неопределено Тогда + Возврат; + КонецЕсли; + + ИмяСправочника = ?(ЭлементСписка.Значение = Тип("СправочникСсылка.Пользователи"), "Пользователи", "ВнешниеПользователи"); + + Если Не СНовым Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + ПараметрыФормы.Вставить("ИдентификаторыНесуществующихПользователейИБ", ИдентификаторыНесуществующихПользователейИБ); + + ОткрытьФорму("Справочник." + ИмяСправочника + ".ФормаВыбора", ПараметрыФормы,,,,, + Новый ОписаниеОповещения("СопоставитьПользователяИБСЭлементом", ЭтотОбъект, ИмяСправочника)); + Иначе + СопоставитьПользователяИБСЭлементом("Новый", ИмяСправочника); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СопоставитьПользователяИБСЭлементом(Элемент, ИмяСправочника) Экспорт + + Если Не ЗначениеЗаполнено(Элемент) И Элемент <> "Новый" Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + + Если Элемент <> "Новый" Тогда + ПараметрыФормы.Вставить("Ключ", Элемент); + КонецЕсли; + + ПараметрыФормы.Вставить("ИдентификаторПользователяИБ", + Элементы.ПользователиИБ.ТекущиеДанные.ИдентификаторПользователяИБ); + + ОткрытьФорму("Справочник." + ИмяСправочника + ".ФормаОбъекта", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьСопоставлениеПродолжение(Ответ, Контекст) Экспорт + + Если Ответ = "ОтменитьСопоставление" Тогда + ОтменитьСопоставлениеНаСервере(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОтменитьСопоставлениеНаСервере() + + ТекущаяСтрока = ПользователиИБ.НайтиПоИдентификатору(Элементы.ПользователиИБ.ТекущаяСтрока); + Если ТипЗнч(ТекущаяСтрока.Ссылка) = Тип("СправочникСсылка.Пользователи") Тогда + ИмяТаблицы = "Справочник.Пользователи"; + Иначе + ИмяТаблицы = "Справочник.ВнешниеПользователи"; + КонецЕсли; + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(ИмяТаблицы); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ТекущаяСтрока.Ссылка); + Блокировка.Заблокировать(); + + Объект = ТекущаяСтрока.Ссылка.ПолучитьОбъект(); + Объект.ИдентификаторПользователяИБ = Неопределено; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + ЗаполнитьПользователейИБ(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\241\320\274\320\265\320\275\320\260\320\237\320\276\321\207\321\202\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\241\320\274\320\265\320\275\320\260\320\237\320\276\321\207\321\202\321\213/Form.form" new file mode 100644 index 00000000..9084ecf4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\241\320\274\320\265\320\275\320\260\320\237\320\276\321\207\321\202\321\213/Form.form" @@ -0,0 +1,215 @@ + + + + НоваяПочта + 1 + true + true + + true + + + + НоваяПочта + + + Top + + НоваяПочтаExtendedTooltip + 5 + true + true + + true + + Label + true + true + + Left + + + + НоваяПочтаКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 40 + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаСменитьПочту + 3 + true + true + + true + + + ФормаСменитьПочтуExtendedTooltip + 4 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СменитьПочту + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + + НоваяПочта + + <key>ru</key> + <value>Новый адрес эл. почты</value> + + 1 + + String + + + + true + + + true + + ShowError + + + ПарольПользователяСервиса + 2 + + String + + + + true + + + true + + + + Пользователь + 3 + + CatalogRef.Пользователи + + + true + + + true + + + + СтараяПочта + 4 + + String + + + + true + + + true + + + + СменитьПочту + + <key>ru</key> + <value>Сменить почту</value> + + 1 + + ru + Сменить почту + + + true + + + + СменитьПочту + + + DontUse + + + СтараяПочта + + String + + + + + ПарольПользователяСервиса + + String + + + + + Пользователь + + CatalogRef.Пользователи + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\241\320\274\320\265\320\275\320\260\320\237\320\276\321\207\321\202\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\241\320\274\320\265\320\275\320\260\320\237\320\276\321\207\321\202\321\213/Module.bsl" new file mode 100644 index 00000000..1b31dcbe --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\241\320\274\320\265\320\275\320\260\320\237\320\276\321\207\321\202\321\213/Module.bsl" @@ -0,0 +1,98 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Пользователь = Параметры.Пользователь; + ПарольПользователяСервиса = Параметры.ПарольПользователяСервиса; + СтараяПочта = Параметры.СтараяПочта; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СменитьПочту(Команда) + + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + ТекстВопроса = ""; + Если Не ЗначениеЗаполнено(СтараяПочта) Тогда + ТекстВопроса = + НСтр("ru = 'Адрес электронной почты пользователя сервиса изменен. + |Владельцы и администраторы абонента больше не смогут изменять параметры пользователя.'") + + Символы.ПС + + Символы.ПС; + КонецЕсли; + ТекстВопроса = ТекстВопроса + НСтр("ru = 'Выполнить изменение адреса электронной почты?'"); + + ПоказатьВопрос( + Новый ОписаниеОповещения("СменитьПочтуПродолжение", ЭтотОбъект), + ТекстВопроса, + РежимДиалогаВопрос.ДаНетОтмена); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура СоздатьЗапросНаСменуПочты() + + ИнтеграцияПодсистемБСП.ПриСозданииЗапросаНаСменуПочты(НоваяПочта, + Пользователь, ПарольПользователяСервиса); + +КонецПроцедуры + +&НаКлиенте +Процедура СменитьПочтуПродолжение(Ответ, Контекст) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + + Попытка + СоздатьЗапросНаСменуПочты(); + Исключение + ПарольПользователяСервиса = ""; + ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина); + ВызватьИсключение; + КонецПопытки; + + ПоказатьПредупреждение( + Новый ОписаниеОповещения("СменитьПочтуЗавершение", ЭтотОбъект, Контекст), + НСтр("ru = 'На указанный адрес отправлено письмо с запросом на подтверждение. + |Почта будет изменена только после подтверждения запроса пользователем.'")); + + ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда + СменитьПочтуЗавершение(Контекст); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СменитьПочтуЗавершение(Контекст) Экспорт + + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму() + + Закрыть(ПарольПользователяСервиса); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..b26a13af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,22 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + Наименование + Asc + Normal + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..1e1f2c50 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,4856 @@ + + + + ГруппаПользовательскихНастроек + 160 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 158 + + ПодменюСоздать + 299 + + СоздатьПользователя + 54 + + <key>ru</key> + <value>Создать</value> + + true + true + + true + + false + + СоздатьПользователяExtendedTooltip + 101 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Create + PictureAndText + true + true + UserCmds + Auto + + + СоздатьГруппуПользователей + 55 + true + true + + true + + false + + СоздатьГруппуПользователейExtendedTooltip + 102 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьГруппуПользователей + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Создать</value> + + + ПодменюСоздатьРасширеннаяПодсказка + 300 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + + ЗавершитьИЗакрыть + 95 + + <key>ru</key> + <value>Подобрать и закрыть</value> + + true + + true + + + ЗавершитьИЗакрытьExtendedTooltip + 98 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗавершитьИЗакрыть + true + true + true + UserCmds + + StdPicture.WriteAndClose + + Auto + + + ВыбратьГруппуПользователей + 68 + + <key>ru</key> + <value>Выбрать группу</value> + + true + true + + true + + false + + ВыбратьГруппуПользователейExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПользователей.StandardCommand.Choose + PictureAndText + true + true + UserCmds + + StdPicture.ChooseValue + + Auto + + + ВыбратьПользователя + 69 + + <key>ru</key> + <value>Выбрать</value> + + true + true + + true + + false + + ВыбратьПользователяExtendedTooltip + 100 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Choose + Auto + true + true + UserCmds + Auto + + + НазначитьГруппы + 72 + true + true + + true + + + НазначитьГруппыExtendedTooltip + 103 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НазначитьГруппы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + КоманднаяПанельПользователи + 53 + + ФормаВыбрать + 216 + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 217 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 212 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + OnlyInContextMenu + + + ФормаИзменить + 214 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 215 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ПользователиСтандартныеКоманды + 210 + true + true + + true + + + <key>ru</key> + <value>Пользователи стандартные команды</value> + + + ПользователиСтандартныеКомандыРасширеннаяПодсказка + 211 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ПодменюСоздатьНаОсновании + 311 + true + true + + true + + + <key>ru</key> + <value>Создать на основании</value> + + + ПодменюСоздатьНаОснованииРасширеннаяПодсказка + 312 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.InputOnBasis + + Picture + + + + ПодменюОтчеты + 303 + + ПодменюОтчетыВажное + 305 + true + true + + true + + + <key>ru</key> + <value>Подменю отчеты важное</value> + + + ПодменюОтчетыВажноеРасширеннаяПодсказка + 306 + true + true + + true + + Label + true + true + + Left + + + + + + ПодменюОтчетыПерейти + 307 + true + true + + true + + + <key>ru</key> + <value>Подменю отчеты перейти</value> + + + ru + Подменю отчеты важное + + + ПодменюОтчетыПерейтиРасширеннаяПодсказка + 308 + true + true + + true + + Label + true + true + + Left + + + + + + ПодменюОтчетыСмТакже + 309 + + СведенияОПользователях + 132 + true + true + + true + + + СведенияОПользователяхРасширеннаяПодсказка + 133 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СведенияОПользователях + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Подменю отчеты см также</value> + + + ru + Подменю отчеты важное + + + ПодменюОтчетыСмТакжеРасширеннаяПодсказка + 310 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Отчеты</value> + + + ПодменюОтчетыРасширеннаяПодсказка + 304 + true + true + + true + + Label + true + true + + Left + + + Popup + + + CommonPicture.Отчеты + + PictureAndText + + + + ПодменюДополнительно + 297 + + ФормаИзменитьВыделенные + 196 + true + true + + true + + + ФормаИзменитьВыделенныеРасширеннаяПодсказка + 197 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПользователиИБ + 6 + true + true + + true + + + ПользователиИБExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + Catalog.Пользователи.Command.ПользователиИнформационнойБазы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаУстановитьПароль + 198 + true + true + + true + + + ФормаУстановитьПарольРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПароль + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействий + 301 + true + + true + + + ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействийРасширеннаяПодсказка + 302 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействий + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + ПодменюДополнительноРасширеннаяПодсказка + 298 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Командная панель пользователи</value> + + + КоманднаяПанельПользователиExtendedTooltip + 104 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаСправка + 70 + true + true + + true + + + ФормаСправкаExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 159 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ГруппаКоманднаяПанельВыбора + 218 + + ЗавершитьИЗакрытьВыбор + 220 + + <key>ru</key> + <value>Подобрать и закрыть</value> + + true + true + + true + + + ЗавершитьИЗакрытьВыборРасширеннаяПодсказка + 221 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ЗавершитьИЗакрыть + Auto + true + true + UserCmds + Auto + + + Выбрать + 284 + true + + true + + + ВыбратьРасширеннаяПодсказка + 285 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Выбрать + Auto + 3 + true + true + UserCmds + Auto + + + СтрокаПоиска + 222 + true + true + + true + + + + СтрокаПоиска + + + true + None + Shift+F + + СтрокаПоискаРасширеннаяПодсказка + 224 + true + true + + true + + Label + true + true + + Left + + + + СтрокаПоискаКонтекстноеМеню + 223 + true + true + + true + + true + + InputField + Right + Right + Enter + true + Left + true + + + EditTextChange + СтрокаПоискаИзменениеТекстаРедактирования + + + Clearing + СтрокаПоискаОчистка + + 24 + true + true + false + true + true + true + true + true + DontUse + + ru + Поиск (Shift + F) + + + + + ВставитьИзБуфераОбмена + 282 + true + true + + true + + + ВставитьИзБуфераОбменаРасширеннаяПодсказка + 283 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВставитьИзБуфераОбмена + Auto + 3 + true + true + UserCmds + Auto + + + ГруппаРасширенныйВыборПраво + 225 + + ГруппаРасширенныйВыборЕще + 229 + + ИзменитьФорму + 231 + true + true + + true + + + ИзменитьФормуРасширеннаяПодсказка + 232 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + Справка + 227 + true + true + + true + + + СправкаРасширеннаяПодсказка + 228 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Picture + true + true + UserCmds + Auto + + + РасширенныйВыборВывестиСписок + 233 + true + true + + true + + + РасширенныйВыборВывестиСписокРасширеннаяПодсказка + 234 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Расширенный выбор еще</value> + + + ГруппаРасширенныйВыборЕщеРасширеннаяПодсказка + 230 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + true + true + + true + + + <key>ru</key> + <value>Расширенный выбор право</value> + + Right + + ГруппаРасширенныйВыборПравоРасширеннаяПодсказка + 226 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Right + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Командная панель выбора</value> + + + ГруппаКоманднаяПанельВыбораРасширеннаяПодсказка + 219 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаСодержимое + 24 + + СтраницыВыбораПользователей + 235 + + СтраницаВыборПользователейИГрупп + 237 + + ГруппыИПользователи + 74 + + ГруппаГруппы + 75 + VeryLow + + ГруппыПользователей + 25 + VeryHigh + + <key>ru</key> + <value>Группы пользователей</value> + + true + true + + true + + + ГруппыПользователей + + false + None + Delete + + НаименованиеГруппы + 30 + true + true + + true + + + + ГруппыПользователей.Description + + + + НаименованиеГруппыExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеГруппыКонтекстноеМеню + 31 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 10 + true + true + + + + СсылкаГруппы + 153 + true + true + + + + ГруппыПользователей.Ref + + + + СсылкаГруппыРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + + СсылкаГруппыКонтекстноеМеню + 154 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ГруппыПользователейКоманднаяПанель + 27 + true + true + + true + + Left + true + + + DragCheck + ГруппыПользователейПроверкаПеретаскивания + + + ValueChoice + ГруппыПользователейВыборЗначения + + + BeforeAddRow + ГруппыПользователейПередНачаломДобавления + + + OnActivateRow + ГруппыПользователейПриАктивизацииСтроки + + + Drag + ГруппыПользователейПеретаскивание + + + OnChange + ГруппыПользователейПриИзменении + + + true + true + + true + + ГруппыПользователейСтрокаПоиска + 165 + + ГруппыПользователейСтрокаПоискаРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейСтрокаПоискаКонтекстноеМеню + 166 + true + true + + true + + true + + + true + + + + true + true + + true + + ГруппыПользователейСостояниеПросмотра + 168 + + ГруппыПользователейСостояниеПросмотраРасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейСостояниеПросмотраКонтекстноеМеню + 169 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ГруппыПользователейУправлениеПоиском + 171 + + ГруппыПользователейУправлениеПоискомРасширеннаяПодсказка + 173 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейУправлениеПоискомКонтекстноеМеню + 172 + true + true + + true + + true + + SearchControlAddition + + true + + + + ГруппыПользователейExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейКонтекстноеМеню + 26 + + ВывестиСписок + 156 + true + true + + true + + + ВывестиСписокРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПользователей.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + Tree + true + true + true + 10 + true + true + true + MultiRow + Row + 1 + 1 + AutoUse + AutoUse + Auto + Auto + ExpandTopLevel + true + true + true + + ГруппыПользователей.НомерКартинки + + + CommonPicture.СостоянияПользователей + + SelectionPresentationAndChoice + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + ГруппаВыбратьГруппу + 85 + + ВыбратьГруппу + 89 + true + true + + true + + + ВыбратьГруппуExtendedTooltip + 115 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыбратьГруппу + Auto + 5 + true + true + UserCmds + Auto + + + ОтменитьВыборПользователяИлиГруппы + 90 + true + true + + true + + + ОтменитьВыборПользователяИлиГруппыExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьВыборПользователяИлиГруппы + Auto + 5 + true + true + UserCmds + Auto + + + ОчиститьСписокВыбранныхПользователейИГрупп + 91 + true + true + + true + + + ОчиститьСписокВыбранныхПользователейИГруппExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьСписокВыбранныхПользователейИГрупп + Auto + 5 + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Выбрать группу</value> + + true + + ГруппаВыбратьГруппуExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Center + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группы пользователей</value> + + + ГруппаГруппыExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПользователи + 76 + VeryHigh + + ПользователиСписок + 48 + + <key>ru</key> + <value>Пользователи список</value> + + true + true + + true + + + ПользователиСписок + + false + None + Delete + + Наименование + 51 + true + true + + true + + + + ПользователиСписок.Description + + + + НаименованиеExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 52 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 134 + true + true + + + + ПользователиСписок.Ref + + + + СсылкаРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 135 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ПользователиСписокКоманднаяПанель + 50 + true + true + + true + + Left + true + + + DragCheck + ПользователиСписокПроверкаПеретаскивания + + + ValueChoice + ПользователиСписокВыборЗначения + + + BeforeAddRow + ПользователиСписокПередНачаломДобавления + + + OnActivateRow + ПользователиСписокПриАктивизацииСтроки + + + BeforeRowChange + ПользователиСписокПередНачаломИзменения + + + OnChange + ПользователиСписокПриИзменении + + + true + true + + true + + ПользователиСписокСтрокаПоиска + 174 + + ПользователиСписокСтрокаПоискаРасширеннаяПодсказка + 176 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокСтрокаПоискаКонтекстноеМеню + 175 + true + true + + true + + true + + + true + + + + true + true + + true + + ПользователиСписокСостояниеПросмотра + 177 + + ПользователиСписокСостояниеПросмотраРасширеннаяПодсказка + 179 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокСостояниеПросмотраКонтекстноеМеню + 178 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПользователиСписокУправлениеПоиском + 180 + + ПользователиСписокУправлениеПоискомРасширеннаяПодсказка + 182 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокУправлениеПоискомКонтекстноеМеню + 181 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПользователиСписокExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокКонтекстноеМеню + 49 + + ПользователиСписокКонтекстноеМенюСоздать + 204 + true + true + + true + + + ПользователиСписокКонтекстноеМенюСоздатьРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюСкопировать + 206 + true + true + + true + + + ПользователиСписокКонтекстноеМенюСкопироватьРасширеннаяПодсказка + 207 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюИзменить + 208 + true + true + + true + + + ПользователиСписокКонтекстноеМенюИзменитьРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюУстановитьПароль + 200 + true + true + + true + + + ПользователиСписокКонтекстноеМенюУстановитьПарольРасширеннаяПодсказка + 201 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПароль + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюСтандартныеКоманды + 202 + true + true + + true + + + <key>ru</key> + <value>Пользователи список контекстное меню стандартные команды</value> + + + ПользователиСписокКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 203 + true + true + + true + + Label + true + true + + Left + + + + Item.ПользователиСписок + + + + ПользователиСписокКонтекстноеМенюНазначитьГруппы + 73 + true + true + + true + + + ПользователиСписокКонтекстноеМенюНазначитьГруппыExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НазначитьГруппы + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюИзменитьВыделенные + 194 + true + true + + true + + + ПользователиСписокКонтекстноеМенюИзменитьВыделенныеРасширеннаяПодсказка + 195 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + 10 + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + + ПользователиСписок.НомерКартинки + + + CommonPicture.СостоянияПользователей + + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + + + + ГруппаВыбратьПользователя + 86 + + ВыбратьПользователяКоманда + 94 + true + true + + true + + + ВыбратьПользователяКомандаExtendedTooltip + 124 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыбратьПользователяКоманда + Auto + 5 + true + true + UserCmds + Auto + + + ОтменитьВыборПользователя + 96 + true + + true + + + ОтменитьВыборПользователяExtendedTooltip + 125 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьВыборПользователяИлиГруппы + Auto + 5 + true + true + UserCmds + Auto + + + ОчиститьСписокВыбранных + 97 + true + + true + + + ОчиститьСписокВыбранныхExtendedTooltip + 126 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьСписокВыбранныхПользователейИГрупп + Auto + 5 + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Выбрать пользователя</value> + + true + + ГруппаВыбратьПользователяExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Center + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Пользователи</value> + + + ГруппаПользователиExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группы и пользователи</value> + + + ГруппыИПользователиРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + LeftNarrowest + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница выбор пользователей и групп</value> + + + СтраницаВыборПользователейИГруппРасширеннаяПодсказка + 238 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + + СтраницаПоиск + 239 + + ПользователиСписокПоиск + 241 + + <key>ru</key> + <value>Пользователи</value> + + true + true + + true + + + ПользователиСписок + + false + Top + Delete + + ПользователиСписокПоискНаименование + 254 + true + true + + true + + + + ПользователиСписок.Description + + + + ПользователиСписокПоискНаименованиеРасширеннаяПодсказка + 256 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокПоискНаименованиеКонтекстноеМеню + 255 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ПользователиСписокПоискСсылка + 257 + true + true + + + + ПользователиСписок.Ref + + + + ПользователиСписокПоискСсылкаРасширеннаяПодсказка + 259 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокПоискСсылкаКонтекстноеМеню + 258 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ПользователиСписокПоискКоманднаяПанель + 243 + true + true + + true + + Left + true + + + DragCheck + ПользователиСписокПроверкаПеретаскивания + + + ValueChoice + ПользователиСписокВыборЗначения + + + BeforeAddRow + ПользователиСписокПередНачаломДобавления + + + OnActivateRow + ПользователиСписокПоискПриАктивизацииСтроки + + + BeforeRowChange + ПользователиСписокПередНачаломИзменения + + + OnChange + ПользователиСписокПриИзменении + + + true + true + + true + + ПользователиСписокПоискСтрокаПоиска + 245 + + ПользователиСписокПоискСтрокаПоискаРасширеннаяПодсказка + 247 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокПоискСтрокаПоискаКонтекстноеМеню + 246 + true + true + + true + + true + + + true + + + + true + true + + true + + ПользователиСписокПоискСостояниеПросмотра + 248 + + ПользователиСписокПоискСостояниеПросмотраРасширеннаяПодсказка + 250 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокПоискСостояниеПросмотраКонтекстноеМеню + 249 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПользователиСписокПоискУправлениеПоиском + 251 + + ПользователиСписокПоискУправлениеПоискомРасширеннаяПодсказка + 253 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокПоискУправлениеПоискомКонтекстноеМеню + 252 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПользователиСписокПоискРасширеннаяПодсказка + 244 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокПоискКонтекстноеМеню + 242 + + ПользователиСписокКонтекстноеМенюСоздать1 + 260 + true + true + + true + + + ПользователиСписокКонтекстноеМенюСоздать1РасширеннаяПодсказка + 261 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюСкопировать1 + 262 + true + true + + true + + + ПользователиСписокКонтекстноеМенюСкопировать1РасширеннаяПодсказка + 263 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюИзменить1 + 264 + true + true + + true + + + ПользователиСписокКонтекстноеМенюИзменить1РасширеннаяПодсказка + 265 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюУстановитьПароль1 + 266 + true + true + + true + + + ПользователиСписокКонтекстноеМенюУстановитьПароль1РасширеннаяПодсказка + 267 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПароль + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюСтандартныеКоманды1 + 268 + true + true + + true + + + <key>ru</key> + <value>Пользователи список контекстное меню стандартные команды</value> + + + ПользователиСписокКонтекстноеМенюСтандартныеКоманды1РасширеннаяПодсказка + 269 + true + true + + true + + Label + true + true + + Left + + + + Item.ПользователиСписокПоиск + + + + ПользователиСписокКонтекстноеМенюНазначитьГруппы1 + 270 + true + true + + true + + + ПользователиСписокКонтекстноеМенюНазначитьГруппы1РасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НазначитьГруппы + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюИзменитьВыделенные1 + 272 + true + true + + true + + + ПользователиСписокКонтекстноеМенюИзменитьВыделенные1РасширеннаяПодсказка + 273 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + 10 + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + + ПользователиСписок.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + + + + ГруппаКнопкиВыбораПоиска + 286 + + ВыбратьПользователяКомандаПоиск + 295 + true + true + + true + + + ВыбратьПользователяКомандаПоискРасширеннаяПодсказка + 296 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыбратьПользователяКоманда + Auto + 5 + true + true + UserCmds + Auto + + + ОчиститьСписокВыбранныхПоиск + 288 + true + true + + true + + + ОчиститьСписокВыбранныхПоискРасширеннаяПодсказка + 289 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьСписокВыбранныхПользователейИГрупп + Auto + 5 + true + true + UserCmds + Auto + + + ОтменитьВыборПользователяПоиск + 290 + true + true + + true + + + ОтменитьВыборПользователяПоискРасширеннаяПодсказка + 291 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьВыборПользователяИлиГруппы + Auto + 5 + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопки выбора поиска</value> + + Center + + ГруппаКнопкиВыбораПоискаРасширеннаяПодсказка + 287 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница поиск</value> + + + СтраницаПоискРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы выбора пользователей</value> + + + СтраницыВыбораПользователейРасширеннаяПодсказка + 236 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ВыбранныеПользователиИГруппы + 77 + VeryLow + + СписокВыбранныхПользователейИГрупп + 78 + + <key>ru</key> + <value>Выбранные пользователи и группы</value> + + true + true + + true + + + ВыбранныеПользователиИГруппы + + Top + Add + Change + Copy + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + ПользователиИГруппы + 81 + true + true + + true + + + + ВыбранныеПользователиИГруппы.Пользователь + + + + ПользователиИГруппыExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + + ПользователиИГруппыКонтекстноеМеню + 82 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + false + true + true + true + + + + СписокВыбранныхПользователейИГруппКоманднаяПанель + 80 + true + true + + true + + Left + + + Selection + СписокВыбранныхПользователейИГруппВыбор + + + BeforeAddRow + СписокВыбранныхПользователейИГруппПередНачаломДобавления + + + true + true + + true + + СписокВыбранныхПользователейИГруппСтрокаПоиска + 183 + + СписокВыбранныхПользователейИГруппСтрокаПоискаРасширеннаяПодсказка + 185 + true + true + + true + + Label + true + true + + Left + + + + СписокВыбранныхПользователейИГруппСтрокаПоискаКонтекстноеМеню + 184 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокВыбранныхПользователейИГруппСостояниеПросмотра + 186 + + СписокВыбранныхПользователейИГруппСостояниеПросмотраРасширеннаяПодсказка + 188 + true + true + + true + + Label + true + true + + Left + + + + СписокВыбранныхПользователейИГруппСостояниеПросмотраКонтекстноеМеню + 187 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокВыбранныхПользователейИГруппУправлениеПоиском + 189 + + СписокВыбранныхПользователейИГруппУправлениеПоискомРасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + + СписокВыбранныхПользователейИГруппУправлениеПоискомКонтекстноеМеню + 190 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокВыбранныхПользователейИГруппExtendedTooltip + 128 + true + true + + true + + Label + true + true + + Left + + + + СписокВыбранныхПользователейИГруппКонтекстноеМеню + 79 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + + ВыбранныеПользователиИГруппы.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + + true + true + + true + + + <key>ru</key> + <value>Выбранные пользователи и группы</value> + + + ВыбранныеПользователиИГруппыExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Содержимое</value> + + + ГруппаСодержимоеРасширеннаяПодсказка + 108 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Equal + Auto + Auto + + + + ГруппаПоказыватьПользователейДочернихГруппИНедействительных + 58 + + ВыбиратьИерархически + 56 + true + true + + true + + + + ВыбиратьИерархически + + + Right + + OnChange + ВыбиратьИерархическиПриИзменении + + + ВыбиратьИерархическиExtendedTooltip + 131 + true + true + + true + + Label + true + true + + Left + + + + ВыбиратьИерархическиКонтекстноеМеню + 57 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПоказыватьНедействительныхПользователей + 162 + true + true + + true + + + + ПоказыватьНедействительныхПользователей + + + Right + + OnChange + ПоказыватьНедействительныхПользователейПриИзменении + + + ПоказыватьНедействительныхПользователейРасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьНедействительныхПользователейКонтекстноеМеню + 163 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Показывать пользователей дочерних групп и недействительных</value> + + + ГруппаПоказыватьПользователейДочернихГруппИНедействительныхРасширеннаяПодсказка + 130 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаКонтактнаяИнформация + 274 + + Фотография + 276 + true + true + + true + + + + АдресФотографии + + + None + + ФотографияРасширеннаяПодсказка + 278 + true + true + + true + + Label + true + true + + Left + + + + ФотографияКонтекстноеМеню + 277 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + 7 + 4 + 4 + AutoSize + + ru + Нет фото + + AsFileRef + + + + ПредставлениеКонтактнойИнформации + 292 + true + true + + true + + + + ПредставлениеКонтактнойИнформации + + + None + + ПредставлениеКонтактнойИнформацииРасширеннаяПодсказка + 294 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтактнойИнформацииКонтекстноеМеню + 293 + true + true + + true + + true + + InputField + true + Center + Enter + true + Left + true + + 4 + 4 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Контактная информация</value> + + 4 + + ГруппаКонтактнаяИнформацияРасширеннаяПодсказка + 275 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Collapsible + Picture + true + true + true + Auto + Auto + + + + Комментарии + 137 + + КомментарийГруппы + 139 + + ЗаголовокКомментарияГруппы + 141 + + ГруппыПользователейКомментарий + 143 + true + true + + true + + + + Items.ГруппыПользователей.CurrentData.Комментарий + + + Left + + ГруппыПользователейКомментарийРасширеннаяПодсказка + 145 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейКомментарийКонтекстноеМеню + 144 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 2 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ЗаголовокКомментарияГруппыРасширеннаяПодсказка + 142 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + + Items.ГруппыПользователей.CurrentData.Description + + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Комментарий группы</value> + + + КомментарийГруппыРасширеннаяПодсказка + 140 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + + КомментарийПользователя + 146 + + ЗаголовокКомментарияПользователя + 148 + + ПользователиСписокКомментарий + 150 + true + true + + true + + + + Items.ПользователиСписок.CurrentData.Комментарий + + + Left + + ПользователиСписокКомментарийРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + + ПользователиСписокКомментарийКонтекстноеМеню + 151 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 2 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ЗаголовокКомментарияПользователяРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + + Items.ПользователиСписок.CurrentData.Description + + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Комментарий пользователя</value> + + + КомментарийПользователяРасширеннаяПодсказка + 147 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + true + true + + + <key>ru</key> + <value>Комментарии</value> + + + КомментарииРасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПередЗагрузкеДанныхИзНастроекНаСервере + + Close + Create + Delete + Use + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + ПользователиСписок + + <key>ru</key> + <value>Пользователи список</value> + + 1 + + DynamicList + + + true + + + true + + + ПользователиСписок.Ref + + + ПользователиСписок.ВозможноСменитьПароль + + + ПользователиСписок.Недействителен + +
true
+ + ВЫБРАТЬ + Пользователи.Ссылка, + Пользователи.Подготовлен, + Пользователи.ПометкаУдаления, + Пользователи.Недействителен, + Пользователи.Наименование, + Пользователи.Служебный, + Пользователи.Комментарий, + ВЫБОР + КОГДА Пользователи.ПометкаУдаления + ТОГДА 0 + ИНАЧЕ 1 + КОНЕЦ КАК НомерКартинки, + ВЫБОР + КОГДА Пользователи.Служебный + ТОГДА ЛОЖЬ + КОГДА Пользователи.Недействителен + ТОГДА ЛОЖЬ + КОГДА Пользователи.ИдентификаторПользователяИБ = &ИдентификаторТекущегоПользователяИБ + ТОГДА ИСТИНА + КОГДА &ВозможноСменитьТолькоСвойПароль + ТОГДА ЛОЖЬ + КОГДА Пользователи.ИдентификаторПользователяИБ = &ПустойУникальныйИдентификатор + ТОГДА ЛОЖЬ + ИНАЧЕ ИСТИНА + КОНЕЦ КАК ВозможноСменитьПароль, + Пользователи.ИдентификаторПользователяИБ +ИЗ + Справочник.Пользователи КАК Пользователи +ГДЕ + ВЫБОР + КОГДА &ВсеПользователи + ТОГДА ИСТИНА + КОГДА &ВыбиратьИерархически + ТОГДА ИСТИНА В + (ВЫБРАТЬ + ИСТИНА + ИЗ + РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + ГДЕ + СоставыГруппПользователей.Пользователь = Пользователи.Ссылка + И СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей) + ИНАЧЕ ИСТИНА В + (ВЫБРАТЬ + ИСТИНА + ИЗ + Справочник.ГруппыПользователей.Состав КАК ГруппыПользователейСостав + ГДЕ + ГруппыПользователейСостав.Пользователь = Пользователи.Ссылка + И ГруппыПользователейСостав.Ссылка = &ГруппаПользователей) + КОНЕЦ + Catalog.Пользователи + true + true + true + true + true + +
+ + ГруппыПользователей + + <key>ru</key> + <value>Группы пользователей</value> + + 2 + + DynamicList + + + true + + + true + + + ГруппыПользователей.DeletionMark + + + ГруппыПользователей.Parent + + + ГруппыПользователей.Ref + + + ВЫБРАТЬ + СправочникГруппыПользователей.Ссылка, + СправочникГруппыПользователей.ПометкаУдаления, + СправочникГруппыПользователей.Предопределенный, + СправочникГруппыПользователей.Родитель, + СправочникГруппыПользователей.Наименование, + ВЫБОР + КОГДА СправочникГруппыПользователей.ПометкаУдаления + ТОГДА 2 + ИНАЧЕ 3 + КОНЕЦ КАК НомерКартинки, + СправочникГруппыПользователей.Комментарий +ИЗ + Справочник.ГруппыПользователей КАК СправочникГруппыПользователей + Catalog.ГруппыПользователей + true + true + true + true + true + + + + ВыбиратьИерархически + + <key>ru</key> + <value>Показывать пользователей нижестоящих групп</value> + + 3 + + Boolean + + + true + + + true + + + ВыбиратьИерархически + + + + ХранимыеПараметры + 7 + + + true + + + true + + + + ВыбранныеПользователиИГруппы + + <key>ru</key> + <value>Выбранные пользователи и группы</value> + + 4 + + ValueTable + + + true + + + true + + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + + true + + + true + + + + НомерКартинки + 2 + + Number + + + + true + + + true + + + + Недействителен + 3 + + Boolean + + + true + + + true + + + + + СписокВыбранныхПользователейИзменен + 5 + + Boolean + + + true + + + true + + + + ПоказыватьНедействительныхПользователей + + <key>ru</key> + <value>Показывать недействительных пользователей</value> + + 8 + + Boolean + + + true + + + true + + + + СтрокаПоиска + + <key>ru</key> + <value>Строка поиска</value> + + 6 + + String + + + + true + + + true + + + + АдресФотографии + + <key>ru</key> + <value>Адрес фотографии</value> + + 9 + + String + + + + true + + + true + + + + ПредставлениеКонтактнойИнформации + 10 + + String + + + + true + + + true + + + + ВыборУчастниковОбсуждения + 12 + + Boolean + + + true + + + true + + + + АдресПользовательБезФотографии + 11 + + String + + + + true + + + true + + + + ТекущийПользователь + 13 + + CatalogRef.Пользователи + + + true + + + true + + + + СоздатьГруппуПользователей + + <key>ru</key> + <value>Создать группу пользователей</value> + + 3 + + ru + Создать группу пользователей + + + true + + + StdPicture.CreateFolder + + + + СоздатьГруппуПользователей + + + DontUse + + + НазначитьГруппы + + <key>ru</key> + <value>Назначить группы</value> + + 2 + + ru + Назначить группы + + + true + + Ctrl+Shift+M + + StdPicture.MoveItem + + + + НазначитьГруппы + + + TextPicture + DontUse + + + ЗавершитьИЗакрыть + + <key>ru</key> + <value>Завершить и закрыть</value> + + 4 + + ru + Завершить и закрыть + + + true + + + + ЗавершитьИЗакрыть + + + DontUse + + + ВыбратьГруппу + + <key>ru</key> + <value>></value> + + 5 + + ru + Выбрать группу + + + true + + + + ВыбратьГруппу + + + DontUse + + + ВыбратьПользователяКоманда + + <key>ru</key> + <value>></value> + + 6 + + ru + Выбрать пользователя + + + true + + + + ВыбратьПользователяКоманда + + + DontUse + + + ОтменитьВыборПользователяИлиГруппы + + <key>ru</key> + <value><</value> + + 7 + + ru + Отменить выбор пользователя или группы + + + true + + + + ОтменитьВыборПользователяИлиГруппы + + + DontUse + + + ОчиститьСписокВыбранныхПользователейИГрупп + + <key>ru</key> + <value><<</value> + + 8 + + ru + Очистить список выбранных пользователей и групп + + + true + + + + ОчиститьСписокВыбранныхПользователейИГрупп + + + DontUse + + + СведенияОПользователях + + <key>ru</key> + <value>Сведения о пользователях</value> + + 9 + + ru + Сведения о пользователях + + + true + + + StdPicture.Report + + + + СведенияОПользователях + + + DontUse + + + ИзменитьВыделенные + + <key>ru</key> + <value>Изменить выделенные...</value> + + 1 + + ru + Изменить выделенные объекты + + + true + + + + ИзменитьВыделенные + + + DontUse + + + УстановитьПароль + + <key>ru</key> + <value>Установить пароль...</value> + + 10 + + true + + + + УстановитьПароль + + + DontUse + + + ВставитьИзБуфераОбмена + + <key>ru</key> + <value>Вставить из буфера обмена...</value> + + 11 + + ru + Вставить из буфера обмена + + + true + + + CommonPicture.ВставитьИзБуфераОбмена + + + + ВставитьИзБуфераОбмена + + + Picture + DontUse + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 12 + + ru + Выбрать + + + true + + + StdPicture.ChooseValue + + + + Выбрать + + + Picture + Auto + + + ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействий + + <key>ru</key> + <value>Заблокировать недействительных в системе взаимодействия</value> + + 13 + + ru + Заблокировать недействительных пользователей в системе взаимодействий + + + true + + + + ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействий + + + Auto + + + ВыборГруппПользователей + + Boolean + + + + ЗакрыватьПриВыборе + + + + СкрытьПользователейБезПользователяИБ + + Boolean + + + + ПараметрыРасширеннойФормыПодбора + + + + РасширенныйПодбор + + Boolean + + + + СкрываемыеПользователи + + + + ВыборУчастниковОбсуждения + + Boolean + + + + + + + CommonCommand.ДополнительныеСведенияКоманднаяПанель + FormCommandBarImportant + 0 + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..69907e33 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,1475 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ИСПОЛЬЗОВАНИЕ ФОРМЫ // +// +// Описание параметров формы см. ПользователиПереопределяемый.ПриОпределенииФормыПодбораПользователей +// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ПоследнийЭлемент; + +&НаКлиенте +Перем СтрокаПоискаТекст; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + // Начальное значение настройки до загрузки данных из настроек. + ВыбиратьИерархически = Истина; + Элементы.ГруппаКоманднаяПанельВыбора.Видимость = Ложь; + + ЗаполнитьХранимыеПараметры(); + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + + ИначеЕсли Пользователи.ЭтоПолноправныйПользователь() Тогда + // Добавление отбора пользователей, подготовленных ответственным за список. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "Подготовлен", Истина, , + НСтр("ru = 'Подготовленные ответственным за список'"), Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + КонецЕсли; + + // Скрытие пользователей с пустым идентификатором, если значение параметра Истина. + Если Параметры.СкрытьПользователейБезПользователяИБ Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, + "ИдентификаторПользователяИБ", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор(), + ВидСравненияКомпоновкиДанных.НеРавно); + КонецЕсли; + + // Скрытие служебных пользователей. + Если Пользователи.ЭтоПолноправныйПользователь() Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "Служебный", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный, + Строка(Новый УникальныйИдентификатор)); + Иначе + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "Служебный", Ложь, , , Истина); + КонецЕсли; + + // Скрытие переданного пользователя из формы выбора пользователей. + Если ТипЗнч(Параметры.СкрываемыеПользователи) = Тип("СписокЗначений") Тогда + + ВидСравненияКД = ВидСравненияКомпоновкиДанных.НеВСписке; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, + "Ссылка", + Параметры.СкрываемыеПользователи, + ВидСравненияКД); + + КонецЕсли; + + ОформитьИСкрытьНедействительныхПользователей(); + НастроитьПараметрыСпискаПользователейДляКомандыУстановитьПароль(); + НастроитьПорядокГруппыВсеПользователи(ГруппыПользователей); + + ХранимыеПараметры.Вставить("РасширенныйПодбор", Параметры.РасширенныйПодбор); + Элементы.ВыбранныеПользователиИГруппы.Видимость = ХранимыеПараметры.РасширенныйПодбор; + ХранимыеПараметры.Вставить( + "ИспользоватьГруппы", ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей")); + + РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); + Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Не РазделениеВключено) Тогда + Если Элементы.Найти("ПользователиИБ") <> Неопределено Тогда + Элементы.ПользователиИБ.Видимость = Ложь; + КонецЕсли; + Элементы.СведенияОПользователях.Видимость = Ложь; + КонецЕсли; + + Если Параметры.РежимВыбора Тогда + + Если Элементы.Найти("ПользователиИБ") <> Неопределено Тогда + Элементы.ПользователиИБ.Видимость = Ложь; + КонецЕсли; + Элементы.СведенияОПользователях.Видимость = Ложь; + Элементы.ГруппыПользователей.РежимВыбора = ХранимыеПараметры.ВыборГруппПользователей; + // Отключение перетаскивания пользователя в формах выбора и подбора пользователей. + Элементы.ПользователиСписок.РазрешитьНачалоПеретаскивания = Ложь; + + Если Параметры.Свойство("ИдентификаторыНесуществующихПользователейИБ") Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "ИдентификаторПользователяИБ", + Параметры.ИдентификаторыНесуществующихПользователейИБ, + ВидСравненияКомпоновкиДанных.ВСписке, , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + КонецЕсли; + + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + // Режим подбора. + Элементы.ПользователиСписок.МножественныйВыбор = Истина; + + Если ХранимыеПараметры.РасширенныйПодбор Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "РасширенныйПодбор"); + ИзменитьПараметрыРасширеннойФормыПодбора(); + Элементы.КоманднаяПанель.Видимость = Ложь; + Элементы.ЗавершитьИЗакрытьВыбор.КнопкаПоУмолчанию = Истина; + Элементы.ГруппаКоманднаяПанельВыбора.Видимость = Истина; + Элементы.ПользователиСписок.ПоискПриВводе = ПоискВТаблицеПриВводе.НеИспользовать; + Элементы.ГруппыПользователей.ПоискПриВводе = ПоискВТаблицеПриВводе.НеИспользовать; + + Элементы.ЗавершитьИЗакрыть.Заголовок = НСтр("ru='Завершить и закрыть'"); + КонецЕсли; + + Если ХранимыеПараметры.ВыборГруппПользователей Тогда + Элементы.ГруппыПользователей.МножественныйВыбор = Истина; + КонецЕсли; + КонецЕсли; + Иначе + Элементы.ПользователиСписок.РежимВыбора = Ложь; + Элементы.ГруппыПользователей.РежимВыбора = Ложь; + Элементы.Комментарии.Видимость = Ложь; + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьПользователя", "Видимость", Ложь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьГруппуПользователей", "Видимость", Ложь); + КонецЕсли; + + ХранимыеПараметры.Вставить("ГруппаВсеПользователи", Справочники.ГруппыПользователей.ВсеПользователи); + ХранимыеПараметры.Вставить("ТекущаяСтрока", Параметры.ТекущаяСтрока); + НастроитьФормуПоИспользованиюГруппПользователей(); + ХранимыеПараметры.Удалить("ТекущаяСтрока"); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") + Или Не Пользователи.ЭтоПолноправныйПользователь() + Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + + Элементы.ФормаИзменитьВыделенные.Видимость = Ложь; + Элементы.ПользователиСписокКонтекстноеМенюИзменитьВыделенные.Видимость = Ложь; + КонецЕсли; + + ОписаниеОбъекта = Новый Структура; + ОписаниеОбъекта.Вставить("Ссылка", Справочники.Пользователи.ПустаяСсылка()); + ОписаниеОбъекта.Вставить("ИдентификаторПользователяИБ", ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()); + УровеньДоступа = ПользователиСлужебный.УровеньДоступаКСвойствамПользователя(ОписаниеОбъекта); + + Если Не УровеньДоступа.УправлениеСписком Тогда + Элементы.ФормаУстановитьПароль.Видимость = Ложь; + Элементы.ПользователиСписокКонтекстноеМенюУстановитьПароль.Видимость = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + Элементы.ГруппыПользователей.ТолькоПросмотр = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ЗавершитьИЗакрыть.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; + + ВыборУчастниковОбсуждения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыборУчастниковОбсуждения", Ложь); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла") Тогда + Элементы.ВставитьИзБуфераОбмена.Видимость = Ложь; + КонецЕсли; + + АдресПользовательБезФотографии = ПоместитьВоВременноеХранилище(БиблиотекаКартинок.ПользовательБезФотографии, УникальныйИдентификатор); + АдресФотографии = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); + ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, Неопределено); + УстановитьЗаголовокВыбранныхПользователейИГрупп(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда + Элементы.ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействий.Видимость = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Параметры.РежимВыбора Тогда + ПроверкаИзмененияТекущегоЭлементаФормы(); + КонецЕсли; + +#Если МобильныйКлиент Тогда + Если ХранимыеПараметры.Свойство("ИспользоватьГруппы") И ХранимыеПараметры.ИспользоватьГруппы Тогда + Элементы.ГруппаГруппы.Заголовок = Строка(Элементы.ГруппыПользователей.ТекущиеДанные.Ссылка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_ГруппыПользователей") + И Источник = Элементы.ГруппыПользователей.ТекущаяСтрока Тогда + + Элементы.ПользователиСписок.Обновить(); + + ИначеЕсли ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант") Тогда + + Если ВРег(Источник) = ВРег("ИспользоватьГруппыПользователей") Тогда + ПодключитьОбработчикОжидания("ПриИзмененииИспользованияГруппПользователей", 0.1, Истина); + КонецЕсли; + ИначеЕсли ВРег(ИмяСобытия) = ВРег("Запись_Пользователи") Тогда + + ПодключитьОбработчикОжидания("ОбновитьКонтактнуюИнформациюПользователяЗавершение", 0.1, Истина); + ИначеЕсли ВРег(ИмяСобытия) = ВРег("РазмещениеПользователейВГруппах") Тогда + + Элементы.ПользователиСписок.Обновить(); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + Если ТипЗнч(Настройки["ВыбиратьИерархически"]) = Тип("Булево") Тогда + ВыбиратьИерархически = Настройки["ВыбиратьИерархически"]; + КонецЕсли; + + Если НЕ ВыбиратьИерархически Тогда + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВыбиратьИерархическиПриИзменении(Элемент) + + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНедействительныхПользователейПриИзменении(Элемент) + ПереключитьОтображениеНедействительныхПользователей(ПоказыватьНедействительныхПользователей); +КонецПроцедуры + +&НаКлиенте +Процедура СтрокаПоискаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + СтрокаПоискаТекст = Текст; + ПодключитьОбработчикОжидания("СтрокаПоискаОчисткаЗавершение", 0.1, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура СтрокаПоискаОчисткаЗавершение() + + Если НЕ ЗначениеЗаполнено(СтрокаПоискаТекст) Тогда + Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп; + Иначе + Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаПоиск; + КонецЕсли; + + + Если ХранимыеПараметры.ИспользоватьГруппы Тогда + ОбновитьЗначениеПараметраКомпоновкиДанных(ПользователиСписок, + "ВсеПользователи", Истина); + КонецЕсли; + + УстановитьОтборСпискаПользователейПоСтрокеПоиска(СтрокаПоискаТекст); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтборСпискаПользователейПоСтрокеПоиска(СтрокаПоискаТекст) + + ОтборПоКонтактнойИнформации = Новый Массив; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | ПользователиКонтактнаяИнформация.Ссылка КАК Ссылка + |ИЗ + | Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация + |ГДЕ + | ПользователиКонтактнаяИнформация.Представление ПОДОБНО &СтрокаПоиска"; + + Запрос.УстановитьПараметр("СтрокаПоиска", СтрокаПоискаТекст+"%"); + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + ОтборПоКонтактнойИнформации.Добавить(ВыборкаДетальныеЗаписи.Ссылка); + КонецЦикла; + + КонецЕсли; + + ИспользоватьОтбор = ЗначениеЗаполнено(СтрокаПоискаТекст); + + ГруппаОтбора = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора(ПользователиСписок.Отбор, + "ПоискПоСтроке", + ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли); + + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ГруппаОтбора, + "Ссылка", + ВидСравненияКомпоновкиДанных.ВСписке, + ОтборПоКонтактнойИнформации,, + ИспользоватьОтбор); + + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ГруппаОтбора, + "Наименование", + ВидСравненияКомпоновкиДанных.Содержит, + СтрокаПоискаТекст,, + ИспользоватьОтбор); + + Элементы.ПользователиСписокПоиск.Обновить(); +КонецПроцедуры + +&НаКлиенте +Процедура СтрокаПоискаОчистка(Элемент, СтандартнаяОбработка) + СтрокаПоискаТекст = ""; + Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп; + + ГруппыОтбора = ОбщегоНазначенияКлиентСервер.НайтиЭлементыИГруппыОтбора(ПользователиСписок.Отбор,, + "ПоискПоСтроке"); + + Для каждого ГруппаОтбора Из ГруппыОтбора Цикл + ГруппаОтбора.Использование = Ложь; + КонецЦикла; + + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыГруппыПользователей + +&НаКлиенте +Процедура ГруппыПользователейПриИзменении(Элемент) + + СписокПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПользователейПриАктивизацииСтроки(Элемент) + + ПодключитьОбработчикОжидания("ГруппыПользователейПослеАктивизацииСтроки", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПользователейВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Не ХранимыеПараметры.РасширенныйПодбор Тогда + ОповеститьОВыборе(Значение); + Иначе + ПолучитьКартинкиИЗаполнитьСписокВыбранных(Значение); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПользователейПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если НЕ Копирование Тогда + Отказ = Истина; + ПараметрыФормы = Новый Структура; + + Если ЗначениеЗаполнено(Элементы.ГруппыПользователей.ТекущаяСтрока) Тогда + ПараметрыФормы.Вставить( + "ЗначенияЗаполнения", + Новый Структура("Родитель", Элементы.ГруппыПользователей.ТекущаяСтрока)); + КонецЕсли; + + ОткрытьФорму( + "Справочник.ГруппыПользователей.ФормаОбъекта", + ПараметрыФормы, + Элементы.ГруппыПользователей); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПользователейПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + + Если ВыбиратьИерархически Тогда + ПоказатьПредупреждение(, + НСтр("ru = 'Для перетаскивания пользователя в группы необходимо отключить + |флажок ""Показывать пользователей нижестоящих групп"".'")); + Возврат; + КонецЕсли; + + Если Элементы.ГруппыПользователей.ТекущаяСтрока = Строка + Или Строка = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Перемещение Тогда + Перемещение = Истина; + Иначе + Перемещение = Ложь; + КонецЕсли; + + ГруппаПомеченаНаУдаление = Элементы.ГруппыПользователей.ДанныеСтроки(Строка).ПометкаУдаления; + КоличествоПользователей = ПараметрыПеретаскивания.Значение.Количество(); + ДействиеИсключитьПользователя = (ХранимыеПараметры.ГруппаВсеПользователи = Строка); + ВключитьВГруппу = (ХранимыеПараметры.ГруппаВсеПользователи = Элементы.ГруппыПользователей.ТекущаяСтрока); + + Если КоличествоПользователей = 1 Тогда + Если ДействиеИсключитьПользователя Тогда + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключить пользователя ""%1"" из группы ""%2""?'"), + Строка(ПараметрыПеретаскивания.Значение[0]), + Строка(Элементы.ГруппыПользователей.ТекущаяСтрока)); + + ИначеЕсли Не ГруппаПомеченаНаУдаление Тогда + Если ВключитьВГруппу Тогда + Шаблон = НСтр("ru = 'Включить пользователя ""%1"" в группу ""%2""?'"); + ИначеЕсли Перемещение Тогда + Шаблон = НСтр("ru = 'Переместить пользователя ""%1"" в группу ""%2""?'"); + Иначе + Шаблон = НСтр("ru = 'Скопировать пользователя ""%1"" в группу ""%2""?'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, + Строка(ПараметрыПеретаскивания.Значение[0]), + Строка(Строка)); + Иначе + Если ВключитьВГруппу Тогда + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Включить пользователя ""%2"" в эту группу?'"); + ИначеЕсли Перемещение Тогда + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Переместить пользователя ""%2"" в эту группу?'"); + Иначе + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Скопировать пользователя ""%2"" в эту группу?'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, + Строка(Строка), + Строка(ПараметрыПеретаскивания.Значение[0])); + + КонецЕсли; + Иначе + Если ДействиеИсключитьПользователя Тогда + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключить пользователей (%1) из группы ""%2""?'"), + КоличествоПользователей, + Строка(Элементы.ГруппыПользователей.ТекущаяСтрока)); + + ИначеЕсли Не ГруппаПомеченаНаУдаление Тогда + Если ВключитьВГруппу Тогда + Шаблон = НСтр("ru = 'Включить пользователей (%1) в группу ""%2""?'"); + ИначеЕсли Перемещение Тогда + Шаблон = НСтр("ru = 'Переместить пользователей (%1) в группу ""%2""?'"); + Иначе + Шаблон = НСтр("ru = 'Скопировать пользователей (%1) в группу ""%2""?'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, + КоличествоПользователей, + Строка(Строка)); + Иначе + Если ВключитьВГруппу Тогда + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Включить пользователей (%2) в эту группу?'"); + ИначеЕсли Перемещение Тогда + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Переместить пользователей (%2) в эту группу?'"); + Иначе + Шаблон = НСтр("ru = 'Группа ""%1"" помечена на удаление. Скопировать пользователей (%2) в эту группу?'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, + Строка(Строка), + КоличествоПользователей); + КонецЕсли; + КонецЕсли; + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ПараметрыПеретаскивания", ПараметрыПеретаскивания.Значение); + ДополнительныеПараметры.Вставить("Строка", Строка); + ДополнительныеПараметры.Вставить("Перемещение", Перемещение); + + Оповещение = Новый ОписаниеОповещения("ГруппыПользователейПеретаскиваниеЗавершение", ЭтотОбъект, ДополнительныеПараметры); + ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПользователейПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + Если Элементы.ГруппыПользователей.ТолькоПросмотр Тогда + ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.НеОбрабатывать; + Иначе + СтандартнаяОбработка = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователиСписок + +&НаКлиенте +Процедура ПользователиСписокПриИзменении(Элемент) + + СписокПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиСписокПриАктивизацииСтроки(Элемент) + + Если СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(Элементы.ПользователиСписок) Тогда + ВозможноСменитьПароль = Элементы.ПользователиСписок.ТекущиеДанные.ВозможноСменитьПароль; + Иначе + ВозможноСменитьПароль = Ложь; + КонецЕсли; + + Элементы.ФормаУстановитьПароль.Доступность = ВозможноСменитьПароль; + Элементы.ПользователиСписокКонтекстноеМенюУстановитьПароль.Доступность = ВозможноСменитьПароль; + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если НЕ ХранимыеПараметры.РасширенныйПодбор Тогда + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + + КонецЕсли; + + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + ОбновитьКонтактнуюИнформациюПользователя(Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиСписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Не ХранимыеПараметры.РасширенныйПодбор Тогда + ОповеститьОВыборе(Значение); + Иначе + ПолучитьКартинкиИЗаполнитьСписокВыбранных(Значение); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиСписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ГруппаНовогоПользователя", Элементы.ГруппыПользователей.ТекущаяСтрока); + + Если Копирование И Элемент.ТекущиеДанные <> Неопределено Тогда + ПараметрыФормы.Вставить("ЗначениеКопирования", Элемент.ТекущаяСтрока); + КонецЕсли; + + ОткрытьФорму("Справочник.Пользователи.ФормаОбъекта", ПараметрыФормы, Элементы.ПользователиСписок); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиСписокПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + + Если Не ЗначениеЗаполнено(Элемент.ТекущаяСтрока) Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура("Ключ", Элемент.ТекущаяСтрока); + ОткрытьФорму("Справочник.Пользователи.ФормаОбъекта", ПараметрыФормы, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользователиСписокПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокВыбранныхПользователейИГрупп + +&НаКлиенте +Процедура СписокВыбранныхПользователейИГруппВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + УдалитьИзСпискаВыбранных(); + СписокВыбранныхПользователейИзменен = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокВыбранныхПользователейИГруппПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Отказ = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователиСписокПоиск + +&НаКлиенте +Процедура ПользователиСписокПоискПриАктивизацииСтроки(Элемент) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + ОбновитьКонтактнуюИнформациюПользователя(Элемент); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СоздатьГруппуПользователей(Команда) + + Элементы.ГруппыПользователей.ДобавитьСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура НазначитьГруппы(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Пользователи", Элементы.ПользователиСписок.ВыделенныеСтроки); + ПараметрыФормы.Вставить("ВнешниеПользователи", Ложь); + + ОткрытьФорму("ОбщаяФорма.ГруппыПользователей", ПараметрыФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПароль(Команда) + + ТекущиеДанные = Элементы.ПользователиСписок.ТекущиеДанные; + + Если СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(ТекущиеДанные) Тогда + ПользователиСлужебныйКлиент.ОткрытьФормуСменыПароля(ТекущиеДанные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьИЗакрыть(Команда) + + Если ХранимыеПараметры.РасширенныйПодбор Тогда + МассивПользователей = РезультатВыбора(); + ОповеститьОВыборе(МассивПользователей); + СписокВыбранныхПользователейИзменен = Ложь; + Закрыть(МассивПользователей); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьПользователяКоманда(Команда) + + Если Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаПоиск Тогда + МассивПользователей = Элементы.ПользователиСписокПоиск.ВыделенныеСтроки; + Иначе + МассивПользователей = Элементы.ПользователиСписок.ВыделенныеСтроки; + КонецЕсли; + + ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивПользователей); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьВыборПользователяИлиГруппы(Команда) + + УдалитьИзСпискаВыбранных(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьСписокВыбранныхПользователейИГрупп(Команда) + + УдалитьИзСпискаВыбранных(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьГруппу(Команда) + + МассивГрупп = Элементы.ГруппыПользователей.ВыделенныеСтроки; + ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивГрупп); + +КонецПроцедуры + +&НаКлиенте +Процедура СведенияОПользователях(Команда) + + ОткрытьФорму( + "Отчет.СведенияОПользователях.ФормаОбъекта", + Новый Структура("КлючВарианта", "СведенияОПользователях"), + ЭтотОбъект, + "СведенияОПользователях"); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Поддержка группового изменения объектов. + +&НаКлиенте +Процедура ИзменитьВыделенные(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") Тогда + МодульГрупповоеИзменениеОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ГрупповоеИзменениеОбъектовКлиент"); + МодульГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.ПользователиСписок, ПользователиСписок); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВставитьИзБуфераОбмена(Команда) + ПараметрыПоиска = Новый Структура; + ПараметрыПоиска.Вставить("ОписаниеТипов", Новый ОписаниеТипов("СправочникСсылка.Пользователи")); + ПараметрыПоиска.Вставить("ПараметрыВыбора", Новый СписокЗначений); + ПараметрыПоиска.Вставить("ПредставлениеПоля", Заголовок); + ПараметрыПоиска.Вставить("Сценарий", "ПоискСсылок"); + + ПараметрыВыполнения = Новый Структура; + Обработчик = Новый ОписаниеОповещения("ВставитьИзБуфераОбменаЗавершение", ЭтотОбъект, ПараметрыВыполнения); + + МодульЗагрузкаДанныхИзФайлаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗагрузкаДанныхИзФайлаКлиент"); + МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура ВставитьИзБуфераОбменаЗавершение(НайденныеОбъекты, ПараметрыВыполнения) Экспорт + + Если НайденныеОбъекты = Неопределено Тогда + Возврат; + КонецЕсли; + + ВставитьИзБуфераОбменаЗавершениеСервер(НайденныеОбъекты); + +КонецПроцедуры + +&НаСервере +Процедура ВставитьИзБуфераОбменаЗавершениеСервер(НайденныеОбъекты) + + Для Каждого Значение Из НайденныеОбъекты Цикл + ВыбранныеПользователиИГруппы.Добавить().Пользователь = Значение; + КонецЦикла; + Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки"); + +КонецПроцедуры + +&НаКлиенте +Процедура Выбрать(Команда) + Если Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп Тогда + ПользователиСписокВыборЗначения(Элементы.ПользователиСписок, + ВыбранныеЗначенияСписка(Элементы.ПользователиСписок), + Ложь); + Иначе + ПользователиСписокВыборЗначения(Элементы.ПользователиСписокПоиск, + ВыбранныеЗначенияСписка(Элементы.ПользователиСписокПоиск), + Ложь); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействий(Команда) + РезультатОбработки = ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействийНаСервере(); + Если Не ПустаяСтрока(РезультатОбработки) Тогда + ШаблонСообщения = НСтр("ru='Не удалось заблокировать пользователей по причине: + | + |%1'"); + ПоказатьПредупреждение(, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, РезультатОбработки),, + НСтр("ru='Не удалось заблокировать пользователей'")); + Иначе + Состояние(НСтр("ru='Блокировка недействительных пользователей + |выполнена.'"),,,БиблиотекаКартинок.Успешно32); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ЗаблокироватьНедействительныхПользователейВСистемеВзаимодействийНаСервере() + Результат = ""; + МодульОбсужденияСлужебный = ОбщегоНазначения.ОбщийМодуль("ОбсужденияСлужебный"); + НедействительныеПользователи = МодульОбсужденияСлужебный.НедействительныеПользователи(); + Для каждого НедействительныйПользователь Из НедействительныеПользователи Цикл + РезультатБлокировки = МодульОбсужденияСлужебный.ЗаблокироватьПользователяСистемыВзаимодействия(НедействительныйПользователь); + Если РезультатБлокировки <> Неопределено Тогда + Результат = КраткоеПредставлениеОшибки(РезультатБлокировки); + ЗаписьЖурналаРегистрации(НСтр("ru='Обсуждения.Блокировка недействительных пользователей'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(РезультатБлокировки)); + КонецЕсли; + КонецЦикла; + Возврат Результат; +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция ВыбранныеЗначенияСписка(Элемент) + Результат = Новый Массив; + + ВыбранныеСтроки = ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Элементы, Элемент.Имя, "ВыделенныеСтроки"); + Если ВыбранныеСтроки <> Неопределено Тогда + + Для каждого ИдентификаторСтроки Из ВыбранныеСтроки Цикл + Результат.Добавить(Элемент.ДанныеСтроки(ИдентификаторСтроки).Ссылка); + КонецЦикла; + + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура ОбновитьКонтактнуюИнформациюПользователя(ЭлементСписок) + + ТекущиеДанные = ЭлементСписок.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, Неопределено); + Возврат; + КонецЕсли; + + ТекущийПользователь = ТекущиеДанные.Ссылка; + ПодключитьОбработчикОжидания("ОбновитьКонтактнуюИнформациюПользователяЗавершение", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьКонтактнуюИнформациюПользователяЗавершение() + ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, ТекущийПользователь); +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьКонтактнуюИнформацию(Форма, ТекущийПользователь) + Если НЕ ЗначениеЗаполнено(ТекущийПользователь) Тогда + Форма.ПредставлениеКонтактнойИнформации = ""; + Форма.АдресФотографии = Форма.АдресПользовательБезФотографии; + Возврат; + КонецЕсли; + + КонтактнаяИнформацияПользователя = ?(ЗначениеЗаполнено(ТекущийПользователь), + КонтактнаяИнформацияПользователя(ТекущийПользователь, Форма.АдресПользовательБезФотографии, Форма.УникальныйИдентификатор), + Новый Структура); + Форма.АдресФотографии = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( + КонтактнаяИнформацияПользователя, + "Фотография", + Форма.АдресПользовательБезФотографии); + + Шаблон = НСтр("ru='%1 + | + |Телефон: %2 + |Электронная почта: %3'"); + + Подразделение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Подразделение", ""); + ПредставлениеПользователя = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Наименование", "") + + ?(ЗначениеЗаполнено(Подразделение), Символы.ПС + Подразделение, ""); + + Форма.ПредставлениеКонтактнойИнформации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, + ПредставлениеПользователя, + ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Телефон", ""), + ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "АдресЭлектроннойПочты", "")); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция КонтактнаяИнформацияПользователя(Пользователь, АдресФотографииПоУмолчанию, УникальныйИдентификатор) + КонтактнаяИнформация = ПользователиСлужебный.ОписаниеПользователя(Пользователь); + Если КонтактнаяИнформация.Фотография <> Неопределено Тогда + КонтактнаяИнформация.Фотография = ПоместитьВоВременноеХранилище(КонтактнаяИнформация.Фотография, УникальныйИдентификатор); + Иначе + КонтактнаяИнформация.Фотография = АдресФотографииПоУмолчанию; + КонецЕсли; + + Возврат КонтактнаяИнформация; +КонецФункции + +&НаСервере +Процедура ЗаполнитьХранимыеПараметры() + + ХранимыеПараметры = Новый Структура; + ХранимыеПараметры.Вставить("ВыборГруппПользователей", Параметры.ВыборГруппПользователей); + +КонецПроцедуры + +&НаСервере +Процедура ОформитьИСкрытьНедействительныхПользователей() + + // Оформление. + ЭлементОформления = ПользователиСписок.КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить(); + ЭлементОформления.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + + ЭлементЦветаОформления = ЭлементОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Недействителен"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Истина; + ЭлементОтбора.Использование = Истина; + + // Скрытие. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "Недействителен", Ложь, , , Истина); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьПорядокГруппыВсеПользователи(Список) + + Перем Порядок; + + // Порядок. + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Предопределенный"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + +КонецПроцедуры + +&НаСервере +Процедура НастроитьПараметрыСпискаПользователейДляКомандыУстановитьПароль() + + ОбновитьЗначениеПараметраКомпоновкиДанных(ПользователиСписок, "ИдентификаторТекущегоПользователяИБ", + ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор); + + ОбновитьЗначениеПараметраКомпоновкиДанных(ПользователиСписок, "ПустойУникальныйИдентификатор", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()); + + ОбновитьЗначениеПараметраКомпоновкиДанных(ПользователиСписок, "ВозможноСменитьТолькоСвойПароль", + Не Пользователи.ЭтоПолноправныйПользователь()); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверкаИзмененияТекущегоЭлементаФормы() + + Если ТекущийЭлемент <> ПоследнийЭлемент Тогда + ПриИзмененииТекущегоЭлементаФормы(); + ПоследнийЭлемент = ТекущийЭлемент; + КонецЕсли; + +#Если ВебКлиент Тогда + ПодключитьОбработчикОжидания("ПроверкаИзмененияТекущегоЭлементаФормы", 0.7, Истина); +#Иначе + ПодключитьОбработчикОжидания("ПроверкаИзмененияТекущегоЭлементаФормы", 0.1, Истина); +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииТекущегоЭлементаФормы() + + Если ТекущийЭлемент = Элементы.ГруппыПользователей Тогда + Элементы.Комментарии.ТекущаяСтраница = Элементы.КомментарийГруппы; + + ИначеЕсли ТекущийЭлемент = Элементы.ПользователиСписок Тогда + Элементы.Комментарии.ТекущаяСтраница = Элементы.КомментарийПользователя; + + КонецЕсли + +КонецПроцедуры + +&НаСервере +Процедура УдалитьИзСпискаВыбранных(УдалитьВсех = Ложь) + + Если УдалитьВсех Тогда + ВыбранныеПользователиИГруппы.Очистить(); + Возврат; + КонецЕсли; + + МассивЭлементовСписка = Элементы.СписокВыбранныхПользователейИГрупп.ВыделенныеСтроки; + Для Каждого ЭлементСписка Из МассивЭлементовСписка Цикл + ВыбранныеПользователиИГруппы.Удалить(ВыбранныеПользователиИГруппы.НайтиПоИдентификатору(ЭлементСписка)); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивВыбранныхЭлементов) + + ВыбранныеЭлементыИКартинки = Новый Массив; + Для Каждого ВыбранныйЭлемент Из МассивВыбранныхЭлементов Цикл + + Если ТипЗнч(ВыбранныйЭлемент) = Тип("СправочникСсылка.Пользователи") Тогда + НомерКартинки = Элементы.ПользователиСписок.ДанныеСтроки(ВыбранныйЭлемент).НомерКартинки; + Иначе + НомерКартинки = Элементы.ГруппыПользователей.ДанныеСтроки(ВыбранныйЭлемент).НомерКартинки; + КонецЕсли; + + ВыбранныеЭлементыИКартинки.Добавить( + Новый Структура("ВыбранныйЭлемент, НомерКартинки", ВыбранныйЭлемент, НомерКартинки)); + КонецЦикла; + + ЗаполнитьСписокВыбранныхПользователейИГрупп(ВыбранныеЭлементыИКартинки); + +КонецПроцедуры + +&НаСервере +Функция РезультатВыбора() + МассивПользователей = Новый Массив; + + ВыбранныеПользователиТаблицаЗначений = ВыбранныеПользователиИГруппы.Выгрузить( , "Пользователь"); + Если ВыборУчастниковОбсуждения И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда + МодульОбсуждения = ОбщегоНазначения.ОбщийМодуль("Обсуждения"); + ИдентификаторыУчастников = МодульОбсуждения.ПользователиСистемыВзаимодействия(ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь")); + Для каждого ПользовательИдентификатор Из ИдентификаторыУчастников Цикл + + Если ПользовательИдентификатор.Значение <> Неопределено Тогда + МассивПользователей.Добавить(ПользовательИдентификатор.Значение.Идентификатор); + КонецЕсли; + + КонецЦикла; + Иначе + МассивПользователей = ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь"); + КонецЕсли; + + Возврат МассивПользователей; +КонецФункции + +&НаСервере +Процедура ИзменитьПараметрыРасширеннойФормыПодбора() + + // Загрузка списка выбранных пользователей. + Если ЗначениеЗаполнено(Параметры.ПараметрыРасширеннойФормыПодбора) Тогда + ПараметрыРасширеннойФормыПодбора = ПолучитьИзВременногоХранилища(Параметры.ПараметрыРасширеннойФормыПодбора); + Иначе + ПараметрыРасширеннойФормыПодбора = Параметры; + КонецЕсли; + Если ТипЗнч(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи) = Тип("ТаблицаЗначений") Тогда + ВыбранныеПользователиИГруппы.Загрузить(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи); + Иначе + Для Каждого ВыбранныйПользователь Из ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи Цикл + ВыбранныеПользователиИГруппы.Добавить().Пользователь = ВыбранныйПользователь; + КонецЦикла; + КонецЕсли; + Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки"); + ХранимыеПараметры.Вставить("ЗаголовокФормыПодбора", ПараметрыРасширеннойФормыПодбора.ЗаголовокФормыПодбора); + + Если ПараметрыРасширеннойФормыПодбора.Свойство("ЗаголовокКнопкиЗавершенияПодбора") Тогда + ХранимыеПараметры.Вставить("ЗаголовокКнопкиЗавершенияПодбора", ПараметрыРасширеннойФормыПодбора.ЗаголовокКнопкиЗавершенияПодбора); + КонецЕсли; + + // Установка параметров расширенной формы подбора. + Элементы.ЗавершитьИЗакрыть.Видимость = Истина; + Элементы.ГруппаВыбратьПользователя.Видимость = Истина; + // Включение видимости списка выбранных пользователей. + Элементы.ВыбранныеПользователиИГруппы.Видимость = Истина; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ГруппыИПользователи.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; + Элементы.ГруппыИПользователи.ВажностьПриОтображении = ВажностьПриОтображении.ОченьВысокая; + Элементы.ГруппаСодержимое.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + Элементы.ГруппаВыбратьГруппу.Видимость = Ложь; + Элементы.ГруппаВыбратьПользователя.Видимость = Ложь; + Элементы.Переместить(Элементы.ВыбранныеПользователиИГруппы, Элементы.ГруппаСодержимое, Элементы.ВыбранныеПользователиИГруппы); + ИначеЕсли ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей") Тогда + Элементы.ГруппыИПользователи.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; + Элементы.ПользователиСписок.Высота = 5; + Элементы.ГруппыПользователей.Высота = 3; + ЭтотОбъект.Высота = 17; + Элементы.ГруппаВыбратьГруппу.Видимость = Истина; + // Включение отображения заголовков списков ПользователиСписок и ГруппыПользователей. + Элементы.ГруппыПользователей.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.ПользователиСписок.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.ПользователиСписок.Заголовок = НСтр("ru = 'Пользователи в группе'"); + Если ПараметрыРасширеннойФормыПодбора.Свойство("ПодборГруппНевозможен") Тогда + Элементы.ВыбратьГруппу.Видимость = Ложь; + КонецЕсли; + Иначе + Элементы.ОтменитьВыборПользователя.Видимость = Истина; + Элементы.ОчиститьСписокВыбранных.Видимость = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьЗаголовокВыбранныхПользователейИГрупп() + + Если ХранимыеПараметры.ИспользоватьГруппы Тогда + Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи и группы'"); + Иначе + Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи'"); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокВыбранныхПользователейИГрупп(ВыбранныеЭлементыИКартинки) + + ПользователиСлужебный.ВыбратьПользователейГруппы( + ВыбранныеЭлементыИКартинки, ХранимыеПараметры, Элементы.ПользователиСписок); + + Для Каждого СтрокаМассива Из ВыбранныеЭлементыИКартинки Цикл + + ВыбранныйПользовательИлиГруппа = СтрокаМассива.ВыбранныйЭлемент; + НомерКартинки = СтрокаМассива.НомерКартинки; + + ПараметрыОтбора = Новый Структура("Пользователь", ВыбранныйПользовательИлиГруппа); + Найденный = ВыбранныеПользователиИГруппы.НайтиСтроки(ПараметрыОтбора); + Если Найденный.Количество() = 0 Тогда + + СтрокаВыбранныеПользователи = ВыбранныеПользователиИГруппы.Добавить(); + СтрокаВыбранныеПользователи.Пользователь = ВыбранныйПользовательИлиГруппа; + СтрокаВыбранныеПользователи.НомерКартинки = НомерКартинки; + СписокВыбранныхПользователейИзменен = Истина; + + КонецЕсли; + + КонецЦикла; + + ВыбранныеПользователиИГруппы.Сортировать("Пользователь Возр"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииИспользованияГруппПользователей() + + НастроитьФормуПоИспользованиюГруппПользователей(Истина); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьФормуПоИспользованиюГруппПользователей(ИзменилосьИспользованиеГрупп = Ложь) + + Если ИзменилосьИспользованиеГрупп Тогда + ХранимыеПараметры.Вставить("ИспользоватьГруппы", ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей")); + КонецЕсли; + + Если ХранимыеПараметры.Свойство("ТекущаяСтрока") Тогда + + Если ТипЗнч(ХранимыеПараметры.ТекущаяСтрока) = Тип("СправочникСсылка.ГруппыПользователей") Тогда + + Если ХранимыеПараметры.ИспользоватьГруппы Тогда + Элементы.ГруппыПользователей.ТекущаяСтрока = ХранимыеПараметры.ТекущаяСтрока; + Иначе + Параметры.ТекущаяСтрока = Неопределено; + КонецЕсли; + Иначе + ТекущийЭлемент = Элементы.ПользователиСписок; + Элементы.ГруппыПользователей.ТекущаяСтрока = Справочники.ГруппыПользователей.ВсеПользователи; + КонецЕсли; + Иначе + Если НЕ ХранимыеПараметры.ИспользоватьГруппы + И Элементы.ГруппыПользователей.ТекущаяСтрока + <> Справочники.ГруппыПользователей.ВсеПользователи Тогда + + Элементы.ГруппыПользователей.ТекущаяСтрока = Справочники.ГруппыПользователей.ВсеПользователи; + КонецЕсли; + КонецЕсли; + + Элементы.ВыбиратьИерархически.Видимость = ХранимыеПараметры.ИспользоватьГруппы; + + Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыПользователей) + Или ХранимыеПараметры.РасширенныйПодбор + Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + + Элементы.НазначитьГруппы.Видимость = Ложь; + Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = Ложь; + Иначе + Элементы.НазначитьГруппы.Видимость = ХранимыеПараметры.ИспользоватьГруппы; + Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = + ХранимыеПараметры.ИспользоватьГруппы; + КонецЕсли; + + Элементы.СоздатьГруппуПользователей.Видимость = + ПравоДоступа("Добавление", Метаданные.Справочники.ГруппыПользователей) + И ХранимыеПараметры.ИспользоватьГруппы + И Не ОбщегоНазначения.ЭтоАвтономноеРабочееМесто(); + + ВыборГруппПользователей = ХранимыеПараметры.ВыборГруппПользователей + И ХранимыеПараметры.ИспользоватьГруппы + И Параметры.РежимВыбора; + + Если Параметры.РежимВыбора Тогда + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьГруппуПользователей", "Видимость", ?(ХранимыеПараметры.РасширенныйПодбор, + Ложь, ВыборГруппПользователей)); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьПользователя", "КнопкаПоУмолчанию", ?(ХранимыеПараметры.РасширенныйПодбор, + Ложь, Не ВыборГруппПользователей)); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьПользователя", "Видимость", Не ХранимыеПараметры.РасширенныйПодбор); + + АвтоЗаголовок = Ложь; + + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + // Режим подбора. + + Если ВыборГруппПользователей Тогда + + Если ХранимыеПараметры.РасширенныйПодбор Тогда + Заголовок = ХранимыеПараметры.ЗаголовокФормыПодбора; + Иначе + Заголовок = НСтр("ru = 'Подбор пользователей и групп'"); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьПользователя", "Заголовок", НСтр("ru = 'Выбрать пользователей'")); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьГруппуПользователей", "Заголовок", НСтр("ru = 'Выбрать группы'")); + Иначе + + Если ХранимыеПараметры.РасширенныйПодбор Тогда + Заголовок = ХранимыеПараметры.ЗаголовокФормыПодбора; + + Если ХранимыеПараметры.Свойство("ЗаголовокКнопкиЗавершенияПодбора") Тогда + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ЗавершитьИЗакрытьВыбор", "Заголовок", ХранимыеПараметры.ЗаголовокКнопкиЗавершенияПодбора); + КонецЕсли; + + Иначе + Заголовок = НСтр("ru = 'Подбор пользователей'"); + КонецЕсли; + + КонецЕсли; + + Иначе + // Режим выбора. + Если ВыборГруппПользователей Тогда + Заголовок = НСтр("ru = 'Выбор пользователя или группы'"); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ВыбратьПользователя", "Заголовок", НСтр("ru = 'Выбрать пользователя'")); + Иначе + Заголовок = НСтр("ru = 'Выбор пользователя'"); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + + // Принудительное обновление видимости после изменения функциональной + // опции без использования команды ОбновитьИнтерфейс. + Элементы.ГруппыПользователей.Видимость = Ложь; + Элементы.ГруппыПользователей.Видимость = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПользователейПослеАктивизацииСтроки() + + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); + + Если Элементы.ПользователиСписок.ТекущиеДанные = Неопределено Тогда + ТекущийПользователь = Неопределено; + ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, Неопределено); + КонецЕсли; + +#Если МобильныйКлиент Тогда + Если ХранимыеПараметры.Свойство("РасширенныйПодбор") И Не ХранимыеПараметры.РасширенныйПодбор Тогда + Элементы.ГруппаГруппы.Заголовок = Строка(Элементы.ГруппыПользователей.ТекущиеДанные.Ссылка); + ТекущийЭлемент = Элементы.ПользователиСписок; + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +&НаСервере +Функция ПеремещениеПользователяВНовуюГруппу(МассивПользователей, НоваяГруппаВладелец, Перемещение) + + Если НоваяГруппаВладелец = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + ТекущаяГруппаВладелец = Элементы.ГруппыПользователей.ТекущаяСтрока; + СообщениеПользователю = ПользователиСлужебный.ПеремещениеПользователяВНовуюГруппу( + МассивПользователей, ТекущаяГруппаВладелец, НоваяГруппаВладелец, Перемещение); + + Элементы.ПользователиСписок.Обновить(); + Элементы.ГруппыПользователей.Обновить(); + + Возврат СообщениеПользователю; + +КонецФункции + +// Обработчик вопроса. +// +// Параметры: +// Ответ - КодВозвратаДиалога +// ДополнительныеПараметры - Структура: +// * ПараметрыПеретаскивания - ПараметрыПеретаскивания +// * Строка - Строка +// * Перемещение - ДействиеПеретаскивания +// +&НаКлиенте +Процедура ГруппыПользователейПеретаскиваниеЗавершение(Ответ, ДополнительныеПараметры) Экспорт + + Если Ответ = КодВозвратаДиалога.Нет Тогда + Возврат; + КонецЕсли; + + СообщениеПользователю = ПеремещениеПользователяВНовуюГруппу( + ДополнительныеПараметры.ПараметрыПеретаскивания, + ДополнительныеПараметры.Строка, + ДополнительныеПараметры.Перемещение); + + Если СообщениеПользователю.Сообщение = Неопределено Тогда + Возврат; + КонецЕсли; + + Если СообщениеПользователю.ЕстьОшибки = Ложь Тогда + ПоказатьОповещениеПользователя( + НСтр("ru = 'Перемещение пользователей'"), , СообщениеПользователю.Сообщение, БиблиотекаКартинок.Информация32); + Иначе + ПоказатьПредупреждение(,СообщениеПользователю.Сообщение); + КонецЕсли; + + Оповестить("Запись_ГруппыВнешнихПользователей"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПереключитьОтображениеНедействительныхПользователей(ПоказатьНедействительных) + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "Недействителен", Ложь, , , + НЕ ПоказатьНедействительных); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьСодержимоеФормыПриИзмененииГруппы(Форма) + + Элементы = Форма.Элементы; + ГруппаВсеПользователи = ПредопределенноеЗначение( + "Справочник.ГруппыПользователей.ВсеПользователи"); + Если НЕ ЗначениеЗаполнено(Форма.ТекущийПользователь) Тогда + Форма.АдресФотографии = Форма.АдресПользовательБезФотографии; + КонецЕсли; + + + Если НЕ Форма.ХранимыеПараметры.ИспользоватьГруппы + ИЛИ Элементы.ГруппыПользователей.ТекущаяСтрока = ГруппаВсеПользователи Тогда + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ПользователиСписок, + "ВсеПользователи", Истина); + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ПользователиСписок, + "ВыбиратьИерархически", Ложь); + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ПользователиСписок, + "ГруппаПользователей", ГруппаВсеПользователи); + Иначе + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ПользователиСписок, + "ВсеПользователи", Ложь); + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ПользователиСписок, + "ВыбиратьИерархически", Форма.ВыбиратьИерархически); + + ОбновитьЗначениеПараметраКомпоновкиДанных(Форма.ПользователиСписок, + "ГруппаПользователей", Элементы.ГруппыПользователей.ТекущаяСтрока); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьЗначениеПараметраКомпоновкиДанных(Знач ВладелецПараметров, + Знач ИмяПараметра, + Знач ЗначениеПараметра) + + Для каждого Параметр Из ВладелецПараметров.Параметры.Элементы Цикл + Если Строка(Параметр.Параметр) = ИмяПараметра Тогда + + Если Параметр.Использование + И Параметр.Значение = ЗначениеПараметра Тогда + Возврат; + КонецЕсли; + Прервать; + + КонецЕсли; + КонецЦикла; + + ВладелецПараметров.Параметры.УстановитьЗначениеПараметра(ИмяПараметра, ЗначениеПараметра); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриИзмененииНаСервере() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа(); + КонецЕсли; + +КонецПроцедуры + +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.ПользователиСписок); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.ПользователиСписок); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.ПользователиСписок); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..1a75f123 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,4514 @@ + + + + ГруппаСлужебныйПользователь + 338 + + СлужебныйПользовательКартинка + 340 + + <key>ru</key> + <value>Служебный пользователь картинка</value> + + true + true + + true + + + СлужебныйПользовательКартинкаРасширеннаяПодсказка + 342 + true + true + + true + + Label + true + true + + Left + + + + СлужебныйПользовательКартинкаКонтекстноеМеню + 341 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + СлужебныйПользовательНадпись + 335 + + <key>ru</key> + <value>Это служебный пользователь для автоматизации некоторых действий в программе.</value> + + true + true + + true + + + ru + Служебный пользователь создается и изменяется автоматически, +скрывается при выборе и подборе, а также в списке пользователей. + + + СлужебныйПользовательНадписьРасширеннаяПодсказка + 337 + true + true + + true + + Label + true + true + + Left + + + + СлужебныйПользовательНадписьКонтекстноеМеню + 336 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Служебный пользователь</value> + + + ГруппаСлужебныйПользовательРасширеннаяПодсказка + 339 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + СвойстваОбработкаНесоответствия + 164 + + СвойстваКартинкаПредупреждения + 165 + + <key>ru</key> + <value>Свойства картинка предупреждения</value> + + true + true + + true + + + СвойстваКартинкаПредупрежденияРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + + СвойстваКартинкаПредупрежденияКонтекстноеМеню + 166 + true + true + + true + + true + + true + true + false + + + CommonPicture.Предупреждение32 + + + + + СвойстваПояснениеИКоманды + 167 + + СвойстваПояснениеНесоответствия + 168 + + <key>ru</key> + <value>Следующие свойства пользователя информационной базы отличаются от указанных в этой форме: +%1. +Нажмите "Записать", чтобы устранить различия и не выводить это предупреждение.</value> + + true + true + + true + + + ru + Некоторые свойства пользователя информационной базы сохраняются в карточке пользователя. Между значениями этих свойств найдены различия. + + + СвойстваПояснениеНесоответствияРасширеннаяПодсказка + 211 + true + true + + true + + Label + true + true + + Left + + + + СвойстваПояснениеНесоответствияКонтекстноеМеню + 169 + true + true + + true + + true + + Label + true + false + + Left + Top + + + + СвойстваКомандыУстраненияРазличий + 263 + + ЗаполнитьИзПользователяИБ + 170 + true + true + + true + + false + + ЗаполнитьИзПользователяИБРасширеннаяПодсказка + 212 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ЗаполнитьИзПользователяИБ + Auto + true + true + UserCmds + Auto + + + Записать + 261 + true + true + + true + + + ЗаписатьРасширеннаяПодсказка + 262 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.StandardCommand.Write + PictureAndText + 10 + true + true + UserCmds + + StdPicture.Write + + Auto + + true + true + + true + + + <key>ru</key> + <value>Свойства команды устранения различий</value> + + + СвойстваКомандыУстраненияРазличийРасширеннаяПодсказка + 264 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Свойства пояснение и команды</value> + + + СвойстваПояснениеИКомандыРасширеннаяПодсказка + 210 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Свойства обработка несоответствия</value> + + + СвойстваОбработкаНесоответствияРасширеннаяПодсказка + 208 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + СопоставлениеОбработкаНесоответствия + 171 + + СопоставлениеКартинкаПредупреждения + 172 + + <key>ru</key> + <value>Сопоставление картинка предупреждения</value> + + true + true + + true + + + СопоставлениеКартинкаПредупрежденияРасширеннаяПодсказка + 214 + true + true + + true + + Label + true + true + + Left + + + + СопоставлениеКартинкаПредупрежденияКонтекстноеМеню + 173 + true + true + + true + + true + + true + true + false + + + CommonPicture.Предупреждение32 + + + + + СопоставлениеПояснениеНесоответствия + 175 + + <key>ru</key> + <value>Пользователь информационной базы не найден. +Нажмите "Записать", чтобы устранить проблему и не выводить это предупреждение.</value> + + true + true + + true + + + СопоставлениеПояснениеНесоответствияРасширеннаяПодсказка + 215 + true + true + + true + + Label + true + true + + Left + + + + СопоставлениеПояснениеНесоответствияКонтекстноеМеню + 176 + true + true + + true + + true + + Label + 2 + true + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Сопоставление обработка несоответствия</value> + + + СопоставлениеОбработкаНесоответствияРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ГруппаШапка + 277 + + Фотография + 353 + true + true + + true + + + + АдресФотографии + + + None + + ФотографияРасширеннаяПодсказка + 355 + true + true + + true + + Label + true + true + + Left + + + + ФотографияКонтекстноеМеню + 354 + true + true + + true + + true + + PictureField + Center + Enter + true + Left + true + + + Click + ФотографияНажатие + + 7 + true + 4 + true + Proportionally + true + + ru + Добавить фото + + AsFileRef + + + + ГруппаДанныеШапки + 351 + + ГруппаНаименование + 329 + + Наименование + 49 + true + true + + true + + + + Объект.Description + + + + OnChange + НаименованиеПриИзменении + + + НаименованиеExtendedTooltip + 216 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 50 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 22 + true + true + true + true + true + + Style.BorderColor + + + + + Недействителен + 194 + true + true + + true + + + + Объект.Недействителен + + + Right + Button + + OnChange + НедействителенПриИзменении + + + НедействителенExtendedTooltip + 217 + true + true + + true + + Label + true + true + + Left + + + + НедействителенКонтекстноеМеню + 195 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование</value> + + + ГруппаНаименованиеРасширеннаяПодсказка + 330 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ФизическоеЛицо + 296 + true + true + + true + + + + Объект.ФизическоеЛицо + + + + ФизическоеЛицоРасширеннаяПодсказка + 298 + true + true + + true + + Label + true + true + + Left + + + + ФизическоеЛицоКонтекстноеМеню + 297 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Подразделение + 299 + true + true + + true + + + + Объект.Подразделение + + + + ПодразделениеРасширеннаяПодсказка + 301 + true + true + + true + + Label + true + true + + Left + + + + ПодразделениеКонтекстноеМеню + 300 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Данные шапки</value> + + + ГруппаДанныеШапкиРасширеннаяПодсказка + 352 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 278 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаВходВПрограммуРазрешен + 265 + + ВходВПрограммуРазрешен + 99 + true + true + + true + + + + ВходВПрограммуРазрешен + + + Right + + ru + Разрешить вход пользователя в программу +указанными способами аутентификации. + + + OnChange + ВходВПрограммуРазрешенПриИзменении + + + ВходВПрограммуРазрешенРасширеннаяПодсказка + 218 + true + true + + true + + Label + true + true + + Left + + + + ВходВПрограммуРазрешенКонтекстноеМеню + 100 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаИзменитьОграничение + 331 + + ИзменитьОграничениеНаВходВПрограмму + 333 + true + true + + true + + + ИзменитьОграничениеНаВходВПрограммуРасширеннаяПодсказка + 334 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ИзменитьОграничениеНаВходВПрограмму + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Изменить ограничение</value> + + + ГруппаИзменитьОграничениеРасширеннаяПодсказка + 332 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + РекомендуетсяПроверитьНастройкиДляВхода + 267 + + <key>ru</key> + <value>Рекомендуется проверить настройки для входа</value> + + true + true + + true + + + ru + Перед разрешением входа в программу рекомендуется проверить настройки, т.к. пользователь +был введен не администратором, а ответственным за список пользователей. + + Button + + РекомендуетсяПроверитьНастройкиДляВходаРасширеннаяПодсказка + 269 + true + true + + true + + Label + true + true + + Left + + + + РекомендуетсяПроверитьНастройкиДляВходаКонтекстноеМеню + 268 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Вход в программу разрешен</value> + + + ГруппаВходВПрограммуРазрешенРасширеннаяПодсказка + 266 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Страницы + 70 + + СвойстваПользователяИБ + 65 + + ОсновныеСвойства + 75 + + ИмяПереключениеОтметкиНезаполненного + 249 + + ИмяСОтметкойНезаполненного + 251 + + ПользовательИБИмя1 + 95 + true + true + + true + + + + ПользовательИБИмя + + + + OnChange + ПользовательИБИмяПриИзменении + + + ПользовательИБИмя1РасширеннаяПодсказка + 222 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБИмя1КонтекстноеМеню + 96 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Имя с отметкой незаполненного</value> + + + ИмяСОтметкойНезаполненногоРасширеннаяПодсказка + 252 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ИмяБезОтметкиНезаполненного + 253 + + ПользовательИБИмя2 + 255 + true + true + + true + + + + ПользовательИБИмя + + + + OnChange + ПользовательИБИмяПриИзменении + + + ПользовательИБИмя2РасширеннаяПодсказка + 257 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБИмя2КонтекстноеМеню + 256 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Имя без отметки незаполненного</value> + + + ИмяБезОтметкиНезаполненногоРасширеннаяПодсказка + 254 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Имя (переключение отметки незаполненного)</value> + + + ИмяПереключениеОтметкиНезаполненногоРасширеннаяПодсказка + 250 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + СвойстваАутентификации1СПредприятия + 10 + + ПользовательИБАутентификацияСтандартная + 19 + true + true + + true + + + + ПользовательИБАутентификацияСтандартная + + + Right + + ru + Способ входа в программу с помощью имени и пароля, +указанного для пользователя 1С:Предприятия. + + + OnChange + ПользовательИБАутентификацияСтандартнаяПриИзменении + + + ПользовательИБАутентификацияСтандартнаяРасширеннаяПодсказка + 224 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБАутентификацияСтандартнаяКонтекстноеМеню + 20 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + Left + + + + ГруппаОтступ + 270 + + Отступ + 272 + true + true + + true + + + ОтступРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + + ОтступКонтекстноеМеню + 273 + true + true + + true + + true + + Label + true + true + + Left + + + + ПараметрыАутентификации1СПредприятия + 201 + + ГруппаПароль + 319 + + НадписьНаличиеПароля + 321 + + <key>ru</key> + <value>Пустой пароль</value> + + true + true + + true + + + НадписьНаличиеПароляРасширеннаяПодсказка + 323 + true + true + + true + + Label + true + true + + Left + + + + НадписьНаличиеПароляКонтекстноеМеню + 322 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + + СменитьПароль + 324 + true + true + + true + + + СменитьПарольРасширеннаяПодсказка + 325 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.СменитьПароль + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Пароль</value> + + + ГруппаПарольРасширеннаяПодсказка + 320 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ПотребоватьСменуПароляПриВходе + 316 + true + true + + true + + + + ПотребоватьСменуПароляПриВходе + + + Right + Button + + OnChange + ПотребоватьСменуПароляПриВходеПриИзменении + + + ПотребоватьСменуПароляПриВходеРасширеннаяПодсказка + 318 + true + true + + true + + true + Label + true + true + + + URLProcessing + ПотребоватьСменуПароляПриВходеРасширеннаяПодсказкаОбработкаНавигационнойСсылки + + Left + + + + ПотребоватьСменуПароляПриВходеКонтекстноеМеню + 317 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПользовательИБЗапрещеноИзменятьПароль + 51 + true + true + + true + + + + ПользовательИБЗапрещеноИзменятьПароль + + + Right + + ru + Запрещает изменение своего пароля +неполноправному пользователю, +а также при входе. + + + OnChange + ПользовательИБЗапрещеноИзменятьПарольПриИзменении + + + ПользовательИБЗапрещеноИзменятьПарольРасширеннаяПодсказка + 229 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБЗапрещеноИзменятьПарольКонтекстноеМеню + 52 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПользовательИБЗапрещеноВосстанавливатьПароль + 366 + true + true + + true + + + + ПользовательИБЗапрещеноВосстанавливатьПароль + + + Right + + ПользовательИБЗапрещеноВосстанавливатьПарольРасширеннаяПодсказка + 368 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБЗапрещеноВосстанавливатьПарольКонтекстноеМеню + 367 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПользовательИБПоказыватьВСпискеВыбора + 25 + true + true + + true + + + + ПользовательИБПоказыватьВСпискеВыбора + + + Right + + OnChange + ПользовательИБПоказыватьВСпискеВыбораПриИзменении + + + ПользовательИБПоказыватьВСпискеВыбораРасширеннаяПодсказка + 228 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБПоказыватьВСпискеВыбораКонтекстноеМеню + 26 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Параметры аутентификации 1С:Предприятия</value> + + + ПараметрыАутентификации1СПредприятияРасширеннаяПодсказка + 225 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Отступ</value> + + + ГруппаОтступРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Свойства аутентификации 1С предприятия</value> + + + СвойстваАутентификации1СПредприятияExtendedTooltip + 223 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + СвойстваАутентификацииOpenID + 275 + + ПользовательИБАутентификацияOpenID + 205 + true + true + + true + + + + ПользовательИБАутентификацияOpenID + + + Right + + ru + Способ входа в программу с помощью имени, указанного для пользователя 1С:Предприятия, +которое передается службе аутентификации по протоколу OpenID. +Используется только при подключении через веб-сервер (адрес службы должен быть настроен). + + + OnChange + ПользовательИБАутентификацияOpenIDПриИзменении + + + ПользовательИБАутентификацияOpenIDРасширеннаяПодсказка + 230 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБАутентификацияOpenIDКонтекстноеМеню + 206 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Свойства аутентификации open ID</value> + + + СвойстваАутентификацииOpenIDРасширеннаяПодсказка + 276 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + СвойстваАутентификацииОС + 11 + + ПользовательИБАутентификацияОС + 27 + true + true + + true + + + + ПользовательИБАутентификацияОС + + + Right + + ru + Способ входа в программу с помощью имени и пароля, +указанного для пользователя операционной системы, +связанного с пользователем 1С:Предприятия. + + + OnChange + ПользовательИБАутентификацияОСПриИзменении + + + ПользовательИБАутентификацияОСРасширеннаяПодсказка + 232 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБАутентификацияОСКонтекстноеМеню + 28 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + Left + + + + СвойстваПараметрыАутентификацииОС + 202 + + ДекорацияОтступ + 203 + true + true + + true + + + ДекорацияОтступExtendedTooltip + 234 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияОтступКонтекстноеМеню + 204 + true + true + + true + + true + + Label + true + + Left + + + + ПользовательИБПользовательОС + 29 + true + true + + true + + + + ПользовательИБПользовательОС + + + Left + + ru + Пользователь операционной системы + + + OnChange + ПользовательИБПользовательОСПриИзменении + + + ПользовательИБПользовательОСРасширеннаяПодсказка + 235 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБПользовательОСКонтекстноеМеню + 30 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + + StartChoice + ПользовательИБПользовательОСНачалоВыбора + + true + true + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Свойства параметры аутентификации ОС</value> + + + СвойстваПараметрыАутентификацииОСExtendedTooltip + 233 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Аутентификация операционной системы</value> + + + СвойстваАутентификацииОСExtendedTooltip + 231 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + СвойстваДополнительные + 91 + + ПользовательИБЯзык + 196 + true + true + + true + + + + ПользовательИБЯзык + + + + OnChange + ПользовательИБЯзыкПриИзменении + + + ПользовательИБЯзыкРасширеннаяПодсказка + 237 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБЯзыкКонтекстноеМеню + 197 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + true + true + + Style.BorderColor + + + + + ПользовательИБРежимЗапуска + 198 + true + true + + true + + + + ПользовательИБРежимЗапуска + + + + OnChange + ПользовательИБРежимЗапускаПриИзменении + + + ПользовательИБРежимЗапускаРасширеннаяПодсказка + 238 + true + true + + true + + Label + true + true + + Left + + + + ПользовательИБРежимЗапускаКонтекстноеМеню + 199 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + ПользовательИБРежимЗапускаОчистка + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Свойства дополнительные</value> + + false + + СвойстваДополнительныеExtendedTooltip + 236 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Equal + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Основные свойства</value> + + + ОсновныеСвойстваExtendedTooltip + 221 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ОтображениеРолей + 192 + + Роли + 177 + + <key>ru</key> + <value>Разрешенные действия (роли)</value> + + true + true + + true + + + Роли + + false + Top + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + РолиКолонок + 180 + + РолиПометка + 188 + true + true + + true + + + + Роли.Пометка + + + + OnChange + РолиПометкаПриИзменении + + + РолиПометкаExtendedTooltip + 246 + true + true + + true + + Label + true + true + + Left + + + + РолиПометкаКонтекстноеМеню + 189 + true + true + + true + + true + + CheckBoxField + Left + true + + + + РолиСиноним + 190 + true + true + + true + + + + Роли.Синоним + + + + РолиСинонимExtendedTooltip + 247 + true + true + + true + + Label + true + true + + Left + + + + РолиСинонимКонтекстноеМеню + 191 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Роли колонок</value> + + + РолиКолонокExtendedTooltip + 245 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + РолиКоманднаяПанель + 179 + + РолиУстановитьФлажки + 185 + true + true + + true + + false + + РолиУстановитьФлажкиExtendedTooltip + 240 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьРоли + Auto + true + true + UserCmds + Auto + + + РолиСнятьФлажки + 186 + true + true + + true + + false + + РолиСнятьФлажкиExtendedTooltip + 241 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИсключитьРоли + Auto + true + true + UserCmds + Auto + + + РолиПоказатьТолькоВыбранныеРоли + 187 + true + true + + true + + false + + РолиПоказатьТолькоВыбранныеРолиExtendedTooltip + 242 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьТолькоВыбранныеРоли + Auto + true + true + UserCmds + Auto + + + РолиПоказатьПодсистемыРолей + 193 + true + true + + true + + + РолиПоказатьПодсистемыРолейExtendedTooltip + 243 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ГруппировкаРолейПоПодсистемам + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + РолиСтандартныеКоманды + 281 + true + true + + true + + + <key>ru</key> + <value>Роли стандартные команды</value> + + + РолиСтандартныеКомандыРасширеннаяПодсказка + 282 + true + true + + true + + Label + true + true + + Left + + + + Item.Роли + + + true + true + + true + + Left + + + true + true + + true + + РолиСтрокаПоиска + 283 + + РолиСтрокаПоискаРасширеннаяПодсказка + 285 + true + true + + true + + Label + true + true + + Left + + + + РолиСтрокаПоискаКонтекстноеМеню + 284 + true + true + + true + + true + + + true + + + + true + true + + true + + РолиСостояниеПросмотра + 286 + + РолиСостояниеПросмотраРасширеннаяПодсказка + 288 + true + true + + true + + Label + true + true + + Left + + + + РолиСостояниеПросмотраКонтекстноеМеню + 287 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РолиУправлениеПоиском + 289 + + РолиУправлениеПоискомРасширеннаяПодсказка + 291 + true + true + + true + + Label + true + true + + Left + + + + РолиУправлениеПоискомКонтекстноеМеню + 290 + true + true + + true + + true + + SearchControlAddition + + true + + + + РолиExtendedTooltip + 244 + true + true + + true + + Label + true + true + + Left + + + + РолиКонтекстноеМеню + 178 + true + true + + true + + + Tree + true + true + true + 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true + + Роли.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + + true + true + + true + + + <key>ru</key> + <value>Разрешенные действия (роли)</value> + + + ОтображениеРолейExtendedTooltip + 239 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Главное</value> + + + СвойстваПользователяИБExtendedTooltip + 220 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + КонтактнаяИнформация + 71 + true + true + + true + + + <key>ru</key> + <value>Адреса, телефоны</value> + + + КонтактнаяИнформацияExtendedTooltip + 248 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаДополнительныеРеквизиты + 292 + true + true + + true + + + <key>ru</key> + <value>Дополнительные реквизиты</value> + + + СтраницаДополнительныеРеквизитыРасширеннаяПодсказка + 293 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаКомментарий + 279 + + Комментарий + 258 + true + true + + true + + + + Объект.Комментарий + + + None + + КомментарийExtendedTooltip + 260 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 259 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + СтраницаКомментарийРасширеннаяПодсказка + 280 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыExtendedTooltip + 219 + true + true + + true + + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + СтраницыПриСменеСтраницы + + TabsOnTop + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 345 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 346 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + true + true + true + UserCmds + + StdPicture.WriteAndClose + + Auto + + + КомандыФормы + 347 + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыРасширеннаяПодсказка + 348 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 349 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 350 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + + ФормаОчиститьФотографию + 356 + true + true + + true + + + ФормаОчиститьФотографиюРасширеннаяПодсказка + 357 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОчиститьФотографию + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПодменюОтчеты + 358 + + ПодменюОтчетыВажное + 360 + true + true + + true + + + <key>ru</key> + <value>Подменю отчеты важное</value> + + + ПодменюОтчетыВажноеРасширеннаяПодсказка + 361 + true + true + + true + + Label + true + true + + Left + + + + + + ПодменюОтчетыПерейти + 362 + true + true + + true + + + <key>ru</key> + <value>Подменю отчеты перейти</value> + + + ru + Подменю отчеты важное + + + ПодменюОтчетыПерейтиРасширеннаяПодсказка + 363 + true + true + + true + + Label + true + true + + Left + + + + + + ПодменюОтчетыСмТакже + 364 + true + true + + true + + + <key>ru</key> + <value>Подменю отчеты см также</value> + + + ru + Подменю отчеты важное + + + ПодменюОтчетыСмТакжеРасширеннаяПодсказка + 365 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Отчеты</value> + + + ПодменюОтчетыРасширеннаяПодсказка + 359 + true + true + + true + + Label + true + true + + Left + + + Popup + + + CommonPicture.Отчеты + + PictureAndText + + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + WriteAndClose + Use + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.Пользователи + + + true + + + true + +
true
+ true +
+ + ПользовательИБАутентификацияСтандартная + + <key>ru</key> + <value>Аутентификация 1С:Предприятия</value> + + 2 + + Boolean + + + true + + + true + + true + + + ПользовательИБПоказыватьВСпискеВыбора + + <key>ru</key> + <value>Показывать в списке выбора</value> + + 6 + + Boolean + + + true + + + true + + true + + + ПользовательИБАутентификацияОС + + <key>ru</key> + <value>Аутентификация операционной системы</value> + + 7 + + Boolean + + + true + + + true + + true + + + ПользовательИБПользовательОС + + <key>ru</key> + <value>Пользователь</value> + + 8 + + String + + + + true + + + true + + true + + + ПользовательИБЗапрещеноИзменятьПароль + + <key>ru</key> + <value>Пользователю запрещено изменять пароль</value> + + 13 + + Boolean + + + true + + + true + + true + + + ПользовательИБИмя + + <key>ru</key> + <value>Имя (для входа)</value> + + 16 + + String + + + + true + + + true + + true + + + ВходВПрограммуРазрешен + + <key>ru</key> + <value>Вход в программу разрешен</value> + + 17 + + Boolean + + + true + + + true + + true + + + ПользовательИБПолноеИмя + 14 + + String + + + + true + + + true + + true + + + ПользовательИБСуществует + 23 + + Boolean + + + true + + + true + + true + + + ГруппаНовогоПользователя + 21 + + CatalogRef.ГруппыПользователей + + + true + + + true + + + + ДействияВФорме + 22 + + + true + + + true + + + + ТекущееНаименование + 20 + + String + + + + true + + + true + + + + ЕстьСопоставлениеСНесуществующимПользователемИБ + 18 + + Boolean + + + true + + + true + + + + Роли + + <key>ru</key> + <value>Роли</value> + + 11 + + ValueTree + + + true + + + true + + true + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 1 + + Boolean + + + true + + + true + + + + Синоним + + <key>ru</key> + <value>Разрешенное действие (роль)</value> + + 2 + + String + + + + true + + + true + + + + НомерКартинки + 3 + + Number + + 1 + true + + + + true + + + true + + + + Имя + 4 + + String + + + + true + + + true + + + + ЭтоРоль + 5 + + Boolean + + + true + + + true + + + + ЭтоНедоступнаяРоль + 6 + + Boolean + + + true + + + true + + + + ЭтоНесуществующаяРоль + 7 + + Boolean + + + true + + + true + + + + + ПользовательИБРоли + 12 + + ValueTable + + + true + + + true + + + Роль + 1 + + String + + 150 + + + + true + + + true + + + + + ПоказатьПодсистемыРолей + 19 + + Boolean + + + true + + + true + + + ПоказатьПодсистемыРолей + + + + ПользовательИБРежимЗапуска + + <key>ru</key> + <value>Режим запуска</value> + + 10 + + String + + + + true + + + true + + true + + + ПользовательИБЯзык + + <key>ru</key> + <value>Язык интерфейса +программы</value> + + 15 + + String + + + + true + + + true + + true + + + ЗначениеКопирования + 9 + + CatalogRef.Пользователи + + + true + + + true + + + + ПользовательИБАутентификацияOpenID + + <key>ru</key> + <value>Аутентификация по протоколу OpenID</value> + + 25 + + Boolean + + + true + + + true + + true + + + ПарольПользователяСервиса + 26 + + + true + + + true + + + + ДействияСПользователемСервиса + 27 + + + true + + + true + + + + ЗапретИзмененияАдминистративногоДоступа + 28 + + Boolean + + + true + + + true + + + + ТребуетсяСинхронизацияССервисом + 29 + + Boolean + + + true + + + true + + + + ЗапросПароляПередЗаписью + 30 + + Boolean + + + true + + + true + + + + НачальноеОписаниеПользователяИБ + 31 + + + true + + + true + + + + УровеньДоступа + 32 + + + true + + + true + + + + ПриЧтенииВходВПрограммуРазрешен + 24 + + Boolean + + + true + + + true + + + + ВходВПрограммуРазрешенЗначениеПрямогоИзменения + 33 + + Boolean + + + true + + + true + + + + ПотребоватьСменуПароляПриВходе + + <key>ru</key> + <value>Потребовать смену пароля при входе</value> + + 35 + + Boolean + + + true + + + true + + true + + + СрокДействия + 36 + + Date + + Date + + + + true + + + true + + true + + + СрокДействияНеОграничен + 37 + + Boolean + + + true + + + true + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВхода + 38 + + Number + + 3 + true + + + + true + + + true + + + + ПользовательИБИмяЗначениеПрямогоИзменения + 39 + + String + + + + true + + + true + + + + ПользовательИБПароль + 40 + + + true + + + true + + true + + + ПользовательИБСтарыйПароль + 41 + + + true + + + true + + + + ПользовательИБОсновнойИнтерфейс + 42 + + String + + + + true + + + true + + true + + + ПредлагатьОбсуждения + 43 + + Boolean + + + true + + + true + + + + ПредлагатьОбсужденияТекст + 44 + + String + + + + true + + + true + + + + ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения + 3 + + Boolean + + + true + + + true + + + + АдресФотографии + + <key>ru</key> + <value>Фотография</value> + + 4 + + String + + + + true + + + true + + true + + + ФотографияЗадана + 5 + + Boolean + + + true + + + true + + + + ПользовательИБАдресЭлектроннойПочты + 34 + + String + + 256 + + + + true + + + true + + FunctionalOption.ИспользоватьВнешнихПользователей + true + + + ПарольДляПодтвержденияИзмененияПочты + 45 + + + true + + + true + + + + ИмяРеквизитаСПочтойДляВосстановленияПароля + 46 + + String + + + + true + + + true + + + + ПользовательИБЗапрещеноВосстанавливатьПароль + + <key>ru</key> + <value>Пользователю запрещено восстанавливать пароль</value> + + 47 + + Boolean + + + true + + + true + + true + + + ПоказатьТолькоВыбранныеРоли + + <key>ru</key> + <value>Только выбранные</value> + + 1 + + ru + Показать только выбранные роли + + + true + + + CommonPicture.ПоказатьТолькоВыбранныеРоли + + + + ПоказатьТолькоВыбранныеРоли + + + TextPicture + DontUse + + + ИсключитьРоли + + <key>ru</key> + <value>Исключить роли</value> + + 2 + + ru + Исключить роли + + + true + + + StdPicture.UncheckAll + + + + ИсключитьРоли + + + true + DontUse + + + ВключитьРоли + + <key>ru</key> + <value>Включить роли</value> + + 3 + + ru + Включить роли + + + true + + + StdPicture.CheckAll + + + + ВключитьРоли + + + true + DontUse + + + ЗаполнитьИзПользователяИБ + + <key>ru</key> + <value>Заполнить из пользователя ИБ</value> + + 4 + + ru + Заполнить значения из свойств пользователя информационной базы + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьИзПользователяИБ + + + TextPicture + true + DontUse + + + ГруппировкаРолейПоПодсистемам + + <key>ru</key> + <value>По подсистемам</value> + + 5 + + ru + Группировать список ролей по подсистемам + + + true + + + CommonPicture.Подсистема + + + + ГруппировкаРолейПоПодсистемам + + + TextPicture + DontUse + + + СменитьПароль + + <key>ru</key> + <value>Сменить пароль...</value> + + 6 + + true + + + + СменитьПароль + + + DontUse + + + ИзменитьОграничениеНаВходВПрограмму + + <key>ru</key> + <value>Изменить ограничение</value> + + 7 + + true + + + + ИзменитьОграничениеНаВходВПрограмму + + + DontUse + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 8 + + ru + Записать объект и закрыть форму + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + ОчиститьФотографию + + <key>ru</key> + <value>Очистить фотографию</value> + + 9 + + ru + Очистить фотографию + + + true + + + + ОчиститьФотографию + + + Text + true + Auto + + + ГруппаНовогоПользователя + + CatalogRef.ГруппыПользователей + + + + ИдентификаторПользователяИБ + + UUID + + + + + + 4:440d115d-a769-427e-891a-88d65fba2057 + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..ebaa8a7d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,106 @@ + +

Предназначена для описания свойств пользователя.

+

Для ввода или редактирования сведений о пользователе необходимы права администрирования или ответственного за список пользователей

+

Вход в программу разрешает только администратор. 

+

Ответственный за список может выполнять ограниченное ведение списка пользователей, настройку пользователя до разрешения входа в программу администратором, может редактировать списки Пользователи и Группы пользователей, а также права доступа пользователей.

+

В остальных случаях доступен только просмотр сведений о себе, а также возможность изменить свой Пароль (в зависимости от настроек администратора), язык программы и контактную информацию.

+

В распределенной информационной базе вход в программу настраивается отдельно для каждой из информационных баз программы.

+

Установка и смена пароля

+
  • +
    Любой пользователь может просмотреть сведения о себе в персональных настройках программы.
    +
  • +
  • +
    Администратор или пользователь при необходимости (и наличии прав) может установить пароль или сменить его.
    +
  • +
  • +
    Нажмите кнопку Установить пароль. Если пароль уже установлен, можно сменить пароль. Для этого нажмите кнопку Сменить пароль, введите новый пароль.

Рекомендации по созданию пароля для входа в программу

+

Хороший пароль должен:

+
  • быть малопонятным выражением. +
  • +
  • состоять не менее чем из восьми символов. +
  • +
  • включать в себя: +
    • заглавные латинские буквы +
    • +
    • прописные латинские буквы +
    • +
    • цифры +
    • +
    • символы (подчеркивание, скобки и т.д.)

Нежелательно, чтобы пароль совпадал с именем пользователя, полностью состоял из цифр, содержал понятные слова, содержал чередующиеся группы символов.

+
  • Примеры хороших паролей:
    “nj7{jhjibq*Gfhjkm,
    F5”njnGhkmNj;t{HI. +
  • +
  • Примеры неудачных паролей:
    Иванов,
    qwerty,
    12345678,
    123123123.

Ввод пользователя (при наличии права)

+

Если пользователя ввел ответственный за список и заполнил имя для входа, тогда администратору в карточке пользователя выводится рекомендация проверить настройки для входа. После разрешения входа рекомендация скрывается, а ответственный более не может изменить настройки для входа, кроме отключения разрешения на вход в программу. Для того чтобы посмотреть всех таких пользователей, которых подготовил ответственный, можно установить отбор в списке по полю Подготовлен.

+

Сведения о пользователе располагаются на вкладках:

+
  • Главное +
    • Введите Полное имя пользователя, которое будет отображаться в программе в различных списках и отчетах программы. +
    • +
    • Флажок Недействителен по умолчанию снят для всех пользователей. Но если пользователь по каким-либо причинам более не работает с программой (например, уволен), и в то же время его нельзя удалить из-за наличия ссылок на него из других объектов программы, то рекомендуется установить флажок Недействителен. Такого пользователя нельзя выбрать, например, как исполнителя задачи или ответственного за документ, и он не отображается в списке пользователей. Если пользователя нужно восстановить в программе (например, его снова взяли на работу), то можно снять флажок и снова использовать эти данные. +
    • +
    • Имя (для входа) - короткое имя, используется для входа в программу. Может отличаться от полного имени (например, "Иванов", а полное имя - "Иванов Иван Иванович"). +
    • +
    • Аутентификация 1С:Предприятия - по умолчанию флажок включен и активно поле для ввода пароля. +
      • Состояние аутентификации 1С:Предприятия выводится под флажком.
    • +
    • Нажмите кнопку Установить пароль, - введите пароль для входа в программу. В целях безопасности данных всегда заполняйте это поле. +
      • Если данные пользователя еще не были записаны, выводится сообщение. Нажмите кнопку Записать. +
      • +
      • После установки пароля состояние аутентификации меняется на Пароль установлен.
    • +
    • Потребовать смену пароля при входе - включите флажок, в этом случае пользователь будет обязан самостоятельно ввести свой пароль, который больше никто не будет знать. Для удобства администрирования и обеспечения безопасности у всех пользователей добавлен этот реквизит, который нужен, чтобы пользователь сменил пароль, заданный администратором, на свой. +
    • +
    • Показывать в списке выбора - для того чтобы включить пользователя в список выбора, который выводится при начале работы с программой, включите флажок. Если в программе используются внешние пользователи, то этот флажок не рекомендуется устанавливать. Если флажок не установлен, то при входе в программу имя такого пользователя будет скрыто из списка выбора. +
    • +
    • Пользователю запрещено изменять пароль - Если пароли в программе должен будет вводить только администратор, при необходимости включите флажок и запретите пользователю менять свой пароль. В этом случае при открытии учетной записи пользователем кнопка Установить пароль (Сменить пароль) станет недоступной. +
    • +
    • Аутентификация по протоколу OpenID - включите флажок, чтобы разрешить пользователю использовать единую учетную запись по протоколу OpenID. Данная функция используется для работы в веб-клиенте 1С:Предприятия. Для корректной работы программы в этом случае должен быть также включен флажок Аутентификация 1С: Предприятия. +
    • +
    • Аутентификация операционной системы - для того чтобы упростить вход в программу, включите этот флажок. +
      • В поле Пользователь с помощью кнопки  выберите, под каким именем данный пользователь работает в операционной системе. Под этим именем он будет входить в программу. В этом случае можно отключить флажок Аутентификация 1С: Предприятия.
    • +
    • Если ни один флажок Аутентификация не включен, то автоматически выключается и флажок Вход в программу разрешен. +
    • +
    • Режим запуска - заполнено программой по умолчанию (Авто). Рекомендуется выбирать этот режим.
  • +
  • Адреса, телефоны +
    • На вкладке введите контактную информацию пользователя, предусмотренную в программе (например, телефон и адрес электронной почты).
  • +
  • Комментарий +
    • На вкладке напишите дополнительную информацию о пользователе.

Включение пользователя в группы

+

Если в программе включено использование групп пользователей, то пользователя во время ввода можно включить в одну или несколько групп.

+
  • Нажмите Группы на панели навигации, с помощью флажков выберите одну или несколько групп. +
  • +
  • Для того чтобы быстро отменить свой выбор, нажмите Исключить из всех групп.

Права доступа пользователя 

+

В зависимости от состава программы для настройки прав доступа предусмотрена одна из возможностей:

+
  • Нажмите Права доступа на панели навигации, чтобы включить пользователя в одну или несколько групп доступа. Их необходимо выбрать из списка. +
  • +
  • В списке Разрешенные действия (роли) можно назначить пользователю одну или несколько ролей, которые в совокупности образуют его персональные настройки прав доступа. Роли могут соответствовать как различным должностным обязанностям (или видам деятельности) пользователей, так и более мелким функциям. +
    • Выберите нужные роли с помощью флажков. +
    • +
    • С помощью кнопки Только выбранные роли можно ограничить видимость ролей. +
    • +
    • Для удобства назначения можно упорядочить роли как в алфавитном порядке, так и По подсистемам.

Разрешение входа в программу (только для администратора)

+
  • +
    Для входа пользователя в программу нужно установить флажок Вход в программу разрешен. При этом должны быть заданы необходимые свойства: имя (для входа), пароль и другие параметры авторизации.
    +
  • +
  • +
    В программе возможно прекращение работы пользователей, которым сняли флажок Вход в программу разрешен, интерактивно или программно в связи с окончанием срока действия.
    +
  • +
  • +
    Открытые сеансы пользователей автоматически завершаются не более чем через 25 минут после того, как вход в программу был запрещен.

Ограничения на вход

+

Перейдите по ссылке, для того чтобы Установить ограничение. С помощью переключателя установите ограничение на вход в программу:

+
  • +
    Согласно общим настройкам входа - установлено по умолчанию (централизованно может быть запрещен вход всем пользователям, которые не заходили в программу больше установленного срока;
    +
  • +
  • +
    Без ограничения срока - бессрочный доступ, только для этого пользователя;
    +
  • +
  • +
    Вход разрешен до (установите срок - введите дату вручную или выберите из календаря с помощью кнопки ). Для защиты от несанкционированного доступа к программу у всех пользователей добавлен Срок действия, который позволяет автоматически отключить пользователя по достижении указанной даты;
    +
  • +
  • +
    Запретить вход, если не работает более (укажите количество дней) - если пользователь не войдет в программу больше указанного количества дней, то вход в программу будет невозможен.
    +
    • +
      В этом случае пользователь должен будет обратиться к администратору для возобновления работы в программе.
  • +
  • +
    Ограничения отражаются в карточке пользователя, также на всех пользователей их можно просмотреть в отчете Сведения о пользователях.

Управление настройками пользователя

+
  • +
    Программа запоминает настройки каждого пользователя во время его работы. Для того чтобы просмотреть, скопировать или удалить настройки пользователя (удалять настройки приходится, если из-за этих неправильных настроек работать в программе становится невозможно), нажмите Настройки на панели навигации.

Предупреждения программы

+
  • +
    В случае если свойства пользователя отличаются от свойств пользователя информационной базы, то программа выводит предупреждение с перечнем этих свойств. Предлагается записать данные, чтобы устранить различия.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..4425aeab --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,2526 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ПараметрыЗаписиПриПроверкеПервогоАдминистратора; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + Если ОбщегоНазначения.РазделениеВключено() Тогда + + ДоступноИзменениеПользователей = Истина; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + ДоступноИзменениеПользователей = МодульПользователиСлужебныйВМоделиСервиса.ДоступноИзменениеПользователей(); + КонецЕсли; + + Если НЕ ДоступноИзменениеПользователей Тогда + Если Объект.Ссылка.Пустая() Тогда + ВызватьИсключение + НСтр("ru = 'В демонстрационном режиме не поддерживается + |создание новых пользователей.'"); + КонецЕсли; + ТолькоПросмотр = Истина; + КонецЕсли; + + Если Объект.Ссылка <> Пользователи.АвторизованныйПользователь() Тогда + Элементы.Отступ.Видимость = Ложь; + Элементы.НадписьНаличиеПароля.Видимость = Ложь; + Элементы.СменитьПароль.Видимость = Ложь; + КонецЕсли; + Элементы.ПользовательИБАутентификацияOpenID.Видимость = Ложь; + Элементы.ПользовательИБАутентификацияСтандартная.Видимость = Ложь; + Элементы.ПотребоватьСменуПароляПриВходе.Видимость = Ложь; + Элементы.ПользовательИБЗапрещеноИзменятьПароль.Видимость = Ложь; + Элементы.ПользовательИБЗапрещеноВосстанавливатьПароль.Видимость = Ложь; + Элементы.СвойстваАутентификацииОС.Видимость = Ложь; + Элементы.ПользовательИБРежимЗапуска.Видимость = Ложь; + КонецЕсли; + + Если СтандартныеПодсистемыСервер.ЭтоУчебнаяПлатформа() Тогда + Элементы.СвойстваАутентификацииОС.ТолькоПросмотр = Истина; + КонецЕсли; + + // Заполнение вспомогательных данных. + + // Заполнение списка выбора режимов запуска. + Для каждого РежимЗапуска Из РежимЗапускаКлиентскогоПриложения Цикл + ПолноеИмяЗначения = ПолучитьПолноеИмяПредопределенногоЗначения(РежимЗапуска); + ИмяЗначения = Сред(ПолноеИмяЗначения, СтрНайти(ПолноеИмяЗначения, ".") + 1); + Элементы.ПользовательИБРежимЗапуска.СписокВыбора.Добавить(ИмяЗначения, Строка(РежимЗапуска)); + КонецЦикла; + Элементы.ПользовательИБРежимЗапуска.СписокВыбора.СортироватьПоПредставлению(); + + // Заполнение списка выбора языка. + Если Метаданные.Языки.Количество() < 2 Тогда + Элементы.ПользовательИБЯзык.Видимость = Ложь; + Иначе + Для каждого МетаданныеЯзыка Из Метаданные.Языки Цикл + Элементы.ПользовательИБЯзык.СписокВыбора.Добавить( + МетаданныеЯзыка.Имя, МетаданныеЯзыка.Синоним); + КонецЦикла; + КонецЕсли; + + УровеньДоступа = ПользователиСлужебный.УровеньДоступаКСвойствамПользователя(Объект); + + // Подготовка к интерактивным действиям с учетом сценариев открытия формы. + УстановитьПривилегированныйРежим(Истина); + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + // Создание нового элемента. + Если Параметры.ГруппаНовогоПользователя <> Справочники.ГруппыПользователей.ВсеПользователи Тогда + ГруппаНовогоПользователя = Параметры.ГруппаНовогоПользователя; + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда + // Копирование элемента. + ЗначениеКопирования = Параметры.ЗначениеКопирования; + Объект.Наименование = ""; + + Если Не ПользователиСлужебный.УровеньДоступаПользователяВыше(ЗначениеКопирования, УровеньДоступа) Тогда + ПрочитатьПользователяИБ(ЗначениеЗаполнено(ЗначениеКопирования.ИдентификаторПользователяИБ)); + Иначе + ПрочитатьПользователяИБ(); + КонецЕсли; + + Если Не УровеньДоступа.ИзменениеРазрешенияНаВход Тогда + ВходВПрограммуРазрешен = Ложь; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Ложь; + КонецЕсли; + + ПользовательИБАдресЭлектроннойПочты = ""; + Иначе + // Добавление элемента. + + // Чтение начальных значений свойств пользователя ИБ. + ПрочитатьПользователяИБ(); + + Если Не ЗначениеЗаполнено(Параметры.ИдентификаторПользователяИБ) Тогда + ПользовательИБАутентификацияСтандартная = Истина; + + Если ОбщегоНазначения.РазделениеВключено() Тогда + ПользовательИБПоказыватьВСпискеВыбора = Ложь; + ПользовательИБАутентификацияOpenID = Истина; + КонецЕсли; + + Если УровеньДоступа.ИзменениеРазрешенияНаВход Тогда + ВходВПрограммуРазрешен = Истина; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + Иначе + // Открытие существующего элемента. + ПрочитатьПользователяИБ(); + КонецЕсли; + + УстановитьПривилегированныйРежим(Ложь); + + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриСозданииФормы", ПользовательИБСуществует); + НачальноеОписаниеПользователяИБ = НачальноеОписаниеПользователяИБ(); + ТребуетсяСинхронизацияССервисом = Объект.Ссылка.Пустая(); + + ПарольДляПодтвержденияИзмененияПочты = Неопределено; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + ДополнительныеПараметры = МодульУправлениеКонтактнойИнформацией.ПараметрыКонтактнойИнформации(); + ДополнительныеПараметры.ИмяЭлементаДляРазмещения = "КонтактнаяИнформация"; + + МодульУправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, ДополнительныеПараметры); + + Если ПользователиСлужебный.ДоступнаНастройкаВосстановленияПароля(УровеньДоступа) Тогда + + Если Не ПользователиСлужебный.ИнтерактивноЗапрашиватьВводПароля(УровеньДоступа, Объект) Тогда + ПарольДляПодтвержденияИзмененияПочты = ""; + КонецЕсли; + + ИмяРеквизитаСПочтойДляВосстановленияПароля = МодульУправлениеКонтактнойИнформацией.ОпределитьЭлементСПочтойДляВосстановленияПароля( + ЭтотОбъект, + ПользовательИБАдресЭлектроннойПочты, + ПользователиСлужебный.ДоступноРедактированиеПочтыДляВосстановленияПароля(УровеньДоступа, Объект)); + + КонецЕсли; + + ПереопределитьРедактированиеКонтактнойИнформацииВСервисе(); + КонецЕсли; + + НастроитьФорму(Объект, Истина); + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + Элементы.ГруппаШапка.ТолькоПросмотр = Истина; + Элементы.КонтактнаяИнформация.ТолькоПросмотр = Истина; + Элементы.СтраницаДополнительныеРеквизиты.ТолькоПросмотр = Истина; + Элементы.СтраницаКомментарий.ТолькоПросмотр = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") + И ДействияСПользователемСервиса <> Неопределено Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + МодульУправлениеКонтактнойИнформацией.УстановитьДоступностьЭлементовКонтактнойИнформации(ЭтотОбъект, + ОпределитьДоступностьЭлементовКонтактнойИнформации()); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "СтраницаДополнительныеРеквизиты"); + ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина); + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры); + КонецЕсли; + + ПодготовитьНеобязательныйРеквизит("ФизическоеЛицо"); + ПодготовитьНеобязательныйРеквизит("Подразделение"); + + ОбновитьВидимостьРеквизитаПоказыватьВСпискеВыбора(); + + Если Не ПользователиСлужебныйПовтИсп.Настройки().ОбщиеНастройкиВхода Тогда + Элементы.ГруппаИзменитьОграничение.Видимость = Ложь; + КонецЕсли; + + Элементы.ПотребоватьСменуПароляПриВходе.РасширеннаяПодсказка.Заголовок = + ПользователиСлужебный.ПодсказкаПотребоватьСменуПароляПриВходе(Ложь); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ФормаЗаписатьИЗакрыть.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда + МодульОбсужденияСлужебный = ОбщегоНазначения.ОбщийМодуль("ОбсужденияСлужебный"); + МодульОбсужденияСлужебный.ПриСозданииНаСервереПользователя(Отказ, ЭтотОбъект, Объект); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(АдресФотографии) Тогда + АдресФотографии = ПоместитьВоВременноеХранилище(БиблиотекаКартинок.ПользовательБезФотографии, УникальныйИдентификатор); + КонецЕсли; + + Если Не ПользователиСлужебныйПовтИсп.ВерсияПредприятияПоддерживаетВосстановлениеПаролей() Тогда + Элементы.ПользовательИБЗапрещеноВосстанавливатьПароль.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + #Если ВебКлиент Тогда + Элементы.ПользовательИБПользовательОС.КнопкаВыбора = Ложь; + #КонецЕсли + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + Если МодульУправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда + ОбновитьЭлементыДополнительныхРеквизитов(); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + КонецЕсли; + + Если ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант") + И ВРег(Источник) = ВРег("ИспользоватьВнешнихПользователей") Тогда + + ПодключитьОбработчикОжидания("ПриИзмененияИспользованияВнешнихПользователей", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + МодульУправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект, "КонтактнаяИнформация"); + + Если ТипЗнч(УровеньДоступа) = Тип("Структура") И ПользователиСлужебный.ДоступнаНастройкаВосстановленияПароля(УровеньДоступа) Тогда + ИмяРеквизитаСПочтойДляВосстановленияПароля = МодульУправлениеКонтактнойИнформацией.ОпределитьЭлементСПочтойДляВосстановленияПароля( + ЭтотОбъект, + ПользовательИБАдресЭлектроннойПочты, + ПользователиСлужебный.ДоступноРедактированиеПочтыДляВосстановленияПароля(УровеньДоступа, ТекущийОбъект)); + КонецЕсли; + + КонецЕсли; + + НастроитьФорму(ТекущийОбъект); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + Фотография = ТекущийОбъект.Фотография.Получить(); + Если Фотография <> Неопределено Тогда + АдресФотографии = ПоместитьВоВременноеХранилище(Фотография, УникальныйИдентификатор); + ФотографияЗадана = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + ОчиститьСообщения(); + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + Если ЗначениеЗаполнено(ИмяРеквизитаСПочтойДляВосстановленияПароля) + И ПользовательИБАдресЭлектроннойПочты <> ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля] Тогда + + Если ПарольДляПодтвержденияИзмененияПочты = Неопределено Тогда + + Отказ = Истина; + + ДополнительныеПараметры = Новый Структура("ПараметрыЗаписи", ПараметрыЗаписи); + Оповещение = Новый ОписаниеОповещения("ПослеЗапросаПароляДляИзмененияПочты", ЭтотОбъект, ДополнительныеПараметры); + ОткрытьФорму("Справочник.Пользователи.Форма.ВводПароля",, ЭтотОбъект,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + Возврат; + + КонецЕсли; + + КонецЕсли; + КонецЕсли; + + ЗаголовокВопросов = НСтр("ru = 'Запись пользователя информационной базы'"); + + // Копирование прав пользователя. + Если ЗначениеЗаполнено(ЗначениеКопирования) + И Не ЗначениеЗаполнено(Объект.Ссылка) + И ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") + И (Не ПараметрыЗаписи.Свойство("НеКопироватьПраваПользователя") + И Не ПараметрыЗаписи.Свойство("КопироватьПраваПользователя")) Тогда + + Отказ = Истина; + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросОКопированииПрав", ЭтотОбъект, ПараметрыЗаписи), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Скопировать также права пользователя ""%1""?'"), Строка(ЗначениеКопирования)), + РежимДиалогаВопрос.ДаНет, + , + , + ЗаголовокВопросов); + Возврат; + КонецЕсли; + + Если Не ПараметрыЗаписи.Свойство("СПустымСпискомРолей") + И ВходВПрограммуРазрешен + И ДействияВФорме.Роли = "Редактирование" + И ПользовательИБРоли.Количество() = 0 Тогда + + Отказ = Истина; + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросОЗаписиСПустымСпискомРолей", ЭтотОбъект, ПараметрыЗаписи), + НСтр("ru = 'Пользователю информационной базы не установлено ни одной роли. Продолжить?'"), + РежимДиалогаВопрос.ДаНет, + , + , + ЗаголовокВопросов); + Возврат; + КонецЕсли; + + Если Не ПараметрыЗаписи.Свойство("ССозданиемПервогоАдминистратора") + И ЗначениеЗаполнено(ПользовательИБИмя) + И СписокПользователейИБПустой() Тогда + + Отказ = Истина; + ПараметрыЗаписиПриПроверкеПервогоАдминистратора = ПараметрыЗаписи; + ПодключитьОбработчикОжидания("ПроверитьПервогоАдминистратора", 0.1, Истина); + Возврат; + КонецЕсли; + + Если СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().РазделениеВключено + И ТребуетсяСинхронизацияССервисом + И ПарольПользователяСервиса = Неопределено Тогда + + Отказ = Истина; + ПользователиСлужебныйКлиент.ЗапроситьПарольДляАутентификацииВСервисе( + Новый ОписаниеОповещения("ПослеЗапросаПароляДляАутентификацииВСервисеПередЗаписью", ЭтотОбъект, ПараметрыЗаписи), + ЭтотОбъект, + ПарольПользователяСервиса); + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ТекущийОбъект.ДополнительныеСвойства.Вставить("ЗначениеКопирования", ЗначениеКопирования); + + ТекущийОбъект.ДополнительныеСвойства.Вставить("ПарольПользователяСервиса", ПарольПользователяСервиса); + ТекущийОбъект.ДополнительныеСвойства.Вставить("СинхронизироватьССервисом", ТребуетсяСинхронизацияССервисом); + + Если ТребуетсяЗаписьПользователяИБ(ЭтотОбъект) Тогда + + Если ПользователиСлужебный.ДоступнаНастройкаВосстановленияПароля(УровеньДоступа) Тогда + + Если ПользовательИБЗапрещеноИзменятьПароль Тогда + ПользовательИБЗапрещеноВосстанавливатьПароль = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + Если ПользователиСлужебный.ДоступноРедактированиеПочтыДляВосстановленияПароля(УровеньДоступа, Объект) Тогда + + Если ЗначениеЗаполнено(ИмяРеквизитаСПочтойДляВосстановленияПароля) + И ПользовательИБАдресЭлектроннойПочты <> ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля] Тогда + + Если ЗначениеЗаполнено(ТекущийОбъект.Ссылка) Тогда + Подготовлен = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийОбъект.Ссылка, "Подготовлен"); + Иначе + Подготовлен = УровеньДоступа.УправлениеСписком; + КонецЕсли; + + ИзменятьПочтуБезПодтвержденияПаролем = Пользователи.ЭтоПолноправныйПользователь() Или Подготовлен; + + Если Не ИзменятьПочтуБезПодтвержденияПаролем Тогда + + ПарольСовпадаетССохраненным = Ложь; + + Если ТипЗнч(ПарольДляПодтвержденияИзмененияПочты) = Тип("Строка") Тогда + УстановитьПривилегированныйРежим(Истина); + ПарольСовпадаетССохраненным = ПользователиСлужебный.СтарыйПарольСовпадаетССохраненным( + ПарольДляПодтвержденияИзмененияПочты, Объект.ИдентификаторПользователяИБ); + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + + // проверка пароля + Если Не ПарольСовпадаетССохраненным Тогда + ПарольДляПодтвержденияИзмененияПочты = Неопределено; + ВызватьИсключение НСтр("ru = 'Пароль указан неверно'"); + КонецЕсли; + + КонецЕсли; + + ПользовательИБАдресЭлектроннойПочты = ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля]; + + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ОписаниеПользователяИБ = ОписаниеПользователяИБ(); + + Если ЗначениеЗаполнено(Объект.ИдентификаторПользователяИБ) Тогда + ОписаниеПользователяИБ.Вставить("УникальныйИдентификатор", Объект.ИдентификаторПользователяИБ); + КонецЕсли; + ОписаниеПользователяИБ.Вставить("Действие", "Записать"); + + ТекущийОбъект.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ); + + Если ПараметрыЗаписи.Свойство("ССозданиемПервогоАдминистратора") Тогда + ТекущийОбъект.ДополнительныеСвойства.Вставить("СозданиеАдминистратора", + НСтр("ru = 'Первый пользователь информационной базы назначается администратором.'")); + КонецЕсли; + КонецЕсли; + + Если ДействияВФорме.СвойстваЭлемента <> "Редактирование" Тогда + ЗаполнитьЗначенияСвойств(ТекущийОбъект, ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + ТекущийОбъект.Ссылка, "Наименование, ПометкаУдаления")); + КонецЕсли; + + ТекущийОбъект.ДополнительныеСвойства.Вставить("ГруппаНовогоПользователя", ГруппаНовогоПользователя); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + Если НЕ Отказ И ДействияВФорме.КонтактнаяИнформация = "Редактирование" Тогда + МодульУправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + КонецЕсли; + + Если ФотографияЗадана И ЭтоАдресВременногоХранилища(АдресФотографии) Тогда + ТекущийОбъект.Фотография = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресФотографии)); + Иначе + ТекущийОбъект.Фотография = Новый ХранилищеЗначения(Неопределено); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + УстановитьПривилегированныйРежим(Истина); + ПользователиСлужебный.ЗаписатьСведенияОПользователе(ЭтотОбъект, ТекущийОбъект); + УстановитьПривилегированныйРежим(Ложь); + + Если ПараметрыЗаписи.Свойство("КопироватьПраваПользователя") Тогда + Источник = ЗначениеКопирования; + Приемник = ТекущийОбъект.Ссылка; + МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПриКопированииПравНовомуПользователю(Источник, Приемник); + ПользователиСлужебный.СкопироватьГруппыПользователя(Источник, Приемник); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + ТребуетсяСинхронизацияССервисом = Ложь; + + Если ТребуетсяЗаписьПользователяИБ(ЭтотОбъект) Тогда + ПараметрыЗаписи.Вставить( + ТекущийОбъект.ДополнительныеСвойства.ОписаниеПользователяИБ.РезультатДействия); + КонецЕсли; + + Если ПараметрыЗаписи.Свойство("ССозданиемПервогоАдминистратора") Тогда + ПользователиСлужебный.СкопироватьНастройкиПользователя("", ПользовательИБИмя); + КонецЕсли; + + НастроитьФорму(ТекущийОбъект, , ПараметрыЗаписи); + + ОбновитьСпособИзмененияEMailВСервисе(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда + МодульОбсуждения = ОбщегоНазначения.ОбщийМодуль("Обсуждения"); + МодульОбсуждения.ОбновитьПользователяВСистемеВзаимодействия(ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи); + КонецЕсли; + + Оповестить("Запись_Пользователи", Новый Структура, Объект.Ссылка); + + Если ПараметрыЗаписи.Свойство("ДобавленПользовательИБ") Тогда + Оповестить("ДобавленПользовательИБ", ПараметрыЗаписи.ДобавленПользовательИБ, ЭтотОбъект); + + ИначеЕсли ПараметрыЗаписи.Свойство("ИзмененПользовательИБ") Тогда + Оповестить("ИзмененПользовательИБ", ПараметрыЗаписи.ИзмененПользовательИБ, ЭтотОбъект); + + ИначеЕсли ПараметрыЗаписи.Свойство("УдаленПользовательИБ") Тогда + Оповестить("УдаленПользовательИБ", ПараметрыЗаписи.УдаленПользовательИБ, ЭтотОбъект); + + ИначеЕсли ПараметрыЗаписи.Свойство("ОчищеноСопоставлениеСНесуществующимПользователемИБ") Тогда + Оповестить( + "ОчищеноСопоставлениеСНесуществующимПользователемИБ", + ПараметрыЗаписи.ОчищеноСопоставлениеСНесуществующимПользователемИБ, + ЭтотОбъект); + КонецЕсли; + + Если ЗначениеЗаполнено(ГруппаНовогоПользователя) Тогда + ОповеститьОбИзменении(ГруппаНовогоПользователя); + Оповестить("Запись_ГруппыПользователей", Новый Структура, ГруппаНовогоПользователя); + ГруппаНовогоПользователя = Неопределено; + КонецЕсли; + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда + ОписаниеЗавершения = Новый ОписаниеОповещения("ПослеЗаписиЗавершение", ЭтотОбъект, ПараметрыЗаписи); + МодульОбсужденияСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбсужденияСлужебныйКлиент"); + МодульОбсужденияСлужебныйКлиент.ПослеЗаписиПользователя(ЭтотОбъект, ОписаниеЗавершения); + Возврат; + КонецЕсли; + + ПарольДляПодтвержденияИзмененияПочты = Неопределено; + + ПослеЗаписиЗавершение(Неопределено, ПараметрыЗаписи); + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + Если ТребуетсяЗаписьПользователяИБ(ЭтотОбъект) Тогда + ОписаниеПользователяИБ = ОписаниеПользователяИБ(); + ОписаниеПользователяИБ.Вставить("ИдентификаторПользователяИБ", Объект.ИдентификаторПользователяИБ); + + Если ПользователиСлужебныйПовтИсп.ВерсияПредприятияПоддерживаетВосстановлениеПаролей() + И ЗначениеЗаполнено(ИмяРеквизитаСПочтойДляВосстановленияПароля) Тогда + ОписаниеПользователяИБ.АдресЭлектроннойПочты = ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля]; + КонецЕсли; + + ПользователиСлужебный.ПроверитьОписаниеПользователяИБ(ОписаниеПользователяИБ, Отказ, Ложь); + + КонецЕсли; + + Если ВходВПрограммуРазрешен + И ЗначениеЗаполнено(СрокДействия) + И СрокДействия <= НачалоДня(ТекущаяДатаСеанса()) Тогда + + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Ограничение должно быть до завтра или более.'"),, "ВходВПрограммуРазрешен",, Отказ); + КонецЕсли; + + // Проверка наличия ролей в метаданных. + Если Не Элементы.Роли.ТолькоПросмотр Тогда + Ошибки = Неопределено; + ЭлементыДерева = Роли.ПолучитьЭлементы(); + Для Каждого Строка Из ЭлементыДерева Цикл + Если Не Строка.Пометка Тогда + Продолжить; + КонецЕсли; + Если Строка.ЭтоНесуществующаяРоль Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Роли[%1].РолиСиноним", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним), + "Роли", + ЭлементыДерева.Индекс(Строка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1")); + КонецЕсли; + Если Строка.ЭтоНедоступнаяРоль Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Роли[%1].РолиСиноним", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для пользователей.'"), Строка.Синоним), + "Роли", + ЭлементыДерева.Индекс(Строка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для пользователей.'"), Строка.Синоним, "%1")); + КонецЕсли; + КонецЦикла; + ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + МодульУправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Объект, Отказ); + Если ОбщегоНазначения.РазделениеВключено() Тогда + ПроверитьЗаполнениеEmail(Отказ); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЗагрузкеНастроек", Настройки); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ЗаполнитьИзПользователяИБ(Команда) + + ЗаполнитьПоляПоПользователюИБНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + + ОбновитьИмяДляВхода(ЭтотОбъект, Истина); + + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура НедействителенПриИзменении(Элемент) + + Если Объект.Недействителен Тогда + ВходВПрограммуРазрешен = Ложь; + Если Не ПользовательИБАутентификацияOpenID + И Не ПользовательИБАутентификацияОС + И Не ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения + И ПользовательИБАутентификацияСтандартная Тогда + + ПользовательИБАутентификацияСтандартная = Ложь; + КонецЕсли; + ИначеЕсли ВходВПрограммуРазрешенЗначениеПрямогоИзменения Тогда + Если Не ПользовательИБАутентификацияСтандартная + И Не ПользовательИБАутентификацияOpenID + И Не ПользовательИБАутентификацияОС Тогда + ПользовательИБАутентификацияСтандартная = Истина; + КонецЕсли; + ВходВПрограммуРазрешен = Истина; + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ВходВПрограммуРазрешенПриИзменении(Элемент) + + Если Объект.ПометкаУдаления И ВходВПрограммуРазрешен Тогда + ВходВПрограммуРазрешен = Ложь; + ПоказатьПредупреждение(, + НСтр("ru = 'Чтобы разрешить вход в программу, требуется снять + |пометку на удаление с этого пользователя.'")); + Возврат; + КонецЕсли; + + Если Не ВходВПрограммуРазрешен + И Не ПользовательИБАутентификацияOpenID + И Не ПользовательИБАутентификацияОС + И Не ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения + И ПользовательИБАутентификацияСтандартная Тогда + + ПользовательИБАутентификацияСтандартная = Ложь; + КонецЕсли; + + ОбновитьИмяДляВхода(ЭтотОбъект); + + Если ВходВПрограммуРазрешен + И НЕ ПользовательИБАутентификацияOpenID + И НЕ ПользовательИБАутентификацияСтандартная + И НЕ ПользовательИБАутентификацияОС Тогда + + ПользовательИБАутентификацияСтандартная = Истина; + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + + Если Не УровеньДоступа.ИзменениеРазрешенияНаВход + И Не ВходВПрограммуРазрешен Тогда + + ПоказатьПредупреждение(, + НСтр("ru = 'После записи вход в программу сможет разрешить только администратор.'")); + КонецЕсли; + + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = ВходВПрограммуРазрешен; + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьОграничениеНаВходВПрограмму(Команда) + + ОткрытьФорму("Справочник.Пользователи.Форма.ОграничениеНаВходВПрограмму",, ЭтотОбъект,,,, + Новый ОписаниеОповещения("ИзменитьОграничениеНаВходВПрограммуЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБИмяПриИзменении(Элемент) + + ПользовательИБИмя = СокрЛП(ПользовательИБИмя); + ПользовательИБИмяЗначениеПрямогоИзменения = ПользовательИБИмя; + + УстановитьДоступностьСвойств(ЭтотОбъект); + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБАутентификацияСтандартнаяПриИзменении(Элемент) + + АутентификацияПриИзменении(); + ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения = ПользовательИБАутентификацияСтандартная; + +КонецПроцедуры + +&НаКлиенте +Процедура ПотребоватьСменуПароляПриВходеПриИзменении(Элемент) + + Если ПотребоватьСменуПароляПриВходе Тогда + ПользовательИБЗапрещеноИзменятьПароль = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБПоказыватьВСпискеВыбораПриИзменении(Элемент) + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБЗапрещеноИзменятьПарольПриИзменении(Элемент) + + Если ПользовательИБЗапрещеноИзменятьПароль Тогда + ПотребоватьСменуПароляПриВходе = Ложь; + ПользовательИБЗапрещеноВосстанавливатьПароль = Истина; + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБАутентификацияOpenIDПриИзменении(Элемент) + + АутентификацияПриИзменении(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБАутентификацияОСПриИзменении(Элемент) + + АутентификацияПриИзменении(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБПользовательОСПриИзменении(Элемент) + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБПользовательОСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + #Если НЕ ВебКлиент И НЕ МобильныйКлиент Тогда + ОткрытьФорму("Справочник.Пользователи.Форма.ВыборПользователяОперационнойСистемы", , Элемент); + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБЯзыкПриИзменении(Элемент) + + УстановитьДоступностьСвойств(ЭтотОбъект); + + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБРежимЗапускаПриИзменении(Элемент) + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательИБРежимЗапускаОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") + И ТекущаяСтраница.Имя = "СтраницаДополнительныеРеквизиты" + И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда + + СвойстваВыполнитьОтложеннуюИнициализацию(); + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПотребоватьСменуПароляПриВходеРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + ОткрытьФорму("ОбщаяФорма.НастройкиВходаПользователей", , ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ФотографияНажатие(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОповещениеОЗавершение = Новый ОписаниеОповещения("ФотографияНажатиеЗавершение", ЭтотОбъект); + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + ФайловаяСистемаКлиент.ЗагрузитьФайл(ОповещениеОЗавершение,ПараметрыЗагрузки); +КонецПроцедуры + +&НаКлиенте +Процедура ФотографияНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ЭтоАдресВременногоХранилища(АдресФотографии) Тогда + УдалитьИзВременногоХранилища(АдресФотографии); + КонецЕсли; + + АдресФотографии = Результат.Хранение; + Модифицированность = Истина; + ФотографияЗадана = Истина; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Поддержка контактной информации. + +&НаКлиенте +Процедура Подключаемый_EMailПриИзменении(Элемент) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + + МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); + + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + + Если НЕ Объект.Ссылка.Пустая() Тогда + Возврат; + КонецЕсли; + + ТаблицаКИ = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов; + + СтрокаEMail = ТаблицаКИ.НайтиСтроки(Новый Структура("Вид", + ВидКонтактнойИнформацииEmailПользователя()))[0]; + + Если ЗначениеЗаполнено(ЭтотОбъект[СтрокаEMail.ИмяРеквизита]) Тогда + ПользовательИБПароль = "" + Новый УникальныйИдентификатор + "qQ"; + УстановитьНаличиеПароля(ЭтотОбъект, Истина, ПользователиКлиент.АвторизованныйПользователь()); + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +// Подключаемый обработчик очистки. +// +// Параметры: +// Элемент - ПолеФормы +// СтандартнаяОбработка - Булево +// +&НаКлиенте +Процедура Подключаемый_EMailОчистка(Элемент, СтандартнаяОбработка) + + Если Не Элемент.РедактированиеТекста Тогда + СтандартнаяОбработка = Ложь; + Возврат; + КонецЕсли; + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + + МодульУправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ТелефонПриИзменении(Элемент) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + + МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); + + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_EMailНачалоВыбора(Элемент) + + Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + Возврат; + КонецЕсли; + + Если ПарольПользователяСервиса = Неопределено Тогда + ПользователиСлужебныйКлиент.ЗапроситьПарольДляАутентификацииВСервисе( + Новый ОписаниеОповещения("Подключаемый_EMailНачалоВыбораЗавершение", ЭтотОбъект), + ЭтотОбъект, + ПарольПользователяСервиса); + Иначе + Подключаемый_EMailНачалоВыбораЗавершение(Null, Неопределено); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_EMailНачалоВыбораЗавершение(НовыйПарольПользователяСервиса, Контекст) Экспорт + + Если НовыйПарольПользователяСервиса = Неопределено Тогда + Возврат; + КонецЕсли; + + Если НовыйПарольПользователяСервиса <> Null Тогда + ПарольПользователяСервиса = НовыйПарольПользователяСервиса; + КонецЕсли; + + ТаблицаКИ = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов; + + Отбор = Новый Структура("Вид", ВидКонтактнойИнформацииEmailПользователя()); + + СтрокаEMail = ТаблицаКИ.НайтиСтроки(Отбор)[0]; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПарольПользователяСервиса", ПарольПользователяСервиса); + ПараметрыФормы.Вставить("СтараяПочта", ЭтотОбъект[СтрокаEMail.ИмяРеквизита]); + ПараметрыФормы.Вставить("Пользователь", Объект.Ссылка); + + Попытка + ОткрытьФорму("Справочник.Пользователи.Форма.СменаПочты", ПараметрыФормы, ЭтотОбъект,,,, + Новый ОписаниеОповещения("ПослеСменыПочты", ЭтотОбъект)); + Исключение + ПарольПользователяСервиса = Неопределено; + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка); + +КонецПроцедуры + +// Подключаемый обработчик нажатия. +// +// Параметры: +// Элемент - ДекорацияФормы +// - РасширениеДекорацииФормыДляНадписи +// СтандартнаяОбработка - Булево +// +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка) + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка); +КонецПроцедуры + +// Подключаемый обработчик очистки. +// +// Параметры: +// Элемент - ПолеФормы +// СтандартнаяОбработка - Булево +// +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя); + +КонецПроцедуры + +// Подключаемый обработчик команды. +// +// Параметры: +// Команда - КомандаФормы +// +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.АвтоПодборАдреса(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка); + +КонецПроцедуры + +// Подключаемый обработчик выбора. +// +// Параметры: +// Элемент - ПолеФормы +// ВыбранноеЗначение - Строка +// СтандартнаяОбработка - Булево +// +&НаКлиенте +Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + МодульУправлениеКонтактнойИнформациейКлиент = + ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); + МодульУправлениеКонтактнойИнформациейКлиент.ОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, Элемент.Имя, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт + ОбновитьКонтактнуюИнформацию(Результат); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыРоли + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаКлиенте +Процедура РолиПометкаПриИзменении(Элемент) + + СтрокаТаблицы = Элементы.Роли.ТекущиеДанные; + Если СтрокаТаблицы = Неопределено Тогда + Возврат; + КонецЕсли; + Если СтрокаТаблицы.Пометка И СтрокаТаблицы.Имя = "ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок" Тогда + Оповещение = Новый ОписаниеОповещения("РолиПометкаПриИзмененииПослеПодтверждения", ЭтотОбъект); + ПараметрыФормы = Новый Структура("Ключ", "ПередВыборомРоли"); + ОткрытьФорму("ОбщаяФорма.ПредупреждениеБезопасности", ПараметрыФормы, , , , , Оповещение); + Иначе + Если СтрокаТаблицы.Имя = "ПолныеПрава" Тогда + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + КонецЕсли; + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РолиПометкаПриИзмененииПослеПодтверждения(Ответ, ПараметрыВыполнения) Экспорт + СтрокаТаблицы = Элементы.Роли.ТекущиеДанные; + Если СтрокаТаблицы = Неопределено Тогда + Возврат; + КонецЕсли; + Если Ответ = "Продолжить" Тогда + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей"); + Иначе + СтрокаТаблицы.Пометка = Ложь; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + Записать(Новый Структура("ЗаписатьИЗакрыть")); + +КонецПроцедуры + +&НаКлиенте +Процедура СменитьПароль(Команда) + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ВернутьПарольБезУстановки", Истина); + ДополнительныеПараметры.Вставить("СтарыйПароль", ПользовательИБСтарыйПароль); + + ПользователиСлужебныйКлиент.ОткрытьФормуСменыПароля(Объект.Ссылка, Новый ОписаниеОповещения( + "СменитьПарольПослеПолученияПароля", ЭтотОбъект), ДополнительныеПараметры); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьФотографию(Команда) + АдресФотографии = ПоместитьВоВременноеХранилище(БиблиотекаКартинок.ПользовательБезФотографии, УникальныйИдентификатор); + ФотографияЗадана = Ложь; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаКлиенте +Процедура ПоказатьТолькоВыбранныеРоли(Команда) + + ОбработатьИнтерфейсРолей("ТолькоВыбранныеРоли"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппировкаРолейПоПодсистемам(Команда) + + ОбработатьИнтерфейсРолей("ГруппировкаПоПодсистемам"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьРоли(Команда) + + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе"); + + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключитьРоли(Команда) + + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВсе"); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Поддержка дополнительных реквизитов. + +&НаКлиенте +Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РолиПометка.Имя); + + ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Роли.Имя"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = НСтр("ru = 'ПолныеПрава'"); + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗапретИзмененияАдминистративногоДоступа"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РолиПометка.Имя); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РолиСиноним.Имя); + + ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Роли.Имя"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = НСтр("ru = 'ПолныеПрава'"); + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗапретИзмененияАдминистративногоДоступа"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененияИспользованияВнешнихПользователей() + + ОбновитьВидимостьРеквизитаПоказыватьВСпискеВыбора(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьВидимостьРеквизитаПоказыватьВСпискеВыбора() + + Элементы.ПользовательИБПоказыватьВСпискеВыбора.Видимость = + Не ОбщегоНазначения.РазделениеВключено() + И Не ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") + +КонецПроцедуры + +&НаСервере +Процедура НастроитьФорму(ТекущийОбъект, ПриСозданииНаСервере = Ложь, ПараметрыЗаписи = Неопределено) + + Если НачальноеОписаниеПользователяИБ = Неопределено Тогда + Возврат; // Вызов ПриЧтенииНаСервере до вызова ПриСозданииНаСервере. + КонецЕсли; + + Если Не ПриСозданииНаСервере Тогда + ПрочитатьПользователяИБ(); + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + ПользователиСлужебный.ПрочитатьСведенияОПользователе(ЭтотОбъект); + УстановитьПривилегированныйРежим(Ложь); + + УровеньДоступа = ПользователиСлужебный.УровеньДоступаКСвойствамПользователя(ТекущийОбъект); + + ОпределитьДействияВФорме(); + + ОпределитьНесоответствияПользователяСПользователемИБ(ПараметрыЗаписи); + + ОбработатьИнтерфейсРолей("УстановитьТолькоПросмотрРолей", + ПользователиСлужебный.ЗапретРедактированияРолей() + Или ДействияВФорме.Роли <> "Редактирование" + Или Не УровеньДоступа.НастройкиДляВхода); + + Если ОбщегоНазначения.РазделениеВключено() + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда + + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + ДействияСПользователемСервиса = МодульПользователиСлужебныйВМоделиСервиса.ПолучитьДействияСПользователемСервиса( + ТекущийОбъект.Ссылка); + КонецЕсли; + + // Настройка возможности просмотра. + Элементы.КонтактнаяИнформация.Видимость = ЗначениеЗаполнено(ДействияВФорме.КонтактнаяИнформация); + Элементы.СвойстваПользователяИБ.Видимость = ЗначениеЗаполнено(ДействияВФорме.СвойстваПользователяИБ); + + ВыводитьСписокРолей = ЗначениеЗаполнено(ДействияВФорме.Роли); + Элементы.ОтображениеРолей.Видимость = ВыводитьСписокРолей; + Элементы.СвойстваАутентификации1СПредприятия.Отображение = + ?(ВыводитьСписокРолей, ОтображениеОбычнойГруппы.Нет, ОтображениеОбычнойГруппы.ОбычноеВыделение); + + Элементы.РекомендуетсяПроверитьНастройкиДляВхода.Видимость = + УровеньДоступа.ИзменениеРазрешенияНаВход + И ТекущийОбъект.Подготовлен + И Не ПриЧтенииВходВПрограммуРазрешен; + + // Настройка возможности изменения. + Если ТекущийОбъект.Служебный Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + Элементы.ГруппаСлужебныйПользователь.Видимость = ТекущийОбъект.Служебный; + + ТолькоПросмотр = ТолькоПросмотр + ИЛИ ДействияВФорме.Роли <> "Редактирование" + И ДействияВФорме.СвойстваЭлемента <> "Редактирование" + И ДействияВФорме.КонтактнаяИнформация <> "Редактирование" + И ДействияВФорме.СвойстваПользователяИБ <> "Редактирование"; + + ДоступностьКнопки = Не ТолькоПросмотр И ПравоДоступа("Редактирование", + Метаданные.Справочники.Пользователи); + + Если Элементы.ФормаЗаписатьИЗакрыть.Доступность <> ДоступностьКнопки Тогда + Элементы.ФормаЗаписатьИЗакрыть.Доступность = ДоступностьКнопки; + КонецЕсли; + + Если Элементы.ИзменитьОграничениеНаВходВПрограмму.Доступность <> ДоступностьКнопки Тогда + Элементы.ИзменитьОграничениеНаВходВПрограмму.Доступность = ДоступностьКнопки; + КонецЕсли; + + Если Элементы.СменитьПароль.Доступность <> ДоступностьКнопки Тогда + Элементы.СменитьПароль.Доступность = ДоступностьКнопки; + КонецЕсли; + + Элементы.Наименование.ТолькоПросмотр = + Не (ДействияВФорме.СвойстваЭлемента = "Редактирование" И УровеньДоступа.УправлениеСписком); + + Элементы.Недействителен.ТолькоПросмотр = Элементы.Наименование.ТолькоПросмотр; + Элементы.ФизическоеЛицо.ТолькоПросмотр = Элементы.Наименование.ТолькоПросмотр; + Элементы.Подразделение.ТолькоПросмотр = Элементы.Наименование.ТолькоПросмотр; + + Элементы.ОсновныеСвойства.ТолькоПросмотр = + Не ( ДействияВФорме.СвойстваПользователяИБ = "Редактирование" + И (УровеньДоступа.УправлениеСписком Или УровеньДоступа.ИзменениеТекущего)); + + Элементы.ПользовательИБИмя1.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.ПользовательИБИмя2.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.ПользовательИБАутентификацияСтандартная.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.ПользовательИБАутентификацияOpenID.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.ПользовательИБАутентификацияОС.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + Элементы.ПользовательИБПользовательОС.ТолькоПросмотр = Не УровеньДоступа.НастройкиДляВхода; + + Элементы.ПользовательИБПоказыватьВСпискеВыбора.ТолькоПросмотр = Не УровеньДоступа.УправлениеСписком; + Элементы.ПотребоватьСменуПароляПриВходе.ТолькоПросмотр = Не УровеньДоступа.УправлениеСписком; + Элементы.ПользовательИБЗапрещеноИзменятьПароль.ТолькоПросмотр = Не УровеньДоступа.УправлениеСписком; + Элементы.ПользовательИБЗапрещеноВосстанавливатьПароль.ТолькоПросмотр = Не УровеньДоступа.УправлениеСписком; + Элементы.ПользовательИБРежимЗапуска.ТолькоПросмотр = Не УровеньДоступа.УправлениеСписком; + + Элементы.Комментарий.ТолькоПросмотр = + Не (ДействияВФорме.СвойстваЭлемента = "Редактирование" И УровеньДоступа.УправлениеСписком); + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПодготовитьНеобязательныйРеквизит(ИмяРеквизита) + + Если ТипЗнч(Объект[ИмяРеквизита]) = Тип("Строка") Тогда + Элементы[ИмяРеквизита].Видимость = Ложь; + Иначе + ТипыПодразделения = Метаданные.ОпределяемыеТипы[ИмяРеквизита].Тип.Типы(); + Если ТипыПодразделения.Количество() = 1 И ОбщегоНазначения.ЭтоСсылка(ТипыПодразделения[0]) Тогда + ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипыПодразделения[0]); + Элементы[ИмяРеквизита].Заголовок = ПредставлениеОбъекта(ОбъектМетаданных); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПредставлениеОбъекта(ОбъектМетаданных) + + Если ЗначениеЗаполнено(ОбъектМетаданных.ПредставлениеОбъекта) Тогда + Возврат ОбъектМетаданных.ПредставлениеОбъекта; + КонецЕсли; + + Возврат ОбъектМетаданных.Представление(); + +КонецФункции + +// Продолжение обработчика события ПередЗаписью. +&НаКлиенте +Процедура ПослеЗапросаПароляДляАутентификацииВСервисеПередЗаписью(НовыйПарольПользователяСервиса, ПараметрыЗаписи) Экспорт + + Если НовыйПарольПользователяСервиса = Неопределено Тогда + Возврат; + КонецЕсли; + + ПарольПользователяСервиса = НовыйПарольПользователяСервиса; + + Попытка + Записать(ПараметрыЗаписи); + Исключение + ПарольПользователяСервиса = Неопределено; + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Продолжение обработчика события ПередЗаписью. +&НаКлиенте +Процедура ПослеЗапросаПароляДляИзмененияПочты(Результат, ДополнительныеПараметры) Экспорт + + Если ТипЗнч(Результат) = Тип("Строка") Тогда + ПарольДляПодтвержденияИзмененияПочты = Результат; + Записать(ДополнительныеПараметры.ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьИмяДляВхода(Форма, ПриИзмененииНаименования = Ложь) + + Элементы = Форма.Элементы; + + // Настройка необходимости заполнения. + Если ТребуетсяЗаписьПользователяИБ(Форма, Ложь) Тогда + НоваяСтраница = Элементы.ИмяСОтметкойНезаполненного; + Иначе + НоваяСтраница = Элементы.ИмяБезОтметкиНезаполненного; + КонецЕсли; + + Если Элементы.ИмяПереключениеОтметкиНезаполненного.ТекущаяСтраница <> НоваяСтраница Тогда + Элементы.ИмяПереключениеОтметкиНезаполненного.ТекущаяСтраница = НоваяСтраница; + КонецЕсли; + + Если Форма.ПользовательИБСуществует Тогда + Возврат; + КонецЕсли; + + КраткоеИмя = ПользователиСлужебныйКлиентСервер.ПолучитьКраткоеИмяПользователяИБ(Форма.Объект.Наименование); + + Если Элементы.ИмяПереключениеОтметкиНезаполненного.ТекущаяСтраница = Элементы.ИмяБезОтметкиНезаполненного Тогда + + Если (Не ЗначениеЗаполнено(Форма.ПользовательИБИмяЗначениеПрямогоИзменения) + Или Форма.ПользовательИБИмяЗначениеПрямогоИзменения = КраткоеИмя) + И Форма.ПользовательИБИмя = КраткоеИмя Тогда + + Форма.ПользовательИБИмя = ""; + КонецЕсли; + Иначе + Если ПриИзмененииНаименования + Или Не ЗначениеЗаполнено(Форма.ПользовательИБИмя) Тогда + + Форма.ПользовательИБИмя = КраткоеИмя; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура АутентификацияПриИзменении() + + Если НЕ ПользовательИБАутентификацияOpenID + И НЕ ПользовательИБАутентификацияСтандартная + И НЕ ПользовательИБАутентификацияОС Тогда + + ВходВПрограммуРазрешен = Ложь; + ПользовательИБЗапрещеноВосстанавливатьПароль = Истина; + + ИначеЕсли Не ВходВПрограммуРазрешен Тогда + ВходВПрограммуРазрешен = ВходВПрограммуРазрешенЗначениеПрямогоИзменения; + + Если ЗначениеЗаполнено(ИмяРеквизитаСПочтойДляВосстановленияПароля) + И ЗначениеЗаполнено(ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля]) Тогда + ПользовательИБЗапрещеноВосстанавливатьПароль = Ложь; + КонецЕсли; + + КонецЕсли; + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеСменыПочты(Результат, Контекст) Экспорт + + Если Результат = "" Тогда + ПарольПользователяСервиса = Неопределено; + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры СменитьПароль. +&НаКлиенте +Процедура СменитьПарольПослеПолученияПароля(Результат, Контекст) Экспорт + + Если Не ЗначениеЗаполнено(Результат) Тогда + Возврат; + КонецЕсли; + + Модифицированность = Истина; + + ПользовательИБПароль = Результат.НовыйПароль; + ПользовательИБСтарыйПароль = Результат.СтарыйПароль; + + Если Результат.СтарыйПароль <> Неопределено Тогда + ПарольПользователяСервиса = Результат.СтарыйПароль; + КонецЕсли; + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + + УстановитьНаличиеПароля(ЭтотОбъект, ЗначениеЗаполнено(ПользовательИБПароль), + ПользователиКлиент.АвторизованныйПользователь()); + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьНаличиеПароля(Форма, ПарольУстановлен, АвторизованныйПользователь) + + ПользователиСлужебныйКлиентСервер.УстановитьНаличиеПароля(Форма, ПарольУстановлен, АвторизованныйПользователь); + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьДействияВФорме() + + ДействияВФорме = Новый Структура; + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("Роли", ""); + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("КонтактнаяИнформация", "Просмотр"); + + // "", "ПросмотрВсех", "Редактирование". + ДействияВФорме.Вставить("СвойстваПользователяИБ", ""); + + // "", "Просмотр", "Редактирование". + ДействияВФорме.Вставить("СвойстваЭлемента", "Просмотр"); + + Если Не УровеньДоступа.АдминистраторСистемы + И УровеньДоступа.ПолныеПрава + И Пользователи.ЭтоПолноправныйПользователь(Объект.Ссылка, Истина) Тогда + + // Администратор системы доступен только на просмотр. + ДействияВФорме.Роли = "Просмотр"; + ДействияВФорме.СвойстваПользователяИБ = "Просмотр"; + + ИначеЕсли УровеньДоступа.АдминистраторСистемы + ИЛИ УровеньДоступа.ПолныеПрава Тогда + + ДействияВФорме.Роли = "Редактирование"; + ДействияВФорме.КонтактнаяИнформация = "Редактирование"; + ДействияВФорме.СвойстваПользователяИБ = "Редактирование"; + ДействияВФорме.СвойстваЭлемента = "Редактирование"; + Иначе + Если УровеньДоступа.ИзменениеТекущего Тогда + ДействияВФорме.СвойстваПользователяИБ = "Редактирование"; + ДействияВФорме.КонтактнаяИнформация = "Редактирование"; + КонецЕсли; + + Если УровеньДоступа.УправлениеСписком Тогда + // Ответственный за список пользователей и групп пользователей. + // (Исполнитель распоряжений о приеме на работу и переводу, + // переназначению, созданию отделов, подразделений и рабочих групп). + ДействияВФорме.СвойстваПользователяИБ = "Редактирование"; + ДействияВФорме.КонтактнаяИнформация = "Редактирование"; + ДействияВФорме.СвойстваЭлемента = "Редактирование"; + + Если УровеньДоступа.НастройкиДляВхода Тогда + ДействияВФорме.Роли = "Редактирование"; + КонецЕсли; + Если Пользователи.ЭтоПолноправныйПользователь(Объект.Ссылка) Тогда + ДействияВФорме.Роли = "Просмотр"; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ПользователиСлужебный.ПриОпределенииДействийВФорме(Объект.Ссылка, ДействияВФорме); + + // Проверка имен действий в форме. + Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.Роли + ",") = 0 Тогда + ДействияВФорме.Роли = ""; + + ИначеЕсли ДействияВФорме.Роли = "Редактирование" + И ПользователиСлужебный.ЗапретРедактированияРолей() Тогда + + ДействияВФорме.Роли = "Просмотр"; + КонецЕсли; + + Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.КонтактнаяИнформация + ",") = 0 Тогда + ДействияВФорме.КонтактнаяИнформация = ""; + КонецЕсли; + + Если СтрНайти(", Просмотр, ПросмотрВсех, Редактирование, РедактированиеСвоих, РедактированиеВсех,", + ", " + ДействияВФорме.СвойстваПользователяИБ + ",") = 0 Тогда + + ДействияВФорме.СвойстваПользователяИБ = ""; + + Иначе // Поддержка обратной совместимости. + Если СтрНайти(ДействияВФорме.СвойстваПользователяИБ, "Просмотр") Тогда + ДействияВФорме.СвойстваПользователяИБ = "Просмотр"; + + ИначеЕсли СтрНайти(ДействияВФорме.СвойстваПользователяИБ, "Редактирование") Тогда + ДействияВФорме.СвойстваПользователяИБ = "Редактирование"; + КонецЕсли; + КонецЕсли; + + Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СвойстваЭлемента + ",") = 0 Тогда + ДействияВФорме.СвойстваЭлемента = ""; + КонецЕсли; + + Если Объект.Служебный Тогда + Если ДействияВФорме.Роли = "Редактирование" Тогда + ДействияВФорме.Роли = "Просмотр"; + КонецЕсли; + + Если ДействияВФорме.КонтактнаяИнформация = "Редактирование" Тогда + ДействияВФорме.КонтактнаяИнформация = "Просмотр"; + КонецЕсли; + + Если ДействияВФорме.СвойстваПользователяИБ = "Редактирование" Тогда + ДействияВФорме.СвойстваПользователяИБ = "Просмотр"; + КонецЕсли; + + Если ДействияВФорме.СвойстваЭлемента = "Редактирование" Тогда + ДействияВФорме.СвойстваЭлемента = "Просмотр"; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ОписаниеПользователяИБ(ДляПроверкиПервогоАдминистратора = Ложь) + + Если УровеньДоступа.УправлениеСписком + И ДействияВФорме.СвойстваЭлемента = "Редактирование" Тогда + + ПользовательИБПолноеИмя = Объект.Наименование; + КонецЕсли; + + Если УровеньДоступа.АдминистраторСистемы + Или УровеньДоступа.ПолныеПрава Тогда + + Результат = Пользователи.НовоеОписаниеПользователяИБ(); + Пользователи.СкопироватьСвойстваПользователяИБ( + Результат, + ЭтотОбъект, + , + "УникальныйИдентификатор, + |Роли", + "ПользовательИБ"); + + Результат.Вставить("ВходВПрограммуРазрешен", ВходВПрограммуРазрешен); + Иначе + Результат = Новый Структура; + + Если УровеньДоступа.ИзменениеТекущего Тогда + Результат.Вставить("Пароль", ПользовательИБПароль); + Результат.Вставить("Язык", ПользовательИБЯзык); + Если ПользователиСлужебныйПовтИсп.ВерсияПредприятияПоддерживаетВосстановлениеПаролей() Тогда + Результат.Вставить("АдресЭлектроннойПочты", ПользовательИБАдресЭлектроннойПочты); + КонецЕсли; + КонецЕсли; + + Если УровеньДоступа.УправлениеСписком Тогда + Результат.Вставить("ВходВПрограммуРазрешен", ВходВПрограммуРазрешен); + Результат.Вставить("ПоказыватьВСпискеВыбора", ПользовательИБПоказыватьВСпискеВыбора + И Не ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей")); + Результат.Вставить("ЗапрещеноИзменятьПароль", ПользовательИБЗапрещеноИзменятьПароль); + + Результат.Вставить("Язык", ПользовательИБЯзык); + Результат.Вставить("РежимЗапуска", ПользовательИБРежимЗапуска); + Если ПользователиСлужебныйПовтИсп.ВерсияПредприятияПоддерживаетВосстановлениеПаролей() Тогда + Результат.Вставить("ЗапрещеноВосстанавливатьПароль", ПользовательИБЗапрещеноВосстанавливатьПароль); + Результат.Вставить("АдресЭлектроннойПочты", ПользовательИБАдресЭлектроннойПочты); + КонецЕсли; + + Если ДействияВФорме.СвойстваЭлемента = "Редактирование" Тогда + Результат.Вставить("ПолноеИмя", ПользовательИБПолноеИмя); + КонецЕсли; + КонецЕсли; + + Если УровеньДоступа.НастройкиДляВхода Тогда + Результат.Вставить("АутентификацияСтандартная", ПользовательИБАутентификацияСтандартная); + Результат.Вставить("Имя", ПользовательИБИмя); + Результат.Вставить("Пароль", ПользовательИБПароль); + Результат.Вставить("АутентификацияOpenID", ПользовательИБАутентификацияOpenID); + Результат.Вставить("АутентификацияОС", ПользовательИБАутентификацияОС); + Результат.Вставить("ПользовательОС", ПользовательИБПользовательОС); + КонецЕсли; + КонецЕсли; + + Если Не УровеньДоступа.НастройкиДляВхода Тогда + Возврат Результат; + КонецЕсли; + + Если Не ПользователиСлужебный.ЗапретРедактированияРолей() Тогда + ТекущиеРоли = ПользовательИБРоли.Выгрузить(, "Роль").ВыгрузитьКолонку("Роль"); + Результат.Вставить("Роли", ТекущиеРоли); + КонецЕсли; + + Если ДляПроверкиПервогоАдминистратора Тогда + Возврат Результат; + КонецЕсли; + + // Добавление ролей требуемых при создании первого администратора. + Если ПользователиСлужебный.ТребуетсяСоздатьПервогоАдминистратора(Результат) Тогда + + Если Результат.Свойство("Роли") И Результат.Роли <> Неопределено Тогда + РолиАдминистратора = Результат.Роли; + Иначе + РолиАдминистратора = Новый Массив; + КонецЕсли; + + Если РолиАдминистратора.Найти("ПолныеПрава") = Неопределено Тогда + РолиАдминистратора.Добавить("ПолныеПрава"); + КонецЕсли; + + Если РолиАдминистратора.Найти("АдминистраторСистемы") = Неопределено Тогда + РолиАдминистратора.Добавить("АдминистраторСистемы"); + КонецЕсли; + Результат.Вставить("Роли", РолиАдминистратора); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервере +Функция ТребуетсяСоздатьПервогоАдминистратора(ТекстВопроса = Неопределено) + + Возврат ПользователиСлужебный.ТребуетсяСоздатьПервогоАдминистратора( + ОписаниеПользователяИБ(Истина), ТекстВопроса); + +КонецФункции + +&НаСервереБезКонтекста +Функция СписокПользователейИБПустой() + + УстановитьПривилегированныйРежим(Истина); + + Возврат Не ЗначениеЗаполнено(ПользователиИнформационнойБазы.ТекущийПользователь().Имя) + И ПользователиИнформационнойБазы.ПолучитьПользователей().Количество() = 0; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьНеобходимостьСинхронизацииССервисом(Форма) + + Форма.ТребуетсяСинхронизацияССервисом = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОтветаНаВопросОЗаписиСПустымСпискомРолей(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ПараметрыЗаписи.Вставить("СПустымСпискомРолей"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьПервогоАдминистратора() + + ПараметрыЗаписи = ПараметрыЗаписиПриПроверкеПервогоАдминистратора; + ПараметрыЗаписиПриПроверкеПервогоАдминистратора = Неопределено; + + ТекстВопроса = ""; + Если Не ТребуетсяСоздатьПервогоАдминистратора(ТекстВопроса) Тогда + ПараметрыЗаписи.Вставить("ССозданиемПервогоАдминистратора"); + Попытка + Записать(ПараметрыЗаписи); + Исключение + ПарольПользователяСервиса = Неопределено; + ВызватьИсключение; + КонецПопытки; + Возврат; + КонецЕсли; + + ЗаголовокВопроса = НСтр("ru = 'Запись пользователя информационной базы'"); + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеПодтвержденияСозданияПервогоАдминистратора", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопроса, РежимДиалогаВопрос.ДаНет, , , ЗаголовокВопроса); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеПодтвержденияСозданияПервогоАдминистратора(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + ВходВПрограммуРазрешен = Истина; + ПользовательИБАутентификацияСтандартная = Истина; + + ПараметрыЗаписи.Вставить("ССозданиемПервогоАдминистратора"); + Записать(ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОтветаНаВопросОКопированииПрав(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ПараметрыЗаписи.Вставить("КопироватьПраваПользователя"); + Иначе + ПараметрыЗаписи.Вставить("НеКопироватьПраваПользователя"); + КонецЕсли; + Записать(ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписиЗавершение(Результат, ПараметрыЗаписи) Экспорт + + Если ПараметрыЗаписи <> Неопределено И ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда + ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму() + + Закрыть(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Поддержка контактной информации. + +&НаСервере +Процедура ОбновитьКонтактнуюИнформацию(Результат) + + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + МодульУправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат); + +КонецПроцедуры + +&НаСервере +Процедура ПереопределитьРедактированиеКонтактнойИнформацииВСервисе() + + Если НЕ ОбщегоНазначения.РазделениеВключено() Тогда + Возврат; + КонецЕсли; + + КонтактнаяИнформация = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов; + + СтрокаEMail = КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", Справочники["ВидыКонтактнойИнформации"].EmailПользователя))[0]; + ЭлементEMail = Элементы[СтрокаEMail.ИмяРеквизита]; + ЭлементEMail.УстановитьДействие("ПриИзменении", "Подключаемый_EMailПриИзменении"); + ЭлементEMail.УстановитьДействие("Очистка", "Подключаемый_EMailОчистка"); + ЭлементEMail.АвтоОтметкаНезаполненного = Истина; + + ЭлементEMail.КнопкаВыбора = ЗначениеЗаполнено(Объект.Ссылка) И ЗначениеЗаполнено(ЭтотОбъект[СтрокаEMail.ИмяРеквизита]); + ЭлементEMail.РедактированиеТекста = Не ЭлементEMail.КнопкаВыбора; + ЭлементEMail.УстановитьДействие("НачалоВыбора", "Подключаемый_EMailНачалоВыбора"); + + СтрокаТелефон = КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", Справочники["ВидыКонтактнойИнформации"].ТелефонПользователя))[0]; + ЭлементТелефон = Элементы[СтрокаТелефон.ИмяРеквизита]; + ЭлементТелефон.УстановитьДействие("ПриИзменении", "Подключаемый_ТелефонПриИзменении"); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСпособИзмененияEMailВСервисе() + + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + Возврат; + КонецЕсли; + + КонтактнаяИнформация = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов; + + СтрокаEMail = КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", Справочники["ВидыКонтактнойИнформации"].EmailПользователя))[0]; + ЭлементEMail = Элементы[СтрокаEMail.ИмяРеквизита]; + + ЭлементEMail.КнопкаВыбора = ЗначениеЗаполнено(Объект.Ссылка) И ЗначениеЗаполнено(ЭтотОбъект[СтрокаEMail.ИмяРеквизита]); + ЭлементEMail.РедактированиеТекста = Не ЭлементEMail.КнопкаВыбора; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ВидКонтактнойИнформацииEmailПользователя() + + ИмяПредопределенногоЗначения = "Справочник." + "ВидыКонтактнойИнформации" + ".EmailПользователя"; + + Возврат ПредопределенноеЗначение(ИмяПредопределенногоЗначения); + +КонецФункции + +&НаСервере +Процедура ПроверитьЗаполнениеEmail(Отказ) + + ТаблицаКИ = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов; + + СтрокаEMail = ТаблицаКИ.НайтиСтроки(Новый Структура("Вид", + ВидКонтактнойИнформацииEmailПользователя()))[0]; + + Если ЗначениеЗаполнено(ЭтотОбъект[СтрокаEMail.ИмяРеквизита]) Тогда + Возврат; + КонецЕсли; + + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Не заполнен адрес электронной почты'"),, + СтрокаEMail.ИмяРеквизита,, Отказ); + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// Поддержка дополнительных реквизитов. + +&НаСервере +Процедура СвойстваВыполнитьОтложеннуюИнициализацию() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьЗависимостиДополнительныхРеквизитов() + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьЭлементыДополнительныхРеквизитов() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработка пользователя ИБ + +&НаСервере +Функция НачальноеОписаниеПользователяИБ() + + УстановитьПривилегированныйРежим(Истина); + + Если НачальноеОписаниеПользователяИБ <> Неопределено Тогда + НачальноеОписаниеПользователяИБ.Роли = Новый Массив; + Возврат НачальноеОписаниеПользователяИБ; + КонецЕсли; + + ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ(); + + Если ОбщегоНазначения.РазделениеВключено() Тогда + ОписаниеПользователяИБ.ПоказыватьВСпискеВыбора = Ложь; + Иначе + ОписаниеПользователяИБ.ПоказыватьВСпискеВыбора = + НЕ Константы.ИспользоватьВнешнихПользователей.Получить(); + КонецЕсли; + ОписаниеПользователяИБ.Роли = Новый Массив; + + Возврат ОписаниеПользователяИБ; + +КонецФункции + +&НаСервере +Процедура ПрочитатьПользователяИБ(ПриКопированииЭлемента = Ложь) + + УстановитьПривилегированныйРежим(Истина); + + ПрочитанныеСвойства = Неопределено; + ОписаниеПользователяИБ = НачальноеОписаниеПользователяИБ(); + ПользовательИБСуществует = Ложь; + ПользовательИБОсновной = Ложь; + ВходВПрограммуРазрешен = Ложь; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Ложь; + + Если ПриКопированииЭлемента Тогда + + ПрочитанныеСвойства = Пользователи.СвойстваПользователяИБ(Параметры.ЗначениеКопирования.ИдентификаторПользователяИБ); + Если ПрочитанныеСвойства <> Неопределено Тогда + + // Сопоставление пользователя ИБ с пользователем в справочнике. + Если Пользователи.ВходВПрограммуРазрешен(ПрочитанныеСвойства) Тогда + ВходВПрограммуРазрешен = Истина; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина; + ОписаниеПользователяИБ.АутентификацияСтандартная = Истина; + КонецЕсли; + + // Копирование свойств и ролей пользователяИБ. + ЗаполнитьЗначенияСвойств( + ОписаниеПользователяИБ, + ПрочитанныеСвойства, + "ЗапрещеноИзменятьПароль, + |ПоказыватьВСпискеВыбора, + |ОсновнойИнтерфейс, + |РежимЗапуска" + ?(Не Элементы.ПользовательИБЯзык.Видимость, "", ", + |Язык") + ?(ПользователиСлужебный.ЗапретРедактированияРолей(), "", ", + |Роли")); + КонецЕсли; + Объект.ИдентификаторПользователяИБ = Неопределено; + УстановитьНаличиеПароля(ЭтотОбъект, Ложь, Пользователи.АвторизованныйПользователь()); + Иначе + ПрочитанныеСвойства = Пользователи.СвойстваПользователяИБ(Объект.ИдентификаторПользователяИБ); + Если ПрочитанныеСвойства <> Неопределено Тогда + + ПользовательИБСуществует = Истина; + ПользовательИБОсновной = Истина; + + ИначеЕсли Параметры.Свойство("ИдентификаторПользователяИБ") + И ЗначениеЗаполнено(Параметры.ИдентификаторПользователяИБ) Тогда + + Объект.ИдентификаторПользователяИБ = Параметры.ИдентификаторПользователяИБ; + ПрочитанныеСвойства = Пользователи.СвойстваПользователяИБ(Объект.ИдентификаторПользователяИБ); + Если ПрочитанныеСвойства <> Неопределено Тогда + + ПользовательИБСуществует = Истина; + Если Объект.Наименование <> ПрочитанныеСвойства.ПолноеИмя Тогда + Объект.Наименование = ПрочитанныеСвойства.ПолноеИмя; + Модифицированность = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ПользовательИБСуществует Тогда + + Если Пользователи.ВходВПрограммуРазрешен(ПрочитанныеСвойства) Тогда + ВходВПрограммуРазрешен = Истина; + ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина; + КонецЕсли; + + ЗаполнитьЗначенияСвойств( + ОписаниеПользователяИБ, + ПрочитанныеСвойства, + "Имя, + |ПолноеИмя, + |АутентификацияOpenID, + |АутентификацияСтандартная, + |ПоказыватьВСпискеВыбора, + |ЗапрещеноИзменятьПароль, + |АутентификацияОС, + |ПользовательОС, + |ОсновнойИнтерфейс, + |РежимЗапуска" + ?(Не Элементы.ПользовательИБЯзык.Видимость, "", ", + |Язык") + ?(ПользователиСлужебный.ЗапретРедактированияРолей(), "", ", + |Роли") + ПользователиСлужебный.ПоляВосстановленияПаролей()); + КонецЕсли; + + Если ПрочитанныеСвойства = Неопределено Тогда + УстановитьНаличиеПароля(ЭтотОбъект, Ложь, + Пользователи.АвторизованныйПользователь()); + Иначе + УстановитьНаличиеПароля(ЭтотОбъект, ПрочитанныеСвойства.ПарольУстановлен, + Пользователи.АвторизованныйПользователь()); + КонецЕсли; + КонецЕсли; + + Пользователи.СкопироватьСвойстваПользователяИБ( + ЭтотОбъект, + ОписаниеПользователяИБ, + , + "УникальныйИдентификатор, + |Роли" + ?(ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей"), ", + |ПоказыватьВСпискеВыбора", ""), + "ПользовательИБ"); + + Если ПользовательИБОсновной И Не ВходВПрограммуРазрешен Тогда + ХранимыеСвойства = ПользователиСлужебный.ХранимыеСвойстваПользователяИБ(Объект.Ссылка); + ПользовательИБАутентификацияOpenID = ХранимыеСвойства.АутентификацияOpenID; + ПользовательИБАутентификацияСтандартная = ХранимыеСвойства.АутентификацияСтандартная; + ПользовательИБАутентификацияОС = ХранимыеСвойства.АутентификацияОС; + КонецЕсли; + + Если ПользовательИБСуществует Тогда + ПользовательИБАутентификацияСтандартнаяЗначениеПрямогоИзменения + = ПользовательИБАутентификацияСтандартная; + КонецЕсли; + + ОбработатьИнтерфейсРолей("ЗаполнитьРоли", ОписаниеПользователяИБ.Роли); + + ПриЧтенииВходВПрограммуРазрешен = ВходВПрограммуРазрешен; + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьНесоответствияПользователяСПользователемИБ(ПараметрыЗаписи = Неопределено) + + // Проверка соответствия свойства ПолноеИмя пользователяИБ и + // реквизита Наименование пользователя. + + ПоказатьНесоответствие = Истина; + ПоказатьКомандыУстраненияРазличий = Ложь; + + Если НЕ ПользовательИБСуществует Тогда + ПоказатьНесоответствие = Ложь; + + ИначеЕсли Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + Объект.Наименование = ПользовательИБПолноеИмя; + ПоказатьНесоответствие = Ложь; + + ИначеЕсли УровеньДоступа.УправлениеСписком Тогда + + УточнениеСвойств = Новый Массив; + + Если ПользовательИБПолноеИмя <> Объект.Наименование Тогда + ПоказатьКомандыУстраненияРазличий = + ПоказатьКомандыУстраненияРазличий + Или ДействияВФорме.СвойстваЭлемента = "Редактирование"; + + УточнениеСвойств.Вставить(0, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Полное имя ""%1""'"), + ПользовательИБПолноеИмя)); + КонецЕсли; + + // Проверка на соответствие почты + Если УровеньДоступа.ИзменениеТекущего Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + + ВидEmailПользователя = МодульУправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("EmailПользователя"); + + СтрокаОписания = МодульУправлениеКонтактнойИнформацией.СтрокаОписанияПочтыДляВосстановленияПароляИзДанныхФормы( + ЭтотОбъект, ВидEmailПользователя, ПользовательИБАдресЭлектроннойПочты); + + Если СтрокаОписания = Неопределено Тогда + ПоказатьКомандыУстраненияРазличий = + ПоказатьКомандыУстраненияРазличий + Или ДействияВФорме.СвойстваЭлемента = "Редактирование"; + + УточнениеСвойств.Вставить(0, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Почта для восстановления пароля ""%1""'"), + ПользовательИБАдресЭлектроннойПочты)); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если УточнениеСвойств.Количество() > 0 Тогда + СтрокаУточненияСвойств = ""; + ТекущаяСтрока = ""; + Для каждого УточнениеСвойства Из УточнениеСвойств Цикл + Если СтрДлина(ТекущаяСтрока + УточнениеСвойства) > 90 Тогда + СтрокаУточненияСвойств = СтрокаУточненияСвойств + СокрП(ТекущаяСтрока) + ", " + Символы.ПС; + ТекущаяСтрока = ""; + КонецЕсли; + ТекущаяСтрока = ТекущаяСтрока + ?(ЗначениеЗаполнено(ТекущаяСтрока), ", ", "") + УточнениеСвойства; + КонецЦикла; + Если ЗначениеЗаполнено(ТекущаяСтрока) Тогда + СтрокаУточненияСвойств = СтрокаУточненияСвойств + ТекущаяСтрока; + КонецЕсли; + Если ПоказатьКомандыУстраненияРазличий Тогда + Рекомендация = Символы.ПС + + НСтр("ru = 'Нажмите ""Записать"", чтобы устранить различия и не выводить это предупреждение.'"); + + ИначеЕсли Не Пользователи.ЭтоПолноправныйПользователь() Тогда + Рекомендация = Символы.ПС + + НСтр("ru = 'Обратитесь к администратору, чтобы устранить различия.'"); + Иначе + Рекомендация = ""; + КонецЕсли; + Элементы.СвойстваПояснениеНесоответствия.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Следующие свойства пользователя информационной базы отличаются от указанных в этой форме: + |%1.'"), + СтрокаУточненияСвойств) + Рекомендация; + Иначе + ПоказатьНесоответствие = Ложь; + КонецЕсли; + Иначе + ПоказатьНесоответствие = Ложь; + КонецЕсли; + + Элементы.СвойстваОбработкаНесоответствия.Видимость = ПоказатьНесоответствие; + Элементы.СвойстваКомандыУстраненияРазличий.Видимость = ПоказатьКомандыУстраненияРазличий; + Элементы.СвойстваПояснениеНесоответствия.ВертикальноеПоложение = ?(ЗначениеЗаполнено(Рекомендация), + ВертикальноеПоложениеЭлемента.Верх, ВертикальноеПоложениеЭлемента.Центр); + + // Определение сопоставление несуществующего пользователя ИБ с пользователем в справочнике. + ЕстьНовоеСопоставлениеСНесуществующимПользователемИБ + = НЕ ПользовательИБСуществует + И ЗначениеЗаполнено(Объект.ИдентификаторПользователяИБ); + + Если ПараметрыЗаписи <> Неопределено + И ЕстьСопоставлениеСНесуществующимПользователемИБ + И НЕ ЕстьНовоеСопоставлениеСНесуществующимПользователемИБ Тогда + + ПараметрыЗаписи.Вставить("ОчищеноСопоставлениеСНесуществующимПользователемИБ", Объект.Ссылка); + КонецЕсли; + ЕстьСопоставлениеСНесуществующимПользователемИБ = ЕстьНовоеСопоставлениеСНесуществующимПользователемИБ; + + Если УровеньДоступа.УправлениеСписком Тогда + Элементы.СопоставлениеОбработкаНесоответствия.Видимость = ЕстьСопоставлениеСНесуществующимПользователемИБ; + Иначе + // Сопоставление не может быть изменено. + Элементы.СопоставлениеОбработкаНесоответствия.Видимость = Ложь; + КонецЕсли; + + Если ДействияВФорме.СвойстваЭлемента = "Редактирование" Тогда + Рекомендация = Символы.ПС + + НСтр("ru = 'Нажмите ""Записать"", чтобы устранить проблему и не выводить это предупреждение.'"); + + ИначеЕсли Не Пользователи.ЭтоПолноправныйПользователь() Тогда + Рекомендация = Символы.ПС + + НСтр("ru = 'Обратитесь к администратору, чтобы устранить различия.'"); + Иначе + Рекомендация = ""; + КонецЕсли; + + Элементы.СопоставлениеПояснениеНесоответствия.Заголовок = + НСтр("ru = 'Несуществующий пользователь информационной базы.'") + Рекомендация; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПоляПоПользователюИБНаСервере() + + Если УровеньДоступа.УправлениеСписком + И ДействияВФорме.СвойстваЭлемента = "Редактирование" Тогда + + Объект.Наименование = ПользовательИБПолноеИмя; + ЗаполнитьПолеПочтыДляВосстановленияПароляИзИБ(); + + КонецЕсли; + + ОпределитьНесоответствияПользователяСПользователемИБ(); + + УстановитьДоступностьСвойств(ЭтотОбъект); + + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПолеПочтыДляВосстановленияПароляИзИБ() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + + Если ПустаяСтрока(ИмяРеквизитаСПочтойДляВосстановленияПароля) + Или ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля] <> ПользовательИБАдресЭлектроннойПочты Тогда + + ВидEmailПользователя = МодульУправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("EmailПользователя"); + ОписаниеПочты = МодульУправлениеКонтактнойИнформацией.СтрокаОписанияПочтыДляВосстановленияПароляИзДанныхФормы(ЭтотОбъект, ВидEmailПользователя, ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля]); + + Если ОписаниеПочты <> Неопределено Тогда + ОписаниеПочты.Представление = ПользовательИБАдресЭлектроннойПочты; + ОписаниеПочты.Значение = МодульУправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению( + ПользовательИБАдресЭлектроннойПочты, ВидEmailПользователя); + + ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля] = ПользовательИБАдресЭлектроннойПочты; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Начальное заполнение, проверка заполнения, доступность свойств. + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьСвойств(Форма) + + Элементы = Форма.Элементы; + Объект = Форма.Объект; + УровеньДоступа = Форма.УровеньДоступа; + ДействияСПользователемСервиса = Форма.ДействияСПользователемСервиса; + + // Настройка возможности изменения. + Элементы.ВходВПрограммуРазрешен.ТолькоПросмотр = + Не ( Элементы.ОсновныеСвойства.ТолькоПросмотр = Ложь + И ( УровеньДоступа.ИзменениеРазрешенияНаВход + Или УровеньДоступа.ОтключениеРазрешенияНаВход И Форма.ПриЧтенииВходВПрограммуРазрешен)); + + Элементы.СменитьПароль.Доступность = + ( УровеньДоступа.НастройкиДляВхода + Или УровеньДоступа.ИзменениеТекущего + И Не Форма.ПользовательИБЗапрещеноИзменятьПароль) + И Не Объект.Служебный; + + ОбновитьИмяДляВхода(Форма); + + // Настройка доступности связанных элементов. + Элементы.ВходВПрограммуРазрешен.Доступность = Не Объект.Недействителен; + Элементы.ОсновныеСвойства.Доступность = Не Объект.Недействителен; + Элементы.ГруппаИзменитьОграничение.Доступность = Не Объект.Недействителен + И Не Элементы.Наименование.ТолькоПросмотр; + + Элементы.ПараметрыАутентификации1СПредприятия.Доступность = Форма.ПользовательИБАутентификацияСтандартная; + Элементы.ПользовательИБПользовательОС.Доступность = Форма.ПользовательИБАутентификацияОС; + + Элементы.ПользовательИБЗапрещеноВосстанавливатьПароль.Доступность = Не Форма.ПользовательИБЗапрещеноИзменятьПароль; + + // Уточнение настроек в модели сервиса. + Если ДействияСПользователемСервиса <> Неопределено Тогда + + // Доступность редактирования КИ. + Отбор = Новый Структура("Вид", ВидКонтактнойИнформацииEmailПользователя()); + НайденныеСтроки = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор); + Если НайденныеСтроки <> Неопределено Тогда + ЗаполненEMail = ЗначениеЗаполнено(Форма[НайденныеСтроки[0].ИмяРеквизита]); + Иначе + ЗаполненEMail = Ложь; + КонецЕсли; + + Если Объект.Ссылка.Пустая() И ЗаполненEMail Тогда + МожноИзменятьПароль = Ложь; + Иначе + МожноИзменятьПароль = ДействияСПользователемСервиса.ИзменениеПароля; + КонецЕсли; + + Элементы.СменитьПароль.Доступность = Элементы.СменитьПароль.Доступность И МожноИзменятьПароль; + + Элементы.ПользовательИБИмя1.ТолькоПросмотр = Элементы.ПользовательИБИмя1.ТолькоПросмотр + ИЛИ НЕ ДействияСПользователемСервиса.ИзменениеИмени; + + Элементы.ПользовательИБИмя2.ТолькоПросмотр = Элементы.ПользовательИБИмя2.ТолькоПросмотр + ИЛИ НЕ ДействияСПользователемСервиса.ИзменениеИмени; + + Элементы.Наименование.ТолькоПросмотр = Элементы.Наименование.ТолькоПросмотр + ИЛИ НЕ ДействияСПользователемСервиса.ИзменениеПолногоИмени; + + Элементы.ВходВПрограммуРазрешен.Доступность = Элементы.ВходВПрограммуРазрешен.Доступность + И ДействияСПользователемСервиса.ИзменениеДоступа; + + Элементы.Недействителен.Доступность = Элементы.Недействителен.Доступность + И ДействияСПользователемСервиса.ИзменениеДоступа; + + Форма.ЗапретИзмененияАдминистративногоДоступа = + НЕ ДействияСПользователемСервиса.ИзменениеАдминистративногоДоступа; + КонецЕсли; + + ПользователиСлужебныйКлиентСервер.ОбновитьОграничениеСрокаДействия(Форма); + +КонецПроцедуры + +&НаСервере +Функция ОпределитьДоступностьЭлементовКонтактнойИнформации() + + Результат = Новый Соответствие; + Для Каждого СтрокаКонтактнойИнформации Из ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов Цикл // СтрокаТаблицыЗначений: см. УправлениеКонтактнойИнформацией.НоваяКонтактнаяИнформация + ДействияВидаКонтактнойИнформации = ДействияСПользователемСервиса.КонтактнаяИнформация.Получить(СтрокаКонтактнойИнформации.Вид); + Если ДействияВидаКонтактнойИнформации = Неопределено Тогда + // Возможность редактирования этого вида КИ не регулируется менеджером сервиса. + Продолжить; + КонецЕсли; + ЭлементКонтактнойИнформации = Элементы[СтрокаКонтактнойИнформации.ИмяРеквизита]; + Результат.Вставить(СтрокаКонтактнойИнформации.Вид, + Не ЭлементКонтактнойИнформации.ТолькоПросмотр + И ДействияВидаКонтактнойИнформации.Изменение); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Продолжение процедуры ИзменитьОграничениеНаВходВПрограмму. +&НаКлиенте +Процедура ИзменитьОграничениеНаВходВПрограммуЗавершение(Результат, Контекст) Экспорт + + УстановитьДоступностьСвойств(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ТребуетсяЗаписьПользователяИБ(Форма, УчитыватьСтандартноеИмя = Истина) + + Если Форма.ДействияВФорме.СвойстваПользователяИБ <> "Редактирование" Тогда + Возврат Ложь; + КонецЕсли; + + Шаблон = Форма.НачальноеОписаниеПользователяИБ; + + ТекущееИмя = ""; + Если Не УчитыватьСтандартноеИмя Тогда + КраткоеИмя = ПользователиСлужебныйКлиентСервер.ПолучитьКраткоеИмяПользователяИБ( + Форма.Объект.Наименование); + + Если Форма.ПользовательИБИмя = КраткоеИмя Тогда + ТекущееИмя = КраткоеИмя; + КонецЕсли; + КонецЕсли; + + Если Форма.ПользовательИБСуществует + ИЛИ Форма.ВходВПрограммуРазрешен + ИЛИ Форма.ПользовательИБИмя <> ТекущееИмя + ИЛИ Форма.ПользовательИБАутентификацияСтандартная <> Шаблон.АутентификацияСтандартная + ИЛИ Форма.ПользовательИБПоказыватьВСпискеВыбора <> Шаблон.ПоказыватьВСпискеВыбора + ИЛИ Форма.ПользовательИБЗапрещеноИзменятьПароль <> Шаблон.ЗапрещеноИзменятьПароль + ИЛИ Форма.ПользовательИБПароль <> Неопределено + ИЛИ Форма.ПользовательИБАутентификацияОС <> Шаблон.АутентификацияОС + ИЛИ Форма.ПользовательИБПользовательОС <> "" + ИЛИ Форма.ПользовательИБАутентификацияOpenID <> Шаблон.АутентификацияOpenID + ИЛИ Форма.ПользовательИБРежимЗапуска <> Шаблон.РежимЗапуска + ИЛИ Форма.ПользовательИБЯзык <> Шаблон.Язык + ИЛИ Форма.ПользовательИБРоли.Количество() <> 0 Тогда + + Возврат Истина; + КонецЕсли; + + // Поддерживается в новых версиях платформы + Если Шаблон.Свойство("ЗапрещеноВосстанавливатьПароль") + И Форма.ПользовательИБЗапрещеноВосстанавливатьПароль <> Шаблон.ЗапрещеноВосстанавливатьПароль Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаСервере +Процедура ОбработатьИнтерфейсРолей(Действие, ОсновнойПараметр = Неопределено) + + ПараметрыДействия = Новый Структура; + ПараметрыДействия.Вставить("ОсновнойПараметр", ОсновнойПараметр); + ПараметрыДействия.Вставить("Форма", ЭтотОбъект); + ПараметрыДействия.Вставить("КоллекцияРолей", ПользовательИБРоли); + ПараметрыДействия.Вставить("ЗапретИзмененияАдминистративногоДоступа", + ЗапретИзмененияАдминистративногоДоступа); + + ПараметрыДействия.Вставить("НазначениеРолей", "ДляАдминистраторов"); + + БылУстановленАдминистративныйДоступ = ПользовательИБРоли.НайтиСтроки( + Новый Структура("Роль", "ПолныеПрава")).Количество() > 0; + + ПользователиСлужебный.ОбработатьИнтерфейсРолей(Действие, ПараметрыДействия); + + УстановленАдминистративныйДоступ = ПользовательИБРоли.НайтиСтроки( + Новый Структура("Роль", "ПолныеПрава")).Количество() > 0; + + Если УстановленАдминистративныйДоступ <> БылУстановленАдминистративныйДоступ Тогда + УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Help/ru.html" new file mode 100644 index 00000000..e4b90382 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Help/ru.html" @@ -0,0 +1,60 @@ + +

Предназначен для ведения пользователей, которые работают с программой.

+

Открыть список пользователей можно из раздела Администрирование - Настройки пользователей и прав или Управление доступом с помощью команды Пользователи.

+

Ведение списка пользователей может осуществлять как администратор, так и ответственный за список пользователей.

+

Вход в программу разрешает только администратор.

+

Ответственный за список (с правом добавления новых пользователей) может выполнять ограниченное ведение списка пользователей и настройку пользователя до разрешения входа в программу администратором. Ответственный за список может редактировать списки Пользователи и Группы пользователей.

+

Всем пользователям доступен только просмотр сведений о себе, а также изменение ряда свойств, таких как: пароль, язык программы и контактная информация. 

+

Пользователь, которого ввел ответственный за список, получает статус Подготовлен. Администратор программы может отобрать таких пользователей по этому признаку, проверить правильность заполнения сведений и разрешить вход в программу.

+

После того как администратор разрешит вход в программу, ответственный за список более не сможет изменить настройки для входа, кроме отключения разрешения на вход в программу.

+

В распределенной информационной базе вход в программу настраивается отдельно для каждой из информационных баз программы.

+

В случае большого количества пользователей список может быть сгруппирован. Например, группы пользователей можно использовать для ведения структуры подразделений компании.

+

Команды для работы со списком пользователей также доступны в контекстном меню по правой кнопке мыши.

+

Ввод пользователя

+

Просмотр недействительных пользователей

+
  • Пользователи могут быть отмечены как недействительные. Для того чтобы посмотреть таких пользователей, включите флажок Показывать недействительных пользователей внизу списка.

Просмотр пользователей нижестоящих групп

+
  • Для того чтобы увидеть всех пользователей, включенных в дочерние группы с учетом иерархии, необходимо установить флажок Показывать пользователей нижестоящих групп в нижней части списка. По умолчанию флажок включен.

Установка пароля

+
  • +
    Нажмите Еще - Установить пароль, напишите пароль.

Просмотр списка пользователей информационной базы

+
  • Для контроля правильности ввода или в случае некорректного ввода пользователей по команде Еще - Пользователи информационной базы можно перейти к контролю записей и синхронизации списка пользователей со списком пользователей информационной базы.

Группировка пользователей

+
  • В случае если в программе разрешено использовать группы пользователей, список состоит из двух частей: в левой части необходимое количество групп, в правой - список пользователей выделенной группы. По умолчанию текущей является группа Все пользователи, т.е. видны все пользователи программы. +
  • +
  • Один и тот же пользователь может одновременно входить в разные группы. Включить пользователя в группу можно разными способами: +
    • При вводе пользователя в списке можно сначала выбрать группу, затем нажать кнопку Создать. +
    • +
    • Для добавления в группу большого числа пользователей можно открыть окно группы и нажать Подобрать. При этом для подбора используется список Пользователи, состоящий из трех частей. +
    • +
    • Выделите пользователя в списке, выполните команду меню Еще - Назначить группы, с помощью флажков включите его в одну или несколько групп. Также можно найти эту команду в контекстном меню по правой кнопке мыши. +
    • +
    • Перетащите одного или нескольких пользователей мышью в нужную группу. Подтвердите свой выбор, нажав кнопку Да. Для использования этой возможности флажок Показывать пользователей нижестоящих групп необходимо отключить.

Ввод группы пользователей

+
  • Для ввода группы нажмите  Создать группу пользователей. +
  • +
  • Также можно воспользоваться командой Создать контекстного меню по правой кнопке мыши в левой части списка.

Включение группы пользователей в другую группу

+
  • +
    Выберите группу в левой части списка, воспользуйтесь командой контекстного меню по правой кнопке мыши Переместить в группу.
    +
  • +
  • +
    Выберите группу для перемещения.

Подбор участников группы пользователей

+
  • В случае если из списка пользователей производится подбор участников группы, он состоит из трех частей.Слева в верхней части списка отображаются группы, в нижней части пользователи выбранной группы. В правой части списка отображаются выбранные пользователи. +
  • +
  • +
    Для удобства подбора в верхней левой части списка показаны уже имеющиеся группы пользователей. Выбрав нужную группу (или группу Все пользователи), можно просмотреть пользователей этой группы в нижней левой части списка.
    +
  • +
  • +
    Выделите одного или нескольких пользователей в левой нижней части списка, с помощью стрелки переместите в правую часть Выбранные пользователи.Также можно перенести пользователя из левой нижней части в правую с помощью двойного щелчка мышью.
    +
  • +
  • +
    Для того чтобы отменить свой выбор, уберите одного или нескольких ненужных пользователей из правой части списка аналогичными действиями.
    +
  • +
  • +
    С помощью двойной стрелки << можно убрать из Выбранных сразу всех пользователей.
    +
  • +
  • +
    Программа ведет подсчет выбранных пользователей.
    +
  • +
  • +
    После окончания подбора участников группы пользователей нажмите кнопку Завершить и закрыть.

Просмотр отчета Сведения о пользователях

+
  • Отчет позволяет выполнить анализ настроек для входа (свойств пользователя ИБ) совместно с остальными свойствами пользователя в справочнике. Включает 3 варианта отчета - о пользователях, внешних пользователях и всех пользователях программы. +
  • +
  • Нажмите Еще - Сведения о пользователях, сформируйте отчет.

См. также 

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ManagerModule.bsl" new file mode 100644 index 00000000..62c3aca7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ManagerModule.bsl" @@ -0,0 +1,197 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + НеРедактируемыеРеквизиты = Новый Массив; + НеРедактируемыеРеквизиты.Добавить("Служебный"); + НеРедактируемыеРеквизиты.Добавить("ИдентификаторПользователяИБ"); + НеРедактируемыеРеквизиты.Добавить("ИдентификаторПользователяСервиса"); + НеРедактируемыеРеквизиты.Добавить("СвойстваПользователяИБ"); + + Возврат НеРедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ИСТИНА + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ЭтоАвторизованныйПользователь(Ссылка)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +// СтандартныеПодсистемы.ПодключаемыеКоманды + +// Определяет список команд создания на основании. +// +// Параметры: +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры +// +Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт + +КонецПроцедуры + +// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов. +// Добавляет в список команд создания на основании этот объект. +// +// Параметры: +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений, Неопределено - описание добавленной команды. +// +Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульСозданиеНаОсновании = ОбщегоНазначения.ОбщийМодуль("СозданиеНаОсновании"); + Возврат МодульСозданиеНаОсновании.ДобавитьКомандуСозданияНаОсновании(КомандыСозданияНаОсновании, Метаданные.Справочники.Пользователи); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + Если НЕ Параметры.Отбор.Свойство("Недействителен") Тогда + Параметры.Отбор.Вставить("Недействителен", Ложь); + КонецЕсли; + + Если НЕ Параметры.Отбор.Свойство("Служебный") Тогда + Параметры.Отбор.Вставить("Служебный", Ложь); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + Если ВидФормы = "ФормаВыбора" ИЛИ Параметры.Свойство("РежимВыбора") Тогда + + ВыбраннаяФормаПоУмолчанию = ВыбраннаяФорма; + ПользователиПереопределяемый.ПриОпределенииФормыВыбораПользователей(ВыбраннаяФорма, Параметры); + Если ВыбраннаяФормаПоУмолчанию <> ВыбраннаяФорма Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; + + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + Возврат; + КонецЕсли; + + СписокПользователей = ПользователиСлужебный.ПользователиДляВключенияВосстановленияПароля(); + + Если СписокПользователей.Количество() > 0 Тогда + ВключитьСтандартныеНастройкиВосстановленияПароля(); + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, СписокПользователей); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + Параметры.ОбработкаЗавершена = Истина; + Возврат; + КонецЕсли; + + ПользовательСсылка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.Пользователи"); + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + СписокОшибок = Новый Массив; + + Пока ПользовательСсылка.Следующий() Цикл + Результат = ПользователиСлужебный.ОбновитьПочтуДляВосстановленияПароля(ПользовательСсылка.Ссылка); + + Если Результат.Статус = "Ошибка" Тогда + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + СписокОшибок.Добавить(Результат.ТекстОшибки); + Иначе + ОбъектовОбработано = ОбъектовОбработано + 1; + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ПользовательСсылка.Ссылка); + КонецЕсли; + + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.Пользователи"); + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторых пользователей (пропущены): %1 + |%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС)); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.Справочники.Пользователи,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию пользователей: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +Процедура ВключитьСтандартныеНастройкиВосстановленияПароля() + + Настройки = ПользователиСлужебный.НастройкиВосстановленияПароля(); + + Если Настройки = Неопределено Тогда + Возврат; + КонецЕсли; + + Настройки.СпособВосстановленияПароля = ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("ОтправкаКодаПодтвержденияЧерезСтандартныйСервис"); + ПользователиСлужебный.УстановитьНастройкиВосстановленияПароля(Настройки); + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..2eeae08d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ObjectModule.bsl" @@ -0,0 +1,178 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +Перем ПараметрыОбработкиПользователяИБ; // Параметры, заполняемые при обработке пользователя ИБ. + // Используются в обработчике события ПриЗаписи. + +Перем ЭтоНовый; // Показывает, что был записан новый объект. + // Используются в обработчике события ПриЗаписи. + +#КонецОбласти + +// *Область ПрограммныйИнтерфейс. +// +// Программный интерфейс объекта реализован через ДополнительныеСвойства: +// +// ОписаниеПользователяИБ - Структура со свойствами: +// Действие - Строка - "Записать" или "Удалить". +// 1. Если Действие = "Удалить" другие свойства не требуются. Удаление +// будет считаться успешным и в том случае, когда пользовательИБ +// не найден по значению реквизита ИдентификаторПользователяИБ. +// 2. Если Действие = "Записать", тогда будет создан или обновлен +// пользователь ИБ по указанным свойствам. +// +// ВходВПрограммуРазрешен - Неопределено - вычислить автоматически: +// если вход в программу запрещен, тогда остается запрещен, +// иначе остается разрешен, кроме случая, когда +// все виды аутентификации установлены в Ложь. +// - Булево - если Истина, тогда установить аутентификацию, как +// указана или сохранена в значениях одноименных реквизитов; +// если Ложь, тогда снять все виды аутентификации у пользователя ИБ. +// Если свойство не указано - прямая установка сохраняемых и +// действующих видов аутентификации (для поддержки обратной совместимости). +// +// ПотребоватьСменуПароляПриВходе - Булево - изменяет одноименный флажок карточки пользователя. +// - Неопределено - флажок не изменяется (аналогично, +// если свойство не указано). +// +// АутентификацияСтандартная, АутентификацияОС, АутентификацияOpenID - установить +// сохраняемые значения видов аутентификации и, в зависимости от использования свойства. +// ВходВПрограммуРазрешен, установить действующие значения видов аутентификации. +// +// Остальные свойства. +// Состав остальных свойств указывается аналогично составу свойств параметра. +// ОбновляемыеСвойства для процедуры Пользователи.УстановитьСвойстваПользователяИБ(), +// кроме свойства ПолноеИмя - устанавливается по Наименованию. +// +// Для сопоставления существующего свободного пользователя ИБ с пользователем в справочнике, +// с которым не сопоставлен другой существующий пользователь ИБ, нужно вставить свойство. +// УникальныйИдентификатор. Если указать идентификатор пользователя ИБ, который +// сопоставлен с текущим пользователем, ничего не изменится. +// +// При выполнении действий "Записать" и "Удалить" реквизит объекта. +// ИдентификаторПользователяИБ обновляется автоматически, его не следует изменять. +// +// После выполнения действия в структуру вставляются (обновляются) следующие свойства: +// - РезультатДействия - Строка, содержащая одно из значений: +// "ДобавленПользовательИБ", "ИзмененПользовательИБ", "УдаленПользовательИБ", +// "ОчищеноСопоставлениеСНесуществующимПользователемИБ", "НеТребуетсяУдалениеПользовательИБ". +// - УникальныйИдентификатор - УникальныйИдентификатор пользователя ИБ. +// +// СозданиеАдминистратора - Строка - свойство должно быть вставлено с непустой строкой, +// чтобы вызвать событие ПриСозданииАдминистратора после обработки структуры ОписаниеПользователяИБ +// когда у созданного или измененного пользователя ИБ имеются роли администратора. +// Это нужно, чтобы сделать связанные действия при создании администратора, например, +// автоматически добавить пользователя в группу доступа Администраторы. +// +// *КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ЭтоНовый = ЭтоНовый(); + + ПользователиСлужебный.НачатьОбработкуПользователяИБ(ЭтотОбъект, ПараметрыОбработкиПользователяИБ); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ДополнительныеСвойства.Свойство("ГруппаНовогоПользователя") + И ЗначениеЗаполнено(ДополнительныеСвойства.ГруппаНовогоПользователя) Тогда + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить("Справочник.ГруппыПользователей"); + Блокировка.Заблокировать(); + + ОбъектГруппы = ДополнительныеСвойства.ГруппаНовогоПользователя.ПолучитьОбъект(); // СправочникОбъект.ГруппыПользователей + ОбъектГруппы.Состав.Добавить().Пользователь = Ссылка; + ОбъектГруппы.Записать(); + КонецЕсли; + + // Обновление состава автоматической группы "Все пользователи". + УчастникиИзменений = Новый Соответствие; + ИзмененныеГруппы = Новый Соответствие; + + ПользователиСлужебный.ОбновитьСоставыГруппПользователей( + Справочники.ГруппыПользователей.ВсеПользователи, Ссылка, УчастникиИзменений, ИзмененныеГруппы); + + ПользователиСлужебный.ОбновитьИспользуемостьСоставовГруппПользователей( + Ссылка, УчастникиИзменений, ИзмененныеГруппы); + + ПользователиСлужебный.ЗавершитьОбработкуПользователяИБ( + ЭтотОбъект, ПараметрыОбработкиПользователяИБ); + + ПользователиСлужебный.ПослеОбновленияСоставовГруппПользователей( + УчастникиИзменений, ИзмененныеГруппы); + + ПользователиСлужебный.ВключитьЗаданиеКонтрольАктивностиПользователейПриНеобходимости(Ссылка); + + ИнтеграцияПодсистемБСП.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый); + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ОбщиеДействияПередУдалениемВОбычномРежимеИПриОбменеДанными(); + +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + + ДополнительныеСвойства.Вставить("ЗначениеКопирования", ОбъектКопирования.Ссылка); + + ИдентификаторПользователяИБ = Неопределено; + ИдентификаторПользователяСервиса = Неопределено; + Подготовлен = Ложь; + + КонтактнаяИнформация.Очистить(); + Комментарий = ""; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Только для внутреннего использования. +Процедура ОбщиеДействияПередУдалениемВОбычномРежимеИПриОбменеДанными() Экспорт + + // Требуется удалить пользователя ИБ, иначе он попадет в список ошибок в форме ПользователиИБ, + // кроме того, вход под этим пользователем ИБ приведет к ошибке. + + ОписаниеПользователяИБ = Новый Структура; + ОписаниеПользователяИБ.Вставить("Действие", "Удалить"); + ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ); + + ПользователиСлужебный.НачатьОбработкуПользователяИБ(ЭтотОбъект, ПараметрыОбработкиПользователяИБ, Истина); + ПользователиСлужебный.ЗавершитьОбработкуПользователяИБ(ЭтотОбъект, ПараметрыОбработкиПользователяИБ); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.mdo" new file mode 100644 index 00000000..6c032327 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.mdo" @@ -0,0 +1,839 @@ + + + + + + + + + + Пользователи + + ru + Пользователи + + АПК:413 - №744.2.1.1 Допустимо не отключать историю выбора, так как она используется, а переопределение отбора фиксированное, то есть служебные и недействительные пользователи в нее не попадут, но если как-то попали, то это не является проблемой + true + Catalog.Пользователи.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + В группе + + + ru + Группа, которой принадлежит пользователь + + true + + Catalog.Пользователи.EmptyRef + + Use + + + + + Use + Description + + ru + Полное имя + + + ru + Представление пользователя в интерфейсе, +обычно: Фамилия Имя Отчество + + + + + ShowError + Use + + + + + Use + Code + + ru + Пользователь + + + ru + Имя учетной записи пользователя информационной базы + + + + + Use + + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.ИмяПредопределенногоНабора + + Справочник_Пользователи + + Catalog.Пользователи.TabularSection.ДополнительныеРеквизиты + Catalog.Пользователи.TabularSection.ДополнительныеРеквизиты.StandardAttribute.Ref + Catalog.Пользователи.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.Пользователи.TabularSection.ДополнительныеРеквизиты.Attribute.Значение + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.ИмяПредопределенногоНабора + + Справочник_Пользователи + + InformationRegister.ДополнительныеСведения + InformationRegister.ДополнительныеСведения.Dimension.Объект + InformationRegister.ДополнительныеСведения.Dimension.Свойство + InformationRegister.ДополнительныеСведения.Resource.Значение + + + Catalog.ВидыКонтактнойИнформации + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Ref + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Parent + + Catalog.ВидыКонтактнойИнформации.СправочникПользователи + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.StandardAttribute.Ref + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.ВидДляСписка + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.Представление + + Use + true + + + ru + + + Catalog.Пользователи.StandardAttribute.Description + Catalog.Пользователи.Attribute.ИдентификаторПользователяИБ + Managed + Use + + ru + Пользователь + + 2 + 100 + String + Variable + AsDescription + InDialog + BothWays + Catalog.Пользователи.Form.ФормаЭлемента + Catalog.Пользователи.Form.ФормаСписка + Catalog.Пользователи.Form.ФормаСписка + + Недействителен + + ru + Недействителен + + + Boolean + + + ru + Пользователь больше не работает в программе, но сведения о нем сохранены. +Недействительные пользователи скрываются из всех списков +при выборе или подборе в документах и других местах программы. + + + + + Index + Use + Use + + + Подразделение + + ru + Подразделение + + + DefinedType.Подразделение + + + ru + Подразделение, в котором работает пользователь + + + + + Index + Use + Use + + + ФизическоеЛицо + + ru + Физическое лицо + + + DefinedType.ФизическоеЛицо + + + ru + Физическое лицо, с которым связан пользователь + + + + + Index + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Произвольная строка + + true + + + + + + Use + Use + + + Служебный + + ru + Служебный + + + Boolean + + + ru + Неразделенный или разделенный служебный пользователь, права к которому устанавливаются непосредственно и программно. + + + + + Use + Use + + + Подготовлен + + ru + Подготовлен + + + Boolean + + + ru + Пользователь подготовлен ответственным за список пользователей. + + + + + Use + Use + + + ИдентификаторПользователяИБ + + ru + Идентификатор пользователя ИБ + + + UUID + + + ru + Уникальный идентификатор пользователя информационной базы, с которым сопоставлен этот элемент справочника. + + + + + Index + Use + + + ИдентификаторПользователяСервиса + + ru + Идентификатор пользователя сервиса + + + UUID + + + ru + Уникальный идентификатор пользователя сервиса, с которым сопоставлен этот элемент справочника. + + + + + Index + Use + + + СвойстваПользователяИБ + + ru + Свойства пользователя ИБ + + + ValueStorage + + + ru + Служебное хранилище некоторых свойств пользователя ИБ + + + + + Use + Use + + + Фотография + + ru + Фотография + + + ValueStorage + + + + + Use + Use + + + + + + + ДополнительныеРеквизиты + + ru + Дополнительные реквизиты + + + ru + Дополнительные реквизиты объекта + + + Use + LineNumber + + Use + + + + + Свойство + + ru + Свойство + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + ru + Дополнительный реквизит + + + + DontUse + Use + Use + Use + + + Значение + + ru + Значение + + + Characteristic.ДополнительныеРеквизитыИСведения + + + ru + Значение дополнительного реквизита + + + + + Отбор.Владелец + Catalog.Пользователи.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + + DontUse + Use + Use + Use + + + ТекстоваяСтрока + + ru + Текстовая строка + + + String + + + + ru + Полный текст строкового дополнительного реквизита + + + + Use + Use + + + + + + + + КонтактнаяИнформация + + ru + Контактная информация + + + ru + Хранение контактной информации (адреса, веб-страницы, номера телефонов и др.) + + + Use + LineNumber + + Use + + + + + Тип + + ru + Тип + + + EnumRef.ТипыКонтактнойИнформации + + + ru + Тип контактной информации (телефон, адрес и т.п.) + + + + Use + Index + + + Вид + + ru + Вид + + + CatalogRef.ВидыКонтактнойИнформации + + + ru + Вид контактной информации + + + + Use + Index + + + Представление + + ru + Представление + + + String + + 500 + + + + ru + Представление контактной информации для отображения в формах + + + + Use + Use + + + ЗначенияПолей + + ru + Значения полей + + + String + + + + ru + Служебное поле, для хранения контактной информации + + + + Use + + + Страна + + ru + Страна + + + String + + 100 + + + + ru + Страна (заполняется для адреса) + + + + Use + + + Регион + + ru + Регион + + + String + + 50 + + + + ru + Регион (заполняется для адреса) + + + + Use + + + Город + + ru + Город + + + String + + 50 + + + + ru + Город (заполняется для адреса) + + + + Use + + + АдресЭП + + ru + Адрес ЭП + + + String + + 100 + + + + ru + Адрес электронной почты + + + + Use + + + ДоменноеИмяСервера + + ru + Доменное имя сервера + + + String + + 100 + + + + ru + Доменное имя сервера электронной почты или веб-страницы + + + + Use + + + НомерТелефона + + ru + Номер телефона + + + String + + 20 + + + + ru + Полный номер телефона + + + + Use + + + НомерТелефонаБезКодов + + ru + Номер телефона без кодов + + + String + + 20 + + + + ru + Номер телефона без кодов и добавочного номера + + + + Use + + + ВидДляСписка + + ru + Вид для списка + + + CatalogRef.ВидыКонтактнойИнформации + + + ru + Вид контактной информации для списка + + + + Use + + + Значение + + ru + Значение + + + String + + + + ru + Служебное поле, для хранения контактной информации + + + + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ПользователиИнформационнойБазы + + ru + Пользователи информационной базы + + + + ru + + + PersonalComputer + MobileDevice + + + ВыборПользователяОперационнойСистемы + + ru + Выбор пользователя операционной системы + + + + ru + + + PersonalComputer + MobileDevice + + + ОграничениеНаВходВПрограмму + + ru + Ограничение на вход в программу + + + + ru + + + PersonalComputer + MobileDevice + + + СменаПочты + + ru + Смена почты + + PersonalComputer + MobileDevice + + + ВводПароля + + ru + Ввод пароля + + PersonalComputer + MobileDevice + + + ПользователиИнформационнойБазы + + ru + Пользователи информационной базы + + FormCommandBarImportant + + Auto + + ru + Пользователи информационной базы + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..bbfb9a0b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЭтоАвторизованныйПользователь(Пользователь)"; + + Ограничение.ТекстДляВнешнихПользователей = Ограничение.Текст; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..256bae2d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" @@ -0,0 +1,174 @@ + + + + + + + + + + ПользовательскиеНастройкиОтчетов + + ru + Пользовательские настройки отчетов + + Используется для поиска настроек. Содержит только представления. Не содержит самих настроек. + true + Catalog.ПользовательскиеНастройкиОтчетов.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Catalog.ПользовательскиеНастройкиОтчетов.Attribute.Вариант + Catalog.ПользовательскиеНастройкиОтчетов.Attribute.Пользователь + Managed + + ru + Пользовательская настройка отчета + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Вариант + + ru + Вариант + + + CatalogRef.ВариантыОтчетов + + + ru + + + + + + Index + Use + + + Пользователь + + ru + Пользователь + + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + ru + + + + + + Index + Use + + + КлючПользовательскойНастройки + + ru + Ключ пользовательской настройки + + + String + + 36 + + + + ru + + + + + + + + Index + Use + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\320\276\321\201\321\202\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\237\320\276\321\201\321\202\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\321\201\321\202\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\237\320\276\321\201\321\202\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" new file mode 100644 index 00000000..28c94c08 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\320\276\321\201\321\202\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\237\320\276\321\201\321\202\320\260\320\262\320\273\321\217\320\265\320\274\321\213\320\265\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" @@ -0,0 +1,675 @@ + + + + + + + + + + ПоставляемыеДополнительныеОтчетыИОбработки + + ru + Поставляемые дополнительные отчеты и обработки + + true + Catalog.ПоставляемыеДополнительныеОтчетыИОбработки.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + + ru + Поставляемый дополнительный отчет или обработка + + 2 + true + 100 + String + Variable + AsDescription + InDialog + BothWays + + Вид + + ru + Вид + + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + + ru + Вид дополнительного отчета или обработки + + + + + Index + Use + + + ИспользоватьДляФормыОбъекта + + ru + Использовать для формы объекта + + + Boolean + + + ru + Признак использования для формы объекта + + + + + Index + Use + + + ИспользоватьДляФормыСписка + + ru + Использовать для формы списка + + + Boolean + + + ru + Признак использования для формы списка + + + + + Index + Use + + + Публикация + + ru + Публикация + + + EnumRef.ВариантыПубликацииДополнительныхОтчетовИОбработок + + + ru + Вариант публикации (опубликовано, опубликовано для тестирования, не опубликовано) + + + + ShowError + true + + Enum.ВариантыПубликацииДополнительныхОтчетовИОбработок.EnumValue.Используется + + Use + Use + + + ПричинаОтключения + + ru + Причина отключения + + + EnumRef.ПричиныОтключенияДополнительныхОтчетовИОбработокВМоделиСервиса + + + ru + Причина отключения (Блокировка администратором сервиса, Блокировка владельцем, Обновление версии конфигурации) + + + + + Use + Use + + + Информация + + ru + Информация + + + String + + 1024 + + + + ru + Краткая информация о внешней обработке + + + + + + + Use + Use + + + Версия + + ru + Версия + + + String + + 10 + + + + ru + Версия дополнительного отчета или обработки (устанавливается поставщиком) + + + + + Use + Use + + + БезопасныйРежим + + ru + Безопасный режим + + + Boolean + + + ru + Вызывать обработку в безопасном режиме. В безопасном режиме запрещены COM; загрузка внешних компонент; запуск внешних приложений и команд операционной системы; доступ к файловой системе (кроме временных файлов); доступ к сети Интернет. + + + + + Use + Use + + + ИмяОбъекта + + ru + Имя объекта + + + String + + 256 + + + + ru + Имя, под которым дополнительный отчет или обработка регистрируется в системе + + + + + + + Index + Use + Use + + + ИмяФайла + + ru + Имя файла + + + String + + 260 + + + + ru + Имя файла дополнительного отчета или обработки + + + + + + + Use + Use + + + ХранилищеОбработки + + ru + Хранилище обработки + + + ValueStorage + + + ru + Двоичные данные дополнительного отчета или обработки + + + + + Use + + + ХранилищеВариантов + + ru + Хранилище вариантов + + + String + + 150 + + + + ru + Хранилище вариантов отчетов + + + + + + + Use + Use + + + ВерсияGUID + + ru + Версия GUID + + + UUID + + + ru + Уникальный идентификатор версии + + + + + Use + + + КонтролироватьСовместимостьСВерсиямиКонфигурации + + ru + Контролировать совместимость с версиями конфигурации + + + Boolean + + + ru + Признак контроля совместимости с версиями конфигураций + + + + + Use + Use + + + ИспользуетХранилищеВариантов + + ru + Использует хранилище вариантов + + + Boolean + + + ru + Признак использования хранилища вариантов + + + + + Use + Use + + + РежимСовместимостиРазрешений + + ru + Режим совместимости разрешений + + + EnumRef.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок + + + ru + Режим совместимости разрешений (в зависимости от версии БСП) + + + + + Use + Use + + + + + + + Команды + + ru + Команды + + + Use + LineNumber + + Use + + + + + Идентификатор + + ru + Идентификатор + + + String + + 100 + + + + ru + Идентификатор команды (служебное поле) + + + + Use + Use + + + ВариантЗапуска + + ru + Вариант запуска + + + EnumRef.СпособыВызоваДополнительныхОбработок + + + ru + Вариант запуска команды (клиент, сервер, открытие формы) + + + + Use + Use + + + Представление + + ru + Команда + + Представление команды для конечного пользователя + + String + + 200 + + + + ru + Представление команды для конечного пользователя + + + + Use + Use + + + ПоказыватьОповещение + + ru + Показывать оповещение + + + Boolean + + + ru + Показывать оповещение пользователю после выполнения + + + + Use + + + Модификатор + + ru + Модификатор + + + String + + 9 + + + + ru + Модификатор команды (служебное поле) + + + + Use + + + Скрыть + + ru + Скрыть + + + Boolean + + + ru + Скрывать команду + + + + Use + Use + + + + + + + + Совместимость + + ru + Совместимость + + + Use + LineNumber + + Use + + + + + Версия + + ru + Версия + + + String + + 18 + + + + ru + Совместимость с версиями БСП + + + + Use + Use + + + + + + + + Разрешения + + ru + Разрешения + + + Use + LineNumber + + Use + + + + + ВидРазрешения + + ru + Вид разрешения + + + String + + 255 + + + + ru + Представление вида разрешения + + + + Use + Use + + + Параметры + + ru + Параметры + + + ValueStorage + + + ru + Параметры разрешения + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Form.form" new file mode 100644 index 00000000..64063d1f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Form.form" @@ -0,0 +1,1048 @@ + + + + ГруппаДляПапки + 10 + + ДляПисемВПапке + 8 + true + true + + true + + + + ДляПисемВПапке + + + + ДляПисемВПапкеExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + + ДляПисемВПапкеКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + Отбор.Владелец + + УчетнаяЗапись + + + + + + ВключаяПодчиненные + 11 + true + true + + true + + + + ВключаяПодчиненные + + + Right + + ВключаяПодчиненныеExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + + ВключаяПодчиненныеКонтекстноеМеню + 12 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Для папки</value> + + + ГруппаДляПапкиExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ПрименяемыеПравила + 1 + + <key>ru</key> + <value>Применяемые правила</value> + + true + true + + true + + + ПрименяемыеПравила + + None + Add + CancelSearch + Change + Copy + Delete + EndEdit + Find + SortListAsc + SortListDesc + + ПрименяемыеПравилаПрименять + 6 + true + true + + true + + + + ПрименяемыеПравила.Применять + + + None + + ru + Признак применения правила + + + ПрименяемыеПравилаПрименятьExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + ПрименяемыеПравилаПрименятьКонтекстноеМеню + 7 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + + StdPicture.CheckAll + + Left + true + + + + ПрименяемыеПравилаПравило + 4 + + <key>ru</key> + <value>Условие</value> + + true + true + + true + + + + ПрименяемыеПравила.Правило + + + + ПрименяемыеПравилаПравилоExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + ПрименяемыеПравилаПравилоКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + false + true + true + true + + + + ПрименяемыеПравилаПеремещатьВПапку + 19 + true + + true + + + + ПрименяемыеПравила.ПомещатьВПапку + + + + ПрименяемыеПравилаПеремещатьВПапкуExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + ПрименяемыеПравилаПеремещатьВПапкуКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + false + false + true + true + true + + + + ПрименяемыеПравилаКоманднаяПанель + 3 + + ПрименяемыеПравилаПрименить + 13 + true + true + + true + + + ПрименяемыеПравилаПрименитьExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Применить + Auto + true + true + true + UserCmds + Auto + + + ПрименяемыеПравилаГруппа + 45 + + ПрименяемыеПравилаУстановитьВсеПрименить + 16 + true + true + + true + + + ПрименяемыеПравилаУстановитьВсеПрименитьExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПрименитьВсеПравила + Auto + true + true + UserCmds + Auto + + + ПрименяемыеПравилаСнятьВсеПрименить + 15 + true + true + + true + + + ПрименяемыеПравилаСнятьВсеПрименитьExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НеПрименятьВсеПравила + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Применяемые правила группа</value> + + + ПрименяемыеПравилаГруппаРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + + ПрименяемыеПравилаСправочникПравилаОбработкиЭлектроннойПочтыОткрытьПоЗначению1 + 22 + true + true + + true + + + УчетнаяЗапись + + + ПрименяемыеПравилаСправочникПравилаОбработкиЭлектроннойПочтыОткрытьПоЗначению1ExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + Catalog.ПравилаОбработкиЭлектроннойПочты.StandardCommand.OpenByValue + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ГруппаСтандартныеКоманды + 14 + true + true + + true + + + <key>ru</key> + <value>Стандартные команды</value> + + + ГруппаСтандартныеКомандыExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + + Item.ПрименяемыеПравила + + + true + true + + true + + Left + + + true + true + + true + + ПрименяемыеПравилаСтрокаПоиска + 36 + + ПрименяемыеПравилаСтрокаПоискаРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + + ПрименяемыеПравилаСтрокаПоискаКонтекстноеМеню + 37 + true + true + + true + + true + + + true + + + + true + true + + true + + ПрименяемыеПравилаСостояниеПросмотра + 39 + + ПрименяемыеПравилаСостояниеПросмотраРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + + ПрименяемыеПравилаСостояниеПросмотраКонтекстноеМеню + 40 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПрименяемыеПравилаУправлениеПоиском + 42 + + ПрименяемыеПравилаУправлениеПоискомРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + ПрименяемыеПравилаУправлениеПоискомКонтекстноеМеню + 43 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПрименяемыеПравилаExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + ПрименяемыеПравилаКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ + ПредставлениеОтбора + 17 + true + true + + true + + + + Items.ПрименяемыеПравила.CurrentData.ПредставлениеОтбора + + + None + + ПредставлениеОтбораExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеОтбораКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 2 + true + false + true + true + false + true + true + true + + + + ПрименяемыеПравилаСправочникПравилаОбработкиЭлектроннойПочтыОткрытьПоЗначению2 + 47 + true + true + + true + + + УчетнаяЗапись + + + ПрименяемыеПравилаСправочникПравилаОбработкиЭлектроннойПочтыОткрытьПоЗначению2РасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Catalog.ПравилаОбработкиЭлектроннойПочты.StandardCommand.OpenByValue + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + Use + true + true + Vertical + true + true + true + true + true + + ПрименяемыеПравила + + <key>ru</key> + <value>Применяемые правила</value> + + 1 + + ValueTable + + + true + + + true + + + Правило + + <key>ru</key> + <value>Правило</value> + + 1 + + CatalogRef.ПравилаОбработкиЭлектроннойПочты + + + true + + + true + + + + Применять + + <key>ru</key> + <value>Применять</value> + + 2 + + Boolean + + + true + + + true + + + + ПредставлениеОтбора + + <key>ru</key> + <value>Представление отбора</value> + + 3 + + String + + + + true + + + true + + + + ПомещатьВПапку + + <key>ru</key> + <value>Помещать в папку</value> + + 4 + + CatalogRef.ПапкиЭлектронныхПисем + + + true + + + true + + + + + УчетнаяЗапись + + <key>ru</key> + <value>Учетная запись</value> + + 2 + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + true + + + true + + + + ДляПисемВПапке + + <key>ru</key> + <value>Для писем в папке</value> + + 3 + + CatalogRef.ПапкиЭлектронныхПисем + + + true + + + true + + + + ВключаяПодчиненные + + <key>ru</key> + <value>Включая подчиненные</value> + + 4 + + Boolean + + + true + + + true + + + ВключаяПодчиненные + + + + ТекстСообщенияПользователю + 5 + + String + + + + true + + + true + + + + Применить + + <key>ru</key> + <value>Применить</value> + + 1 + + ru + Применить + + + true + + + + Применить + + + DontUse + + + ПрименитьВсеПравила + + <key>ru</key> + <value>Применить все правила</value> + + 2 + + ru + Применить все правила + + + true + + + StdPicture.CheckAll + + + + ПрименитьВсеПравила + + + Picture + DontUse + + + НеПрименятьВсеПравила + + <key>ru</key> + <value>Не применять все правила</value> + + 3 + + ru + Не применять все правила + + + true + + + StdPicture.UncheckAll + + + + НеПрименятьВсеПравила + + + Picture + DontUse + + + УчетнаяЗапись + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + true + + + ДляПисемВПапке + + CatalogRef.ПапкиЭлектронныхПисем + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Help/ru.html" new file mode 100644 index 00000000..650301f4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Help/ru.html" @@ -0,0 +1,22 @@ + +

Предназначена для применения правил обработки электронной почты.

+

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

+

Открывается по команде Применить правила из окна Правила обработки электронной почты или из списка взаимодействий (группировка по папкам) по команде Применить правила обработки контекстного меню по правой кнопке мыши в панели группировки.

+

В списке выводится:

+
  • +
    Условие - наименование условия.
    +
  • +
    Помещать в папку - папка, к которой применяется данное условие.

Применение правил

+
  • В поле Для писем в папке укажите папку, для писем которой необходимо применить новое правило. +
  • Если включить флажок Включая подчиненные, то будут обработаны письма и в дочерних папках. +
  • Включите флажки у тех правил, которые должны быть применены. С помощью кнопки  можно выбрать все правила. С помощью кнопки  можно снять все флажки. +
  • Настройте порядок применения правил. Первыми будут применяться те правила, которые находятся выше в списке. Изменить порядок можно при помощи кнопок  Вверх и  Вниз в командной панели списка. +
  • Нажмите Применить. Отмеченные в списке флажками правила будут применены к письмам указанной папки. +
  • В нижней части окна программа выводит Сообщения о выполнении обработки писем.

+

Пример

+

Было создано два новых правила обработки входящей корреспонденции. Необходимо применить их к неотсортированным письмам, находящимся в папке Входящие.

+
  • Укажите в качестве папки для обработки Входящие. +
  • Флажок Включая подчиненные не включать. +
  • Выберите в списке правил новые и выполните команду Применить.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Module.bsl" new file mode 100644 index 00000000..2f2f5d31 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\270\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\260\320\262\320\270\320\273/Module.bsl" @@ -0,0 +1,198 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не ЗначениеЗаполнено(Параметры.УчетнаяЗапись) Или Параметры.УчетнаяЗапись.Пустая() Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + УчетнаяЗапись = Параметры.УчетнаяЗапись; + + Запрос = Новый Запрос; + Запрос.Текст = " + |ВЫБРАТЬ + | ПравилаОбработкиЭлектроннойПочты.Ссылка КАК Правило, + | ЛОЖЬ КАК Применять, + | ПравилаОбработкиЭлектроннойПочты.ПредставлениеОтбора, + | ПравилаОбработкиЭлектроннойПочты.ПомещатьВПапку + |ИЗ + | Справочник.ПравилаОбработкиЭлектроннойПочты КАК ПравилаОбработкиЭлектроннойПочты + |ГДЕ + | ПравилаОбработкиЭлектроннойПочты.Владелец = &Владелец + | И (НЕ ПравилаОбработкиЭлектроннойПочты.ПометкаУдаления) + | + |УПОРЯДОЧИТЬ ПО + | ПравилаОбработкиЭлектроннойПочты.РеквизитДопУпорядочивания"; + + Запрос.УстановитьПараметр("Владелец", Параметры.УчетнаяЗапись); + Запрос.УстановитьПараметр("Входящие", НСтр("ru = 'Входящие'")); + + Результат = Запрос.Выполнить(); + Если НЕ Результат.Пустой() Тогда + ПрименяемыеПравила.Загрузить(Результат.Выгрузить()); + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.ДляПисемВПапке) Тогда + ДляПисемВПапке = Параметры.ДляПисемВПапке; + Иначе + + Запрос.Текст = " + |ВЫБРАТЬ + | ПапкиЭлектронныхПисем.Ссылка + |ИЗ + | Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем + |ГДЕ + | ПапкиЭлектронныхПисем.ПредопределеннаяПапка + | И ПапкиЭлектронныхПисем.Владелец = &Владелец + | И ПапкиЭлектронныхПисем.Наименование = &Входящие"; + + Результат = Запрос.Выполнить(); + Если НЕ Результат.Пустой() Тогда + Выборка = Результат.Выбрать(); + Выборка.Следующий(); + ДляПисемВПапке = Выборка.Ссылка; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Применить(Команда) + + ОчиститьСообщения(); + ТекстСообщенияПользователю = ""; + + ВыбраноХотьОдноПравило = Ложь; + Отказ = Ложь; + + Для каждого Правило Из ПрименяемыеПравила Цикл + + Если Правило.Применять Тогда + ВыбраноХотьОдноПравило = Истина; + Прервать; + КонецЕсли; + + КонецЦикла; + + Если Не ВыбраноХотьОдноПравило Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Необходимо выбрать хотя бы одно правило для применения'"),,"Список"); + Отказ = Истина; + КонецЕсли; + + Если ДляПисемВПапке.Пустая() Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Не выбрана папка к письмам которой будут применены правила'"),,"ДляПисемВПапке"); + Отказ = Истина; + КонецЕсли; + + Если Отказ Тогда + Возврат; + КонецЕсли; + + ДлительнаяОперация = ПрименитьПравилаНаСервере(); + Если ДлительнаяОперация = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ДлительнаяОперация.Статус = "Выполнено" Тогда + Оповестить("ПримененыПравилаОбработкиПисем"); + Если Не ПустаяСтрока(ТекстСообщенияПользователю) Тогда + ПоказатьОповещениеПользователя(НСтр("ru = 'Применение правил обработки'"), ,ТекстСообщенияПользователю, БиблиотекаКартинок.Информация32); + КонецЕсли; + ИначеЕсли ДлительнаяОперация.Статус = "Выполняется" Тогда + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ОповещениеОЗавершении = Новый ОписаниеОповещения("ПрименитьПравилаЗавершение", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПрименитьВсеПравила(Команда) + + Для каждого Строка Из ПрименяемыеПравила Цикл + Строка.Применять = Истина; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура НеПрименятьВсеПравила(Команда) + + Для каждого Строка Из ПрименяемыеПравила Цикл + Строка.Применять = Ложь; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ПрименитьПравилаНаСервере() + + ПараметрыПроцедуры = Новый Структура; + + ПараметрыПроцедуры.Вставить("ТаблицаПравил", ПрименяемыеПравила.Выгрузить()); + ПараметрыПроцедуры.Вставить("ДляПисемВПапке", ДляПисемВПапке); + ПараметрыПроцедуры.Вставить("ВключаяПодчиненные", ВключаяПодчиненные); + ПараметрыПроцедуры.Вставить("УчетнаяЗапись", УчетнаяЗапись); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Применение правил'") + " "; + + ДлительнаяОперация = ДлительныеОперации.ВыполнитьВФоне( + "Справочники.ПравилаОбработкиЭлектроннойПочты.ПрименитьПравила", + ПараметрыПроцедуры, + ПараметрыВыполнения); + + Если ДлительнаяОперация.Статус = "Выполнено" Тогда + ЗагрузитьРезультат(ДлительнаяОперация.АдресРезультата); + КонецЕсли; + + Возврат ДлительнаяОперация; + +КонецФункции + +&НаКлиенте +Процедура ПрименитьПравилаЗавершение(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + ИначеЕсли Результат.Статус = "Ошибка" Тогда + ВызватьИсключение Результат.КраткоеПредставлениеОшибки; + ИначеЕсли Результат.Статус = "Выполнено" Тогда + ЗагрузитьРезультат(Результат.АдресРезультата); + Оповестить("ПримененыПравилаОбработкиПисем"); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗагрузитьРезультат(АдресРезультата) + + Результат = ПолучитьИзВременногоХранилища(АдресРезультата); + Если ТипЗнч(Результат) = Тип("Строка") + И ЗначениеЗаполнено(Результат) Тогда + ТекстСообщенияПользователю = Результат; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..41d34030 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + РеквизитДопУпорядочивания + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..dcc539dd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,583 @@ + + + + <key>ru</key> + <value>Правила обработки электронной почты </value> + + + ГруппаПользовательскихНастроек + 25 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 4 + + <key>ru</key> + <value>Условие</value> + + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ПомещатьВПапку + 9 + true + true + + true + + + + Список.ПомещатьВПапку + + + + ПомещатьВПапкуExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + + ПомещатьВПапкуКонтекстноеМеню + 10 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 22 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 23 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокSearchString + 27 + + СписокSearchStringExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 28 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 30 + + СписокViewStatusExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 31 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 33 + + СписокSearchControlExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 34 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ПредставлениеОтбора + 13 + true + true + + true + + + + Items.Список.CurrentData.ПредставлениеОтбора + + + None + + ПредставлениеОтбораExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеОтбораКонтекстноеМеню + 14 + true + true + + true + + true + + LabelField + true + Left + Top + Enter + true + Left + true + + 50 + true + true + true + + + + ФормаКоманднаяПанель + -1 + + НастройкаПорядкаЭлементов + 36 + true + true + + true + + + <key>ru</key> + <value>Настройка порядка элементов</value> + + + НастройкаПорядкаЭлементовРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаПрименитьПравила + 8 + true + true + + true + + + ФормаПрименитьПравилаExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПрименитьПравила + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.ПомещатьВПапку + + + Список.ПредставлениеОтбора + + + Список.РеквизитДопУпорядочивания + +
true
+ + Catalog.ПравилаОбработкиЭлектроннойПочты + true + true + true + true + +
+ + ПрименитьПравила + + <key>ru</key> + <value>Применить правила</value> + + 3 + + ru + Применить правила + + + true + + + + ПрименитьПравила + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..78f17443 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,79 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не Параметры.Отбор.Свойство("Владелец") Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + Заголовок = ОбщегоНазначения.ПредставлениеСписка(Метаданные.Справочники.ПравилаОбработкиЭлектроннойПочты) + + ": " + Параметры.Отбор.Владелец; + Если НЕ Взаимодействия.ПользовательЯвляетсяОтветственнымЗаВедениеПапок(Параметры.Отбор.Владелец) Тогда + ТолькоПросмотр = Истина; + Элементы.ФормаПрименитьПравила.Видимость = Ложь; + Элементы.НастройкаПорядкаЭлементов.Видимость = Ложь; + КонецЕсли; + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПрименитьПравила(Команда) + + ОчиститьСообщения(); + + ПараметрыФормы = Новый Структура; + + МассивЭлементовОтбора = ОбщегоНазначенияКлиентСервер.НайтиЭлементыИГруппыОтбора(ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список), "Владелец"); + Если МассивЭлементовОтбора.Количество() > 0 И МассивЭлементовОтбора[0].Использование + И ЗначениеЗаполнено(МассивЭлементовОтбора[0].ПравоеЗначение) Тогда + ПараметрыФормы.Вставить("УчетнаяЗапись",МассивЭлементовОтбора[0].ПравоеЗначение); + Иначе + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не установлен отбор по владельцу(учетной записи) правил.'")); + Возврат; + КонецЕсли; + + ОткрытьФорму("Справочник.ПравилаОбработкиЭлектроннойПочты.Форма.ПрименениеПравил", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); +КонецПроцедуры +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..1a258030 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,424 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + OnChange + НаименованиеПриИзменении + + + НаименованиеExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + ru + После указания отбора из выпадающего списка можно выбрать сформированное наименование + + 70 + + + + ПомещатьВПапку + 3 + true + true + + true + + + + Объект.ПомещатьВПапку + + + + ПомещатьВПапкуExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + ПомещатьВПапкуКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + Отбор.Владелец + + Объект.Owner + + + + ru + Папка, в которую будут помещаться письма, соответствующие отбору + + + + + КомпоновщикНастроекНастройкиОтбор + 11 + + <key>ru</key> + <value>Компоновщик настроек настройки отбор</value> + + true + true + + true + + + КомпоновщикНастроек.Settings.Filter + + None + + КомпоновщикНастроекНастройкиОтборКоманднаяПанель + 13 + + КомпоновщикНастроекНастройкиОтборСвойстваЭлементаПользовательскойНастройки + 14 + true + + true + + + КомпоновщикНастроекНастройкиОтборСвойстваЭлементаПользовательскойНастройкиExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + Form.Item.КомпоновщикНастроекНастройкиОтбор.StandardCommand.UserSettingItemProperties + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnChange + КомпоновщикНастроекНастройкиОтборПриИзменении + + + true + true + + true + + КомпоновщикНастроекНастройкиОтборСтрокаПоиска + 19 + + КомпоновщикНастроекНастройкиОтборСтрокаПоискаРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + КомпоновщикНастроекНастройкиОтборСтрокаПоискаКонтекстноеМеню + 20 + true + true + + true + + true + + + true + + + + true + true + + true + + КомпоновщикНастроекНастройкиОтборСостояниеПросмотра + 22 + + КомпоновщикНастроекНастройкиОтборСостояниеПросмотраРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + КомпоновщикНастроекНастройкиОтборСостояниеПросмотраКонтекстноеМеню + 23 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + КомпоновщикНастроекНастройкиОтборУправлениеПоиском + 25 + + КомпоновщикНастроекНастройкиОтборУправлениеПоискомРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + КомпоновщикНастроекНастройкиОтборУправлениеПоискомКонтекстноеМеню + 26 + true + true + + true + + true + + SearchControlAddition + + true + + + + КомпоновщикНастроекНастройкиОтборExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + КомпоновщикНастроекНастройкиОтборКонтекстноеМеню + 12 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true + All + false +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПравилаОбработкиЭлектроннойПочты + + + true + + + true + +
true
+ true +
+ + КомпоновщикНастроек + 2 + + DataCompositionSettingsComposer + + + true + + + true + + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..669a6a72 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,48 @@ + +

Предназначена для создания и хранения условий автоматического распределения входящей и исходящей корреспонденции по папкам. Правила настраиваются для каждой Учетной записи электронной почты.

+

Настройка правила

+
  • В поле Условие необходимо выбрать наименование созданного правила - текстовое описание условия, по которому будут отбираться письма. +
    • Текст может быть сформирован автоматически, исходя из настроенных условий. +
    • Выберите наименование из выпадающего списка, после того как будут сформированы условия правила. +
    • Если такое наименование слишком длинно, можно написать свое наименование. Поле является обязательным для заполнения.
  • +

    В поле Помещать в папку укажите, в какую папку попадут письма, удовлетворяющие заданным условиям. Для этого выберите папку из списка. Поле является обязательным для заполнения.

Ввод условий

+

Условия размещаются в списке, в котором указываются поля, по которым будет происходить отбор, значения полей отбора, при необходимости группируются поля отбора.

+
  • +
    Задать новое условие можно по команде Добавить новый элемент. Условий может быть несколько.
    +
  • +
    В колонке Поле  выберите поле электронного письма, по которому будет производиться отбор. Для этого укажите нужное поле, затем нажмите кнопку Выбрать.
    +
  • +
    В колонке Вид сравнения можно выбрать операцию сравнения, при этом кроме стандартных операций, например, Больше или равно, имеются нестандартные, например, В списке.
    +
    • +
      С помощью операции сравнения В списке можно задать список возможных значений для отбора, например, сюда можно поместить несколько почтовых ящиков партнера, с которых возможна отправка корреспонденции. Операция сравнения Не в списке является отрицанием предыдущей. Например, в другую папку нужно поместить остальные письма, кроме писем, полученных от перечисленных в списке отправителей.
      +
    • +
      С помощью операции Содержит или Не содержит можно использовать поиск по части поля (сочетанию букв) - наименования, темы, адреса, если полностью это поле неизвестно. Например, можно задать шаблон почтовых ящиков контактных лиц определенного партнера, если название сайта партнера известно. В этом случае письма с почтовых адресов с таким сочетанием букв будут помещены в одну папку.
      +
    • +
      Определить, есть ли в поле значение, можно с помощью операции Заполнено или Не заполнено. Например, с помощью такого условия можно в отдельную папку поместить письма, в которых не указана тема.
  • +
    Затем настройте Значение. Для этого в зависимости от выбранного поля и вида сравнения введите значение, или нажмите кнопку  Выбрать и выберите из предложенного списка значений нужное, или создайте свой список значений, например, список из нескольких адресов электронной почты партнера.
    +
    • +
      В качестве значения можно использовать поля документов Электронное письмо. Для использования этой возможности установите флажок Еще - Использовать в качестве значения поле. После этого можно  Выбрать нужное поле из списка.
  • +
    С помощью флажка Еще - Подробно можно добавить в список условий дополнительные колонки:
    +
    • +
      Режим отображения значения, по умолчанию установлен Быстрый доступ. Можно также выбрать Обычный или Недоступный.
      +
    • +
      Представление для колонки Значение.

Группировка условий

+
  • +
    Можно использовать несколько условий для более тонкого отбора. Это позволит облегчить работу с почтой, если на почтовый ящик компании поступает много электронных писем.
    +
    • +
      В этом случае по команде Сгруппировать условия к выделенным условиям необходимо применить логические операции И, Или, Не. Например, для того чтобы в папку определенного партнера попадали его письма, можно создать правило для папки партнера, а в условиях указать все адреса электронной почты партнера и объединить условия в группу по логической операции Или.
      +
    • +
      Если известно, что письма от данного клиента приходят только определенному сотруднику или с определенных адресов, то можно создать более точное условие для отбора почты также с помощью логической операции Или.
      +
    • +
      Для того чтобы использовать группировку условий, выделите одно из нужных условий, выполните команду Сгруппировать условия, выберите Тип группы - И, Или, Не. С помощью мыши перетащите остальные условия в группу или создайте их внутри группы.
      +
    • +
      Для того чтобы Добавить новую группу, выполните соответствующую команду меню Еще.
      +
    • +
      Отменить группировку можно с помощью команды Еще - Разгруппировать.
      +
    • +
      Поменять порядок условий в списке можно с помощью команд Переместить вверх и Переместить вниз меню Еще.
      +
    • +
      Если в правиле задается несколько условий без группировки, то по умолчанию к таким условиям применяется логическая операция И.
  • +
    Нажмите кнопку Записать и закрыть, после этого созданные правила начнут применяться для всех новых писем учетной записи (при получении писем и при изменении статуса писем, например, с нового на черновик и т.д.).Воспользуйтесь соответствующей командой в списке правил обработки электронной почты, для того чтобы применить правила к старым письмам.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..9b1fa569 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,135 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Ссылка.Пустая() Тогда + + Если Не Взаимодействия.ПользовательЯвляетсяОтветственнымЗаВедениеПапок(Объект.Владелец) Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + Если Параметры.ЗначениеКопирования.Пустая() Тогда + ИнициализироватьКомпоновщикСервер(Неопределено); + Иначе + ИнициализироватьКомпоновщикСервер(Параметры.ЗначениеКопирования.КомпоновщикНастроек.Получить()); + КонецЕсли; + + Иначе + + Если Не Взаимодействия.ПользовательЯвляетсяОтветственнымЗаВедениеПапок(Объект.Владелец) Тогда + ТолькоПросмотр = Истина; + Элементы.КомпоновщикНастроекНастройкиОтбор.ТолькоПросмотр = Истина; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + СохраненныйКомпоновщикНастроек = ТекущийОбъект.КомпоновщикНастроек.Получить(); + ИнициализироватьКомпоновщикСервер(СохраненныйКомпоновщикНастроек); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ТекущийОбъект.ПредставлениеОтбора = Строка(КомпоновщикНастроек.Настройки.Отбор); + ТекущийОбъект.КомпоновщикНастроек = Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки()); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + СформироватьСписокВыбораНаименования(); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура КомпоновщикНастроекНастройкиОтборПриИзменении(Элемент) + + СформироватьСписокВыбораНаименования(); + +КонецПроцедуры + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + + СформироватьСписокВыбораНаименования(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ИнициализироватьКомпоновщикСервер(НастройкаКомпоновки) + + СхемаКомпоновки = Справочники.ПравилаОбработкиЭлектроннойПочты.ПолучитьМакет("СхемаПравилаОбработкиЭлектроннойПочты"); + АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновки,УникальныйИдентификатор); + КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); + + Если НастройкаКомпоновки = Неопределено Тогда + КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию); + Иначе + КомпоновщикНастроек.ЗагрузитьНастройки(НастройкаКомпоновки); + КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СформироватьСписокВыбораНаименования() + + Элементы.Наименование.СписокВыбора.Очистить(); + Если Не ПустаяСтрока(Объект.Наименование) Тогда + Элементы.Наименование.СписокВыбора.Добавить(Объект.Наименование); + КонецЕсли; + ПредставлениеОтбора = Строка(КомпоновщикНастроек.Настройки.Отбор); + Если СтрДлина(ПредставлениеОтбора) > 150 Тогда + ПредставлениеОтбора = Лев(ПредставлениеОтбора,147) + "..."; + КонецЕсли; + Если ПредставлениеОтбора <> Объект.Наименование Тогда + Элементы.Наименование.СписокВыбора.Добавить(ПредставлениеОтбора); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Help/ru.html" new file mode 100644 index 00000000..1bf02ec3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Help/ru.html" @@ -0,0 +1,28 @@ + +

Предназначен для создания и хранения условий автоматического распределения входящей и исходящей корреспонденции по папкам. Правила настраиваются для учетной записи электронной почты.

+

Для писем учетной записи можно задать правила обработки электронной почты, по которым письма будут автоматически размещаться в той или иной папке. Задавать правила обработки имеет смысл, если на учетную запись приходит много корреспонденции.

+

Открывается соответствующей командой в панели навигации учетной записи электронной почты.

+

В списке выводится:

+
  • +
    Условие - наименование условия.
    +
  • +
    Помещать в папку - указывается папка, в которую будут помещены письма, удовлетворяющие условию.

Порядок применения правил

+
  • +
    С помощью кнопок  и  можно перемещать условия в списке.
    +
  • +
    Порядок, в котором правила отсортированы в списке, используется при определении папки для письма.
    +
  • +
    Первыми применяются правила, расположенные в верхней части списка.
    +
  • +
    Если при применении первого правила письмо будет определено в папку, то последующие правила для него выполняться не будут.

Если ни одно из правил не определило папку для письма, то оно будет помещено в папку по умолчанию:

+
  • Входящие - в эту папку попадают по умолчанию все входящие письма. +
  • Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма. +
  • Нежелательная почта в данную папку попадают письма, которые почтовый сервер опознал как спам. +
  • Отправленные - в эту папку по умолчанию попадают все отправленные письма. +
  • Удаленные - в эту папку попадают все помеченные к удалению письма. +
  • Черновики - папка, в которой находятся письма, редактирование которых не завершено.

Ввод правила

+

Применение правил

+
  • Для того чтобы отсортировать по новым правилам письма, которые уже существовали в программе на момент создания правила, нужно выделить условия, затем воспользоваться командой списка правил Применить правила. +
  • Применить правила также можно во время работы с электронной перепиской в списке взаимодействий.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..03a24f56 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ManagerModule.bsl" @@ -0,0 +1,202 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Код"); + Результат.Добавить("Наименование"); + Результат.Добавить("КомпоновщикНастроек"); + Результат.Добавить("ПомещатьВПапку"); + Результат.Добавить("РеквизитДопУпорядочивания"); + Результат.Добавить("ПредставлениеОтбора"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЗначениеРазрешено(Владелец) + | ИЛИ ЗначениеРазрешено(Владелец.ВладелецУчетнойЗаписи, ПустаяСсылка КАК Ложь)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Применяет правила обработки писем. +// +// Параметры: +// ПараметрыВыгрузки - Структура: +// - ДляПисемВПапке - Справочник.ПапкиЭлектронныхПисем - письма, которые находятся в этой папке +// будут обработаны. +// - ВключаяПодчиненные - Булево - признак, того что должны обрабатываться письма в подчиненных папках. +// - ТаблицаПравил - ТаблицаЗначений - таблица правил, которые должны быть применены. +// АдресХранилища - Строка - сообщение о результате применения правил. +// +Процедура ПрименитьПравила(ПараметрыВыгрузки, АдресХранилища) Экспорт + + ТаблицаСоответствий = Новый ТаблицаЗначений; + ТаблицаСоответствий.Колонки.Добавить("Папка"); + ТаблицаСоответствий.Колонки.Добавить("Письмо"); + + ТекстУсловияПоПапке = ?(ПараметрыВыгрузки.ВключаяПодчиненные," В ИЕРАРХИИ(&ПапкаЭлектронногоПисьма) "," = &ПапкаЭлектронногоПисьма "); + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | ВыбранныеПравила.Правило, + | ВыбранныеПравила.Применять + |ПОМЕСТИТЬ ВыбранныеПравила + |ИЗ + | &ВыбранныеПравила КАК ВыбранныеПравила + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВыбранныеПравила.Правило, + | ПравилаОбработкиЭлектроннойПочты.КомпоновщикНастроек, + | ПравилаОбработкиЭлектроннойПочты.ПомещатьВПапку + |ИЗ + | ВыбранныеПравила КАК ВыбранныеПравила + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПравилаОбработкиЭлектроннойПочты КАК ПравилаОбработкиЭлектроннойПочты + | ПО ВыбранныеПравила.Правило = ПравилаОбработкиЭлектроннойПочты.Ссылка + |ГДЕ + | ВыбранныеПравила.Применять + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ЭлектронноеПисьмоВходящее.Ссылка, + | ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма КАК Папка + |ИЗ + | Документ.ЭлектронноеПисьмоВходящее КАК ЭлектронноеПисьмоВходящее + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + | ПО ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоВходящее.Ссылка + |ГДЕ + | ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма " + ТекстУсловияПоПапке +" + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ЭлектронноеПисьмоИсходящее.Ссылка, + | ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма + |ИЗ + | Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + | ПО ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоИсходящее.Ссылка + |ГДЕ + | ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма " + ТекстУсловияПоПапке ; + + Запрос.УстановитьПараметр("ВыбранныеПравила", ПараметрыВыгрузки.ТаблицаПравил); + Запрос.УстановитьПараметр("ПапкаЭлектронногоПисьма", ПараметрыВыгрузки.ДляПисемВПапке); + + Результат = Запрос.ВыполнитьПакет(); + Если Результат[2].Пустой() Тогда + ТекстСообщения = НСтр("ru = 'В выбранной папке нет писем.'"); + ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища); + Возврат; + КонецЕсли; + + ТаблицаПисем = Результат[2].Выгрузить(); + МассивПисем = ТаблицаПисем.ВыгрузитьКолонку("Ссылка"); + МассивПапок = ТаблицаПисем.ВыгрузитьКолонку("Папка"); + МассивПапок = Взаимодействия.УдалитьПовторяющиесяЭлементыМассива(МассивПапок); + + Выборка = Результат[1].Выбрать(); + Пока Выборка.Следующий() Цикл + + СхемаПравилаОбработки = ПолучитьМакет("СхемаПравилаОбработкиЭлектроннойПочты"); + + КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных(); + КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; + КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаПравилаОбработки)); + КомпоновщикНастроек.ЗагрузитьНастройки(Выборка.КомпоновщикНастроек.Получить()); + КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(КомпоновщикНастроек.Настройки.Отбор, + "Ссылка",МассивПисем,ВидСравненияКомпоновкиДанных.ВСписке); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(КомпоновщикНастроек.Настройки.Отбор, + "Ссылка.УчетнаяЗапись",ПараметрыВыгрузки.УчетнаяЗапись,ВидСравненияКомпоновкиДанных.Равно); + + МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаПравилаОбработки, + КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); + + ТекстЗапроса = МакетКомпоновкиДанных.НаборыДанных.ОсновнойНаборДанных.Запрос; + ЗапросПравило = Новый Запрос(ТекстЗапроса); + Для каждого Параметр Из МакетКомпоновкиДанных.ЗначенияПараметров Цикл + ЗапросПравило.Параметры.Вставить(Параметр.Имя, Параметр.Значение); + КонецЦикла; + + РезультатПисьма = ЗапросПравило.Выполнить(); + Если Не РезультатПисьма.Пустой() Тогда + ВыборкаПисьма = РезультатПисьма.Выбрать(); + Пока ВыборкаПисьма.Следующий() Цикл + + НоваяСтрокаТаблицы = ТаблицаСоответствий.Добавить(); + НоваяСтрокаТаблицы.Папка = Выборка.ПомещатьВПапку; + НоваяСтрокаТаблицы.Письмо = ВыборкаПисьма.Ссылка; + + ИндексЭлементаМассиваКУдалению = МассивПисем.Найти(ВыборкаПисьма.Ссылка); + Если ИндексЭлементаМассиваКУдалению <> Неопределено Тогда + МассивПисем.Удалить(ИндексЭлементаМассиваКУдалению); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + КонецЦикла; + + Для каждого СтрокаТаблицы Из ТаблицаСоответствий Цикл + Взаимодействия.УстановитьПапкуЭлектронногоПисьма(СтрокаТаблицы.Письмо, СтрокаТаблицы.Папка, Ложь); + Если ЗначениеЗаполнено(СтрокаТаблицы.Папка) И МассивПапок.Найти(СтрокаТаблицы.Папка) = Неопределено Тогда + МассивПапок.Добавить(СтрокаТаблицы.Папка); + КонецЕсли; + КонецЦикла; + + Взаимодействия.РассчитатьРассмотреноПоПапкам(Взаимодействия.ТаблицаДанныхДляРасчетаРассмотрено(МассивПапок, "Папка")); + + Если ТаблицаСоответствий.Количество() > 0 Тогда + ТекстСообщения = НСтр("ru = 'Перенос писем в папки выполнен.'"); + Иначе + ТекстСообщения = НСтр("ru = 'Ни одно письмо не было перенесено'"); + КонецЕсли; + + ПоместитьВоВременноеХранилище(ТекстСообщения, АдресХранилища); + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..c3f62179 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ObjectModule.bsl" @@ -0,0 +1,32 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не Взаимодействия.ПользовательЯвляетсяОтветственнымЗаВедениеПапок(Владелец) Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Данная операция доступна только ответственному за ведение папок для данной учетной записи'"), + Ссылка,,, + Отказ); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Templates/\320\241\321\205\320\265\320\274\320\260\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Template.dcs" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Templates/\320\241\321\205\320\265\320\274\320\260\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Template.dcs" new file mode 100644 index 00000000..b891be14 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Templates/\320\241\321\205\320\265\320\274\320\260\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Template.dcs" @@ -0,0 +1,140 @@ + + + + ИсточникДанных1 + Local + + + ОсновнойНаборДанных + + Ссылка + Ссылка + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Письмо</v8:content> + </v8:item> + + + true + true + true + true + + + + Тема + Тема + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тема</v8:content> + </v8:item> + + + + АдресЭлектроннойПочтыОтправителя + АдресЭлектроннойПочтыОтправителя + + + ОтправительКонтакт + ОтправительКонтакт + + true + true + true + true + + + + Предмет + Предмет + + true + true + true + true + + + + ТипПисьма + ТипПисьма + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тип письма</v8:content> + </v8:item> + + + + Рассмотрено + Рассмотрено + + ИсточникДанных1 + ВЫБРАТЬ РАЗРЕШЕННЫЕ + ВложенныйЗапрос.Ссылка, + ВложенныйЗапрос.Тема, + ВложенныйЗапрос.ОтправительКонтакт, + ВложенныйЗапрос.АдресЭлектроннойПочтыОтправителя, + ВложенныйЗапрос.Предмет, + ВложенныйЗапрос.ТипПисьма, + ВложенныйЗапрос.Рассмотрено +ИЗ + (ВЫБРАТЬ РАЗЛИЧНЫЕ + ЭлектронноеПисьмоВходящее.Ссылка КАК Ссылка, + ВЫРАЗИТЬ(ЭлектронноеПисьмоВходящее.Тема КАК СТРОКА(1024)) КАК Тема, + ЭлектронноеПисьмоВходящее.ОтправительКонтакт КАК ОтправительКонтакт, + ЭлектронноеПисьмоВходящее.ОтправительАдрес КАК АдресЭлектроннойПочтыОтправителя, + ПредметыПапкиВзаимодействий.Предмет КАК Предмет, + ТИПЗНАЧЕНИЯ(ЭлектронноеПисьмоВходящее.Ссылка) КАК ТипПисьма, + ПредметыПапкиВзаимодействий.Рассмотрено КАК Рассмотрено + ИЗ + Документ.ЭлектронноеПисьмоВходящее КАК ЭлектронноеПисьмоВходящее + {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + ПО (ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоВходящее.Ссылка)} + + ОБЪЕДИНИТЬ ВСЕ + + ВЫБРАТЬ + ЭлектронноеПисьмоИсходящее.Ссылка, + ВЫРАЗИТЬ(ЭлектронноеПисьмоИсходящее.Тема КАК СТРОКА(1024)), + ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка), + УчетныеЗаписиЭлектроннойПочты.АдресЭлектроннойПочты, + ПредметыПапкиВзаимодействий.Предмет, + ТИПЗНАЧЕНИЯ(ЭлектронноеПисьмоИсходящее.Ссылка), + ПредметыПапкиВзаимодействий.Рассмотрено + ИЗ + Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее + {ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты + ПО ЭлектронноеПисьмоИсходящее.УчетнаяЗапись = УчетныеЗаписиЭлектроннойПочты.Ссылка + ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + ПО (ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоИсходящее.Ссылка)}) КАК ВложенныйЗапрос + + + Основной + Основной + + + + Ссылка + + + + + false + Тема + Contains + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" new file mode 100644 index 00000000..1d5ea771 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" @@ -0,0 +1,274 @@ + + + + + + + + + + ПравилаОбработкиЭлектроннойПочты + + ru + Правила обработки электронной почты + + true + Catalog.ПравилаОбработкиЭлектроннойПочты.StandardAttribute.Description + Catalog.ПравилаОбработкиЭлектроннойПочты.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + + ru + Учетная запись + + + ru + Учетная запись, для которой определяются правила обработки электронной почты + + true + + Catalog.УчетныеЗаписиЭлектроннойПочты.EmptyRef + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Условие + + + ru + Условие, по которому обрабатываются письма + + + ShowError + Use + + + + + Use + Code + + ru + Код правила обработки электронных писем + + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Правило обработки электронной почты + + 2 + true + Catalog.УчетныеЗаписиЭлектроннойПочты + 9 + 150 + String + Variable + WithinOwnerSubordination + true + true + AsDescription + InDialog + BothWays + Catalog.ПравилаОбработкиЭлектроннойПочты.Form.ФормаЭлемента + Catalog.ПравилаОбработкиЭлектроннойПочты.Form.ФормаСписка + + КомпоновщикНастроек + + ru + Компоновщик настроек + + + ValueStorage + + + ru + Компоновщик настроек, в котором хранятся правила отбора писем + + + + + Use + Use + + + ПомещатьВПапку + + ru + Помещать в папку + + + CatalogRef.ПапкиЭлектронныхПисем + + + ru + Папка, в которые будут помещены письма согласно правилу обработки + + + + ShowError + + Use + Use + + + РеквизитДопУпорядочивания + + ru + Порядок + + + Number + + 5 + + + + ru + Используется для упорядочивания (служебный) + + + + + 0 + + IndexWithAdditionalOrder + Use + + + ПредставлениеОтбора + + ru + Представление отбора + + + String + + + + ru + Представление отбора, согласно которому письма помещаются в папку + + + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ПрименениеПравил + + ru + Применение правил обработки электронной почты + + + + ru + + + PersonalComputer + MobileDevice + + + СхемаПравилаОбработкиЭлектроннойПочты + + ru + Схема правила обработки электронной почты + + DataCompositionSchema + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..3ece919b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,298 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 12 + + <key>ru</key> + <value>Вышестоящая группа (папка)</value> + + true + true + + true + + + + Объект.Parent + + + 2 + + РодительРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаДляРазработчика + 10 + + Идентификатор + 7 + true + true + + + + Объект.Идентификатор + + + + ИдентификаторРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Для разработчика</value> + + + ГруппаДляРазработчикаРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + true + Picture + NormalSeparation + true + true + Equal + true + Auto + Auto + + + + Комментарий + 15 + true + true + + true + + + + Объект.Комментарий + + + + КомментарийРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 16 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПравилаПроверкиУчета + + + true + + + true + +
true
+ true +
+ + + + + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..b3314845 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + Наименование + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..5ee31092 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1011 @@ + + + + ГруппаПользовательскихНастроек + 117 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 118 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 119 + + ФормаВыполнитьПроверку + 125 + true + true + + true + + + ФормаВыполнитьПроверкуРасширеннаяПодсказка + 126 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьПроверку + Auto + true + true + UserCmds + Auto + + + ФормаВыполнитьВсеПроверки + 154 + true + true + + true + + + ФормаВыполнитьВсеПроверкиРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьВсеПроверки + Auto + true + true + UserCmds + Auto + + + ФормаГруппаДействий + 123 + + ФормаВосстановитьПоНачальномуЗаполнению + 145 + true + true + + true + + + ФормаВосстановитьПоНачальномуЗаполнениюРасширеннаяПодсказка + 146 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВосстановитьПоНачальномуЗаполнению + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма группа действий</value> + + + ФормаГруппаДействийРасширеннаяПодсказка + 124 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 120 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Copy + Create + CreateFolder + LevelDown + LevelUp + + Использование + 100 + true + true + + true + + + + Список.Использование + + + None + + ИспользованиеРасширеннаяПодсказка + 102 + true + true + + true + + Label + true + true + + Left + + + + ИспользованиеКонтекстноеМеню + 101 + true + true + + true + + true + + CheckBoxField + Enter + true + + StdPicture.CheckAll + + Left + true + + + + Группа + 149 + + ГруппаШапка + 147 + + Наименование + 127 + true + true + + true + + + + Список.Наименование + + + + НаименованиеРасширеннаяПодсказка + 129 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 128 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + РегламентноеЗаданиеПредставление + 8 + + <key>ru</key> + <value>Выполняется</value> + + true + true + + true + + + + Список.РегламентноеЗаданиеПредставление + + + + РегламентноеЗаданиеПредставлениеExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + РегламентноеЗаданиеПредставлениеКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 15 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 148 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + Причины + 151 + true + true + + true + + + + Список.Причины + + + + ПричиныРасширеннаяПодсказка + 153 + true + true + + true + + Label + true + true + + Left + + + + ПричиныКонтекстноеМеню + 152 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + 2 + true + + + true + true + + true + + + <key>ru</key> + <value>Группа</value> + + + ГруппаРасширеннаяПодсказка + 150 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + Ссылка + 136 + true + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 137 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + BeforeAddRow + СписокПередНачаломДобавления + + + OnActivateRow + СписокПриАктивизацииСтроки + + + true + true + + true + + СписокСтрокаПоиска + 19 + + СписокСтрокаПоискаРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 20 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 22 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 23 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 25 + + СписокУправлениеПоискомРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 26 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюВыполнитьПроверку + 17 + true + true + + true + + + СписокКонтекстноеМенюВыполнитьПроверкуРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьПроверку + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + Tree + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandAllLevels + true + true + + Список.DefaultPicture + + + + OnGetDataAtServer + СписокПриПолученииДанныхНаСервере + + true + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + true + + true + ГруппаПользовательскихНастроек + +
+ + ПредставлениеОбщегоРасписания + 114 + + <key>ru</key> + <value><Представление общего расписания></value> + + true + true + + true + + + ПредставлениеОбщегоРасписанияРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеОбщегоРасписанияКонтекстноеМеню + 115 + true + true + + true + + true + + Label + true + + + URLProcessing + ПредставлениеОбщегоРасписанияОбработкаНавигационнойСсылки + + Left + Center + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Create + CreateFolder + Delete + LevelDown + LevelUp + SetDeletionMark + Use + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + Список + + <key>ru</key> + <value>Список</value> + + 1 + + DynamicList + + + true + + + true + + + + Список.Ref + + + + + Список.ВыполняетсяТолькоВКонтексте + + + + + Список.Используется + + + + + Список.КонтекстВыполнения + + + + + Список.Кор_НастройкаРегламентов_ИдентификаторРегламентногоЗадания + + + + Список.ИдентификаторРегламентногоЗадания + + + Список.Использование + + + Список.СпособВыполнения + + + Список.Ссылка + + + Список.ЭтоГруппа + +
true
+ + ВЫБРАТЬ + Проверки.Родитель КАК Родитель, + Проверки.Ссылка КАК Ссылка, + Проверки.ВерсияДанных КАК ВерсияДанных, + Проверки.ПометкаУдаления КАК ПометкаУдаления, + Проверки.Предопределенный КАК Предопределенный, + Проверки.Наименование КАК Наименование, + Проверки.ВажностьПроблемы КАК ВажностьПроблемы, + Проверки.Идентификатор КАК Идентификатор, + Проверки.СпособВыполнения КАК СпособВыполнения, + Проверки.Использование КАК Использование, + ВЫРАЗИТЬ("" КАК СТРОКА(128)) КАК РегламентноеЗаданиеПредставление, + Проверки.ЭтоГруппа КАК ЭтоГруппа, + Проверки.ИдентификаторРегламентногоЗадания КАК ИдентификаторРегламентногоЗадания, + Проверки.Причины КАК Причины, + Проверки.Рекомендация КАК Рекомендация +ИЗ + Справочник.ПравилаПроверкиУчета КАК Проверки + Catalog.ПравилаПроверкиУчета + true + true + true + true + true + +
+ + ПредставлениеОбщегоРасписания + 14 + + String + + + + true + + + true + + + + ДлительнаяОперация + 15 + + + true + + + true + + + + ВыполнитьПроверку + + <key>ru</key> + <value>Выполнить проверку</value> + + 1 + + ru + Выполнить одну или несколько выбранных проверок ведения учета + + + true + + + StdPicture.GenerateReport + + + + ВыполнитьПроверку + + + TextPicture + DontUse + + + ВосстановитьПоНачальномуЗаполнению + + <key>ru</key> + <value>Восстановить по начальному заполнению</value> + + 2 + + ru + Восстанавливает элементы справочника проверок ведения учета до состояния поставки. Функциональность аналогична соответствующему обработчику обновления. + + + true + + + + ВосстановитьПоНачальномуЗаполнению + + + DontUse + + + ВыполнитьВсеПроверки + + <key>ru</key> + <value>Выполнить все</value> + + 3 + + ru + Выполнить все проверки ведения учета + + + true + + + + ВыполнитьВсеПроверки + + + Auto + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..8a9165de --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,428 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + РазрешеноНастраиватьПравилаПроверкиУчета = ПравоДоступа("Изменение", Метаданные.Справочники.ПравилаПроверкиУчета); + Элементы.ФормаВыполнитьПроверку.Видимость = РазрешеноНастраиватьПравилаПроверкиУчета; + Элементы.СписокКонтекстноеМенюВыполнитьПроверку.Видимость = РазрешеноНастраиватьПравилаПроверкиУчета; + Элементы.ФормаВосстановитьПоНачальномуЗаполнению.Видимость = РазрешеноНастраиватьПравилаПроверкиУчета; + + ЭтоАдминистраторСистемы = Пользователи.ЭтоПолноправныйПользователь(, Истина); + + Если Не ( (Не ОбщегоНазначения.РазделениеВключено() И РазрешеноНастраиватьПравилаПроверкиУчета) + Или (ОбщегоНазначения.РазделениеВключено() И ЭтоАдминистраторСистемы) ) Тогда + + Элементы.ПредставлениеОбщегоРасписания.Видимость = Ложь; + Элементы.РегламентноеЗаданиеПредставление.Видимость = Ложь; + + Иначе + + ОбщееРегламентноеЗадание = РегламентныеЗаданияСервер.Задание(Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета); + Если ОбщееРегламентноеЗадание <> Неопределено Тогда + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Расписание) + Иначе + Если ЭтоАдминистраторСистемы Тогда + ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Шаблон.Расписание.Получить()); + Элементы.РегламентноеЗаданиеПредставление.Видимость = Истина; + Иначе + Элементы.РегламентноеЗаданиеПредставление.Видимость = Ложь; + Элементы.ПредставлениеОбщегоРасписания.Видимость = Ложь; + ОбщееРасписаниеПредставление = ""; + КонецЕсли; + КонецЕсли; + Иначе + Если (ОбщегоНазначения.РазделениеВключено() И ЭтоАдминистраторСистемы) Или Не ОбщегоНазначения.РазделениеВключено() Тогда + ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание не доступно'"); + Иначе + ОбщееРасписаниеПредставление = ""; + Элементы.ПредставлениеОбщегоРасписания.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ПредставлениеОбщегоРасписания", ОбщееРасписаниеПредставление); + + Элементы.ПредставлениеОбщегоРасписания.Заголовок = СформироватьСтрокуСРасписанием(); + + КонецЕсли; + + Элементы.ПредставлениеОбщегоРасписания.Доступность = ОбновлениеИнформационнойБазы.ОбъектОбработан( + Метаданные.Справочники.ПравилаПроверкиУчета.ПолноеИмя()).Обработан; + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + ДополнительныеСвойстваКомпоновщика = Настройки.ДополнительныеСвойства; + Если Не ДополнительныеСвойстваКомпоновщика.Свойство("ПредставлениеОбщегоРасписания") Тогда + Возврат; + КонецЕсли; + + КлючиСтрок = Строки.ПолучитьКлючи(); + Для Каждого КлючСтроки Из КлючиСтрок Цикл + ДанныеСтроки = Строки[КлючСтроки].Данные; + Если ДанныеСтроки.ЭтоГруппа Тогда + Продолжить; + КонецЕсли; + Если ДанныеСтроки.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.Вручную Тогда + ДанныеСтроки.РегламентноеЗаданиеПредставление = НСтр("ru = 'Вручную'"); + ИначеЕсли ДанныеСтроки.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.ПоОбщемуРасписанию Тогда + ДанныеСтроки.РегламентноеЗаданиеПредставление = НСтр("ru = 'По общему расписанию'") + ИначеЕсли ДанныеСтроки.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.ПоОтдельномуРасписанию Тогда + ИдентификаторЗадания = ДанныеСтроки.ИдентификаторРегламентногоЗадания; + Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Тогда + ДанныеСтроки.РегламентноеЗаданиеПредставление = НСтр("ru = 'Расписание не задано'"); + Иначе + НайденноеРегламентноеЗадание = РегламентныеЗаданияСервер.Задание(Новый УникальныйИдентификатор(ИдентификаторЗадания)); + Если НайденноеРегламентноеЗадание <> Неопределено Тогда + РасписаниеСтрокой = Строка(НайденноеРегламентноеЗадание.Расписание); + Иначе + + ОбъектПравила = КлючСтроки.ПолучитьОбъект(); + + Параметры = Новый Структура; + Параметры.Вставить("Использование", Истина); + Параметры.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета); + Параметры.Вставить("Расписание", ОбщегоНазначенияКлиентСервер.СтруктураВРасписание( + ОбъектПравила.РасписаниеВыполненияПроверки.Получить())); + + ВосстановленноеЗадание = РегламентныеЗаданияСервер.ДобавитьЗадание(Параметры); + + ПараметрыЗадания = Новый Структура; + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Строка(ВосстановленноеЗадание.УникальныйИдентификатор)); + ПараметрыЗадания.Вставить("Параметры", МассивПараметров); + + РегламентныеЗаданияСервер.ИзменитьЗадание(ВосстановленноеЗадание.УникальныйИдентификатор, ПараметрыЗадания); + + ОбъектПравила.ИдентификаторРегламентногоЗадания = Строка(ВосстановленноеЗадание.УникальныйИдентификатор); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОбъектПравила); + + РасписаниеСтрокой = Строка(ВосстановленноеЗадание.Расписание); + + КонецЕсли; + ДанныеСтроки.РегламентноеЗаданиеПредставление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'По расписанию: ""%1""'"), РасписаниеСтрокой); + КонецЕсли; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьПроверку(Команда) + + ЕстьГруппы = Ложь; + Проверки = ВыделенныеПроверки(ЕстьГруппы); + Если Проверки.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Необходимо выбрать в списке одну или несколько проверок.'"); + КонецЕсли; + + Если ЕстьГруппы Тогда + Проверки = ВсеВыделенныеПроверки(Проверки); + КонецЕсли; + + Если Проверки.Количество() > 0 Тогда + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполнить выбранные проверки (%1)? + |Это может занять некоторое время.'"), + Проверки.Количество()); + Иначе + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполнить выбранную проверку ""%1""? + |Это может занять некоторое время.'"), + Проверки[0]); + КонецЕсли; + ПоказатьВопрос(Новый ОписаниеОповещения("ВыполнитьПроверкуПродолжение", ЭтотОбъект, Проверки), + ТекстВопроса, РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьВсеПроверки(Команда) + Проверки = ВсеВыделенныеПроверки(); + Если Проверки.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Необходимо выбрать в списке одну или несколько проверок.'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполнить все проверки (%1)? + |Это может занять некоторое время.'"), + Проверки.Количество()); + ПоказатьВопрос(Новый ОписаниеОповещения("ВыполнитьПроверкуПродолжение", ЭтотОбъект, Проверки), + ТекстВопроса, РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +&НаКлиенте +Процедура ВосстановитьПоНачальномуЗаполнению(Команда) + ВосстановитьПоНачальномуЗаполнениюНаСервере(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + + // Не выводить, если не описаны причины возникновения проблемы. + + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = Элемент.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элементы.Причины.Имя); + ОформляемоеПоле.Использование = Истина; + + ЭлементОтбораДанных = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Причины"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементЦветаОформления = Элемент.Оформление.Элементы.Найти("Видимость"); + ЭлементЦветаОформления.Значение = Ложь; + ЭлементЦветаОформления.Использование = Истина; + +КонецПроцедуры + +&НаСервере +Функция ВыполнитьПроверкиНаСервере(Проверки) + + Если ДлительнаяОперация <> Неопределено Тогда + ДлительныеОперации.ОтменитьВыполнениеЗадания(ДлительнаяОперация.ИдентификаторЗадания); + КонецЕсли; + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Выполнение проверок ведения учета'"); + Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "КонтрольВеденияУчетаСлужебный.ВыполнитьПроверки", Проверки); + +КонецФункции + +&НаКлиенте +Процедура ВыполнитьПроверкуПродолжение(РезультатВопроса, Проверки) Экспорт + + Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + ДлительнаяОперация = ВыполнитьПроверкиНаСервере(Проверки); + + ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьПроверкуЗавершение", ЭтотОбъект); + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется проверка. Это может занять некоторое время.'"); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроверкуЗавершение(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Результат.Статус = "Ошибка" Тогда + ВызватьИсключение Результат.КраткоеПредставлениеОшибки; + ИначеЕсли Результат.Статус = "Выполнено" Тогда + Оповестить("КонтрольВеденияУчета_УспешнаяПроверка"); + ПоказатьОповещениеПользователя(НСтр("ru = 'Проверка выполнена'"), + "e1cib/data/Отчет.РезультатыПроверкиУчета", + НСтр("ru = 'Проверка ведения учета завершена успешно.'")); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ВосстановитьПоНачальномуЗаполнениюНаСервере() + + КонтрольВеденияУчетаСлужебный.ОбновитьПараметрыПроверокУчета(); + Если КонтрольВеденияУчетаСлужебный.ЕстьИзмененияПараметровПроверокУчета() Тогда + КонтрольВеденияУчетаСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ВыделенныеПроверки(ЕстьГруппы) + + Результат = Новый Массив; + Для Каждого Проверка Из Элементы.Список.ВыделенныеСтроки Цикл + ДанныеПроверки = Элементы.Список.ДанныеСтроки(Проверка); + Если ДанныеПроверки <> Неопределено Тогда + Результат.Добавить(ДанныеПроверки.Ссылка); + Если ДанныеПроверки.ЭтоГруппа Тогда + ЕстьГруппы = Истина; + КонецЕсли; + КонецЕсли; + КонецЦикла; + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ВсеВыделенныеПроверки(Проверки = Неопределено) + + Если Проверки = Неопределено Тогда + Запрос = Новый Запрос( + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ПравилаПроверкиУчета.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета + |ГДЕ + | НЕ ПравилаПроверкиУчета.ЭтоГруппа"); + Иначе + Запрос = Новый Запрос( + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ПравилаПроверкиУчета.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета + |ГДЕ + | ПравилаПроверкиУчета.Ссылка В ИЕРАРХИИ(&Проверки) + | И НЕ ПравилаПроверкиУчета.ЭтоГруппа"); + + Запрос.УстановитьПараметр("Проверки", Проверки); + КонецЕсли; + Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + +КонецФункции + +&НаСервере +Функция СформироватьСтрокуСРасписанием() + + ОбщееРегламентноеЗадание = РегламентныеЗаданияСервер.Задание(Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета); + Если ОбщееРегламентноеЗадание <> Неопределено Тогда + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + ОбщееРасписание = ОбщееРегламентноеЗадание.Расписание; + ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Расписание); + Иначе + Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + ОбщееРасписание = ОбщееРегламентноеЗадание.Шаблон.Расписание.Получить(); + ОбщееРасписаниеПредставление = Строка(ОбщееРасписание); + Иначе + ОбщееРасписание = Неопределено; + ОбщееРасписаниеПредставление = НСтр("ru = 'Просмотр расписания недоступен'"); + КонецЕсли; + КонецЕсли; + Иначе + ОбщееРасписание = Неопределено; + ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание недоступно'"); + КонецЕсли; + + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + + ТекстоваяСсылка = ПоместитьВоВременноеХранилище(ОбщееРасписание, УникальныйИдентификатор); + + Возврат Новый ФорматированнаяСтрока(НСтр("ru = 'Общее расписание выполнения проверок:'") + " ", + Новый ФорматированнаяСтрока(ОбщееРасписаниеПредставление, , , , ТекстоваяСсылка)); + + Иначе + + Возврат Новый ФорматированнаяСтрока(НСтр("ru = 'Общее расписание выполнения проверок:'") + " ", + Новый ФорматированнаяСтрока(ОбщееРасписаниеПредставление, , ЦветаСтиля.ГиперссылкаЦвет)); + + КонецЕсли; + +КонецФункции + +&НаКлиенте +Процедура ПредставлениеОбщегоРасписанияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Диалог = Новый ДиалогРасписанияРегламентногоЗадания(ПолучитьИзВременногоХранилища(НавигационнаяСсылкаФорматированнойСтроки)); + Оповещение = Новый ОписаниеОповещения("ПредставлениеОбщегоРасписанияНажатиеНаКлиентеЗавершение", ЭтотОбъект); + Диалог.Показать(Оповещение); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредставлениеОбщегоРасписанияНажатиеНаКлиентеЗавершение(Расписание, ДополнительныеПараметры) Экспорт + ПредставлениеОбщегоРасписанияНажатиеНаСервереЗавершение(Расписание, ДополнительныеПараметры); +КонецПроцедуры + +&НаСервере +Процедура ПредставлениеОбщегоРасписанияНажатиеНаСервереЗавершение(Расписание, ДополнительныеПараметры) + + Если Расписание = Неопределено Тогда + Возврат; + КонецЕсли; + + ИдентификаторОбщегоЗадания = РегламентныеЗаданияСервер.УникальныйИдентификатор(Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета); + РегламентныеЗаданияСервер.ИзменитьЗадание(ИдентификаторОбщегоЗадания, Новый Структура("Расписание", Расписание)); + + Элементы.ПредставлениеОбщегоРасписания.Заголовок = СформироватьСтрокуСРасписанием(); + + Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ПредставлениеОбщегоРасписания", Строка(Расписание)); + Элементы.Список.Обновить(); + +КонецПроцедуры + +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); +КонецПроцедуры +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..0f67da88 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1429 @@ + + + + ГруппаНаименованиеИспользование + 163 + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 60 + true + true + true + true + true + + + + Использование + 155 + + <key>ru</key> + <value>Использование</value> + + true + true + + true + + + + Объект.Использование + + + Right + + ru + Если флажок снят, проверка не выполняется ни интерактивно, ни по расписанию + + + ИспользованиеРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + + ИспользованиеКонтекстноеМеню + 156 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование использование</value> + + + ГруппаНаименованиеИспользованиеРасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + Auto + + + + ОсновнаяПанель + 181 + + ПараметрыПроверки + 183 + + ГруппаШапка + 54 + + ПричиныПроблемы + 75 + + <key>ru</key> + <value>Причины проблемы</value> + + true + true + + true + + + + Объект.Причины + + + Left + + ПричиныПроблемыРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + + ПричиныПроблемыКонтекстноеМеню + 76 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + Рекомендации + 160 + true + true + + true + + + + Объект.Рекомендация + + + Left + + РекомендацииРасширеннаяПодсказка + 162 + true + true + + true + + Label + true + true + + Left + + + + РекомендацииКонтекстноеМеню + 161 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ВажностьПроблемы + 49 + + <key>ru</key> + <value>Важность проблемы</value> + + true + true + + true + + + + Объект.ВажностьПроблемы + + + Left + + ВажностьПроблемыРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + + ВажностьПроблемыКонтекстноеМеню + 50 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 16 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаРасписание + 212 + + ВыполняетсяВФонеПоРасписанию + 217 + true + true + + true + + + + ВыполняетсяВФонеПоРасписанию + + + Right + + OnChange + ВыполняетсяВФонеПоРасписаниюПриИзменении + + + ВыполняетсяВФонеПоРасписаниюРасширеннаяПодсказка + 219 + true + true + + true + + Label + true + true + + Left + + + + ВыполняетсяВФонеПоРасписаниюКонтекстноеМеню + 218 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаНастройкиРасписания + 220 + + СелекторРасписания + 222 + true + true + + true + + + + СелекторРасписания + + + None + + OnChange + СелекторРасписанияПриИзменении + + + СелекторРасписанияРасширеннаяПодсказка + 224 + true + true + + true + + Label + true + true + + Left + + + + СелекторРасписанияКонтекстноеМеню + 223 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + по общему расписанию + + + 1 + + + + + ru + по индивидуальному расписанию + + + 2 + + + + + + ГруппаПредставленийРасписаний + 225 + + ПредставлениеОбщегоРасписания + 214 + + <key>ru</key> + <value><Представление общего расписания></value> + + true + true + + true + + + ПредставлениеОбщегоРасписанияРасширеннаяПодсказка + 216 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеОбщегоРасписанияКонтекстноеМеню + 215 + true + true + + true + + true + + Label + true + + Left + Center + + + + ПредставлениеИндивидуальногоРасписания + 172 + + <key>ru</key> + <value><Представление индивидуального расписания></value> + + true + true + + true + + + ПредставлениеИндивидуальногоРасписанияРасширеннаяПодсказка + 174 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеИндивидуальногоРасписанияКонтекстноеМеню + 173 + true + true + + true + + true + + Label + true + + + URLProcessing + ПредставлениеИндивидуальногоРасписанияОбработкаНавигационнойСсылки + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Представлений расписаний</value> + + + ГруппаПредставленийРасписанийРасширеннаяПодсказка + 226 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройки расписания</value> + + + ГруппаНастройкиРасписанияРасширеннаяПодсказка + 221 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Расписание проверки</value> + + + ГруппаРасписаниеРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + Picture + WeakSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Параметры проверки</value> + + + ПараметрыПроверкиРасширеннаяПодсказка + 184 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Дополнительно + 185 + + ГруппаДатаНачалаЛимитПроблем + 190 + + ДатаНачалаПроверки + 178 + true + true + + true + + + + Объект.ДатаНачалаПроверки + + + + ДатаНачалаПроверкиРасширеннаяПодсказка + 180 + true + true + + true + + Label + true + true + + Left + + + + ДатаНачалаПроверкиКонтекстноеМеню + 179 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ЛимитПроблем + 192 + true + true + + true + + + + Объект.ЛимитПроблем + + + + ЛимитПроблемРасширеннаяПодсказка + 194 + true + true + + true + + Label + true + true + + Left + + + + ЛимитПроблемКонтекстноеМеню + 193 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Дата начала лимит проблем</value> + + + ГруппаДатаНачалаЛимитПроблемРасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + Auto + Auto + + + + ГруппаДляРазработчика + 198 + + Идентификатор + 78 + true + true + + + + Объект.Идентификатор + + + + ИдентификаторРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторКонтекстноеМеню + 79 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ПутьДоПроцедурыОбработчика + 205 + + <key>ru</key> + <value>Процедура проверки</value> + + true + true + + true + + + + ПутьДоПроцедурыОбработчика + + + + ПутьДоПроцедурыОбработчикаРасширеннаяПодсказка + 207 + true + true + + true + + Label + true + true + + Left + + + + ПутьДоПроцедурыОбработчикаКонтекстноеМеню + 206 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Для разработчика</value> + + + ГруппаДляРазработчикаРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + true + Picture + NormalSeparation + true + true + Equal + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + ДополнительноРасширеннаяПодсказка + 186 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Основная панель</value> + + + ОсновнаяПанельРасширеннаяПодсказка + 182 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + Комментарий + 195 + true + true + + true + + + + Объект.Комментарий + + + + КомментарийРасширеннаяПодсказка + 197 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 196 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаВыполнитьПроверку + 17 + true + true + + true + + + ФормаВыполнитьПроверкуРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьПроверку + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьСтандартныеНастройки + 208 + true + true + + true + + + ФормаУстановитьСтандартныеНастройкиРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьСтандартныеНастройки + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОчиститьРезультатыПроверки + 227 + true + true + + true + + + ФормаОчиститьРезультатыПроверкиРасширеннаяПодсказка + 228 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОчиститьРезультатыПроверки + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + Объект + 1 + + CatalogObject.ПравилаПроверкиУчета + + + true + + + true + +
true
+ true +
+ + АдресИндивидуальногоРасписания + 16 + + String + + + + true + + + true + + + + ДлительнаяОперация + 17 + + + true + + + true + + + + ПутьДоПроцедурыОбработчика + + <key>ru</key> + <value>Путь до процедуры обработчика</value> + + 18 + + String + + + + true + + + true + + + + ВыполняетсяВФонеПоРасписанию + + <key>ru</key> + <value>Выполняется в фоне по расписанию</value> + + 19 + + Boolean + + + true + + + true + + + + СелекторРасписания + + <key>ru</key> + <value>Селектор расписания</value> + + 20 + + Number + + 1 + + + + true + + + true + + + + ВыполнитьПроверку + + <key>ru</key> + <value>Выполнить проверку</value> + + 1 + + ru + Выполнить проверку ведения учета + + + true + + + StdPicture.GenerateReport + + + + ВыполнитьПроверку + + + TextPicture + DontUse + + + УстановитьСтандартныеНастройки + + <key>ru</key> + <value>Установить стандартные настройки</value> + + 2 + + ru + Установить стандартные настройки + + + true + + + CommonPicture.СинхронизацияДанныхКоллизия + + + + УстановитьСтандартныеНастройки + + + DontUse + + + ОчиститьРезультатыПроверки + + <key>ru</key> + <value>Очистить результаты проверки</value> + + 3 + + true + + + + ОчиститьРезультатыПроверки + + + Auto + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + AfterWrite + ПослеЗаписи + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..27e5821e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,31 @@ + +

Предназначена для настройки проверки ведения учета.

+

Открыть проверку можно из списка Проверки ведения учета.

+

По умолчанию все проверки, предусмотренные в программе, уже включены, а часть из них выполняется автоматически в фоне.

+

В редких случаях может возникнуть необходимость что-либо перенастроить. В этом случае можно изменить настройки проверки.

+

В поле Комментарий можно написать дополнительную информацию о проверке.

+

Использование

+
  • Если проверку в данный момент не нужно проводить, ее можно отключить с помощью флажка Использование.

Важность проблемы

+
  • В соответствующем поле можно указать Важность проблемы: +
    • Информация; +
    • Предупреждение; +
    • Ошибка (по умолчанию) +
    • Полезный совет.

Автоматическое выполнение

+
  • +
    Для того чтобы проверка проходила в автоматическом режиме, включите флажок Выполняется в фоне по расписанию.
    +
  • +
    С помощью переключателя можно указать параметры проведения автоматической проверки:
    +
    • +
      По общему расписанию (по умолчанию);
      +
    • +
      По индивидуальному расписанию. После выбора становится доступной ссылка Настроить индивидуальное расписание.

Выполнение проверки вручную

+
  • При необходимости можно произвести в любой момент вручную с помощью кнопки Выполнить проверку.

Дополнительные настройки

+
  • +
    На вкладке Дополнительно можно указать следующие параметры проверки:
    +
    • +
      Дата начала проверки - для документов и других объектов программы, привязанных к временной оси, имеется возможность задания пороговой даты. Например, это полезно для того, чтобы не выполнять проверки в уже закрытых или архивных периодах. По умолчанию эта дата не заполнена, т.е. проверяется все.
      +
    • +
      Лимит проблем - предусмотрена возможность наложить ограничения на количество проблем, выявляемых конкретной проверкой. Например, проверка заполнения обязательных реквизитов в списке с большим количеством элементов может быть ограничена определенным лимитом выводимых проблем.

Возврат к стандартным настройкам

+
  • +
    С помощью команды Еще - Установить стандартные настройки можно вернуть стандартные настройки проверки.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..40da1940 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,518 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ВызватьИсключение НСтр("ru = 'Интерактивное создание запрещено.'"); + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект); + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Не ТолькоПросмотр; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Не ТолькоПросмотр; + + МетаданныеТекущейПроверки = МетаданныеПроверки(Объект.Идентификатор); + УстановитьДоступностьПоляВажности(ЭтотОбъект, МетаданныеТекущейПроверки); + УстановитьПутьДоПроцедурыОбработчика(ЭтотОбъект, МетаданныеТекущейПроверки); + + РазрешеноНастраиватьПравилаПроверкиУчета = ПравоДоступа("Изменение", Метаданные.Справочники.ПравилаПроверкиУчета); + Элементы.ФормаВыполнитьПроверку.Видимость = РазрешеноНастраиватьПравилаПроверкиУчета; + Элементы.ФормаУстановитьСтандартныеНастройки.Видимость = РазрешеноНастраиватьПравилаПроверкиУчета; + + УстановитьНачальныеНастройкиРасписания(); + ЭтоАдминистраторСистемы = Пользователи.ЭтоПолноправныйПользователь(, Истина); + Если Не ОбщегоНазначения.РазделениеВключено() Или ЭтоАдминистраторСистемы Тогда + СформироватьРасписания(); + ИначеЕсли ОбщегоНазначения.РазделениеВключено() И Не ЭтоАдминистраторСистемы Тогда + Элементы.ГруппаРасписание.Видимость = Ложь; + КонецЕсли; + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если Не ЗначениеЗаполнено(ТекущийОбъект.Код) Тогда + ТекущийОбъект.УстановитьНовыйКод(); + КонецЕсли; + + Если ЗначениеЗаполнено(АдресИндивидуальногоРасписания) Тогда + ТекущийОбъект.РасписаниеВыполненияПроверки = ПолучитьИзВременногоХранилища(АдресИндивидуальногоРасписания); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПредставлениеИндивидуальногоРасписанияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ДанныеХранилища = ПолучитьИзВременногоХранилища(НавигационнаяСсылкаФорматированнойСтроки); + Если ДанныеХранилища = "ДобавитьЗадание" Тогда + ДиалогРасписания = Новый ДиалогРасписанияРегламентногоЗадания(Новый РасписаниеРегламентногоЗадания); + ОповещениеИзменения = Новый ОписаниеОповещения("ДобавитьЗаданиеНаКлиентеЗавершение", ЭтотОбъект); + ДиалогРасписания.Показать(ОповещениеИзменения); + Иначе + ДиалогРасписания = Новый ДиалогРасписанияРегламентногоЗадания(ДанныеХранилища); + ОповещениеИзменения = Новый ОписаниеОповещения("ИзменитьЗаданиеНаКлиентеЗавершение", ЭтотОбъект); + ДиалогРасписания.Показать(ОповещениеИзменения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполняетсяВФонеПоРасписаниюПриИзменении(Элемент) + + Если ВыполняетсяВФонеПоРасписанию Тогда + УстановитьНастройкиРасписанияНаСервере(); + Иначе + СкрытьНастройкиРасписанияНаСервере(); + КонецЕсли; + + Модифицированность = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура СелекторРасписанияПриИзменении(Элемент) + + УстановитьНастройкиРасписанияНаСервере(); + Модифицированность = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьПроверку(Команда) + + Если Не Записать() Тогда + Возврат; + КонецЕсли; + + Если Не Объект.Использование Тогда + ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьПроверкуПослеВопроса", ЭтотОбъект); + ПоказатьВопрос(ОповещениеОЗавершении, НСтр("ru = 'Проверка отключена. Все равно выполнить?'"), РежимДиалогаВопрос.ДаНет); + Возврат; + КонецЕсли; + + ВыполнитьПроверкуПослеВопроса(КодВозвратаДиалога.Да, Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСтандартныеНастройки(Команда) + + ТекстВопроса = НСтр("ru = 'Установить стандартные настройки?'"); + Обработчик = Новый ОписаниеОповещения("УстановитьСтандартныеНастройкиНаКлиенте", ЭтотОбъект); + ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьРезультатыПроверки(Команда) + ОчиститьРезультатыПроверкиНаСервере(); + Сообщение = НСтр("ru = 'Результаты предыдущих проверок успешно очищены.'"); + ОбщегоНазначенияКлиент.СообщитьПользователю(Сообщение); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ВыполнитьПроверкуНаСервере() + + Если ДлительнаяОперация <> Неопределено Тогда + ДлительныеОперации.ОтменитьВыполнениеЗадания(ДлительнаяОперация.ИдентификаторЗадания); + КонецЕсли; + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполнение проверки ведения учета ""%1""'"), Объект.Наименование); + + Проверки = Новый Массив; + Проверки.Добавить(Объект.Ссылка); + Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "КонтрольВеденияУчетаСлужебный.ВыполнитьПроверки", Проверки); + +КонецФункции + +&НаКлиенте +Процедура ВыполнитьПроверкуПослеВопроса(РезультатВопроса, ДополнительныеПараметры) Экспорт + + Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + ДлительнаяОперация = ВыполнитьПроверкуНаСервере(); + + ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьПроверкуЗавершение", ЭтотОбъект); + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется проверка. Это может занять некоторое время.'"); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроверкуЗавершение(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Результат.Статус = "Ошибка" Тогда + ВызватьИсключение Результат.КраткоеПредставлениеОшибки; + ИначеЕсли Результат.Статус = "Выполнено" Тогда + ПоказатьОповещениеПользователя(НСтр("ru = 'Проверка выполнена'"),, + НСтр("ru = 'Проверка ведения учета завершена успешно.'")); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СформироватьРасписания() + + СформироватьСтрокуСОбщимРасписанием(); + СформироватьСтрокуСИндивидуальнымРасписанием(); + +КонецПроцедуры + +&НаСервере +Процедура СформироватьСтрокуСИндивидуальнымРасписанием() + + ИдентификаторРегламентногоЗадания = Объект.ИдентификаторРегламентногоЗадания; + ОтдельноеРегламентноеЗадание = Неопределено; + ОтдельноеРасписаниеПредставление = ""; + + Если ЗначениеЗаполнено(ИдентификаторРегламентногоЗадания) Тогда + ОтдельноеРегламентноеЗадание = РегламентныеЗаданияСервер.Задание(ИдентификаторРегламентногоЗадания); + Если ОтдельноеРегламентноеЗадание <> Неопределено Тогда + ОтдельноеРасписаниеПредставление = Строка(ОтдельноеРегламентноеЗадание.Расписание) + ". "; + КонецЕсли; + КонецЕсли; + + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + + Если ОтдельноеРегламентноеЗадание = Неопределено Тогда + Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок = + Новый ФорматированнаяСтрока(НСтр("ru = 'Настроить расписание'"), , , , ПоместитьВоВременноеХранилище("ДобавитьЗадание", УникальныйИдентификатор)); + Иначе + Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок = + Новый ФорматированнаяСтрока(ОтдельноеРасписаниеПредставление, , , , ПоместитьВоВременноеХранилище(ОтдельноеРегламентноеЗадание.Расписание, УникальныйИдентификатор)); + КонецЕсли; + + Иначе + + Если ОтдельноеРегламентноеЗадание = Неопределено Тогда + Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок = + Новый ФорматированнаяСтрока(ОтдельноеРасписаниеПредставление + ". ", , ЦветаСтиля.ГиперссылкаЦвет); + Иначе + Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок = + Новый ФорматированнаяСтрока(ОтдельноеРасписаниеПредставление, , ЦветаСтиля.ГиперссылкаЦвет); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СформироватьСтрокуСОбщимРасписанием() + + ОбщееРегламентноеЗадание = РегламентныеЗаданияСервер.Задание(Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета); + Если ОбщееРегламентноеЗадание <> Неопределено Тогда + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Расписание); + Иначе + Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Шаблон.Расписание.Получить()); + КонецЕсли; + КонецЕсли; + Иначе + ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание не доступно'"); + КонецЕсли; + + Элементы.ПредставлениеОбщегоРасписания.Заголовок = + Новый ФорматированнаяСтрока(ОбщееРасписаниеПредставление, , ЦветаСтиля.ГиперссылкаЦвет); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьЗаданиеНаКлиентеЗавершение(Расписание, ДополнительныеПараметры) Экспорт + ИзменитьЗаданиеНаСервереЗавершение(Расписание, ДополнительныеПараметры); +КонецПроцедуры + +&НаСервере +Процедура ИзменитьЗаданиеНаСервереЗавершение(Расписание, ДополнительныеПараметры) + + Если Расписание = Неопределено Тогда + Возврат; + КонецЕсли; + + РегламентноеЗадание = РегламентныеЗаданияСервер.Задание(Объект.ИдентификаторРегламентногоЗадания); + Если РегламентноеЗадание = Неопределено Тогда + ДобавитьЗаданиеНаСервереЗавершение(Расписание, ДополнительныеПараметры); + Иначе + + РегламентныеЗаданияСервер.ИзменитьЗадание(Объект.ИдентификаторРегламентногоЗадания, Новый Структура("Расписание", Расписание)); + Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок = + Новый ФорматированнаяСтрока(Строка(Расписание), , , , ПоместитьВоВременноеХранилище(Расписание, УникальныйИдентификатор)); + + АдресИндивидуальногоРасписания = ПоместитьВоВременноеХранилище(Новый ХранилищеЗначения(ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(Расписание)), УникальныйИдентификатор); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьЗаданиеНаКлиентеЗавершение(Расписание, ДополнительныеПараметры) Экспорт + ДобавитьЗаданиеНаСервереЗавершение(Расписание, ДополнительныеПараметры); +КонецПроцедуры + +&НаСервере +Процедура ДобавитьЗаданиеНаСервереЗавершение(Расписание, ДополнительныеПараметры) + + Если Расписание = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыЗадания = Новый Структура; + ПараметрыЗадания.Вставить("Расписание", Расписание); + ПараметрыЗадания.Вставить("Использование", Истина); + ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета); + + РегламентноеЗадание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания); + + Объект.ИдентификаторРегламентногоЗадания = Строка(РегламентноеЗадание.УникальныйИдентификатор); + + ПараметрыЗадания = Новый Структура; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Строка(РегламентноеЗадание.УникальныйИдентификатор)); + + ПараметрыЗадания.Вставить("Параметры", МассивПараметров); + РегламентныеЗаданияСервер.ИзменитьЗадание(РегламентноеЗадание.УникальныйИдентификатор, ПараметрыЗадания); + + Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок = + Новый ФорматированнаяСтрока(Строка(Расписание), , , , ПоместитьВоВременноеХранилище(Расписание, УникальныйИдентификатор)); + + АдресИндивидуальногоРасписания = ПоместитьВоВременноеХранилище(Новый ХранилищеЗначения(ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(Расписание)), УникальныйИдентификатор); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция МетаданныеПроверки(Идентификатор) + + СтруктураПроверки = Новый Структура; + Проверки = КонтрольВеденияУчетаСлужебныйПовтИсп.ПроверкиВеденияУчета().Проверки; + СтрокаПроверки = Проверки.Найти(Идентификатор, "Идентификатор"); + + Если СтрокаПроверки = Неопределено Тогда + Возврат Неопределено; + Иначе + КолонкиПроверок = Проверки.Колонки; + Для Каждого ТекущаяКолонка Из КолонкиПроверок Цикл + СтруктураПроверки.Вставить(ТекущаяКолонка.Имя, СтрокаПроверки[ТекущаяКолонка.Имя]); + КонецЦикла; + КонецЕсли; + + Возврат СтруктураПроверки; + +КонецФункции + +&НаСервереБезКонтекста +Процедура УстановитьДоступностьПоляВажности(Форма, МетаданныеТекущейПроверки) + Форма.Элементы.ВажностьПроблемы.Доступность = Не (МетаданныеТекущейПроверки <> Неопределено И МетаданныеТекущейПроверки.ЗапрещеноИзменениеВажности); +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьПутьДоПроцедурыОбработчика(Форма, МетаданныеТекущейПроверки) + Форма.ПутьДоПроцедурыОбработчика = ?(МетаданныеТекущейПроверки = Неопределено, НСтр("ru = 'Не задан обработчик'"), МетаданныеТекущейПроверки.ОбработчикПроверки); +КонецПроцедуры + +&НаСервере +Процедура ОчиститьРезультатыПроверкиНаСервере() + + НаборЗаписей = РегистрыСведений.РезультатыПроверкиУчета.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ПравилоПроверки.Установить(Объект.Ссылка); + НаборЗаписей.Записать(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСтандартныеНастройкиНаКлиенте(Ответ, ПараметрыВыполнения) Экспорт + + Если Ответ = КодВозвратаДиалога.Нет Тогда + Возврат; + КонецЕсли; + + УстановитьСтандартныеНастройкиНаСервере(); + Модифицированность = Истина; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьСтандартныеНастройкиНаСервере() + + МетаданныеТекущейПроверки = МетаданныеПроверки(Объект.Идентификатор); + Если МетаданныеТекущейПроверки = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Проверка ведения учета с идентификатором ""%1"" не существует.'"), Объект.Идентификатор); + КонецЕсли; + + ЗаполнитьЗначенияСвойств(Объект, МетаданныеТекущейПроверки, , "Идентификатор"); + Объект.ПроверкаВеденияУчетаИзменена = Ложь; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьНастройкиРасписанияНаСервере() + + Если СелекторРасписания = 0 Тогда + + Если Объект.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.ПоОбщемуРасписанию Тогда + + СелекторРасписания = 1; + + Элементы.СелекторРасписания.Доступность = Истина; + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Ложь; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Истина; + + ИначеЕсли Объект.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.ПоОтдельномуРасписанию Тогда + + СелекторРасписания = 2; + + Элементы.СелекторРасписания.Доступность = Истина; + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Истина; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Ложь; + + КонецЕсли; + + ИначеЕсли СелекторРасписания = 1 Тогда + + Объект.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.ПоОбщемуРасписанию; + Элементы.СелекторРасписания.Доступность = Истина; + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Ложь; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Истина; + + ИначеЕсли СелекторРасписания = 2 Тогда + + Объект.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.ПоОтдельномуРасписанию; + Элементы.СелекторРасписания.Доступность = Истина; + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Истина; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Ложь; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СкрытьНастройкиРасписанияНаСервере() + + Объект.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.Вручную; + Элементы.СелекторРасписания.Доступность = Ложь; + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Ложь; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Ложь; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьНачальныеНастройкиРасписания() + + Если Объект.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.ПоОбщемуРасписанию Тогда + + ВыполняетсяВФонеПоРасписанию = Истина; + СелекторРасписания = 1; + + Элементы.СелекторРасписания.Доступность = Истина; + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Ложь; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Истина; + + ИначеЕсли Объект.СпособВыполнения = Перечисления.СпособыВыполненияПроверки.ПоОтдельномуРасписанию Тогда + + ВыполняетсяВФонеПоРасписанию = Истина; + СелекторРасписания = 2; + + Элементы.СелекторРасписания.Доступность = Истина; + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Истина; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Ложь; + + Иначе + + ВыполняетсяВФонеПоРасписанию = Ложь; + СелекторРасписания = 1; + + Элементы.СелекторРасписания.Доступность = Ложь; + Элементы.ПредставлениеИндивидуальногоРасписания.Доступность = Ложь; + Элементы.ПредставлениеОбщегоРасписания.Доступность = Ложь + + КонецЕсли; + +КонецПроцедуры + +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..442944ab --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/Help/ru.html" @@ -0,0 +1,23 @@ + +

Предназначен для хранения правил проверки учета.

+

Открывается с помощью ссылки Правила проверки учета в разделе Администрирование - Обслуживание - Корректировка данных.

+

В списке выводится:

+
  • Использование проверки (в графе проставлен флажок, если проверка используется); +
  • Наименование; +
  • Расписание проверки; +
  • Важность проблемы.

Способы проведения проверок

+
  • Вручную - с помощью кнопки Выполнить. +
  • По общему расписанию - для корректировки расписания перейдите по ссылке в нижней части окна. Если расписание заполнено, ссылка показывает расписание. +
  • По индивидуальному расписанию - для этого откройте проверку двойным щелчком мыши, измените необходимые поля.

Просмотр выявленных проблем

+
  • +
    Результаты проверки выводятся в отчете Контроль ведения учета.
    +
  • +
    Отчет можно открыть:
    +
    • +
      с помощью кнопки Отчеты - Результаты проверки учета;
      +
    • +
       из проблемного объекта;
      +
    • +
      из списка Текущие дела на Начальной странице.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/ManagerModule.bsl" new file mode 100644 index 00000000..e8601bda --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/ManagerModule.bsl" @@ -0,0 +1,120 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос( + "ВЫБРАТЬ + | ПравилаПроверкиУчета.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета + |ГДЕ + | ПравилаПроверкиУчета.Использование + | И ПравилаПроверкиУчета.Идентификатор В(&ИдентификаторыПроверок)"); + + ПроверкиВеденияУчета = КонтрольВеденияУчетаСлужебныйПовтИсп.ПроверкиВеденияУчета().Проверки; + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Отключена", Истина); + ОтключенныеПроверки = ПроверкиВеденияУчета.НайтиСтроки(ПараметрыОтбора); + + ИдентификаторыПроверок = Новый Массив; + Для Каждого ОтключеннаяПроверка Из ОтключенныеПроверки Цикл + ИдентификаторыПроверок.Добавить(ОтключеннаяПроверка.Идентификатор); + КонецЦикла; + + Запрос.УстановитьПараметр("ИдентификаторыПроверок", ИдентификаторыПроверок); + Ссылки = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Ссылки); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ОбработкаЗавершена = Истина; + + ОбъектМетаданных = Метаданные.Справочники.ПравилаПроверкиУчета; + ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя(); + + ОбъектовОбработано = 0; + ПроблемныхОбъектов = 0; + + ОтключаемаяПроверка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ПолноеИмяОбъекта); + Пока ОтключаемаяПроверка.Следующий() Цикл + + НачатьТранзакцию(); + + Попытка + + ОтключаемаяПроверкаСсылка = ОтключаемаяПроверка.Ссылка; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ОтключаемаяПроверкаСсылка); + + Блокировка.Заблокировать(); + + ОтключаемаяПроверкаОбъект = ОтключаемаяПроверкаСсылка.ПолучитьОбъект(); + ОтключаемаяПроверкаОбъект.Использование = Ложь; + ОбъектовОбработано = ОбъектовОбработано + 1; + + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОтключаемаяПроверкаОбъект); + + ЗафиксироватьТранзакцию(); + + Исключение + + ОтменитьТранзакцию(); + + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось установить источник данных правила проверки %1. + |Возможно он поврежден и не подлежит восстановлению. + | + |Информация для администратора: %2'"), + ОтключаемаяПроверкаСсылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + ЗаписьЖурналаРегистрации( + ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Предупреждение, + ОбъектМетаданных, + ОтключаемаяПроверкаСсылка, + Комментарий); + + КонецПопытки; + + КонецЦикла; + + Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта) Тогда + ОбработкаЗавершена = Ложь; + КонецЕсли; + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре Справочник.ПравилаПроверкиУчета.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые записи проблемных объектов (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + , , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедура Справочник.ПравилаПроверкиУчета.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию проблемных объектов: %1'"), + ОбъектовОбработано)); + КонецЕсли; + + Параметры.ОбработкаЗавершена = ОбработкаЗавершена; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/ObjectModule.bsl" new file mode 100644 index 00000000..a6f44ed2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/ObjectModule.bsl" @@ -0,0 +1,83 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не ЭтоГруппа И ПометкаУдаления Тогда + Использование = Ложь; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + + ПроверкаВеденияУчетаИзменена = ОбъектБылИзменен(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ОбъектБылИзменен() + + Если ЭтоНовый() Тогда + Возврат Ложь; + КонецЕсли; + + Если ПроверкаВеденияУчетаИзменена Тогда + Возврат Истина; + КонецЕсли; + + Если ДополнительныеСвойства.Свойство("ПроверятьИзмененность") И Не ДополнительныеСвойства.ПроверятьИзмененность Тогда + Возврат Ложь; + КонецЕсли; + + ПроверяемыеРеквизиты = Новый Массив; + ПроверяемыеРеквизиты.Добавить("Наименование"); + + Если Не ЭтоГруппа Тогда + + Реквизиты = Метаданные().Реквизиты; + Для Каждого Реквизит Из Реквизиты Цикл + + Если Реквизит.Имя = "ДополнительныеПараметры" + Или Реквизит.Имя = "РасписаниеВыполненияПроверки" + Или Реквизит.Имя = "ПроверкаВеденияУчетаИзменена" Тогда + Продолжить; + КонецЕсли; + + ПроверяемыеРеквизиты.Добавить(Реквизит.Имя); + + КонецЦикла; + + КонецЕсли; + + Для Каждого ПроверяемыйРеквизит Из ПроверяемыеРеквизиты Цикл + + Если Ссылка[ПроверяемыйРеквизит] <> ЭтотОбъект[ПроверяемыйРеквизит] Тогда + Возврат Истина; + КонецЕсли; + + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260.mdo" new file mode 100644 index 00000000..3f284561 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260/\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\243\321\207\320\265\321\202\320\260.mdo" @@ -0,0 +1,481 @@ + + + + + + + + + + ПравилаПроверкиУчета + + ru + Правила проверки учета + + true + Catalog.ПравилаПроверкиУчета.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Входит в группу + + + ru + Группа, к которой относится правило проверки. + + true + + Catalog.ПравилаПроверкиУчета.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование + + + ru + Название проверки + + + ShowError + Use + + + + + Use + Code + + ru + Код + + + ru + Код правила проверки (не используется). + + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Правило проверки учета + + true + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + Catalog.ПравилаПроверкиУчета.Form.ФормаЭлемента + Catalog.ПравилаПроверкиУчета.Form.ФормаГруппы + Catalog.ПравилаПроверкиУчета.Form.ФормаСписка + + ВажностьПроблемы + + ru + Важность проблемы + + + EnumRef.ВажностьПроблемыУчета + + + ru + Важность проблем, выявляемых проверкой. + + + + ShowError + + Use + Use + + + Идентификатор + + ru + Идентификатор + + + String + + 255 + + + + ru + Строковый идентификатор проверки. + + + + + Index + Use + ForFolderAndItem + Use + + + Использование + + ru + Использование + + + Boolean + + + ru + Проверка включена + + + + + true + + Use + Use + + + Причины + + ru + Причины + + + String + + + + ru + Предполагаемая причина проблемы. + + + + + Use + Use + + + Рекомендация + + ru + Рекомендация + + + String + + + + ru + Рекомендация по решению проблемы. + + + + + Use + Use + + + СпособВыполнения + + ru + Способ выполнения + + + EnumRef.СпособыВыполненияПроверки + + + ru + Способ выполнения проверки. + + + + + Use + Use + + + ИдентификаторРегламентногоЗадания + + ru + Идентификатор регламентного задания + + + String + + 128 + + + + ru + Строковый идентификатор связанного регламентного задания. + + + + + Use + + + ДополнительныеПараметры + + ru + Дополнительные параметры + + + ValueStorage + + + ru + Произвольный набор дополнительных сведений, связанных с проверкой. + + + + + Use + Use + + + ДатаНачалаПроверки + + ru + Дата начала проверки + + + Date + + + + + + Use + Use + + + ЛимитПроблем + + ru + Лимит проблем + + + Number + + 8 + + + + ru + Лимит количества проблем. + + + + + 0 + + Use + Use + + + РасписаниеВыполненияПроверки + + ru + Расписание выполнения проверки + + + ValueStorage + + + ru + Для хранения расписания регламентного задания, на случай интерактивного удаления. + + + + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Произвольная строка + + + + + + + Use + ForFolderAndItem + Use + + + КонтекстПроверокВеденияУчета + + ru + Контекст проверок ведения учета + + + DefinedType.КонтекстПроверокВеденияУчета + + + ru + Определяет контекст проверок учета. + + + + + Use + ForFolderAndItem + Use + + + УточнениеКонтекстаПроверокВеденияУчета + + ru + Уточнение контекста проверок ведения учета + + + DefinedType.УточнениеКонтекстаПроверокВеденияУчета + + + ru + Уточнение контекста выполнения проверки. Например может отвечать на вопрос: когда выполнять? До? После? Во время? + + + + + Use + Use + + + ПроверкаВеденияУчетаИзменена + + ru + Проверка ведения учета изменена + + + Boolean + + + ru + Флаг определяющий находится ли данное правило на поддержке. + + + + + Use + ForFolderAndItem + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..2f2cad91 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,76 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Имена реквизитов справочника, значения которых разрешено изменять массово. +// +// Возвращаемое значение: +// Массив из Строка - имена реквизитов справочника. +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Имена реквизитов справочника, в разрезе которых контролируется уникальность элементов. +// +// Возвращаемое значение: +// Массив из Строка - имена реквизитов справочника. +// +Функция ПоляЕстественногоКлюча() Экспорт + + Результат = Новый Массив(); + + Результат.Добавить("Отчет"); + Результат.Добавить("КлючВарианта"); + + Возврат Результат; + +КонецФункции + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" new file mode 100644 index 00000000..3a8ee279 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" @@ -0,0 +1,43 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + Если ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда + ПроверитьЗаполнениеПредопределенного(Отказ); + КонецЕсли; + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если Не ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда + ВызватьИсключение НСтр("ru = 'Запись в справочник ""Предопределенные варианты отчетов"" запрещена. Его данные заполняются автоматически.'"); + КонецЕсли; +КонецПроцедуры + +// Базовые проверки корректности данных предопределенных вариантов отчетов. +Процедура ПроверитьЗаполнениеПредопределенного(Отказ) + + Если ПометкаУдаления Тогда + Возврат; + КонецЕсли; + Если ЗначениеЗаполнено(Отчет) Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru = 'Не заполнено поле ""Отчет""'"); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..44cb2f1f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" @@ -0,0 +1,565 @@ + + + + + + + + + + ПредопределенныеВариантыОтчетов + + ru + Предопределенные варианты отчетов + + Предопределенные варианты отчетов конфигурации + true + Catalog.ПредопределенныеВариантыОтчетов.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Отчет + + + ru + Отчет, который содержит этот вариант отчета + + true + + Catalog.ПредопределенныеВариантыОтчетов.EmptyRef + + Use + + + + + Use + Description + + ru + + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + + ru + Предопределенный вариант отчета + + true + HierarchyOfItems + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Отчет + + ru + Отчет + + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + + + + + + Index + Use + + + КлючВарианта + + ru + Ключ варианта + + + String + + 256 + + + + ru + + + + + + + + Index + Use + + + Включен + + ru + Включен + + + Boolean + + + ru + + + + + + Index + Use + + + ГруппироватьПоОтчету + + ru + Группировать по отчету + + + Boolean + + + + + Index + Use + + + ВидимостьПоУмолчанию + + ru + Видимость по умолчанию + + + Boolean + + + ru + + + + + + Use + + + Описание + + ru + Описание + + + String + + + + ru + + + + + + + + Use + Use + + + ХешНастроек + + ru + Хеш настроек + + + String + + 32 + + + + ru + Используется при обновлении программы. + + + + + + + Use + + + НаименованияПолей + + ru + Наименования полей + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + true + true + + + + + + Use + Use + + + НаименованияПараметровИОтборов + + ru + Наименования параметров и отборов + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + true + true + + + + + + Use + Use + + + КлючевыеСлова + + ru + Ключевые слова + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + + + + Use + Use + + + КлючЗамеров + + ru + Ключ замеров + + + String + + 135 + + + + + + + + Use + + + + + + + Размещение + + ru + Размещение + + + Use + LineNumber + + Use + + + + + Подсистема + + ru + Подсистема + + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Раздел или группа + + + + Use + Index + + + Важный + + ru + Важный + + + Boolean + + + ru + + + + + Use + Index + + + СмТакже + + ru + См также + + Вариант находится в группе "См. также" + + Boolean + + + ru + + + + + Use + Index + + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + + Use + Index + Use + + + Наименование + + ru + Наименование + + + String + + 150 + + + + ru + Наименование варианта отчета + + + + Use + Index + Use + + + Описание + + ru + Описание + + + String + + + + + Use + Use + + + НаименованияПолей + + ru + Наименования полей + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + + + Use + Use + + + НаименованияПараметровИОтборов + + ru + Наименования параметров и отборов + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + + + Use + Use + + + КлючевыеСлова + + ru + Ключевые слова + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..2f2cad91 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ManagerModule.bsl" @@ -0,0 +1,76 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Имена реквизитов справочника, значения которых разрешено изменять массово. +// +// Возвращаемое значение: +// Массив из Строка - имена реквизитов справочника. +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Имена реквизитов справочника, в разрезе которых контролируется уникальность элементов. +// +// Возвращаемое значение: +// Массив из Строка - имена реквизитов справочника. +// +Функция ПоляЕстественногоКлюча() Экспорт + + Результат = Новый Массив(); + + Результат.Добавить("Отчет"); + Результат.Добавить("КлючВарианта"); + + Возврат Результат; + +КонецФункции + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..dff832ed --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/ObjectModule.bsl" @@ -0,0 +1,40 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + Если ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда + ПроверитьЗаполнениеПредопределенного(Отказ); + КонецЕсли; + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если Не ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда + ВызватьИсключение НСтр("ru = 'Справочник ""Предопределенные варианты отчетов"" изменяется только при автоматическом заполнении его данных.'"); + КонецЕсли; +КонецПроцедуры + +// Базовые проверки корректности данных предопределенных вариантов отчетов. +Процедура ПроверитьЗаполнениеПредопределенного(Отказ) + Если ПометкаУдаления Тогда + Возврат; + ИначеЕсли Не ЗначениеЗаполнено(Отчет) Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не заполнено поле ""%1""'"), "Отчет"); + Иначе + Возврат; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" new file mode 100644 index 00000000..50c1b0a1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.mdo" @@ -0,0 +1,566 @@ + + + + + + + + + + ПредопределенныеВариантыОтчетовРасширений + + ru + Предопределенные варианты отчетов расширений + + Предопределенные варианты отчетов конфигурации + true + Catalog.ПредопределенныеВариантыОтчетовРасширений.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Отчет + + + ru + Отчет, который содержит этот вариант отчета + + true + + Catalog.ПредопределенныеВариантыОтчетов.EmptyRef + + Use + + + + + Use + Description + + ru + + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + + ru + Предопределенный вариант отчета + + true + HierarchyOfItems + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Отчет + + ru + Отчет + + + CatalogRef.ИдентификаторыОбъектовРасширений + + + ru + + + + + + Index + Use + + + КлючВарианта + + ru + Ключ варианта + + + String + + 256 + + + + ru + + + + + + + + Index + Use + + + Включен + + ru + Включен + + + Boolean + + + ru + + + + + + Index + Use + + + ГруппироватьПоОтчету + + ru + Группировать по отчету + + + Boolean + + + + + Index + Use + + + ВидимостьПоУмолчанию + + ru + Видимость по умолчанию + + + Boolean + + + ru + + + + + + Use + + + Описание + + ru + Описание + + + String + + + + ru + + + + + + + + Use + Use + + + ХешНастроек + + ru + Хеш настроек + + + String + + 32 + + + + ru + Используется при обновлении программы. + + + + + + + Use + + + НаименованияПолей + + ru + Наименования полей + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + true + true + + + + + + Use + Use + + + НаименованияПараметровИОтборов + + ru + Наименования параметров и отборов + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + true + true + + + + + + Use + Use + + + КлючевыеСлова + + ru + Ключевые слова + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + + + + Use + Use + + + КлючЗамеров + + ru + Ключ замеров + + + String + + 135 + + + + + + + + Use + + + + + + + Размещение + + ru + Размещение + + + Use + LineNumber + + Use + + + + + Подсистема + + ru + Подсистема + + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Раздел или группа + + + + Use + Index + + + Важный + + ru + Важный + + + Boolean + + + ru + + + + + Use + Index + + + СмТакже + + ru + См также + + Вариант находится в группе "См. также" + + Boolean + + + ru + + + + + Use + Index + + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + + Use + Index + Use + + + Наименование + + ru + Наименование + + + String + + 150 + + + + ru + Наименование варианта отчета + + + + Use + Index + Use + + + Описание + + ru + Описание + + + String + + + + + Use + Use + + + НаименованияПолей + + ru + Наименования полей + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + + + Use + Use + + + НаименованияПараметровИОтборов + + ru + Наименования параметров и отборов + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + + + Use + Use + + + КлючевыеСлова + + ru + Ключевые слова + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\321\210\320\270\320\261\320\272\320\260\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\321\217\320\232\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\265/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\321\210\320\270\320\261\320\272\320\260\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\321\217\320\232\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\265/Form.form" new file mode 100644 index 00000000..70c6131a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\321\210\320\270\320\261\320\272\320\260\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\321\217\320\232\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\265/Form.form" @@ -0,0 +1,952 @@ + + + + Ошибки + 35 + + <key>ru</key> + <value>Ошибки</value> + + true + true + + true + + + Ошибки + + None + + ОшибкиКартинка + 66 + true + true + + true + + + + Ошибки.Картинка + + + None + + ОшибкиКартинкаРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + + ОшибкиКартинкаКонтекстноеМеню + 67 + true + true + + true + + true + + PictureField + EnterOnInput + true + Left + true + + true + true + true + true + AsFileRef + + + + ОшибкиПричина + 48 + true + true + + true + + + + Ошибки.Причина + + + + ОшибкиПричинаРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + ОшибкиПричинаКонтекстноеМеню + 49 + true + true + + true + + true + + InputField + true + EnterOnInput + true + true + Left + true + + true + true + true + true + true + true + true + + + + ОшибкиПодробнее + 51 + true + true + + true + + + + Ошибки.Подробнее + + + + ОшибкиПодробнееРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + ОшибкиПодробнееКонтекстноеМеню + 52 + true + true + + true + + true + + InputField + true + EnterOnInput + true + true + Left + true + + 10 + true + true + false + true + true + true + true + + Style.ГиперссылкаЦвет + + + + None + + ОшибкиКоманднаяПанель + 37 + true + true + + true + + Left + true + + + Selection + ОшибкиВыбор + + + true + true + + true + + ОшибкиСтрокаПоиска + 39 + + ОшибкиСтрокаПоискаРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + + ОшибкиСтрокаПоискаКонтекстноеМеню + 40 + true + true + + true + + true + + + true + + + + true + true + + true + + ОшибкиСостояниеПросмотра + 42 + + ОшибкиСостояниеПросмотраРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + ОшибкиСостояниеПросмотраКонтекстноеМеню + 43 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОшибкиУправлениеПоиском + 45 + + ОшибкиУправлениеПоискомРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + ОшибкиУправлениеПоискомКонтекстноеМеню + 46 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОшибкиРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + + ОшибкиКонтекстноеМеню + 36 + true + true + + true + + true + + true + true + 3 + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + AsFileRef + +
+ + ГруппаПодвал + 62 + + Инструкция + 54 + + ТипичныеПроблемы + 56 + + <key>ru</key> + <value>При возникновении затруднений ознакомьтесь со списком <link ТипичныеПроблемы>типичных проблем при работе с программой электронной подписи и их решений</>.</value> + + true + true + + true + + + ТипичныеПроблемыРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + + ТипичныеПроблемыКонтекстноеМеню + 57 + true + true + + true + + true + + true + Label + true + true + + + URLProcessing + ТипичныеПроблемыОбработкаНавигационнойСсылки + + Left + + + + ИнформацияДляПоддержки + 59 + + <key>ru</key> + <value>В иных случаях обратитесь в службу поддержки фирмы "1С", предоставив <link Ссылка>техническую информацию о возникшей проблеме</>.</value> + + true + true + + true + + + ИнформацияДляПоддержкиРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияДляПоддержкиКонтекстноеМеню + 60 + true + true + + true + + true + + true + Label + true + true + + + URLProcessing + ИнформацияДляПоддержкиОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Требуется помощь?</value> + + + ИнструкцияРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + PopUp + WeakSeparation + true + true + true + Auto + Auto + + + + КоманднаяПанель + 64 + + ФормаУстановитьРасширение + 15 + true + true + + true + + + ФормаУстановитьРасширениеРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьРасширение + Auto + true + true + UserCmds + Auto + + + ФормаПерейтиКНастройкеПрограмм + 11 + true + true + + true + + + ФормаПерейтиКНастройкеПрограммРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКНастройкеПрограмм + Auto + true + true + UserCmds + Auto + + + ФормаЗакрыть + 13 + + <key>ru</key> + <value>Закрыть</value> + + true + true + + true + + true + + ФормаЗакрытьРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Подвал</value> + + + ГруппаПодвалРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Right + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + 55 + 20 + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Ошибки + + <key>ru</key> + <value>Ошибки</value> + + 2 + + ValueTable + + + true + + + true + + + Причина + + <key>ru</key> + <value>Причина</value> + + 1 + + String + + + + true + + + true + + + + Подробнее + + <key>ru</key> + <value>Подробнее</value> + + 2 + + String + + + + true + + + true + + + + ОшибкаНаСервере + 3 + + Boolean + + + true + + + true + + + + Картинка + + <key>ru</key> + <value>Картинка</value> + + 4 + + Picture + + + true + + + true + + + + ОписаниеСЗаголовком + 5 + + String + + + + true + + + true + + + + + ОписаниеОшибки + 1 + + String + + + + true + + + true + + + + ПоказатьИнструкцию + 3 + + Boolean + + + true + + + true + + + + ПоказатьПереходКНастройкеПрограмм + 4 + + Boolean + + + true + + + true + + + + ПоказатьУстановкуРасширения + 5 + + Boolean + + + true + + + true + + + + ДополнительныеДанные + 6 + + + true + + + true + + + + ПерейтиКНастройкеПрограмм + + <key>ru</key> + <value>Перейти к настройке программ</value> + + 2 + + true + + + + ПерейтиКНастройкеПрограмм + + + DontUse + + + УстановитьРасширение + + <key>ru</key> + <value>Установить расширение</value> + + 1 + + ru + Установить расширение + + + true + + + + УстановитьРасширение + + + DontUse + + + ОшибкаНаСервере + + + + РасширениеПодключено + + Boolean + + + + ОшибкаНаКлиенте + + + + ПоказатьИнструкцию + + Boolean + + + + ПоказатьПереходКНастройкеПрограмм + + Boolean + + + + ЗаголовокФормы + + String + + + + + ЗаголовокОшибки + + String + + + + + ПоказатьУстановкуРасширения + + Boolean + + + + НеподписанныеДанные + + + + ДополнительныеДанные + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\321\210\320\270\320\261\320\272\320\260\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\321\217\320\232\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\265/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\321\210\320\270\320\261\320\272\320\260\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\321\217\320\232\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\265/Module.bsl" new file mode 100644 index 00000000..7dc3d760 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\321\210\320\270\320\261\320\272\320\260\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\321\217\320\232\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\265/Module.bsl" @@ -0,0 +1,292 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебный.УстановитьЗаголовокОшибки(ЭтотОбъект, + Параметры.ЗаголовокФормы); + + ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(,, Ложь); + + ОшибкаНаКлиенте = Параметры.ОшибкаНаКлиенте; + ОшибкаНаСервере = Параметры.ОшибкаНаСервере; + + ДобавитьОшибки(ОшибкаНаКлиенте); + ДобавитьОшибки(ОшибкаНаСервере, Истина); + + Элементы.ОшибкиКартинка.Видимость = + Ошибки.НайтиСтроки(Новый Структура("ОшибкаНаСервере", Ложь)).Количество() <> 0 + И Ошибки.НайтиСтроки(Новый Структура("ОшибкаНаСервере", Истина)).Количество() <> 0; + + Элементы.Ошибки.ВысотаВСтрокахТаблицы = Мин(Ошибки.Количество(), 3); + + ОписаниеОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОбщееОписаниеОшибки( + ОшибкаНаКлиенте, ОшибкаНаСервере); + + ПоказатьИнструкцию = Параметры.ПоказатьИнструкцию; + ПоказатьПереходКНастройкеПрограмм = Параметры.ПоказатьПереходКНастройкеПрограмм; + ПоказатьУстановкуРасширения = Параметры.ПоказатьУстановкуРасширения; + + ОпределитьВозможности(ПоказатьИнструкцию, ПоказатьПереходКНастройкеПрограмм, ПоказатьУстановкуРасширения, + ОшибкаНаКлиенте, ЭтоПолноправныйПользователь); + + ОпределитьВозможности(ПоказатьИнструкцию, ПоказатьПереходКНастройкеПрограмм, ПоказатьУстановкуРасширения, + ОшибкаНаСервере, ЭтоПолноправныйПользователь); + + Если Не ПоказатьИнструкцию Тогда + Элементы.Инструкция.Видимость = Ложь; + КонецЕсли; + + ПоказатьУстановкуРасширения = ПоказатьУстановкуРасширения И Не Параметры.РасширениеПодключено; + + Если Не ПоказатьУстановкуРасширения Тогда + Элементы.ФормаУстановитьРасширение.Видимость = Ложь; + КонецЕсли; + + Если Не ПоказатьПереходКНастройкеПрограмм Тогда + Элементы.ФормаПерейтиКНастройкеПрограмм.Видимость = Ложь; + КонецЕсли; + + ДополнительныеДанные = Параметры.ДополнительныеДанные; + + Если ЗначениеЗаполнено(ДополнительныеДанные) + И ТипЗнч(ДополнительныеДанные.НеподписанныеДанные) = Тип("Структура") Тогда + + ЭлектроннаяПодписьСлужебный.ЗарегистрироватьПодписаниеДанныхВЖурнале( + ДополнительныеДанные.НеподписанныеДанные, ОписаниеОшибки); + + ДополнительныеДанные.НеподписанныеДанные = Неопределено; + КонецЕсли; + + ЭлектроннаяПодписьСлужебный.СброситьРазмерыИПоложениеОкна(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Ошибки.Количество() = 1 + Или Ошибки.Количество() = 2 + И Ошибки[0].ОшибкаНаСервере <> Ошибки[1].ОшибкаНаСервере Тогда + + Отказ = Истина; + + Поток = Новый ПотокВПамяти; + Поток.НачатьПолучениеРазмера( + Новый ОписаниеОповещения("ПриОткрытииПродолжение", ЭтотОбъект)); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ТипичныеПроблемыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ЭлектроннаяПодписьКлиент.ОткрытьИнструкциюПоТипичнымПроблемамПриРаботеСПрограммами(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИнформацияДляПоддержкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ТекстОшибок = ""; + ОписаниеФайлов = Новый Массив; + Если ЗначениеЗаполнено(ДополнительныеДанные) Тогда + ЭлектроннаяПодписьСлужебныйВызовСервера.ДобавитьОписаниеДополнительныхДанных( + ДополнительныеДанные, ОписаниеФайлов, ТекстОшибок); + КонецЕсли; + + ТекстОшибок = ТекстОшибок + ОписаниеОшибки; + ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию(ТекстОшибок, , ОписаниеФайлов); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыОшибки + +&НаКлиенте +Процедура ОшибкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Если Поле = Элементы.ОшибкиПодробнее Тогда + + ТекущиеДанные = Элементы.Ошибки.ТекущиеДанные; + + ПараметрыОшибки = Новый Структура; + ПараметрыОшибки.Вставить("ЗаголовокПредупреждения", Заголовок); + ПараметрыОшибки.Вставить(?(ТекущиеДанные.ОшибкаНаСервере, + "ТекстОшибкиСервер", "ТекстОшибкиКлиент"), ТекущиеДанные.ОписаниеСЗаголовком); + + ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыОшибки, ЭтотОбъект); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПерейтиКНастройкеПрограмм(Команда) + + Закрыть(); + ЭлектроннаяПодписьКлиент.ОткрытьНастройкиЭлектроннойПодписиИШифрования("Программы"); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьРасширение(Команда) + + ЭлектроннаяПодписьКлиент.УстановитьРасширение(Истина); + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Продолжение процедуры ПриОткрытии. +&НаКлиенте +Процедура ПриОткрытииПродолжение(Результат, Контекст) Экспорт + + ПараметрыОшибки = Новый Структура; + ПараметрыОшибки.Вставить("ЗаголовокПредупреждения", Заголовок); + ПараметрыОшибки.Вставить(?(Ошибки[0].ОшибкаНаСервере, + "ТекстОшибкиСервер", "ТекстОшибкиКлиент"), Ошибки[0].ОписаниеСЗаголовком); + + Если Ошибки.Количество() > 1 Тогда + ПараметрыОшибки.Вставить(?(Ошибки[1].ОшибкаНаСервере, + "ТекстОшибкиСервер", "ТекстОшибкиКлиент"), Ошибки[1].ОписаниеСЗаголовком); + КонецЕсли; + + ПараметрыОшибки.Вставить("ПоказатьТребуетсяПомощь", Истина); + ПараметрыОшибки.Вставить("ПоказатьИнструкцию", ПоказатьИнструкцию); + ПараметрыОшибки.Вставить("ПоказатьПереходКНастройкеПрограмм", ПоказатьПереходКНастройкеПрограмм); + ПараметрыОшибки.Вставить("ПоказатьУстановкуРасширения", ПоказатьУстановкуРасширения); + ПараметрыОшибки.Вставить("ОписаниеОшибки", ОписаниеОшибки); + ПараметрыОшибки.Вставить("ДополнительныеДанные", ДополнительныеДанные); + + ОбработкаПродолжения = ОписаниеОповещенияОЗакрытии; + ОписаниеОповещенияОЗакрытии = Неопределено; + ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыОшибки, ЭтотОбъект,,,, ОбработкаПродолжения); + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьВозможности(Инструкция, НастройкаПрограмм, Расширение, Ошибка, ЭтоПолноправныйПользователь) + + ОпределитьВозможностиПоСвойствам(Инструкция, НастройкаПрограмм, Расширение, Ошибка, ЭтоПолноправныйПользователь); + + Если Не Ошибка.Свойство("Ошибки") + Или ТипЗнч(Ошибка.Ошибки) <> Тип("Массив") Тогда + + Возврат; + КонецЕсли; + + Для каждого ТекущаяОшибка Из Ошибка.Ошибки Цикл + ОпределитьВозможностиПоСвойствам(Инструкция, НастройкаПрограмм, + Расширение, ТекущаяОшибка, ЭтоПолноправныйПользователь); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьВозможностиПоСвойствам(Инструкция, НастройкаПрограмм, Расширение, Ошибка, ЭтоПолноправныйПользователь) + + Если Ошибка.Свойство("НастройкаПрограмм") + И Ошибка.НастройкаПрограмм = Истина Тогда + + НастройкаПрограмм = ЭтоПолноправныйПользователь + Или Не Ошибка.Свойство("КАдминистратору") + Или Ошибка.КАдминистратору <> Истина; + + КонецЕсли; + + Если Ошибка.Свойство("Инструкция") + И Ошибка.Инструкция = Истина Тогда + + Инструкция = Истина; + КонецЕсли; + + Если Ошибка.Свойство("НетРасширения") + И Ошибка.НетРасширения = Истина Тогда + + Расширение = Истина; + КонецЕсли; + +КонецПроцедуры + +// Параметры: +// ОписаниеОшибки - ДанныеФормыКоллекция: +// * Ошибки - Массив из Структура +// ОшибкаНаСервере - Булево +// +&НаСервере +Процедура ДобавитьОшибки(ОписаниеОшибок, ОшибкаНаСервере = Ложь) + + Если Не ЗначениеЗаполнено(ОписаниеОшибок) Тогда + Возврат; + КонецЕсли; + + Если ОписаниеОшибок.Свойство("Ошибки") + И ТипЗнч(ОписаниеОшибок.Ошибки) = Тип("Массив") + И ОписаниеОшибок.Ошибки.Количество() > 0 Тогда + + СвойстваОшибок = ОписаниеОшибок.Ошибки; // Массив Из см. ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки + Для Каждого СвойстваОшибки Из СвойстваОшибок Цикл + + ОписаниеСЗаголовком = ""; + Если ЗначениеЗаполнено(СвойстваОшибки.ЗаголовокОшибки) Тогда + ОписаниеСЗаголовком = СвойстваОшибки.ЗаголовокОшибки + Символы.ПС; + ИначеЕсли ЗначениеЗаполнено(ОписаниеОшибок.ЗаголовокОшибки) Тогда + ОписаниеСЗаголовком = ОписаниеОшибок.ЗаголовокОшибки + Символы.ПС; + КонецЕсли; + Описание = ""; + Если ЗначениеЗаполнено(СвойстваОшибки.Программа) Тогда + Описание = Описание + Строка(СвойстваОшибки.Программа) + ":" + Символы.ПС; + КонецЕсли; + Описание = Описание + СвойстваОшибки.Описание; + ОписаниеСЗаголовком = ОписаниеСЗаголовком + Описание; + + СтрокаОшибки = Ошибки.Добавить(); + СтрокаОшибки.Причина = Описание; + СтрокаОшибки.ОписаниеСЗаголовком = ОписаниеСЗаголовком; + СтрокаОшибки.Подробнее = НСтр("ru = 'Подробнее'") + "..."; + СтрокаОшибки.ОшибкаНаСервере = ОшибкаНаСервере; + СтрокаОшибки.Картинка = ?(ОшибкаНаСервере, + БиблиотекаКартинок.КомпьютерСервер, + БиблиотекаКартинок.КомпьютерКлиент); + + КонецЦикла; + Иначе + СтрокаОшибки = Ошибки.Добавить(); + СтрокаОшибки.Причина = ОписаниеОшибок.ОписаниеОшибки; + СтрокаОшибки.ОписаниеСЗаголовком = ОписаниеОшибок.ОписаниеОшибки; + СтрокаОшибки.Подробнее = НСтр("ru = 'Подробнее'") + "..."; + СтрокаОшибки.ОшибкаНаСервере = ОшибкаНаСервере; + СтрокаОшибки.Картинка = ?(ОшибкаНаСервере, + БиблиотекаКартинок.КомпьютерСервер, + БиблиотекаКартинок.КомпьютерКлиент); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\260\320\222\320\236\320\261\320\273\320\260\321\207\320\275\320\276\320\274\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\260\320\222\320\236\320\261\320\273\320\260\321\207\320\275\320\276\320\274\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Form.form" new file mode 100644 index 00000000..5ef99725 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\260\320\222\320\236\320\261\320\273\320\260\321\207\320\275\320\276\320\274\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Form.form" @@ -0,0 +1,199 @@ + + + + <key>ru</key> + <value>Электронная подпись в облачном сервисе</value> + + + ГруппаИнформацияОПрограмме + 7 + + ДекорацияИнформация + 4 + + <key>ru</key> + <value>Декорация информация</value> + + true + true + + true + + + ДекорацияИнформацияРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияИнформацияКонтекстноеМеню + 5 + true + true + + true + + true + + true + true + + + CommonPicture.Информация32 + + + + + ИнформацияОПрограмме + 1 + + <key>ru</key> + <value>Программа предназначена для электронной подписи и шифрования в облачном сервисе. +Алгоритмы подписи, шифрования и хеширования определяются автоматически.</value> + + true + true + + true + + + ИнформацияОПрограммеРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияОПрограммеКонтекстноеМеню + 2 + true + true + + true + + true + + true + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Информация о программе</value> + + + ГруппаИнформацияОПрограммеРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаЗакрыть + 9 + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..5d4144d4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,447 @@ + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Copy + Create + Delete + SetDeletionMark + + Наименование + 7 + true + true + + true + + + + Список.Description + + + + НаименованиеРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 8 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 25 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 26 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 16 + + СписокСтрокаПоискаРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 17 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 19 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 20 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 22 + + СписокУправлениеПоискомРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 23 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + 1:02023637-7868-4a5f-8576-835a76e0c9ba + + + + ФормаКоманднаяПанель + -1 + + СтандартныеКоманды + 10 + true + true + + true + + + <key>ru</key> + <value>Стандартные команды</value> + + + СтандартныеКомандыРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаНайти + 12 + true + true + + true + + + ФормаНайтиРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Find + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОтменитьПоиск + 14 + true + true + + true + + + ФормаОтменитьПоискРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + + Copy + Create + Delete + SetDeletionMark + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ПрограммыЭлектроннойПодписиИШифрования + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..f15443b0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,572 @@ + + + + НадписьНастройкаВЦентральномУзле + 55 + + <key>ru</key> + <value>Настройка программы электронной подписи и шифрования выполнена в корневом узле</value> + + true + true + + true + + + НадписьНастройкаВЦентральномУзлеРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + НадписьНастройкаВЦентральномУзлеКонтекстноеМеню + 56 + true + true + + true + + true + + Label + true + true + + Left + + Style.ToolTipBackColor + + + + + Наименование + 50 + true + true + + true + + + + Объект.Description + + + + OnChange + НаименованиеПриИзменении + + + НаименованиеРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 51 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + НаименованиеОбработкаВыбора + + true + true + true + true + true + true + true + + + + ИмяПрограммы + 1 + true + true + + true + + + + Объект.ИмяПрограммы + + + + OnChange + ИмяПрограммыПриИзменении + + + ИмяПрограммыРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ИмяПрограммыКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 50 + true + true + true + true + true + true + true + + Style.ФонУправляющегоПоля + + + + + ТипПрограммы + 4 + true + true + + true + + + + Объект.ТипПрограммы + + + + OnChange + ТипПрограммыПриИзменении + + + ТипПрограммыРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + ТипПрограммыКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + Style.ФонУправляющегоПоля + + + + + АлгоритмПодписи + 7 + true + true + + true + + + + Объект.АлгоритмПодписи + + + + АлгоритмПодписиРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + АлгоритмПодписиКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + АлгоритмХеширования + 10 + true + true + + true + + + + Объект.АлгоритмХеширования + + + + АлгоритмХешированияExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + АлгоритмХешированияКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + АлгоритмШифрования + 13 + true + true + + true + + + + Объект.АлгоритмШифрования + + + + АлгоритмШифрованияExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + АлгоритмШифрованияКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаУстановитьПометкуУдаления + 53 + true + true + + true + + + ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПометкуУдаления + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + Delete + SetDeletionMark + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + +
true
+ true +
+ + СпискиАлгоритмовУспешноЗаполнены + 4 + + Boolean + + + true + + + true + + + + АлгоритмыПодписиПоставляемые + 2 + + ValueList + + + true + + + true + + + + + + + АлгоритмыХешированияПоставляемые + 3 + + ValueList + + + true + + + true + + + + + + + АлгоритмыШифрованияПоставляемые + 6 + + ValueList + + + true + + + true + + + + + + + УстановитьПометкуУдаления + + <key>ru</key> + <value>Пометить на удаление / Снять пометку</value> + + 1 + + true + + + StdPicture.MarkToDelete + + + + УстановитьПометкуУдаления + + + DontUse + + + ИдентификаторПоставляемойНастройки + + String + + + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..235e39e7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,21 @@ + +

Сведения о программе электронной подписи и шифрования.

+

Открывается по кнопке Добавить в списке Настройки электронной подписи и шифрования на вкладке Программы.

+

В случае использования распределенной информационной базы настройки можно изменить только в главном узле.

+

Заполнение сведений о программе

+
  • В поле Представление выберите нужную программу из списка. В списке представлены часто используемые программы. +
      • Остальные поля заполняются автоматически.
    • Если в списке нужной программы нет, выберите значение <Другая программа>. +
      • В этом случае остальные поля заполняются вручную.
  • +
  • Все поля являются обязательными для заполнения. +
  • +
  • Имя программы - полное имя программы; +
  • +
  • Тип программы - число, указывающее тип провайдера электронной подписи. +
  • +
  • Алгоритм подписи - алгоритм подписи выбирается из списка выбора, предоставляемого провайдером электронной подписи; +
  • +
  • Алгоритм хеширования - выбирается из списка выбора, предоставляемого провайдером электронной подписи; +
  • +
  • Алгоритм шифрования - выбирается из списка выбора, предоставляемого провайдером электронной подписи.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..bea08d78 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,367 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем НаименованиеВыбраннойПрограммы; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + ТолькоПросмотр = Истина; + Иначе + Элементы.НадписьНастройкаВЦентральномУзле.Видимость = Ложь; + КонецЕсли; + + Элементы.Наименование.СписокВыбора.Добавить("", НСтр("ru = '<Другая программа>'")); + ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм(); + Для каждого ПоставляемаяНастройка Из ПоставляемыеНастройки Цикл + Если ЕстьВОСКлиентаИлиВОССервера(ПоставляемаяНастройка) Тогда + Элементы.Наименование.СписокВыбора.Добавить(ПоставляемаяНастройка.Представление); + КонецЕсли; + КонецЦикла; + + // Заполнение нового объекта по поставляемой настройке. + Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + Отбор = Новый Структура("Идентификатор", Параметры.ИдентификаторПоставляемойНастройки); + Строки = ПоставляемыеНастройки.НайтиСтроки(Отбор); + Если Строки.Количество() > 0 Тогда + ЗаполнитьЗначенияСвойств(Объект, Строки[0]); + Объект.Наименование = Строки[0].Представление; + Элементы.Наименование.ТолькоПросмотр = Истина; + Элементы.ИмяПрограммы.ТолькоПросмотр = Истина; + Элементы.ТипПрограммы.ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + + // Заполнение списков алгоритмов. + Отбор = Новый Структура("ИмяПрограммы, ТипПрограммы", Объект.ИмяПрограммы, Объект.ТипПрограммы); + Строки = ПоставляемыеНастройки.НайтиСтроки(Отбор); + ПоставляемаяНастройка = ?(Строки.Количество() = 0, Неопределено, Строки[0]); + ЗаполнитьСпискиВыбораАлгоритмов(ПоставляемаяНастройка); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ЗаполнитьАлгоритмыВыбраннойПрограммы(); + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Возврат; + КонецЕсли; + + ПодключитьОбработчикОжидания("ОбработчикОжиданияНачатьВыборПрограммыПослеОткрытия", 0.1, Истина); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // Требуется для обновления списка программ и + // их параметров на сервере и на клиенте. + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_ПрограммыЭлектроннойПодписиИШифрования", Новый Структура, Объект.Ссылка); + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); + Запрос.УстановитьПараметр("ИмяПрограммы", Объект.ИмяПрограммы); + Запрос.УстановитьПараметр("ТипПрограммы", Объект.ТипПрограммы); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования + |ГДЕ + | ПрограммыЭлектроннойПодписиИШифрования.Ссылка <> &Ссылка + | И ПрограммыЭлектроннойПодписиИШифрования.ИмяПрограммы = &ИмяПрограммы + | И ПрограммыЭлектроннойПодписиИШифрования.ТипПрограммы = &ТипПрограммы"; + + Если Не Запрос.Выполнить().Пустой() Тогда + Отказ = Истина; + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Программа с указанным именем и типом уже добавлена в список.'"), + , + "Объект.ИмяПрограммы"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + + ЗаполнитьНастройкиВыбраннойПрограммы(Объект.Наименование); + ЗаполнитьАлгоритмыВыбраннойПрограммы(); + +КонецПроцедуры + +&НаКлиенте +Процедура НаименованиеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если ВыбранноеЗначение = "" Тогда + Объект.Наименование = ""; + Объект.ИмяПрограммы = ""; + Объект.ТипПрограммы = 0; + Объект.АлгоритмПодписи = ""; + Объект.АлгоритмХеширования = ""; + Объект.АлгоритмШифрования = ""; + КонецЕсли; + + НаименованиеВыбраннойПрограммы = ВыбранноеЗначение; + + ПодключитьОбработчикОжидания("ОбработчикОжиданияНаименованиеОбработкаВыбора", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ИмяПрограммыПриИзменении(Элемент) + + ЗаполнитьАлгоритмыВыбраннойПрограммы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТипПрограммыПриИзменении(Элемент) + + ЗаполнитьАлгоритмыВыбраннойПрограммы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура УстановитьПометкуУдаления(Команда) + + Если Не Модифицированность Тогда + УстановитьПометкуУдаленияЗавершение(); + Возврат; + КонецЕсли; + + ПоказатьВопрос( + Новый ОписаниеОповещения("УстановитьПометкуУдаленияПослеОтветаНаВопрос", ЭтотОбъект), + НСтр("ru = 'Для установки отметки удаления необходимо записать сделанные изменения. + |Записать данные?'"), РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьНастройкиВыбраннойПрограммы(Представление) + + ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм(); + + ПоставляемаяНастройка = ПоставляемыеНастройки.Найти(Представление, "Представление"); + Если ПоставляемаяНастройка <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(Объект, ПоставляемаяНастройка); + Объект.Наименование = ПоставляемаяНастройка.Представление; + КонецЕсли; + + ЗаполнитьСпискиВыбораАлгоритмов(ПоставляемаяНастройка); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСпискиВыбораАлгоритмов(ПоставляемаяНастройка) + + АлгоритмыПодписиПоставляемые.Очистить(); + АлгоритмыХешированияПоставляемые.Очистить(); + АлгоритмыШифрованияПоставляемые.Очистить(); + + Если ПоставляемаяНастройка = Неопределено Тогда + Возврат; + КонецЕсли; + + АлгоритмыПодписиПоставляемые.ЗагрузитьЗначения(ПоставляемаяНастройка.АлгоритмыПодписи); + АлгоритмыХешированияПоставляемые.ЗагрузитьЗначения(ПоставляемаяНастройка.АлгоритмыХеширования); + АлгоритмыШифрованияПоставляемые.ЗагрузитьЗначения(ПоставляемаяНастройка.АлгоритмыШифрования); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьАлгоритмыВыбраннойПрограммы() + + НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения( + "ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПодключенияРасширенияРаботыСКриптографией", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьАлгоритмыВыбраннойПрограммы. +&НаКлиенте +Процедура ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПодключенияРасширенияРаботыСКриптографией(Подключено, Контекст) Экспорт + + Если Не Подключено Тогда + ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияИнформации(Неопределено, Контекст); + Возврат; + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьПутьКПрограмме( + Новый ОписаниеОповещения("ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияПутиКПрограмме", + ЭтотОбъект, Контекст), Объект.Ссылка); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьАлгоритмыВыбраннойПрограммы. +&НаКлиенте +Процедура ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияПутиКПрограмме(ОписаниеПути, Контекст) Экспорт + + СредстваКриптографии.НачатьПолучениеИнформацииМодуляКриптографии(Новый ОписаниеОповещения( + "ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияИнформации", ЭтотОбъект, , + "ЗаполнитьАлгоритмыВыбраннойПрограммыПослеОшибкиПолученияИнформации", ЭтотОбъект), + Объект.ИмяПрограммы, ОписаниеПути.ПутьКПрограмме, Объект.ТипПрограммы); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьАлгоритмыВыбраннойПрограммы. +&НаКлиенте +Процедура ЗаполнитьАлгоритмыВыбраннойПрограммыПослеОшибкиПолученияИнформации(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + + ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияИнформации(Неопределено, Контекст); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьАлгоритмыВыбраннойПрограммы. +&НаКлиенте +Процедура ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияИнформации(ИнформацияМодуля, Контекст) Экспорт + + // Если менеджер криптографии не доступен и не из числа поставляемых, + // тогда имена алгоритмов заполняются вручную. + + Если ИнформацияМодуля <> Неопределено + И Объект.ИмяПрограммы <> ИнформацияМодуля.Имя + И Не ЭлектроннаяПодписьСлужебныйКлиент.ТребуетсяПутьКПрограмме() Тогда + + ИнформацияМодуля = Неопределено; + КонецЕсли; + + Если ИнформацияМодуля = Неопределено Тогда + Элементы.АлгоритмПодписи.СписокВыбора.ЗагрузитьЗначения( + АлгоритмыПодписиПоставляемые.ВыгрузитьЗначения()); + + Элементы.АлгоритмХеширования.СписокВыбора.ЗагрузитьЗначения( + АлгоритмыХешированияПоставляемые.ВыгрузитьЗначения()); + + Элементы.АлгоритмШифрования.СписокВыбора.ЗагрузитьЗначения( + АлгоритмыШифрованияПоставляемые.ВыгрузитьЗначения()); + Иначе + Элементы.АлгоритмПодписи.СписокВыбора.ЗагрузитьЗначения( + Новый Массив(ИнформацияМодуля.АлгоритмыПодписи)); + + Элементы.АлгоритмХеширования.СписокВыбора.ЗагрузитьЗначения( + Новый Массив(ИнформацияМодуля.АлгоритмыХеширования)); + + Элементы.АлгоритмШифрования.СписокВыбора.ЗагрузитьЗначения( + Новый Массив(ИнформацияМодуля.АлгоритмыШифрования)); + КонецЕсли; + + Элементы.АлгоритмПодписи.КнопкаВыпадающегоСписка = + Элементы.АлгоритмПодписи.СписокВыбора.Количество() <> 0; + + Элементы.АлгоритмХеширования.КнопкаВыпадающегоСписка = + Элементы.АлгоритмХеширования.СписокВыбора.Количество() <> 0; + + Элементы.АлгоритмШифрования.КнопкаВыпадающегоСписка = + Элементы.АлгоритмШифрования.СписокВыбора.Количество() <> 0; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПометкуУдаленияПослеОтветаНаВопрос(Ответ, Контекст) Экспорт + + Если Ответ <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + Если Не Записать() Тогда + Возврат; + КонецЕсли; + + УстановитьПометкуУдаленияЗавершение(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПометкуУдаленияЗавершение() + + Объект.ПометкаУдаления = Не Объект.ПометкаУдаления; + Записать(); + + Оповестить("Запись_ПрограммыЭлектроннойПодписиИШифрования", Новый Структура, Объект.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияНачатьВыборПрограммыПослеОткрытия() + + ПоказатьВыборИзМеню(Новый ОписаниеОповещения("ПослеВыбораПрограммы", ЭтотОбъект), + Элементы.Наименование.СписокВыбора, Элементы.Наименование); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораПрограммы(ВыбранныйЭлемент, Контекст) Экспорт + + Если ВыбранныйЭлемент = Неопределено Тогда + Возврат + КонецЕсли; + + НаименованиеОбработкаВыбора(Элементы.Наименование, ВыбранныйЭлемент.Значение, Ложь); + +КонецПроцедуры + +// Продолжение процедуры НаименованиеОбработкаВыбора. +&НаКлиенте +Процедура ОбработчикОжиданияНаименованиеОбработкаВыбора() + + ЗаполнитьНастройкиВыбраннойПрограммы(НаименованиеВыбраннойПрограммы); + ЗаполнитьАлгоритмыВыбраннойПрограммы(); + +КонецПроцедуры + +&НаСервере +Функция ЕстьВОСКлиентаИлиВОССервера(Настройка) + + Возврат Не Настройка.НетВWindows + И (ОбщегоНазначения.ЭтоWindowsКлиент() Или ОбщегоНазначения.ЭтоWindowsСервер()) + Или Не Настройка.НетВLinux + И (ОбщегоНазначения.ЭтоLinuxКлиент() Или ОбщегоНазначения.ЭтоLinuxСервер()) + Или Не Настройка.НетВMacOS + И ОбщегоНазначения.ЭтоMacOSКлиент(); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..c64a3774 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,4 @@ + +

Предназначен для выбора программ электронной подписи и шифрования.

+

Выделите программу, нажмите Выбрать.

+

 

\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" new file mode 100644 index 00000000..03c570d3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" @@ -0,0 +1,348 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + + Если ВидФормы = "ФормаСписка" Тогда + СтандартнаяОбработка = Ложь; + Параметры.Вставить("ПоказатьСтраницуПрограммы"); + ВыбраннаяФорма = Метаданные.ОбщиеФормы.НастройкиЭлектроннойПодписиИШифрования; + + ИначеЕсли Параметры.Свойство("Ключ") + И Параметры.Ключ.ЭтоПрограммаОблачногоСервиса + И Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда + + СтандартнаяОбработка = Ложь; + ВыбраннаяФорма = "Обработка.ПрограммыЭлектроннойПодписиИШифрования.Форма.ПрограммаВОблачномСервисе"; + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + Если Не ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда + Параметры.Отбор.Вставить("ЭтоПрограммаОблачногоСервиса", Ложь); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ПоставляемыеНастройкиПрограмм() Экспорт + + Настройки = ЭлектроннаяПодписьСлужебный.ПоставляемыеНастройкиПрограмм(); + Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда + ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ПрограммыЭлектроннойПодписиИШифрования"); + ОбработкаПрограммыЭлектроннойПодписиИШифрования.ДобавитьПоставляемыеНастройкиПрограмм(Настройки); + Иначе + ДобавитьНастройкиMicrosoftEnhancedCSP(Настройки); + КонецЕсли; + + Возврат Настройки; + +КонецФункции + +Процедура ДобавитьНастройкиMicrosoftEnhancedCSP(Настройки) Экспорт + + // Microsoft Enhanced CSP + Настройка = Настройки.Добавить(); + Настройка.Представление = НСтр("ru = 'Microsoft Enhanced CSP'"); + Настройка.ИмяПрограммы = "Microsoft Enhanced Cryptographic Provider v1.0"; + Настройка.ТипПрограммы = 1; + Настройка.АлгоритмПодписи = "RSA_SIGN"; // Один вариант. + Настройка.АлгоритмХеширования = "MD5"; // Варианты: SHA-1, MD2, MD4, MD5. + Настройка.АлгоритмШифрования = "RC2"; // Варианты: RC2, RC4, DES, 3DES. + Настройка.Идентификатор = "MicrosoftEnhanced"; + + Настройка.АлгоритмыПодписи.Добавить("RSA_SIGN"); + Настройка.АлгоритмыХеширования.Добавить("SHA-1"); + Настройка.АлгоритмыХеширования.Добавить("MD2"); + Настройка.АлгоритмыХеширования.Добавить("MD4"); + Настройка.АлгоритмыХеширования.Добавить("MD5"); + Настройка.АлгоритмыШифрования.Добавить("RC2"); + Настройка.АлгоритмыШифрования.Добавить("RC4"); + Настройка.АлгоритмыШифрования.Добавить("DES"); + Настройка.АлгоритмыШифрования.Добавить("3DES"); + Настройка.НетВLinux = Истина; + Настройка.НетВMacOS = Истина; + + // Microsoft Enhanced RSA and AES CSP + Настройка = Настройки.Добавить(); + Настройка.Представление = НСтр("ru = 'Microsoft Enhanced RSA and AES CSP'"); + Настройка.ИмяПрограммы = "Microsoft Enhanced RSA and AES Cryptographic Provider"; + Настройка.ТипПрограммы = 24; + Настройка.АлгоритмПодписи = "RSA_SIGN"; // Один вариант. + Настройка.АлгоритмХеширования = "SHA-256"; // Варианты: SHA-256, SHA-1, MD2, MD4, MD5. + Настройка.АлгоритмШифрования = "3DES"; // Варианты: RC2, RC4, DES, 3DES. + Настройка.Идентификатор = "MicrosoftEnhanced_RSA_AES"; + + Настройка.АлгоритмыПодписи.Добавить("RSA_SIGN"); + Настройка.АлгоритмыХеширования.Добавить("SHA-256"); + Настройка.АлгоритмыХеширования.Добавить("SHA-1"); + Настройка.АлгоритмыХеширования.Добавить("MD2"); + Настройка.АлгоритмыХеширования.Добавить("MD4"); + Настройка.АлгоритмыХеширования.Добавить("MD5"); + Настройка.АлгоритмыШифрования.Добавить("RC2"); + Настройка.АлгоритмыШифрования.Добавить("RC4"); + Настройка.АлгоритмыШифрования.Добавить("DES"); + Настройка.АлгоритмыШифрования.Добавить("3DES"); + Настройка.НетВLinux = Истина; + Настройка.НетВMacOS = Истина; + +КонецПроцедуры + +Функция ПоставляемыеПутиКМодулямПрограмм() Экспорт + + ПутиКМодулям = ЭлектроннаяПодписьСлужебный.ПоставляемыеПутиКМодулямПрограмм(); + Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда + ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ПрограммыЭлектроннойПодписиИШифрования"); + ОбработкаПрограммыЭлектроннойПодписиИШифрования.ДобавитьПоставляемыеПутиКМодулямПрограмм(ПутиКМодулям); + КонецЕсли; + + Возврат ПутиКМодулям; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Обновление информационной базы. + +Процедура ЗаполнитьНачальныеНастройки(Программы = Неопределено, БезОблачнойПрограммы = Ложь) Экспорт + + Если Программы = Неопределено Тогда + Программы = Новый Соответствие; + ДобавитьПрограммыНачальногоЗаполнения(Программы); + КонецЕсли; + + ОписаниеПрограмм = Новый Массив; + Для Каждого КлючИЗначение Из Программы Цикл + ОписаниеПрограмм.Добавить(ЭлектроннаяПодпись.НовоеОписаниеПрограммы( + КлючИЗначение.Ключ, КлючИЗначение.Значение)); + КонецЦикла; + + ЭлектроннаяПодпись.ЗаполнитьСписокПрограмм(ОписаниеПрограмм); + + Если БезОблачнойПрограммы Тогда + Возврат; + КонецЕсли; + + Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда + ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ПрограммыЭлектроннойПодписиИШифрования"); + ОбработкаПрограммыЭлектроннойПодписиИШифрования.ОбновитьПрограммуОблачногоСервиса(); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьПрограммыНачальногоЗаполнения(Программы) + + Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда + ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ПрограммыЭлектроннойПодписиИШифрования"); + ОбработкаПрограммыЭлектроннойПодписиИШифрования.ДобавитьПрограммыНачальногоЗаполнения(Программы); + Иначе + Программы.Вставить("Microsoft Enhanced Cryptographic Provider v1.0", 1); + КонецЕсли; + +КонецПроцедуры + +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПрограммыЭлектроннойПодписиИШифрования.Ссылка + |ИЗ + | Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования + |ГДЕ + | НЕ ПрограммыЭлектроннойПодписиИШифрования.ЭтоПрограммаОблачногоСервиса"; + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ВыборкаДетальныеЗаписи.Ссылка); + КонецЦикла; + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ОбработкаЗавершена = Истина; + + ВыборкаДетальныеЗаписи = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, + "Справочник.ПрограммыЭлектроннойПодписиИШифрования"); + + ОбъектовОбработано = 0; + ПроблемныхОбъектов = 0; + + ПоставляемыеНастройки = ПоставляемыеНастройкиПрограмм(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + ОбновитьПредставлениеПрограммыОтложенно(ВыборкаДетальныеЗаписи.Ссылка, + ОбъектовОбработано, ПроблемныхОбъектов, ПоставляемыеНастройки); + КонецЦикла; + + ДозаполнитьНачальныеНастройкиОтложенно(ОбъектовОбработано, ПроблемныхОбъектов); + + Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ПрограммыЭлектроннойПодписиИШифрования") Тогда + ОбработкаЗавершена = Ложь; + КонецЕсли; + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре Справочники.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые программы электронной подписи (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.НайтиПоПолномуИмени("Справочник.ПрограммыЭлектроннойПодписиИШифрования"),, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедура Справочники.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию программ электронной подписи: %1'"), + ОбъектовОбработано)); + КонецЕсли; + + Параметры.ОбработкаЗавершена = ОбработкаЗавершена; + +КонецПроцедуры + +// Параметры: +// Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования +// +Процедура ОбновитьПредставлениеПрограммыОтложенно(Программа, ОбъектовОбработано, ПроблемныхОбъектов, ПоставляемыеНастройки) + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить("Справочник.ПрограммыЭлектроннойПодписиИШифрования"); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + Свойства = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Программа, + "ИмяПрограммы, ТипПрограммы, Наименование, ЭтоПрограммаОблачногоСервиса"); + + Отбор = Новый Структура("ИмяПрограммы, ТипПрограммы", Свойства.ИмяПрограммы, Свойства.ТипПрограммы); + Строки = ПоставляемыеНастройки.НайтиСтроки(Отбор); + + Если Не Свойства.ЭтоПрограммаОблачногоСервиса + И Строки.Количество() = 1 + И Строки[0].Представление <> Свойства.Наименование Тогда + + ПрограммаОбъект = Программа.ПолучитьОбъект(); + ПрограммаОбъект.Наименование = Строки[0].Представление; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПрограммаОбъект); + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обновить программу ""%1"" по причине: + |%2'"), Строка(Программа), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения); + Возврат; + КонецПопытки; + + ОбъектовОбработано = ОбъектовОбработано + 1; + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Программа.Ссылка); + +КонецПроцедуры + +Процедура ДозаполнитьНачальныеНастройкиОтложенно(ОбъектовОбработано, ПроблемныхОбъектов) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПрограммыЭлектроннойПодписиИШифрования.ИмяПрограммы КАК ИмяПрограммы, + | ПрограммыЭлектроннойПодписиИШифрования.ТипПрограммы КАК ТипПрограммы + |ИЗ + | Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования + |ГДЕ + | ПрограммыЭлектроннойПодписиИШифрования.ЭтоПрограммаОблачногоСервиса"; + + Программы = Новый Соответствие; + ДобавитьПрограммыНачальногоЗаполнения(Программы); + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить("Справочник.ПрограммыЭлектроннойПодписиИШифрования"); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Если Программы.Получить(Выборка.ИмяПрограммы) = Выборка.ТипПрограммы Тогда + Программы.Удалить(Выборка.ИмяПрограммы); + КонецЕсли; + КонецЦикла; + + ЗаполнитьНачальныеНастройки(Программы, Истина); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось дозаполнить начальные настройки программ по причине: + |%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + ВызватьИсключение ТекстСообщения; + КонецПопытки; + + Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда + ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ПрограммыЭлектроннойПодписиИШифрования"); + ОбработкаПрограммыЭлектроннойПодписиИШифрования.ОбновитьПрограммуОблачногоСервиса(Истина, + ОбъектовОбработано, ПроблемныхОбъектов); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" new file mode 100644 index 00000000..a1662fb9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" @@ -0,0 +1,35 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если ЭтоПрограммаОблачногоСервиса Тогда + ПроверяемыеРеквизиты.Очистить(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..2fceab53 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" @@ -0,0 +1,304 @@ + + + + + + + + + + ПрограммыЭлектроннойПодписиИШифрования + + ru + Программы электронной подписи и шифрования + + true + Catalog.ПрограммыЭлектроннойПодписиИШифрования.StandardAttribute.Description + AnyPart + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Представление + + + ru + Представление программы, которое используется для удобства. + + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + + + ru + + + Managed + Use + + ru + Программа электронной подписи и шифрования + + 2 + true + 150 + Variable + AsDescription + InDialog + true + BothWays + Catalog.ПрограммыЭлектроннойПодписиИШифрования.Form.ФормаЭлемента + Catalog.ПрограммыЭлектроннойПодписиИШифрования.Form.ФормаВыбора + DontUse + + ИмяПрограммы + + ru + Имя программы + + + String + + 430 + + + + ru + Уникальное имя программы, присвоенное ее разработчиком. + + + + ShowError + + + + Use + + + ТипПрограммы + + ru + Тип программы + + + Number + + 9 + true + + + + ru + Специальное число, которое описывает тип программы и +дополняет имя программы. + + + + ShowError + + Use + + + АлгоритмПодписи + + ru + Алгоритм подписи + + + String + + 100 + + + + ru + Алгоритм открытого и закрытого ключа (асимметричный) для: +- создания и проверки подписи, +- шифрования и расшифровки дополнительного секретного ключа симметричного алгоритма шифрования (которым шифруются и расшифровываются данные). + + + + ShowError + + + + Use + + + АлгоритмХеширования + + ru + Алгоритм хеширования + + + String + + 100 + + + + ru + Алгоритм для вычисления криптостойкой хеш-суммы данных, которая подписывается закрытой частью ключа с помощью алгоритма подписи. + + + + ShowError + + + + Use + + + АлгоритмШифрования + + ru + Алгоритм шифрования + + + String + + 100 + + + + ru + Симметричный алгоритм для шифрования данных (создает дополнительный секретный ключ, шифрует им данные, затем секретный ключ зашифровывается открытой частью ключа с помощью алгоритма подписи). + + + + ShowError + + + + Use + + + ЭтоПрограммаОблачногоСервиса + + ru + Это программа облачного сервиса + + + Boolean + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + + ОшибкаОбращенияКПрограмме + + ru + Ошибка обращения к программе + + PersonalComputer + MobileDevice + + + ПрограммаВОблачномСервисе + + ru + Программа в облачном сервисе + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..d4218d27 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,25 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + БазовыйКалендарь + Asc + + + Код + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..453e1c62 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,659 @@ + + + + КоманднаяПанель + 22 + + Создать + 24 + + ФормаПодборИзКлассификатора + 26 + true + true + + true + + + ФормаПодборИзКлассификатораРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПодборИзКлассификатора + Auto + true + true + UserCmds + Auto + + + СоздатьКалендарь + 28 + + <key>ru</key> + <value>Новый</value> + + true + true + + true + + + СоздатьКалендарьРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Создать</value> + + + СоздатьРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + Popup + + PictureAndText + + + + КомандыФормы + 30 + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + Справка + 34 + true + true + + true + + + СправкаРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 16 + true + true + + true + + + + Список.Description + + + true + + НаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Код + 19 + true + true + + true + + + + Список.Code + + + + КодРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 20 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 36 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 37 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + ChoiceProcessing + ОбработкаВыбора + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Code + + + Список.Ref + + + Список.БазовыйКалендарь + +
true
+ + Catalog.ПроизводственныеКалендари + true + true + true + true + +
+ + ПодборИзКлассификатора + + <key>ru</key> + <value>По классификатору...</value> + + 1 + + ru + Подобрать валюты из Общероссийского классификатора валют + + + true + + + + ПодборИзКлассификатора + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..c9aabf00 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,53 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ДоступноДобавлениеИзКлассификатора = Истина; + Если Не ПравоДоступа("Добавление", Метаданные.Справочники.ПроизводственныеКалендари) Тогда + ДоступноДобавлениеИзКлассификатора = Ложь; + Иначе + Если Метаданные.Обработки.Найти("ЗаполнениеКалендарныхГрафиков") = Неопределено Тогда + ДоступноДобавлениеИзКлассификатора = Ложь; + КонецЕсли; + КонецЕсли; + + Элементы.ФормаПодборИзКлассификатора.Видимость = ДоступноДобавлениеИзКлассификатора; + Если Не ДоступноДобавлениеИзКлассификатора Тогда + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СоздатьКалендарь", "Заголовок", НСтр("ru = 'Создать'")); + Элементы.Создать.Вид = ВидГруппыФормы.ГруппаКнопок; + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СоздатьКалендарь", "Отображение", ОтображениеКнопки.Текст); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора) + + Элементы.Список.Обновить(); + Элементы.Список.ТекущаяСтрока = РезультатВыбора; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПодборИзКлассификатора(Команда) + + ИмяФормыПодбора = "Обработка.ЗаполнениеКалендарныхГрафиков.Форма.ПодборКалендарейИзКлассификатора"; + ОткрытьФорму(ИмяФормыПодбора, , ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..894f92d0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1382 @@ + + + + ГруппаОсновныеРеквизиты + 7 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Код + 14 + true + true + + true + + + + Объект.Code + + + + КодExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + НомерТекущегоГода + 8 + true + true + + true + + + + НомерТекущегоГода + + + + OnChange + НомерТекущегоГодаПриИзменении + + + НомерТекущегоГодаExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + НомерТекущегоГодаКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + + ru + ЧГ= + + true + true + true + + 1900 + + + + true + true + + true + + + <key>ru</key> + <value>Основные реквизиты</value> + + + ГруппаОсновныеРеквизитыExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + БазовыйКалендарьГруппа + 50 + + ЕстьБазовыйКалендарь + 52 + + <key>ru</key> + <value>Является региональным календарем, федеральный календарь</value> + + true + true + + true + + + + ЕстьБазовыйКалендарь + + + Right + + OnChange + ЕстьБазовыйКалендарьПриИзменении + + + ЕстьБазовыйКалендарьРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + ЕстьБазовыйКалендарьКонтекстноеМеню + 53 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + БазовыйКалендарь + 55 + true + true + + true + + + + Объект.БазовыйКалендарь + + + None + + OnChange + БазовыйКалендарьПриИзменении + + + БазовыйКалендарьРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + БазовыйКалендарьКонтекстноеМеню + 56 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + + true + + + <key>ru</key> + <value>Базовый календарь</value> + + + БазовыйКалендарьГруппаРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + КалендарьГруппа + 17 + + НерабочиеПериодыГруппа + 58 + + НерабочиеПериодыКартинка + 60 + + <key>ru</key> + <value>Нерабочие периоды картинка</value> + + true + true + + true + + + НерабочиеПериодыКартинкаРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + + НерабочиеПериодыКартинкаКонтекстноеМеню + 61 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + AsFileRef + + + + НерабочиеПериодыТекст + 63 + + <key>ru</key> + <value>Нерабочие периоды текст</value> + + true + true + + true + + + НерабочиеПериодыТекстРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + + НерабочиеПериодыТекстКонтекстноеМеню + 64 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Нерабочие периоды</value> + + true + + НерабочиеПериодыГруппаРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + true + + Style.НерабочийПериодПроизводственногоКалендаряФон + + Auto + Auto + + + + Календарь + 5 + true + true + + true + + + + Календарь + + + None + + КалендарьExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + + КалендарьКонтекстноеМеню + 6 + + КалендарьКонтекстноеМенюИзменитьДень + 10 + true + true + + true + + + КалендарьКонтекстноеМенюИзменитьДеньExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьДень + Auto + true + true + UserCmds + Auto + + + КалендарьКонтекстноеМенюПеренестиДень + 13 + true + true + + true + + + КалендарьКонтекстноеМенюПеренестиДеньExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПеренестиДень + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + CalendarField + Enter + true + Left + true + + + OnPeriodOutput + КалендарьПриВыводеПериода + + 1 + true + 1 + true + true + true + true + 4 + + + + ПредставлениеПереносов + 18 + true + + true + + + + ПредставлениеПереносов + + + Top + + ПредставлениеПереносовExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеПереносовКонтекстноеМеню + 19 + true + true + + true + + true + + LabelField + true + Enter + true + Left + true + + true + true + + Style.ПоясняющийТекст + + + + + СписокПереносов + 20 + + <key>ru</key> + <value>Переносы выходных дней</value> + + true + true + + true + + + СписокПереносов + + Top + + СписокПереносовПредставление + 23 + true + true + + true + + + + СписокПереносов.Presentation + + + None + + СписокПереносовПредставлениеExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + СписокПереносовПредставлениеКонтекстноеМеню + 24 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + 2 + true + + + None + + СписокПереносовКоманднаяПанель + 22 + true + true + + true + + Left + true + + + true + true + + true + + СписокПереносовСтрокаПоиска + 41 + + СписокПереносовСтрокаПоискаРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + + СписокПереносовСтрокаПоискаКонтекстноеМеню + 42 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокПереносовСостояниеПросмотра + 44 + + СписокПереносовСостояниеПросмотраРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + СписокПереносовСостояниеПросмотраКонтекстноеМеню + 45 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокПереносовУправлениеПоиском + 47 + + СписокПереносовУправлениеПоискомРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + + СписокПереносовУправлениеПоискомКонтекстноеМеню + 48 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокПереносовExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + СписокПереносовКонтекстноеМеню + 21 + true + true + + true + + + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + + СписокПереносов.Picture + + + true + true + + true + + + <key>ru</key> + <value>Календарь</value> + + + КалендарьГруппаExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаИзменитьДень + 11 + true + true + + true + + + ФормаИзменитьДеньExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьДень + Auto + true + true + UserCmds + Auto + + + ФормаПеренестиВыходнойДень + 12 + true + true + + true + + + ФормаПеренестиВыходнойДеньExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПеренестиДень + Auto + true + true + UserCmds + Auto + + + ФормаЗаполнитьПоУмолчанию + 16 + true + true + + true + + + ФормаЗаполнитьПоУмолчаниюExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаполнитьПоУмолчанию + Auto + true + true + UserCmds + Auto + + + ФормаПечать + 25 + true + true + + true + + + ФормаПечатьExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Печать + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + ChoiceProcessing + ОбработкаВыбора + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПроизводственныеКалендари + + + true + + + true + +
true
+ true +
+ + Календарь + + <key>ru</key> + <value>Календарь</value> + + 2 + + Date + + Date + + + + true + + + true + + + + НомерТекущегоГода + + <key>ru</key> + <value>Год</value> + + 3 + + Number + + 4 + true + + + + true + + + true + + ShowError + + + НомерПредыдущегоГода + 4 + + Number + + 4 + true + + + + true + + + true + + + + ЦветаВидовДней + 6 + + + true + + + true + + + + СписокВидовДня + 8 + + ValueList + + + true + + + true + + + + + + + ВидыДней + 9 + + + true + + + true + + + + ПереносыДней + 7 + + + true + + + true + + + + ПредставлениеПереносов + + <key>ru</key> + <value>Переносы дней</value> + + 5 + + String + + + + true + + + true + + + + СписокПереносов + + <key>ru</key> + <value>Список переносов</value> + + 10 + + ValueList + + + true + + + true + + + + + + + ЕстьБазовыйКалендарь + + <key>ru</key> + <value>Есть базовый календарь</value> + + 11 + + Boolean + + + true + + + true + + true + + + НерабочиеДаты + 12 + + + true + + + true + + + + ИзменитьДень + + <key>ru</key> + <value>Изменить день</value> + + 1 + + ru + Изменить день + + + true + + + + ИзменитьДень + + + true + DontUse + + + ПеренестиДень + + <key>ru</key> + <value>Перенести день</value> + + 2 + + ru + Перенести день + + + true + + + + ПеренестиДень + + + true + DontUse + + + ЗаполнитьПоУмолчанию + + <key>ru</key> + <value>Заполнить по умолчанию</value> + + 3 + + ru + Заполнить по умолчанию + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьПоУмолчанию + + + TextPicture + true + DontUse + + + Печать + + <key>ru</key> + <value>Печать</value> + + 4 + + ru + Печать сводных сведений производственного календаря на текущий год + + + true + + + StdPicture.Print + + + + Печать + + + TextPicture + DontUse + + + + + 0 + + + + + + + + OnReadAtServer + ПриЧтенииНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..390bdd8f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,37 @@ + +

Просмотр или формирование производственного календаря.

+

Производственный календарь - это своеобразный классификатор, постоянные сведения, которые не меняются в течение года.

+

Производственный календарь РФ (который является общегосударственным) входит в поставляемые данные программы и обновляется по мере утверждения календаря и переносов праздников в РФ.

+

При необходимости можно ввести несколько производственных календарей. Их может быть несколько, т.к. в разных регионах предусмотрен разный состав праздничных дней и соответственно переносов.

+

Рекомендуется в начале года ввести производственный календарь на основании общегосударственного календаря на весь год сразу. Это поможет избежать ошибок в расчетах в течение года.

+

Производственный календарь сам по себе не используются в учете. На основании производственного календаря формируются графики работы подразделений, а также графики работы сотрудников.

+

Ввод нового производственного календаря

+
  • Заполните заголовок производственного календаря: +
    • +
      Наименование;
      +
    • +
      Код - не более 3 знаков;
      +
    • +
      Год - по умолчанию проставляется текущий.

Региональный календарь

+
  • +
    Если необходимо ввести новый календарь, зависимый от федерального, включите флажок Является региональным календарем, выберите федеральный календарь из выпадающего списка.

Изменение дней календаря

+
  • По умолчанию новый производственный календарь заполнен выходными днями. +
  • Нажмите Изменить день, расставьте дни календаря. +
    • Виды дней производственного календаря обозначаются разными цветами: +
      • черным – рабочий день, +
      • темно-красным – суббота, +
      • красным – воскресенье, +
      • темно-синим – предпраздничный, +
      • фиолетовым – праздник.

Перенос праздничного дня на другой день

+

Пользоваться этой возможностью имеет смысл в том случае, если данные календаря нужны, но официально он еще не принят и в программе его еще нет, т.к. не все переносы правительство утвердило. Можно заполнить переносы раньше, а потом, когда данные общегосударственного календаря будут утверждены и войдут в поставку программы, переносы автоматически корректируются.

+
  • Выделите в производственном календаре праздничный день, который необходимо перенести. +
  • Нажмите Перенести день. +
  • Выберите в календаре дату переноса, нажмите ОК. +
  • Сведения о переносах дней отображаются в правой части производственного календаря в списке Переносы дней.

Заполнение по умолчанию

+
  • С помощью команды Заполнить по умолчанию можно заполнить календарь: +
    • Если флажок Является региональным календарем включен - на основании общегосударственного производственного календаря, входящего в поставку программы. +
      • На текущий год автоматическое формирование производственного календаря производится на основании уже утвержденных сведений о рабочих днях, праздниках и переносах праздничных дней, на будущие годы - согласно ТК РФ (для российского производственного календаря).
    • Если флажок Является региональным календарем выключен - согласно ТК РФ.

Печать производственного календаря

+
  • Нажмите Печать, для того чтобы вывести сводные сведения о производственном календаре на указанный год. +
    • Предусмотрен вывод сведений о годовом балансе рабочего времени, а также по месяцам, за квартал, полугодие. +
    • Выводится статистика по количеству календарных дней, рабочих, выходных и праздничных дней, а также рабочее время в часах при 40-часовой, 36-часовой и 24-часовой рабочей неделе.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..c1df7788 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,667 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Ссылка.Пустая() Тогда + ЗаполнитьДаннымиТекущегоГода(Параметры.ЗначениеКопирования); + УстановитьСвойстваПоляБазовогоКалендаря(ЭтотОбъект); + КонецЕсли; + + ЦветаВидовДней = Новый ФиксированноеСоответствие(Справочники.ПроизводственныеКалендари.ЦветаОформленияВидовДнейПроизводственногоКалендаря()); + + СписокВидовДня = Справочники.ПроизводственныеКалендари.СписокВидовДня(); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда + МодульАвтономнаяРабота = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРабота"); + МодульАвтономнаяРабота.ОбъектПриЧтенииНаСервере(ТекущийОбъект, ЭтотОбъект.ТолькоПросмотр); + КонецЕсли; + + ЗаполнитьДаннымиТекущегоГода(); + + ЕстьБазовыйКалендарь = ЗначениеЗаполнено(Объект.БазовыйКалендарь); + УстановитьСвойстваПоляБазовогоКалендаря(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + НачатьУстановкуВидимостиБазовогоКалендаря(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборДаты") Тогда + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; + КонецЕсли; + ВыделенныеДаты = Элементы.Календарь.ВыделенныеДаты; + Если ВыделенныеДаты.Количество() = 0 Или Год(ВыделенныеДаты[0]) <> НомерТекущегоГода Тогда + Возврат; + КонецЕсли; + ДатаПереноса = ВыделенныеДаты[0]; + ПеренестиВидДня(ДатаПереноса, ВыбранноеЗначение); + Элементы.Календарь.Обновить(); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + Если ЕстьБазовыйКалендарь И Не ЗначениеЗаполнено(Объект.БазовыйКалендарь) Тогда + ТекстСообщения = НСтр("ru = 'Федеральный календарь не заполнен.'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , , "Объект.БазовыйКалендарь", Отказ); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Перем НомерГода; + + Если Не ПараметрыЗаписи.Свойство("НомерГода", НомерГода) Тогда + НомерГода = НомерТекущегоГода; + КонецЕсли; + + ЗаписатьДанныеПроизводственногоКалендаря(НомерГода, ТекущийОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НомерТекущегоГодаПриИзменении(Элемент) + + ЗаписыватьДанныеГрафика = Ложь; + Если Модифицированность Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Записать измененные данные за %1 год?'"), Формат(НомерПредыдущегоГода, "ЧГ=0")); + Оповещение = Новый ОписаниеОповещения("НомерТекущегоГодаПриИзмененииЗавершение", ЭтотОбъект); + ПоказатьВопрос(Оповещение, ТекстСообщения, РежимДиалогаВопрос.ДаНет); + Возврат; + КонецЕсли; + + ОбработатьИзменениеГода(ЗаписыватьДанныеГрафика); + + Модифицированность = Ложь; + + Элементы.Календарь.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура КалендарьПриВыводеПериода(Элемент, ОформлениеПериода) + + Для Каждого СтрокаОформленияПериода Из ОформлениеПериода.Даты Цикл + ЦветОформленияДня = ЦветаВидовДней.Получить(ВидыДней.Получить(СтрокаОформленияПериода.Дата)); + Если ЦветОформленияДня = Неопределено Тогда + ЦветОформленияДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняПроизводственногоКалендаряНеУказанЦвет"); + КонецЕсли; + СтрокаОформленияПериода.ЦветТекста = ЦветОформленияДня; + Если НерабочиеДаты.Найти(СтрокаОформленияПериода.Дата) <> Неопределено Тогда + СтрокаОформленияПериода.ЦветФона = ОбщегоНазначенияКлиент.ЦветСтиля("НерабочийПериодПроизводственногоКалендаряФон"); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ЕстьБазовыйКалендарьПриИзменении(Элемент) + + УстановитьСвойстваПоляБазовогоКалендаря(ЭтотОбъект); + + Если Не ЕстьБазовыйКалендарь Тогда + Объект.БазовыйКалендарь = Неопределено; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура БазовыйКалендарьПриИзменении(Элемент) + ПрочитатьНерабочиеДаты(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ИзменитьДень(Команда) + + ВыделенныеДаты = Элементы.Календарь.ВыделенныеДаты; + + Если ВыделенныеДаты.Количество() > 0 И Год(ВыделенныеДаты[0]) = НомерТекущегоГода Тогда + Оповещение = Новый ОписаниеОповещения("ИзменитьДеньЗавершение", ЭтотОбъект, ВыделенныеДаты); + ПоказатьВыборИзСписка(Оповещение, СписокВидовДня, , СписокВидовДня.НайтиПоЗначению(ВидыДней.Получить(ВыделенныеДаты[0]))); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПеренестиДень(Команда) + + ВыделенныеДаты = Элементы.Календарь.ВыделенныеДаты; + + Если ВыделенныеДаты.Количество() = 0 Или Год(ВыделенныеДаты[0]) <> НомерТекущегоГода Тогда + Возврат; + КонецЕсли; + + ДатаПереноса = ВыделенныеДаты[0]; + ВидДня = ВидыДней.Получить(ДатаПереноса); + + ПараметрыВыбораДаты = Новый Структура( + "НачальноеЗначение, + |НачалоПериодаОтображения, + |КонецПериодаОтображения, + |Заголовок, + |ПоясняющийТекст"); + + ПараметрыВыбораДаты.НачальноеЗначение = ДатаПереноса; + ПараметрыВыбораДаты.НачалоПериодаОтображения = НачалоГода(Календарь); + ПараметрыВыбораДаты.КонецПериодаОтображения = КонецГода(Календарь); + ПараметрыВыбораДаты.Заголовок = НСтр("ru = 'Выбор даты переноса'"); + + ПараметрыВыбораДаты.ПоясняющийТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выберите дату, на которую будет осуществлен перенос дня %1 (%2)'"), + Формат(ДатаПереноса, "ДФ='д ММММ'"), // АПК:1367 Хорошего решения нет, считаем сохранение порядка дата + месяц приемлемым решением в этом месте + ВидДня); + + ОткрытьФорму("ОбщаяФорма.ВыборДаты", ПараметрыВыбораДаты, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьПоУмолчанию(Команда) + + ЗаполнитьДаннымиПоУмолчанию(); + + Элементы.Календарь.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура Печать(Команда) + + Если Объект.Ссылка.Пустая() Тогда + Обработчик = Новый ОписаниеОповещения("ПечатьЗавершение", ЭтотОбъект); + ПоказатьВопрос( + Обработчик, + НСтр("ru = 'Данные производственного календаря еще не записаны. + |Печать возможна только после записи данных. + | + |Записать?'"), + РежимДиалогаВопрос.ДаНет, + , + КодВозвратаДиалога.Да); + Возврат; + КонецЕсли; + + ПечатьЗавершение(-1); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьДаннымиТекущегоГода(ЗначениеКопирования = Неопределено) + + // Заполняет форму данными текущего года. + + НастроитьПолеКалендаря(); + + СсылкаНаКалендарь = Объект.Ссылка; + Если ЗначениеЗаполнено(ЗначениеКопирования) Тогда + СсылкаНаКалендарь = ЗначениеКопирования; + Объект.Наименование = Неопределено; + Объект.Код = Неопределено; + КонецЕсли; + + ПрочитатьДанныеПроизводственногоКалендаря(СсылкаНаКалендарь, НомерТекущегоГода); + ПрочитатьНерабочиеДаты(); + +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, НомерГода) + + // Загрузка данных производственного календаря за указанный год. + ПреобразоватьДанныеПроизводственногоКалендаря( + Справочники.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, НомерГода)); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьДаннымиПоУмолчанию() + + // Заполняет форму данными производственного календаря, + // составленными на основе сведений о праздничных днях и переносах. + + КодБазовогоКалендаря = Неопределено; + Если ЗначениеЗаполнено(Объект.БазовыйКалендарь) Тогда + КодБазовогоКалендаря = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.БазовыйКалендарь, "Код"); + КонецЕсли; + + ДанныеПоУмолчанию = Справочники.ПроизводственныеКалендари.РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию( + Объект.Код, НомерТекущегоГода, КодБазовогоКалендаря); + + ПреобразоватьДанныеПроизводственногоКалендаря(ДанныеПоУмолчанию); + + Модифицированность = Истина; + +КонецПроцедуры + +&НаСервере +Процедура ПреобразоватьДанныеПроизводственногоКалендаря(ДанныеПроизводственногоКалендаря) + + // Данные производственного календаря используются в форме + // в виде соответствий ВидыДней и ПереносыДней. + // Процедура заполняет эти соответствия. + + ВидыДнейСоответствие = Новый Соответствие; + ПереносыДнейСоответствие = Новый Соответствие; + + Для Каждого СтрокаТаблицы Из ДанныеПроизводственногоКалендаря Цикл + ВидыДнейСоответствие.Вставить(СтрокаТаблицы.Дата, СтрокаТаблицы.ВидДня); + Если ЗначениеЗаполнено(СтрокаТаблицы.ДатаПереноса) Тогда + ПереносыДнейСоответствие.Вставить(СтрокаТаблицы.Дата, СтрокаТаблицы.ДатаПереноса); + КонецЕсли; + КонецЦикла; + + ВидыДней = Новый ФиксированноеСоответствие(ВидыДнейСоответствие); + ПереносыДней = Новый ФиксированноеСоответствие(ПереносыДнейСоответствие); + + ЗаполнитьПредставлениеПереносов(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьДанныеПроизводственногоКалендаря(Знач НомерГода, Знач ТекущийОбъект = Неопределено) + + // Запись данных производственного календаря за указанный год. + + Если ТекущийОбъект = Неопределено Тогда + ТекущийОбъект = РеквизитФормыВЗначение("Объект"); + КонецЕсли; + + ДанныеПроизводственногоКалендаря = Новый ТаблицаЗначений; + ДанныеПроизводственногоКалендаря.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата")); + ДанныеПроизводственногоКалендаря.Колонки.Добавить("ВидДня", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыДнейПроизводственногоКалендаря")); + ДанныеПроизводственногоКалендаря.Колонки.Добавить("ДатаПереноса", Новый ОписаниеТипов("Дата")); + + Для Каждого КлючИЗначение Из ВидыДней Цикл + + СтрокаТаблицы = ДанныеПроизводственногоКалендаря.Добавить(); + СтрокаТаблицы.Дата = КлючИЗначение.Ключ; + СтрокаТаблицы.ВидДня = КлючИЗначение.Значение; + + // Если день перенесен с другой даты, вписываем дату переноса. + ДатаПереноса = ПереносыДней.Получить(СтрокаТаблицы.Дата); + Если ДатаПереноса <> Неопределено + И ДатаПереноса <> СтрокаТаблицы.Дата Тогда + СтрокаТаблицы.ДатаПереноса = ДатаПереноса; + КонецЕсли; + + КонецЦикла; + + Справочники.ПроизводственныеКалендари.ЗаписатьДанныеПроизводственногоКалендаря(ТекущийОбъект.Ссылка, НомерГода, ДанныеПроизводственногоКалендаря); + +КонецПроцедуры + +&НаСервере +Процедура ОбработатьИзменениеГода(ЗаписыватьДанныеГрафика) + + Если Не ЗаписыватьДанныеГрафика Тогда + ЗаполнитьДаннымиТекущегоГода(); + Возврат; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + Записать(Новый Структура("НомерГода", НомерПредыдущегоГода)); + Иначе + ЗаписатьДанныеПроизводственногоКалендаря(НомерПредыдущегоГода); + КонецЕсли; + + ЗаполнитьДаннымиТекущегоГода(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьВидыДней(ДатыДней, ВидДня) + + // Устанавливает дням по всем датам массива определенный вид. + + ВидыДнейСоответствие = Новый Соответствие(ВидыДней); + + Для Каждого ВыбраннаяДата Из ДатыДней Цикл + ВидыДнейСоответствие.Вставить(ВыбраннаяДата, ВидДня); + КонецЦикла; + + ВидыДней = Новый ФиксированноеСоответствие(ВидыДнейСоответствие); + +КонецПроцедуры + +&НаКлиенте +Процедура ПеренестиВидДня(ДатаПереноса, ДатаНазначения) + + // Нужно обменять местами два дня в календаре + // - обменяться видами дня + // - запомнить даты переноса + // * если переносимый день уже имеет дату переноса (уже был откуда-то перенесен), + // используем имеющуюся дату переноса + // * если даты совпадают (день возвращен на "свое место") - удаляем такую запись. + + ВидыДнейСоответствие = Новый Соответствие(ВидыДней); + + ВидыДнейСоответствие.Вставить(ДатаНазначения, ВидыДней.Получить(ДатаПереноса)); + ВидыДнейСоответствие.Вставить(ДатаПереноса, ВидыДней.Получить(ДатаНазначения)); + + ПереносыДнейСоответствие = Новый Соответствие(ПереносыДней); + + ВписатьДатуПереноса(ПереносыДнейСоответствие, ДатаПереноса, ДатаНазначения); + ВписатьДатуПереноса(ПереносыДнейСоответствие, ДатаНазначения, ДатаПереноса); + + ВидыДней = Новый ФиксированноеСоответствие(ВидыДнейСоответствие); + ПереносыДней = Новый ФиксированноеСоответствие(ПереносыДнейСоответствие); + + ЗаполнитьПредставлениеПереносов(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ВписатьДатуПереноса(ПереносыДнейСоответствие, ДатаПереноса, ДатаНазначения) + + // Заполняет в соответствии с датами переносов дней корректную дату переноса. + + ИсточникДняДатыНазначения = ПереносыДней.Получить(ДатаНазначения); + Если ИсточникДняДатыНазначения = Неопределено Тогда + ИсточникДняДатыНазначения = ДатаНазначения; + КонецЕсли; + + Если ДатаПереноса = ИсточникДняДатыНазначения Тогда + ПереносыДнейСоответствие.Удалить(ДатаПереноса); + Иначе + ПереносыДнейСоответствие.Вставить(ДатаПереноса, ИсточникДняДатыНазначения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьПредставлениеПереносов(Форма) + + // Формирует представление переносов в виде списка значений. + + Форма.СписокПереносов.Очистить(); + Для Каждого КлючИЗначение Из Форма.ПереносыДней Цикл + // С прикладной точки зрения переносится всегда выходной день на рабочий, + // поэтому из двух дат выбираем ту, которой соответствовал выходной день (сейчас соответствует рабочий). + ДатаИсточник = КлючИЗначение.Ключ; + ДатаПриемник = КлючИЗначение.Значение; + ВидДня = Форма.ВидыДней.Получить(ДатаИсточник); + Если ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Суббота") + Или ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Воскресенье") Тогда + // Обменяем даты местами, чтобы отобразить сведения о переносе как "А на Б", а не "Б на А". + ДатаПереноса = ДатаПриемник; + ДатаПриемник = ДатаИсточник; + ДатаИсточник = ДатаПереноса; + КонецЕсли; + Если Форма.СписокПереносов.НайтиПоЗначению(ДатаИсточник) <> Неопределено + Или Форма.СписокПереносов.НайтиПоЗначению(ДатаПриемник) <> Неопределено Тогда + // Перенос уже добавлен, пропускаем. + Продолжить; + КонецЕсли; + Форма.СписокПереносов.Добавить(ДатаИсточник, ПредставлениеПереноса(ДатаИсточник, ДатаПриемник)); + КонецЦикла; + Форма.СписокПереносов.СортироватьПоЗначению(); + + УстановитьВидимостьСпискаПереносов(Форма); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеПереноса(ДатаИсточник, ДатаПриемник) + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'с %1 %2 на %3 %4'"), + ДеньНеделиВФормулировкеСКакогоПереносим(ДатаИсточник), + Формат(ДатаИсточник, "ДФ='д ММММ'"), // АПК:1367 Хорошего решения нет, считаем сохранение порядка дата + месяц приемлемым решением в этом месте + ДеньНеделиВФормулировкеНаКакойПереносим(ДатаПриемник), + Формат(ДатаПриемник, "ДФ='д ММММ'")); // АПК:1367 + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьВидимостьСпискаПереносов(Форма) + + ВидимостьСписка = Форма.СписокПереносов.Количество() > 0; + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "СписокПереносов", "Видимость", ВидимостьСписка); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьПолеКалендаря() + + Если НомерТекущегоГода = 0 Тогда + НомерТекущегоГода = Год(ТекущаяДатаСеанса()); + КонецЕсли; + НомерПредыдущегоГода = НомерТекущегоГода; + + Элементы.Календарь.НачалоПериодаОтображения = Дата(НомерТекущегоГода, 1, 1); + Элементы.Календарь.КонецПериодаОтображения = Дата(НомерТекущегоГода, 12, 31); + +КонецПроцедуры + +&НаКлиенте +Процедура НомерТекущегоГодаПриИзмененииЗавершение(Ответ, ДополнительныеПараметры) Экспорт + + ОбработатьИзменениеГода(Ответ = КодВозвратаДиалога.Да); + Модифицированность = Ложь; + Элементы.Календарь.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьДеньЗавершение(ВыбранныйЭлемент, ВыделенныеДаты) Экспорт + + Если ВыбранныйЭлемент <> Неопределено Тогда + ИзменитьВидыДней(ВыделенныеДаты, ВыбранныйЭлемент.Значение); + Элементы.Календарь.Обновить(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПечатьЗавершение(ОтветНаПредложениеЗаписать, ПараметрыВыполнения = Неопределено) Экспорт + + Если ОтветНаПредложениеЗаписать <> -1 Тогда + Если ОтветНаПредложениеЗаписать <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + Записан = Записать(); + Если Не Записан Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + ПараметрыПечати = Новый Структура; + ПараметрыПечати.Вставить("ПроизводственныйКалендарь", Объект.Ссылка); + ПараметрыПечати.Вставить("НомерГода", НомерТекущегоГода); + + ПараметрКоманды = Новый Массив; + ПараметрКоманды.Добавить(Объект.Ссылка); + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент"); + МодульУправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Справочник.ПроизводственныеКалендари", "ПроизводственныйКалендарь", + ПараметрКоманды, ЭтотОбъект, ПараметрыПечати); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСвойстваПоляБазовогоКалендаря(Форма) + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Форма.Элементы, + "БазовыйКалендарь", + "Доступность", + Форма.ЕстьБазовыйКалендарь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Форма.Элементы, + "БазовыйКалендарь", + "АвтоОтметкаНеЗаполненного", + Форма.ЕстьБазовыйКалендарь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Форма.Элементы, + "БазовыйКалендарь", + "ОтметкаНеЗаполненного", + Не ЗначениеЗаполнено(Форма.Объект.БазовыйКалендарь)); + +КонецПроцедуры + +&НаКлиенте +Процедура НачатьУстановкуВидимостиБазовогоКалендаря() + + ДлительнаяОперация = ЗагрузитьСписокПоддерживаемыхПроизводственныхКалендарей(); + + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + + ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗавершитьУстановкуВидимостиБазовогоКалендаря", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); + +КонецПроцедуры + +&НаСервере +Функция ЗагрузитьСписокПоддерживаемыхПроизводственныхКалендарей() + + ПараметрыПроцедуры = Новый Структура; + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Заполнение списка поддерживаемых календарей'"); + + Возврат ДлительныеОперации.ВыполнитьВФоне("Справочники.ПроизводственныеКалендари.ЗаполнитьПроизводственныеКалендариПоУмолчаниюДлительнаяОперация", + ПараметрыПроцедуры, ПараметрыВыполнения); + +КонецФункции + +&НаКлиенте +Процедура ЗавершитьУстановкуВидимостиБазовогоКалендаря(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "БазовыйКалендарьГруппа", "Видимость", Истина); + Возврат; + КонецЕсли; + + АдресКалендарей = Результат.АдресРезультата; + ЭтоПоставляемыйКалендарь = ЕстьПоставляемыйКалендарьСТакимКодом(АдресКалендарей, Объект.Код); + + Если Не ЭтоПоставляемыйКалендарь Тогда + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "БазовыйКалендарьГруппа", "Видимость", Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ЕстьПоставляемыйКалендарьСТакимКодом(АдресКалендарей, Код) + + ТаблицаКалендарей = ПолучитьИзВременногоХранилища(АдресКалендарей); + + Если ТаблицаКалендарей <> Неопределено И ТаблицаКалендарей.Колонки.Найти("Code") <> Неопределено Тогда + Возврат ТаблицаКалендарей.Найти(СокрЛП(Код), "Code") <> Неопределено; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ДеньНеделиВФормулировкеСКакогоПереносим(Дата) + + Соответствие = Новый Соответствие; + Соответствие.Вставить(1, НСтр("ru = 'понедельника'")); + Соответствие.Вставить(2, НСтр("ru = 'вторника'")); + Соответствие.Вставить(3, НСтр("ru = 'среды'")); + Соответствие.Вставить(4, НСтр("ru = 'четверга'")); + Соответствие.Вставить(5, НСтр("ru = 'пятницы'")); + Соответствие.Вставить(6, НСтр("ru = 'субботы'")); + Соответствие.Вставить(7, НСтр("ru = 'воскресенья'")); + + Представление = Соответствие[ДеньНедели(Дата)]; + Если Представление = Неопределено Тогда + Возврат Формат(Дата, "ДФ='дддд'"); // АПК:1367 В данном случае отображение дня недели будет корректным с учетом локализации + КонецЕсли; + + Возврат Представление; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ДеньНеделиВФормулировкеНаКакойПереносим(Дата) + + Соответствие = Новый Соответствие; + Соответствие.Вставить(1, НСтр("ru = 'понедельник'")); + Соответствие.Вставить(2, НСтр("ru = 'вторник'")); + Соответствие.Вставить(3, НСтр("ru = 'среду'")); + Соответствие.Вставить(4, НСтр("ru = 'четверг'")); + Соответствие.Вставить(5, НСтр("ru = 'пятницу'")); + Соответствие.Вставить(6, НСтр("ru = 'субботу'")); + Соответствие.Вставить(7, НСтр("ru = 'воскресенье'")); + + Представление = Соответствие[ДеньНедели(Дата)]; + Если Представление = Неопределено Тогда + Возврат Формат(Дата, "ДФ='дддд'"); // АПК:1367 В данном случае отображение дня недели будет корректным с учетом локализации + КонецЕсли; + + Возврат Представление; + +КонецФункции + +&НаСервере +Процедура ПрочитатьНерабочиеДаты(ТекущийОбъект = Неопределено) + + Если ТекущийОбъект = Неопределено Тогда + ТекущийОбъект = Объект; + КонецЕсли; + + Даты = Новый Массив; + + ПроизводственныйКалендарь = ?(ЗначениеЗаполнено(Объект.БазовыйКалендарь), + ТекущийОбъект.БазовыйКалендарь, ТекущийОбъект.Ссылка); + + Если ЗначениеЗаполнено(ПроизводственныйКалендарь) Тогда + Периоды = КалендарныеГрафики.ПериодыНерабочихДней( + ПроизводственныйКалендарь, Новый СтандартныйПериод(Дата(НомерТекущегоГода, 1, 1), Дата(НомерТекущегоГода, 12, 31))); + Пояснение = ""; + Для Каждого ОписаниеПериода Из Периоды Цикл + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Даты, ОписаниеПериода.Даты); + Пояснение = Пояснение + ?(Не ПустаяСтрока(Пояснение), Символы.ПС, "") + ОписаниеПериода.Представление; + КонецЦикла; + Элементы.НерабочиеПериодыТекст.Заголовок = Пояснение; + КонецЕсли; + + НерабочиеДаты = Новый ФиксированныйМассив(Даты); + Элементы.НерабочиеПериодыГруппа.Видимость = НерабочиеДаты.Количество() > 0; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Help/ru.html" new file mode 100644 index 00000000..9847c28c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Help/ru.html" @@ -0,0 +1,11 @@ + +

Предназначен для формирования и хранения производственных календарей.

+

Открывается по соответствующей команде в разделе Справочники.

+

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

+

Производственный календарь РФ (который является общегосударственным) входит в поставляемые данные программы и обновляется по мере утверждения календаря и переносов праздников в РФ. При необходимости можно ввести несколько производственных календарей. Рекомендуется ввести производственный календарь в начале года на основании общегосударственного календаря на весь год сразу. Это поможет избежать ошибок в расчетах в течение года.

+

Производственные календари сами по себе не используются в учете. На основании производственного календаря формируются графики работы подразделений, а также графики работы сотрудников.

+

Ввод производственного календаря

+
  • Нажмите Создать, выберите способ создания производственного календаря: +
    • По классификатору - добавить из классификатора, рекомендуется. Программа поставляется с классификатором производственных календарей. +
    • Новый (ввести вручную (если в классификаторе нет соответствующего производственного календаря.
  • Заполните необходимые поля.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ManagerModule.bsl" new file mode 100644 index 00000000..dbd50efb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ManagerModule.bsl" @@ -0,0 +1,1483 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Возвращает реквизиты справочника, которые образуют естественный ключ +// для элементов справочника. +// +// Возвращаемое значение: +// Массив - массив имен реквизитов, образующих естественный ключ. +// +Функция ПоляЕстественногоКлюча() Экспорт + + Результат = Новый Массив(); + + Результат.Добавить("Код"); + + Возврат Результат; + +КонецФункции + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// СтандартныеПодсистемы.Печать + +// Формирует печатные формы. +// +// Параметры: +// МассивОбъектов - см. УправлениеПечатьюПереопределяемый.ПриПечати.МассивОбъектов +// ПараметрыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ПараметрыПечати +// КоллекцияПечатныхФорм - см. УправлениеПечатьюПереопределяемый.ПриПечати.КоллекцияПечатныхФорм +// ОбъектыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ОбъектыПечати +// ПараметрыВывода - см. УправлениеПечатьюПереопределяемый.ПриПечати.ПараметрыВывода +// +Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Производственный календарь «%1» на %2 год'"), + ПараметрыПечати.ПроизводственныйКалендарь, + Формат(ПараметрыПечати.НомерГода, "ЧГ=;")); + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + МодульУправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( + КоллекцияПечатныхФорм, + "ПроизводственныйКалендарь", + Заголовок, + ПечатнаяФормаПроизводственногоКалендаря(ПараметрыПечати), + , + "Справочник.ПроизводственныеКалендари.ПФ_MXL_ПроизводственныйКалендарь"); + КонецЕсли; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.Печать + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Выявляет последний день, за который заполнены данные указанного производственного календаря. +// +// Параметры: +// ПроизводственныйКалендарь - СправочникСсылка.ПроизводственныеКалендари - календарь. +// +// Возвращаемое значение: +// Дата - дата, по которую заполнен производственный календарь, Неопределено, если календарь не заполнен. +// +Функция ДатаОкончанияЗаполненияПроизводственногоКалендаря(ПроизводственныйКалендарь) Экспорт + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь); + Запрос.Текст = + "ВЫБРАТЬ + | МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) КАК Дата + |ИЗ + | РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря + |ГДЕ + | ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь + | + |ИМЕЮЩИЕ + | МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) ЕСТЬ НЕ NULL "; + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Возврат Выборка.Дата; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Возвращает сведения о виде дня на каждую дату производственного календаря. +// +// Параметры: +// ПроизводственныйКалендарь - СправочникСсылка.ПроизводственныеКалендари - текущий элемент справочника. +// Годы - Число, Массив из Число - номер года, за который необходимо прочитать производственный календарь. +// +// Возвращаемое значение: +// ТаблицаЗначений +// +Функция ДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, Знач Годы) Экспорт + + Если ТипЗнч(Годы) <> Тип("Массив") Тогда + Годы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Годы); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь); + Запрос.УстановитьПараметр("Годы", Годы); + Запрос.Текст = + "ВЫБРАТЬ + | ДанныеПроизводственногоКалендаря.Год КАК Год, + | ДанныеПроизводственногоКалендаря.Дата КАК Дата, + | ДанныеПроизводственногоКалендаря.ВидДня КАК ВидДня, + | ДанныеПроизводственногоКалендаря.ДатаПереноса КАК ДатаПереноса + |ИЗ + | РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря + |ГДЕ + | ДанныеПроизводственногоКалендаря.Год В(&Годы) + | И ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь + | + |УПОРЯДОЧИТЬ ПО + | ДанныеПроизводственногоКалендаря.Дата"; + + Возврат Запрос.Выполнить().Выгрузить(); + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Обновляет справочник Производственные календари из XML файла. +// +// Параметры: +// ТаблицаКалендарей - ТаблицаЗначений - таблица с описанием производственных календарей. +// +Процедура ОбновитьПроизводственныеКалендари(ТаблицаКалендарей) Экспорт + + Если ТаблицаКалендарей.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("КлассификаторТаблица", ТаблицаКалендарей); + Запрос.Текст = + "ВЫБРАТЬ + | ВЫРАЗИТЬ(КлассификаторТаблица.Code КАК СТРОКА(2)) КАК Код, + | ВЫРАЗИТЬ(КлассификаторТаблица.Base КАК СТРОКА(2)) КАК КодБазового, + | ВЫРАЗИТЬ(КлассификаторТаблица.Description КАК СТРОКА(100)) КАК Наименование + |ПОМЕСТИТЬ КлассификаторТаблица + |ИЗ + | &КлассификаторТаблица КАК КлассификаторТаблица + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | КлассификаторТаблица.Код КАК Код, + | КлассификаторТаблица.КодБазового КАК КодБазового, + | КлассификаторТаблица.Наименование КАК Наименование, + | ПроизводственныеКалендари.Ссылка КАК Ссылка, + | ЕСТЬNULL(ПроизводственныеКалендари.Код, """") КАК ПроизводственныйКалендарьКод, + | ЕСТЬNULL(ПроизводственныеКалендари.Наименование, """") КАК ПроизводственныйКалендарьНаименование, + | ЕСТЬNULL(ПроизводственныеКалендари.БазовыйКалендарь.Код, """") КАК ПроизводственныйКалендарьКодБазового + |ИЗ + | КлассификаторТаблица КАК КлассификаторТаблица + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари + | ПО КлассификаторТаблица.Код = ПроизводственныеКалендари.Код + | + |УПОРЯДОЧИТЬ ПО + | КодБазового"; + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + Если СокрЛП(Выборка.Код) = СокрЛП(Выборка.ПроизводственныйКалендарьКод) + И СокрЛП(Выборка.Наименование) = СокрЛП(Выборка.ПроизводственныйКалендарьНаименование) + И СокрЛП(Выборка.КодБазового) = СокрЛП(Выборка.ПроизводственныйКалендарьКодБазового) Тогда + Продолжить; + КонецЕсли; + Если Не ЗначениеЗаполнено(Выборка.Ссылка) Тогда + Если Не ОбщегоНазначения.РазделениеВключено() И ЗначениеЗаполнено(Выборка.КодБазового) Тогда + // Зависимые календари не создаем автоматически при обновлении в локальном режиме. + Продолжить; + КонецЕсли; + КонецЕсли; + НачатьТранзакцию(); + Попытка + Если Не ЗначениеЗаполнено(Выборка.Ссылка) Тогда + СправочникОбъект = СоздатьЭлемент(); + Иначе + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировки = БлокировкаДанных.Добавить("Справочник.ПроизводственныеКалендари"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); + БлокировкаДанных.Заблокировать(); + СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект(); + КонецЕсли; + ЗаполнитьПроизводственныйКалендарь(СправочникОбъект, Выборка); + ЗаписатьПроизводственныйКалендарь(СправочникОбъект); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЦикла; + +КонецПроцедуры + +// Обновляет данные производственных календарей по таблице данных. +// +Функция ОбновитьДанныеПроизводственныхКалендарей(Знач ТаблицаДанных) Экспорт + + ТаблицаИзменений = ТаблицаИзмененийПроизводственныхКалендарей(); + + ОбновитьОсновныеДанныеПроизводственныхКалендарей(ТаблицаДанных, ТаблицаИзменений); + + ОбновитьДанныеЗависимыхПроизводственныхКалендарей(ТаблицаИзменений); + + Возврат ТаблицаИзменений; + +КонецФункции + +Функция ОбновитьПериодыНерабочихДней(ТаблицаПериодов) Экспорт + + ТаблицаИзменений = ТаблицаИзмененийПроизводственныхКалендарей(); + + // АПК:96 -выкл результат должен содержать уникальные значения + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ТаблицаПериодов", ТаблицаПериодов); + Запрос.Текст = + "ВЫБРАТЬ + | КлассификаторТаблица.КодПроизводственногоКалендаря КАК КалендарьКод, + | КлассификаторТаблица.НомерПериода КАК НомерПериода, + | КлассификаторТаблица.ДатаНачала КАК ДатаНачала, + | КлассификаторТаблица.ДатаОкончания КАК ДатаОкончания, + | КлассификаторТаблица.Основание КАК Основание + |ПОМЕСТИТЬ ВТКлассификаторТаблица + |ИЗ + | &ТаблицаПериодов КАК КлассификаторТаблица + |; + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ПроизводственныеКалендари.Ссылка КАК ПроизводственныйКалендарь, + | КлассификаторТаблица.КалендарьКод КАК КодПроизводственногоКалендаря + |ПОМЕСТИТЬ ВТИзмененияКалендарей + |ИЗ + | ВТКлассификаторТаблица КАК КлассификаторТаблица + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари + | ПО КлассификаторТаблица.КалендарьКод = ПроизводственныеКалендари.Код + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПериодыНерабочихДнейКалендаря КАК ПериодыНерабочихДней + | ПО ПроизводственныеКалендари.Ссылка = ПериодыНерабочихДней.ПроизводственныйКалендарь + | И КлассификаторТаблица.НомерПериода = ПериодыНерабочихДней.НомерПериода + | И КлассификаторТаблица.ДатаНачала = ПериодыНерабочихДней.ДатаНачала + | И КлассификаторТаблица.ДатаОкончания = ПериодыНерабочихДней.ДатаОкончания + | И КлассификаторТаблица.Основание = ПериодыНерабочихДней.Основание + |ГДЕ + | ПериодыНерабочихДней.НомерПериода ЕСТЬ NULL + | + |ОБЪЕДИНИТЬ + | + |ВЫБРАТЬ + | ПериодыНерабочихДней.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь, + | ПериодыНерабочихДней.ПроизводственныйКалендарь.Код КАК КодПроизводственногоКалендаря + |ИЗ + | РегистрСведений.ПериодыНерабочихДнейКалендаря КАК ПериодыНерабочихДней + | ЛЕВОЕ СОЕДИНЕНИЕ ВТКлассификаторТаблица КАК КлассификаторТаблица + | ПО КлассификаторТаблица.КалендарьКод = ПериодыНерабочихДней.ПроизводственныйКалендарь.Код + | И КлассификаторТаблица.НомерПериода = ПериодыНерабочихДней.НомерПериода + | И КлассификаторТаблица.ДатаНачала = ПериодыНерабочихДней.ДатаНачала + | И КлассификаторТаблица.ДатаОкончания = ПериодыНерабочихДней.ДатаОкончания + | И КлассификаторТаблица.Основание = ПериодыНерабочихДней.Основание + |ГДЕ + | КлассификаторТаблица.НомерПериода ЕСТЬ NULL + |; + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ИзмененияКалендарей.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь, + | ИзмененияКалендарей.КодПроизводственногоКалендаря КАК КодПроизводственногоКалендаря, + | ГОД(КлассификаторТаблица.ДатаНачала) КАК Год, + | КлассификаторТаблица.НомерПериода, + | КлассификаторТаблица.ДатаНачала КАК ДатаНачала, + | КлассификаторТаблица.ДатаОкончания КАК ДатаОкончания, + | КлассификаторТаблица.Основание КАК Основание + |ИЗ + | ВТИзмененияКалендарей КАК ИзмененияКалендарей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКлассификаторТаблица КАК КлассификаторТаблица + | ПО КлассификаторТаблица.КалендарьКод = ИзмененияКалендарей.КодПроизводственногоКалендаря + |УПОРЯДОЧИТЬ ПО + | ИзмененияКалендарей.ПроизводственныйКалендарь, + | КлассификаторТаблица.НомерПериода"; + + // АПК:96 -вкл + + БлокировкаДанных = Новый БлокировкаДанных; + БлокировкаДанных.Добавить("РегистрСведений.ПериодыНерабочихДнейКалендаря"); + НачатьТранзакцию(); + Попытка + БлокировкаДанных.Заблокировать(); + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.СледующийПоЗначениюПоля("ПроизводственныйКалендарь") Цикл + НаборЗаписей = РегистрыСведений.ПериодыНерабочихДнейКалендаря.СоздатьНаборЗаписей(); + Пока Выборка.Следующий() Цикл + ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка); + ЗаполнитьЗначенияСвойств(ТаблицаИзменений.Добавить(), Выборка); + КонецЦикла; + НаборЗаписей.Отбор.ПроизводственныйКалендарь.Установить(Выборка.ПроизводственныйКалендарь); + Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); + Продолжить; + КонецЕсли; + НаборЗаписей.Записать(); + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + ТаблицаИзменений.Свернуть("КодПроизводственногоКалендаря, Год"); + + Возврат ТаблицаИзменений; + +КонецФункции + +// Функция подготавливает результат заполнения производственного календаря +// данными по умолчанию. +// При наличии в конфигурации макета с предопределенными данными +// производственного календаря на этот год, используются данные макета, +// в противном случае данные производственного календаря формируются на основе +// сведений о праздниках, а также с учетом действующих правил переноса выходных дней. +// +Функция РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(КодКалендаря, НомерГода, Знач КодБазовогоКалендаря = Неопределено) Экспорт + + ВидыДней = Новый Соответствие; + ПереносыДней = Новый Соответствие; + + // Если есть данные в макете - используем их. + // Сразу получаем данные еще и по базовому календарю, если он задан. + КодыКалендарей = Новый Массив; + КодыКалендарей.Добавить(КодКалендаря); + ЕстьБазовыйКалендарь = Ложь; + Если КодБазовогоКалендаря <> Неопределено Тогда + КодыКалендарей.Добавить(КодБазовогоКалендаря); + ЕстьБазовыйКалендарь = Истина; + КонецЕсли; + + // Отбираем данные из макета по обоим календарям. + // Получаем не полный набор, а только праздничные дни и переносы. + ДанныеИзМакета = ДанныеПроизводственныхКалендарейПоУмолчанию(КодыКалендарей); + + ОтборСтрок = Новый Структура("КодПроизводственногоКалендаря,Год"); + ОтборСтрок.Год = НомерГода; + + ЕстьДанныеКалендаря = Ложь; + ОтборСтрок.КодПроизводственногоКалендаря = КодКалендаря; + ДанныеКалендаря = ДанныеИзМакета.НайтиСтроки(ОтборСтрок); + Если ДанныеКалендаря.Количество() > 0 Тогда + ЕстьДанныеКалендаря = Истина; + ЗаполнитьВидыДнейДаннымиКалендаря(ДанныеКалендаря, ВидыДней, ПереносыДней); + КонецЕсли; + + // Проверяем, есть ли в макете данные базового календаря. + ЕстьДанныеБазовогоКалендаря = Ложь; + Если ЕстьБазовыйКалендарь Тогда + ОтборСтрок.КодПроизводственногоКалендаря = КодБазовогоКалендаря; + ДанныеКалендаря = ДанныеИзМакета.НайтиСтроки(ОтборСтрок); + Если ДанныеКалендаря.Количество() > 0 Тогда + ЕстьДанныеБазовогоКалендаря = Истина; + Если Не ЕстьДанныеКалендаря Тогда + ЗаполнитьВидыДнейДаннымиКалендаря(ДанныеКалендаря, ВидыДней, ПереносыДней); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + // Дополняем данными по умолчанию на остальные дни. + ДатаДня = Дата(НомерГода, 1, 1); + Пока ДатаДня <= Дата(НомерГода, 12, 31) Цикл + Если ВидыДней[ДатаДня] = Неопределено Тогда + ВидыДней.Вставить(ДатаДня, ВидДняПоДате(ДатаДня)); + КонецЕсли; + ДатаДня = ДатаДня + ДлинаСуток(); + КонецЦикла; + + // Если данных в макете не было, то обращаемся к заполнению постоянных праздников. + Если Не ЕстьДанныеКалендаря Тогда + Если ЕстьБазовыйКалендарь И ЕстьДанныеБазовогоКалендаря Тогда + // Постоянные праздники базового календаря запрашиваем только если их не было в макете. + КодБазовогоКалендаря = Неопределено; + КонецЕсли; + ЗаполнитьПостоянныеПраздничныеДни(ВидыДней, ПереносыДней, НомерГода, КодКалендаря, КодБазовогоКалендаря); + КонецЕсли; + + // Преобразовываем в таблицу. + ДанныеПроизводственногоКалендаря = НовыеДанныеПроизводственныхКалендарей(); + Для Каждого КлючИЗначение Из ВидыДней Цикл + НоваяСтрока = ДанныеПроизводственногоКалендаря.Добавить(); + НоваяСтрока.Дата = КлючИЗначение.Ключ; + НоваяСтрока.ВидДня = КлючИЗначение.Значение; + ДатаПереноса = ПереносыДней[НоваяСтрока.Дата]; + Если ДатаПереноса <> Неопределено Тогда + НоваяСтрока.ДатаПереноса = ДатаПереноса; + КонецЕсли; + НоваяСтрока.Год = НомерГода; + НоваяСтрока.КодПроизводственногоКалендаря = КодКалендаря; + КонецЦикла; + + ДанныеПроизводственногоКалендаря.Сортировать("Дата"); + + Возврат ДанныеПроизводственногоКалендаря; + +КонецФункции + +Функция РезультатЗаполненияПроизводственныхКалендарейПоУмолчанию(КодыКалендарей) Экспорт + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("КодыКалендарей", КодыКалендарей); + Запрос.Текст = + "ВЫБРАТЬ + | ПроизводственныеКалендари.Ссылка КАК Ссылка, + | ПроизводственныеКалендари.Код КАК КодКалендаря, + | ПроизводственныеКалендари.БазовыйКалендарь КАК БазовыйКалендарь, + | ПроизводственныеКалендари.БазовыйКалендарь.Код КАК КодБазовогоКалендаря + |ИЗ + | Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари + |ГДЕ + | ПроизводственныеКалендари.Код В(&КодыКалендарей)"; + РезультатЗапроса = Запрос.Выполнить(); + + // Запрашиваем данные всех календарей из макета для определения годов заполнения. + КодыДанныхМакета = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("КодКалендаря"); + ДанныеИзМакета = ДанныеПроизводственныхКалендарейПоУмолчанию(КодыДанныхМакета); + + ТаблицаДанных = НовыеДанныеПроизводственныхКалендарей(); + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + ОтборСтрок = Новый Структура("КодПроизводственногоКалендаря"); + ОтборСтрок.КодПроизводственногоКалендаря = Выборка.КодКалендаря; + ДанныеКалендаряИзМакета = ДанныеИзМакета.НайтиСтроки(ОтборСтрок); + НомераГодов = ОбщегоНазначения.ВыгрузитьКолонку(ДанныеКалендаряИзМакета, "Год", Истина); + ТекущийГод = Год(ТекущаяДатаСеанса()); + Если НомераГодов.Найти(ТекущийГод) = Неопределено Тогда + // Добавляем по умолчанию текущий год. + НомераГодов.Добавить(ТекущийГод); + КонецЕсли; + Для Каждого НомерГода Из НомераГодов Цикл + ДанныеКалендаря = РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(Выборка.КодКалендаря, НомерГода, Выборка.КодБазовогоКалендаря); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ДанныеКалендаря, ТаблицаДанных); + КонецЦикла; + КонецЦикла; + + Возврат ТаблицаДанных; + +КонецФункции + +// Преобразовывает данные производственных календарей, поставляемые в виде макета в конфигурации. +// +// Параметры: +// КодыКалендарей - Массив - если не задан, то будут получены все имеющиеся данные из макета. +// ФормироватьПолныйНабор - Булево - если ложь, то будут сформированы только данные по отклонениям от календаря по умолчанию. +// +// Возвращаемое значение: +// см. ДанныеПроизводственныхКалендарейИзXML. +// +Функция ДанныеПроизводственныхКалендарейИзМакета(КодыКалендарей = Неопределено, ФормироватьПолныйНабор = Истина) Экспорт + + Если Метаданные.Обработки.Найти("ЗаполнениеКалендарныхГрафиков") = Неопределено Тогда + Возврат НовыеДанныеПроизводственныхКалендарей(); + КонецЕсли; + + МодульЗаполнениеКалендарныхГрафиков = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаполнениеКалендарныхГрафиков"); + ТекстовыйДокумент = МодульЗаполнениеКалендарныхГрафиков.ПолучитьМакет("ДанныеПроизводственныхКалендарей"); + + ДанныеXML = ОбщегоНазначения.ПрочитатьXMLВТаблицу(ТекстовыйДокумент.ПолучитьТекст()); + + ТаблицаКалендарей = ПроизводственныеКалендариИзМакета(); + + Возврат ДанныеПроизводственныхКалендарейИзXML(ДанныеXML, ТаблицаКалендарей, КодыКалендарей, ФормироватьПолныйНабор); + +КонецФункции + +// Преобразовывает данные производственных календарей, представленные в виде XML. +// +// Параметры: +// ДанныеXML - Структура - извлеченная из файла XML методом ОбщегоНазначения.ПрочитатьXMLВТаблицу. +// ТаблицаКалендарей - ТаблицаЗначений - список производственных календарей, поддерживаемых в конфигурации. +// КодыКалендарей - Массив - если не задан, то отбор не будет установлен. +// ФормироватьПолныйНабор - Булево - если ложь, то будут сформированы только данные по отклонениям от календаря по умолчанию. +// +// Возвращаемое значение: +// ТаблицаЗначений: +// * КодПроизводственногоКалендаря +// * ВидДня +// * Год +// * Дата +// * ДатаПереноса. +// +Функция ДанныеПроизводственныхКалендарейИзXML(Знач ДанныеXML, ТаблицаКалендарей, КодыКалендарей = Неопределено, ФормироватьПолныйНабор = Истина) Экспорт + + ТаблицаДанных = НовыеДанныеПроизводственныхКалендарей(); + + КлассификаторТаблица = ДанныеXML.Данные; + + ГодыКалендарей = КлассификаторТаблица.Скопировать(, "Calendar,Year"); + ГодыКалендарей.Свернуть("Calendar,Year"); + + ОтборСтрок = Новый Структура("Calendar,Year"); + Для Каждого Сочетание Из ГодыКалендарей Цикл + Если КодыКалендарей <> Неопределено И КодыКалендарей.Найти(Сочетание.Calendar) = Неопределено Тогда + Продолжить; + КонецЕсли; + ДатыГода = Новый Соответствие; + ЗаполнитьЗначенияСвойств(ОтборСтрок, Сочетание); + СтрокиДанныхКалендаря = КлассификаторТаблица.НайтиСтроки(ОтборСтрок); + Для Каждого СтрокаКлассификатора Из СтрокиДанныхКалендаря Цикл + НоваяСтрока = НоваяСтрокаДанныхКалендаряИзКлассификатора(ТаблицаДанных, СтрокаКлассификатора); + ДатыГода.Вставить(НоваяСтрока.Дата, Истина); + КонецЦикла; + КодБазовогоКалендаря = КодБазовогоКалендаря(Сочетание.Calendar, ТаблицаКалендарей); + Если КодБазовогоКалендаря <> Неопределено Тогда + ОтборСтрок.Calendar = КодБазовогоКалендаря; + СтрокиДанныхКалендаря = КлассификаторТаблица.НайтиСтроки(ОтборСтрок); + Для Каждого СтрокаКлассификатора Из СтрокиДанныхКалендаря Цикл + СтрокаКлассификатора.Calendar = Сочетание.Calendar; + НоваяСтрока = НоваяСтрокаДанныхКалендаряИзКлассификатора(ТаблицаДанных, СтрокаКлассификатора, Истина, Ложь); + СтрокаКлассификатора.Calendar = КодБазовогоКалендаря; + Если НоваяСтрока <> Неопределено Тогда + ДатыГода.Вставить(НоваяСтрока.Дата, Истина); + КонецЕсли; + КонецЦикла; + КонецЕсли; + Если Не ФормироватьПолныйНабор Тогда + Продолжить; + КонецЕсли; + НомерГода = Число(Сочетание.Year); + ДатаДня = Дата(НомерГода, 1, 1); + Пока ДатаДня <= Дата(НомерГода, 12, 31) Цикл + Если ДатыГода[ДатаДня] = Неопределено Тогда + НоваяСтрока = ТаблицаДанных.Добавить(); + НоваяСтрока.КодПроизводственногоКалендаря = Сочетание.Calendar; + НоваяСтрока.Год = НомерГода; + НоваяСтрока.Дата = ДатаДня; + НоваяСтрока.ВидДня = ВидДняПоДате(ДатаДня); + КонецЕсли; + ДатаДня = ДатаДня + ДлинаСуток(); + КонецЦикла; + КонецЦикла; + + Возврат ТаблицаДанных; + +КонецФункции + +Функция ПериодыНерабочихДнейИзXML(Знач ДанныеXML, ТаблицаКалендарей) Экспорт + + ТаблицаДанных = НоваяТаблицаПериодовНерабочихДней(); + + ДанныеМакета = ДанныеXML.Данные; + Для Каждого СтрокаМакета Из ДанныеМакета Цикл + ДобавитьНерабочийПериодВТаблицуИзМакета(ТаблицаДанных.Добавить(), СтрокаМакета); + КодыЗависимыхКалендарей = КодыЗависимыхКалендарей(СтрокаМакета.Calendar, ТаблицаКалендарей); + Для Каждого КодЗависимогоКалендаря Из КодыЗависимыхКалендарей Цикл + Если ДанныеМакета.НайтиСтроки(Новый Структура("Calendar", КодЗависимогоКалендаря)).Количество() <> 0 Тогда + Продолжить; + КонецЕсли; + НоваяСтрока = ТаблицаДанных.Добавить(); + ДобавитьНерабочийПериодВТаблицуИзМакета(НоваяСтрока, СтрокаМакета); + НоваяСтрока.КодПроизводственногоКалендаря = КодЗависимогоКалендаря; + КонецЦикла; + КонецЦикла; + + ТаблицаДанных.Сортировать("КодПроизводственногоКалендаря, НомерПериода"); + + Возврат ТаблицаДанных; + +КонецФункции + +Процедура ДобавитьНерабочийПериодВТаблицуИзМакета(СтрокаТаблицы, СтрокаМакета) + СтрокаТаблицы.КодПроизводственногоКалендаря = СтрокаМакета.Calendar; + СтрокаТаблицы.НомерПериода = Число(СтрокаМакета.Order); + СтрокаТаблицы.ДатаНачала = Дата(СтрокаМакета.StartDate); + СтрокаТаблицы.ДатаОкончания = Дата(СтрокаМакета.EndDate); + СтрокаТаблицы.Основание = СтрокаМакета.Description; +КонецПроцедуры + +Функция ПериодыНерабочихДнейИзМакета() Экспорт + + Если Метаданные.Обработки.Найти("ЗаполнениеКалендарныхГрафиков") = Неопределено Тогда + Возврат Новый ТаблицаЗначений; + КонецЕсли; + + МодульЗаполнениеКалендарныхГрафиков = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаполнениеКалендарныхГрафиков"); + ТекстовыйДокумент = МодульЗаполнениеКалендарныхГрафиков.ПолучитьМакет("ПериодыНерабочихДней"); + ТаблицаПериодов = ОбщегоНазначения.ПрочитатьXMLВТаблицу(ТекстовыйДокумент.ПолучитьТекст()); + + ТаблицаКалендарей = ПроизводственныеКалендариИзМакета(); + Возврат ПериодыНерабочихДнейИзXML(ТаблицаПериодов, ТаблицаКалендарей); + +КонецФункции + +// Получает таблицу поставляемых в составе программы производственных календарей. +// +// Возвращаемое значение: +// ТаблицаЗначений +// +Функция ПроизводственныеКалендариИзМакета() Экспорт + + Если Метаданные.Обработки.Найти("ЗаполнениеКалендарныхГрафиков") = Неопределено Тогда + Возврат Новый ТаблицаЗначений; + КонецЕсли; + + МодульЗаполнениеКалендарныхГрафиков = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаполнениеКалендарныхГрафиков"); + ТекстовыйДокумент = МодульЗаполнениеКалендарныхГрафиков.ПолучитьМакет("ПроизводственныеКалендари"); + ТаблицаКалендарей = ОбщегоНазначения.ПрочитатьXMLВТаблицу(ТекстовыйДокумент.ПолучитьТекст()).Данные; + + Возврат ТаблицаКалендарей; + +КонецФункции + +Процедура ЗаполнитьПроизводственныеКалендариПоУмолчаниюДлительнаяОперация(Параметры, АдресРезультата) Экспорт + + Календари = ПроизводственныеКалендариПоУмолчанию(); + ПоместитьВоВременноеХранилище(Календари, АдресРезультата); + +КонецПроцедуры + +Процедура ОбновитьОсновныеДанныеПроизводственныхКалендарей(ТаблицаДанных, ИзмененияКалендарей) + + Если ТаблицаДанных.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("КлассификаторТаблица", ТаблицаДанных); + Запрос.Текст = + "ВЫБРАТЬ + | КлассификаторТаблица.КодПроизводственногоКалендаря КАК КалендарьКод, + | КлассификаторТаблица.Дата КАК Дата, + | КлассификаторТаблица.Год КАК Год, + | КлассификаторТаблица.ВидДня КАК ВидДня, + | КлассификаторТаблица.ДатаПереноса КАК ДатаПереноса + |ПОМЕСТИТЬ ВТКлассификаторТаблица + |ИЗ + | &КлассификаторТаблица КАК КлассификаторТаблица + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ПроизводственныеКалендари.Ссылка КАК ПроизводственныйКалендарь, + | КлассификаторТаблица.КалендарьКод КАК КодПроизводственногоКалендаря, + | КлассификаторТаблица.Год КАК Год + |ПОМЕСТИТЬ ВТИзмененияКалендарей + |ИЗ + | ВТКлассификаторТаблица КАК КлассификаторТаблица + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари + | ПО КлассификаторТаблица.КалендарьКод = ПроизводственныеКалендари.Код + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря + | ПО (ПроизводственныеКалендари.Ссылка = ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь) + | И КлассификаторТаблица.Год = ДанныеПроизводственногоКалендаря.Год + | И КлассификаторТаблица.Дата = ДанныеПроизводственногоКалендаря.Дата + | И КлассификаторТаблица.ВидДня = ДанныеПроизводственногоКалендаря.ВидДня + | И КлассификаторТаблица.ДатаПереноса = ДанныеПроизводственногоКалендаря.ДатаПереноса + |ГДЕ + | ДанныеПроизводственногоКалендаря.ВидДня ЕСТЬ NULL + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ИзмененияКалендарей.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь, + | ИзмененияКалендарей.КодПроизводственногоКалендаря КАК КодПроизводственногоКалендаря, + | ИзмененияКалендарей.Год КАК Год, + | КлассификаторТаблица.Дата КАК Дата, + | КлассификаторТаблица.ВидДня КАК ВидДня, + | КлассификаторТаблица.ДатаПереноса КАК ДатаПереноса + |ИЗ + | ВТИзмененияКалендарей КАК ИзмененияКалендарей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКлассификаторТаблица КАК КлассификаторТаблица + | ПО (КлассификаторТаблица.КалендарьКод = ИзмененияКалендарей.КодПроизводственногоКалендаря) + | И (КлассификаторТаблица.Год = ИзмененияКалендарей.Год) + | + |УПОРЯДОЧИТЬ ПО + | ИзмененияКалендарей.ПроизводственныйКалендарь, + | Год"; + + Блокировка = Новый БлокировкаДанных(); + Блокировка.Добавить("РегистрСведений.ДанныеПроизводственногоКалендаря"); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + ОтменитьТранзакцию(); + Возврат; + КонецЕсли; + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.СледующийПоЗначениюПоля("ПроизводственныйКалендарь") Цикл + Пока Выборка.СледующийПоЗначениюПоля("Год") Цикл + НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей(); + Пока Выборка.Следующий() Цикл + ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка); + КонецЦикла; + ЗаполнитьЗначенияСвойств(ИзмененияКалендарей.Добавить(), Выборка); + НаборЗаписей.Отбор.ПроизводственныйКалендарь.Установить(Выборка.ПроизводственныйКалендарь); + НаборЗаписей.Отбор.Год.Установить(Выборка.Год); + Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); + Продолжить; + КонецЕсли; + НаборЗаписей.Записать(); + КонецЦикла; + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + ИзмененияКалендарей.Свернуть("КодПроизводственногоКалендаря, Год"); + +КонецПроцедуры + +Процедура ОбновитьДанныеЗависимыхПроизводственныхКалендарей(ИзмененияКалендарей) Экспорт + + Если ИзмененияКалендарей.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИзмененияКалендарей", ИзмененияКалендарей); + Запрос.УстановитьПараметр("ГодНачалаОбновленияЗависимых", 2018); + Запрос.Текст = + "ВЫБРАТЬ + | ИзмененияКалендарей.КодПроизводственногоКалендаря КАК КодПроизводственногоКалендаря, + | ИзмененияКалендарей.Год КАК Год + |ПОМЕСТИТЬ ВТИзмененияКалендарей + |ИЗ + | &ИзмененияКалендарей КАК ИзмененияКалендарей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЗависимыеКалендари.Ссылка КАК ПроизводственныйКалендарь, + | ЗависимыеКалендари.Код КАК Код, + | ИзмененияБазовыхКалендарей.Год КАК Год, + | ЗависимыеКалендари.БазовыйКалендарь.Код КАК КодБазовогоКалендаря + |ИЗ + | Справочник.ПроизводственныеКалендари КАК ЗависимыеКалендари + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТИзмененияКалендарей КАК ИзмененияБазовыхКалендарей + | ПО ЗависимыеКалендари.БазовыйКалендарь.Код = ИзмененияБазовыхКалендарей.КодПроизводственногоКалендаря + | И (ЗависимыеКалендари.БазовыйКалендарь <> ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка)) + | И (ИзмененияБазовыхКалендарей.Год >= &ГодНачалаОбновленияЗависимых) + | ЛЕВОЕ СОЕДИНЕНИЕ ВТИзмененияКалендарей КАК ИзмененияЗависимыхКалендарей + | ПО (ИзмененияЗависимыхКалендарей.КодПроизводственногоКалендаря = ЗависимыеКалендари.Код) + | И (ИзмененияЗависимыхКалендарей.Год = ИзмененияБазовыхКалендарей.Год) + |ГДЕ + | ИзмененияЗависимыхКалендарей.Год ЕСТЬ NULL"; + + Блокировка = Новый БлокировкаДанных(); + Блокировка.Добавить(Метаданные.Справочники.ПроизводственныеКалендари.ПолноеИмя()); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + РезультатЗапроса = Запрос.Выполнить(); + Если Не РезультатЗапроса.Пустой() Тогда + КодыЗависимых = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Код"); + ДанныеИзМакета = ДанныеПроизводственныхКалендарейПоУмолчанию(КодыЗависимых); + ОтборСтрок = Новый Структура( + "КодПроизводственногоКалендаря, + |Год"); + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + ОтборСтрок.КодПроизводственногоКалендаря = Выборка.Код; + ОтборСтрок.Год = Выборка.Год; + НайденныеСтроки = ДанныеИзМакета.НайтиСтроки(ОтборСтрок); + Если НайденныеСтроки.Количество() > 0 Тогда + // Если есть данные в макете, считаем, что перезаполнять не нужно. + Продолжить; + КонецЕсли; + ДанныеКалендаря = РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(Выборка.Код, Выборка.Год, Выборка.КодБазовогоКалендаря); + ДанныеКалендаря.Колонки.Добавить("ПроизводственныйКалендарь"); + ДанныеКалендаря.ЗаполнитьЗначения(Выборка.ПроизводственныйКалендарь, "ПроизводственныйКалендарь"); + НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей(); + НаборЗаписей.Загрузить(ДанныеКалендаря); + НаборЗаписей.Отбор.ПроизводственныйКалендарь.Установить(Выборка.ПроизводственныйКалендарь); + НаборЗаписей.Отбор.Год.Установить(Выборка.Год); + Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); + Иначе + НаборЗаписей.Записать(); + КонецЕсли; + // Добавляем в таблицу изменений. + НоваяСтрока = ИзмененияКалендарей.Добавить(); + НоваяСтрока.КодПроизводственногоКалендаря = Выборка.Код; + НоваяСтрока.Год = Выборка.Год; + КонецЦикла; + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Определяет источник актуального перечня поддерживаемых производственных календарей (макет или поставка классификатора). +// +// Возвращаемое значение: +// ТаблицаЗначений +// +Функция ПроизводственныеКалендариПоУмолчанию() Экспорт + + Если КалендарныеГрафики.ВерсияКалендарей() >= КалендарныеГрафики.ВерсияЗагруженныхКалендарей() Тогда + Возврат ПроизводственныеКалендариИзМакета(); + КонецЕсли; + + Попытка + Возврат ПроизводственныеКалендариИзФайлаКлассификатора(); + Исключение + ИмяСобытия = НСтр("ru = 'Календарные графики.Получение календарей из классификатора'", ОбщегоНазначения.КодОсновногоЯзыка()); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось получить список производственных календарей из классификатора. + |Список календарей получен из поставляемого макета. + |%1'"), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ТекстСообщения); + КонецПопытки; + + Возврат ПроизводственныеКалендариИзМакета(); + +КонецФункции + +// Определяет источник актуальных данных производственного календаря (макет или поставка классификатора). +// +// Параметры: +// КодыКалендарей - Массив. +// +// Возвращаемое значение: +// см. Справочники.ПроизводственныеКалендари.ДанныеПроизводственныхКалендарейИзXML. +// +Функция ДанныеПроизводственныхКалендарейПоУмолчанию(КодыКалендарей = Неопределено) Экспорт + + Если КалендарныеГрафики.ВерсияКалендарей() >= КалендарныеГрафики.ВерсияЗагруженныхКалендарей() Тогда + Возврат ДанныеПроизводственныхКалендарейИзМакета(КодыКалендарей, Ложь); + КонецЕсли; + + Возврат ДанныеПроизводственныхКалендарейИзФайлаКлассификатора(КодыКалендарей); + +КонецФункции + +Функция ПроизводственныеКалендариИзФайлаКлассификатора() + + ДанныеКлассификатора = КалендарныеГрафики.ДанныеКлассификатора(); + + ТаблицаКалендарей = ДанныеКлассификатора["ПроизводственныеКалендари"].Данные; + + Возврат ТаблицаКалендарей; + +КонецФункции + +Функция ДанныеПроизводственныхКалендарейИзФайлаКлассификатора(КодыКалендарей = Неопределено) + + ДанныеКлассификатора = КалендарныеГрафики.ДанныеКлассификатора(); + + Возврат ДанныеПроизводственныхКалендарейИзXML( + ДанныеКлассификатора["ДанныеПроизводственныхКалендарей"], + ДанныеКлассификатора["ПроизводственныеКалендари"].Данные, + КодыКалендарей, + Ложь); + +КонецФункции + +Функция ПериодыНерабочихДнейПоУмолчанию() Экспорт + + Если КалендарныеГрафики.ВерсияКалендарей() >= КалендарныеГрафики.ВерсияЗагруженныхКалендарей() Тогда + Возврат ПериодыНерабочихДнейИзМакета(); + КонецЕсли; + + Возврат ПериодыНерабочихДнейИзФайлаКлассификатора(); + +КонецФункции + +Функция ПериодыНерабочихДнейИзФайлаКлассификатора() + + ДанныеКлассификатора = КалендарныеГрафики.ДанныеКлассификатора(); + + Возврат ПериодыНерабочихДнейИзXML( + ДанныеКлассификатора["ПериодыНерабочихДней"], + ДанныеКлассификатора["ПроизводственныеКалендари"].Данные); + +КонецФункции + +// Создает таблицу значений для описания изменений данных производственных календарей. +// +Функция ТаблицаИзмененийПроизводственныхКалендарей() + + ТаблицаИзменений = Новый ТаблицаЗначений; + ТаблицаИзменений.Колонки.Добавить("КодПроизводственногоКалендаря", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(3))); + ТаблицаИзменений.Колонки.Добавить("Год", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(4))); + + Возврат ТаблицаИзменений; + +КонецФункции + +// Процедура записывает данные одного производственного календаря за 1 год. +// +// Параметры: +// ПроизводственныйКалендарь - СправочникСсылка.ПроизводственныеКалендари - текущий элемент справочника. +// НомерГода - Число - номер года, за который необходимо записать производственный календарь. +// ДанныеПроизводственногоКалендаря - см. Справочник.ПроизводственныеКалендари.ДанныеПроизводственногоКалендаря. +// +Процедура ЗаписатьДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, НомерГода, ДанныеПроизводственногоКалендаря) Экспорт + + НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей(); + + Для Каждого КлючИЗначение Из ДанныеПроизводственногоКалендаря Цикл + ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), КлючИЗначение); + КонецЦикла; + + ЗначенияОтбора = Новый Структура("ПроизводственныйКалендарь, Год", ПроизводственныйКалендарь, НомерГода); + + Для Каждого КлючИЗначение Из ЗначенияОтбора Цикл + НаборЗаписей.Отбор[КлючИЗначение.Ключ].Установить(КлючИЗначение.Значение); + КонецЦикла; + + Для Каждого СтрокаНабора Из НаборЗаписей Цикл + ЗаполнитьЗначенияСвойств(СтрокаНабора, ЗначенияОтбора); + КонецЦикла; + + НаборЗаписей.Записать(Истина); + + УсловияОбновления = УсловийОбновленияГрафиковРаботы(ПроизводственныйКалендарь, НомерГода); + КалендарныеГрафики.РаспространитьИзмененияДанныхПроизводственныхКалендарей(УсловияОбновления); + +КонецПроцедуры + +// Функция определяет соответствие видов дня производственного календаря и цвета оформления +// этого дня в поле календаря. +// +// Возвращаемое значение +// ЦветаОформления - соответствие видов дня и цветов оформления. +// +Функция ЦветаОформленияВидовДнейПроизводственногоКалендаря() Экспорт + + ЦветаОформления = Новый Соответствие; + + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий, ЦветаСтиля.ВидДняПроизводственногоКалендаряРабочийЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота, ЦветаСтиля.ВидДняПроизводственногоКалендаряСубботаЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье, ЦветаСтиля.ВидДняПроизводственногоКалендаряВоскресеньеЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный, ЦветаСтиля.ВидДняПроизводственногоКалендаряПредпраздничныйЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник, ЦветаСтиля.ВидДняПроизводственногоКалендаряПраздникЦвет); + + Возврат ЦветаОформления; + +КонецФункции + +// Функция составляет список всевозможных видов дней производственного календаря +// по метаданным перечисления ВидыДнейПроизводственногоКалендаря. +// +// Возвращаемое значение +// СписокВидовДня - СписокЗначений - содержащий значение перечисления +// и его синоним в качестве представления. +// +Функция СписокВидовДня() Экспорт + + СписокВидовДня = Новый СписокЗначений; + + Для Каждого МетаданныеВидаДней Из Метаданные.Перечисления.ВидыДнейПроизводственногоКалендаря.ЗначенияПеречисления Цикл + СписокВидовДня.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря[МетаданныеВидаДней.Имя], МетаданныеВидаДней.Синоним); + КонецЦикла; + + Возврат СписокВидовДня; + +КонецФункции + +// Функция составляет массив доступных производственных календарей +// для использования, например, в качестве шаблона. +// +Функция СписокПроизводственныхКалендарей() Экспорт + + Запрос = Новый Запрос( + "ВЫБРАТЬ + | ПроизводственныеКалендари.Ссылка + |ИЗ + | Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари + |ГДЕ + | (НЕ ПроизводственныеКалендари.ПометкаУдаления)"); + + СписокПроизводственныхКалендарей = Новый Массив; + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + СписокПроизводственныхКалендарей.Добавить(Выборка.Ссылка); + КонецЦикла; + + Возврат СписокПроизводственныхКалендарей; + +КонецФункции + +// Заполняет массив дат праздничных дней по производственному календарю +// для конкретного календарного года. +// +Функция ПраздничныеДниПроизводственногоКалендаря(КодПроизводственногоКалендаря, НомерГода) + + ПраздничныеДни = Новый ТаблицаЗначений; + ПраздничныеДни.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата")); + ПраздничныеДни.Колонки.Добавить("ПереноситьВыходной", Новый ОписаниеТипов("Булево")); + ПраздничныеДни.Колонки.Добавить("ДобавлятьПредпраздничный", Новый ОписаниеТипов("Булево")); + ПраздничныеДни.Колонки.Добавить("ТолькоНерабочий", Новый ОписаниеТипов("Булево")); + + Если Метаданные.Обработки.Найти("ЗаполнениеКалендарныхГрафиков") <> Неопределено Тогда + МодульЗаполнениеКалендарныхГрафиков = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаполнениеКалендарныхГрафиков"); + МодульЗаполнениеКалендарныхГрафиков.ЗаполнитьПраздничныеДни(КодПроизводственногоКалендаря, НомерГода, ПраздничныеДни); + КонецЕсли; + + Возврат ПраздничныеДни; + +КонецФункции + +Функция УсловийОбновленияГрафиковРаботы(ПроизводственныйКалендарь, Год) + + УсловияОбновления = ТаблицаИзмененийПроизводственныхКалендарей(); + + НоваяСтрока = УсловияОбновления.Добавить(); + НоваяСтрока.КодПроизводственногоКалендаря = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПроизводственныйКалендарь, "Код"); + НоваяСтрока.Год = Год; + + Возврат УсловияОбновления; + +КонецФункции + +Функция ДлинаСуток() + Возврат 24 * 3600; +КонецФункции + +Функция НовыеДанныеПроизводственныхКалендарей() + + ТаблицаДанных = Новый ТаблицаЗначений; + ТаблицаДанных.Колонки.Добавить("КодПроизводственногоКалендаря", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(2))); + ТаблицаДанных.Колонки.Добавить("ВидДня", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыДнейПроизводственногоКалендаря")); + ТаблицаДанных.Колонки.Добавить("Год", Новый ОписаниеТипов("Число")); + ТаблицаДанных.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата")); + ТаблицаДанных.Колонки.Добавить("ДатаПереноса", Новый ОписаниеТипов("Дата")); + Возврат ТаблицаДанных; + +КонецФункции + +Функция НоваяТаблицаПериодовНерабочихДней() + + ТаблицаДанных = Новый ТаблицаЗначений; + ТаблицаДанных.Колонки.Добавить("КодПроизводственногоКалендаря", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(2))); + ТаблицаДанных.Колонки.Добавить("НомерПериода", Новый ОписаниеТипов("Число")); + ТаблицаДанных.Колонки.Добавить("ДатаНачала", Новый ОписаниеТипов("Дата")); + ТаблицаДанных.Колонки.Добавить("ДатаОкончания", Новый ОписаниеТипов("Дата")); + ТаблицаДанных.Колонки.Добавить("Основание", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(150))); + Возврат ТаблицаДанных; + +КонецФункции + +Процедура ЗаполнитьПостоянныеПраздничныеДни(ВидыДней, ПереносыДней, НомерГода, КодКалендаря, КодБазовогоКалендаря = Неопределено) + + // Если нет - заполняем праздники и переносы. + ПраздничныеДни = ПраздничныеДниПроизводственногоКалендаря(КодКалендаря, НомерГода); + // Дополним таблицу также праздниками следующего года, + // т.к. они влияют на заполнение текущего года (31 декабря - предпраздничный, например). + ПраздничныеДниСледующегоГода = ПраздничныеДниПроизводственногоКалендаря(КодКалендаря, НомерГода + 1); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПраздничныеДниСледующегоГода, ПраздничныеДни); + + Если КодБазовогоКалендаря <> Неопределено Тогда + // Дополним таблицу также праздниками базового календаря. + ПраздничныеБазовогоКалендаря = ПраздничныеДниПроизводственногоКалендаря(КодБазовогоКалендаря, НомерГода); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПраздничныеБазовогоКалендаря, ПраздничныеДни); + ПраздничныеДниСледующегоГода = ПраздничныеДниПроизводственногоКалендаря(КодБазовогоКалендаря, НомерГода + 1); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПраздничныеДниСледующегоГода, ПраздничныеДни); + КонецЕсли; + + // При совпадении выходного и нерабочего праздничного дней + // выходной день переносится на следующий после праздничного рабочий день + // за исключением выходных дней, совпадающих с нерабочими праздничными днями + // в период Новогодних каникул и Рождества Христова. + + Для Каждого СтрокаТаблицы Из ПраздничныеДни Цикл + ПраздничныйДень = СтрокаТаблицы.Дата; + // Отметим как предпраздничный день, + // рабочий день непосредственно предшествующий праздничному дню. + Если СтрокаТаблицы.ДобавлятьПредпраздничный Тогда + ДатаПредпраздничногоДня = ПраздничныйДень - ДлинаСуток(); + Если Год(ДатаПредпраздничногоДня) = НомерГода Тогда + // Предпраздничные дни другого года пропускаем. + Если ВидыДней[ДатаПредпраздничногоДня] = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий + И ПраздничныеДни.Найти(ДатаПредпраздничногоДня, "Дата") = Неопределено Тогда + ВидыДней.Вставить(ДатаПредпраздничногоДня, Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный); + КонецЕсли; + КонецЕсли; + КонецЕсли; + Если Год(ПраздничныйДень) <> НомерГода Тогда + // Праздничные дни другого года далее также пропускаем. + Продолжить; + КонецЕсли; + Если ВидыДней[ПраздничныйДень] <> Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий + И СтрокаТаблицы.ПереноситьВыходной Тогда + // Если праздничный день выпадает на выходной, + // и выходной, на который выпадает этот праздник, переносится - + // переносим выходной на ближайший рабочий день. + ДатаДня = ПраздничныйДень; + Пока Истина Цикл + ДатаДня = ДатаДня + ДлинаСуток(); + Если ВидыДней[ДатаДня] = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий + И ПраздничныеДни.Найти(ДатаДня, "Дата") = Неопределено Тогда + ВидыДней.Вставить(ДатаДня, ВидыДней[ПраздничныйДень]); + ПереносыДней.Вставить(ДатаДня, ПраздничныйДень); + ПереносыДней.Вставить(ПраздничныйДень, ДатаДня); + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + Если СтрокаТаблицы.ТолькоНерабочий Тогда + ВидыДней.Вставить(ПраздничныйДень, Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий); + Иначе + ВидыДней.Вставить(ПраздничныйДень, Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Процедура ЗаполнитьВидыДнейДаннымиКалендаря(ДанныеКалендаря, ВидыДней, ПереносыДней) + + Для Каждого СтрокаДанных Из ДанныеКалендаря Цикл + ВидыДней.Вставить(СтрокаДанных.Дата, СтрокаДанных.ВидДня); + Если ЗначениеЗаполнено(СтрокаДанных.ДатаПереноса) Тогда + ПереносыДней.Вставить(СтрокаДанных.Дата, СтрокаДанных.ДатаПереноса); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Функция ВидДняПоДате(Дата) + + НомерДняНедели = ДеньНедели(Дата); + + Если НомерДняНедели <= 5 Тогда + Возврат Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий; + КонецЕсли; + + Если НомерДняНедели = 6 Тогда + Возврат Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота; + КонецЕсли; + + Если НомерДняНедели = 7 Тогда + Возврат Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье; + КонецЕсли; + +КонецФункции + +Функция КодБазовогоКалендаря(КодКалендаря, КлассификаторКалендарей) + + СтрокаКалендаря = КлассификаторКалендарей.Найти(КодКалендаря, "Code"); + + Если СтрокаКалендаря = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Если Не ЗначениеЗаполнено(СтрокаКалендаря["Base"]) Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат СтрокаКалендаря["Base"]; + +КонецФункции + +Функция КодыЗависимыхКалендарей(КодБазовогоКалендаря, КлассификаторКалендарей) + Возврат ОбщегоНазначения.ВыгрузитьКолонку( + КлассификаторКалендарей.НайтиСтроки(Новый Структура("Base", КодБазовогоКалендаря)), "Code"); +КонецФункции + +Функция НоваяСтрокаДанныхКалендаряИзКлассификатора(ДанныеКалендаря, СтрокаКлассификатора, Проверять = Ложь, Замещать = Ложь) + + Если Проверять Тогда + ОтборСтрок = Новый Структура("КодПроизводственногоКалендаря,Дата"); + ОтборСтрок.КодПроизводственногоКалендаря = СтрокаКлассификатора.Calendar; + ОтборСтрок.Дата = Дата(СтрокаКлассификатора.Date); + НайденныеСтроки = ДанныеКалендаря.НайтиСтроки(ОтборСтрок); + Если НайденныеСтроки.Количество() > 0 Тогда + Если Не Замещать Тогда + Возврат Неопределено; + КонецЕсли; + Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл + ДанныеКалендаря.Удалить(НайденнаяСтрока); + КонецЦикла; + КонецЕсли; + КонецЕсли; + + НоваяСтрока = ДанныеКалендаря.Добавить(); + НоваяСтрока.КодПроизводственногоКалендаря = СтрокаКлассификатора.Calendar; + НоваяСтрока.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря[СтрокаКлассификатора.DayType]; + НоваяСтрока.Год = Число(СтрокаКлассификатора.Year); + НоваяСтрока.Дата = Дата(СтрокаКлассификатора.Date); + Если ЗначениеЗаполнено(СтрокаКлассификатора.SwapDate) Тогда + НоваяСтрока.ДатаПереноса = Дата(СтрокаКлассификатора.SwapDate); + КонецЕсли; + + Возврат НоваяСтрока; + +КонецФункции + +Процедура ЗаполнитьПроизводственныйКалендарь(СправочникОбъект, Выборка) + + СправочникОбъект.Код = СокрЛП(Выборка.Код); + СправочникОбъект.Наименование = СокрЛП(Выборка.Наименование); + Если ЗначениеЗаполнено(Выборка.КодБазового) Тогда + СправочникОбъект.БазовыйКалендарь = НайтиПоКоду(Выборка.КодБазового); + КонецЕсли; + +КонецПроцедуры + +Процедура ЗаписатьПроизводственныйКалендарь(СправочникОбъект) + + Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(СправочникОбъект); + Возврат; + КонецЕсли; + + СправочникОбъект.Записать(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Печатная форма производственного календаря. + +Функция ПечатнаяФормаПроизводственногоКалендаря(ПараметрыПодготовкиПечатнойФормы) + + ТабличныйДокумент = Новый ТабличныйДокумент; + + Макет = ПолучитьМакет("ПФ_MXL_ПроизводственныйКалендарь"); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + Макет = МодульУправлениеПечатью.МакетПечатнойФормы("Справочник.ПроизводственныеКалендари.ПФ_MXL_ПроизводственныйКалендарь"); + КонецЕсли; + + ПроизводственныйКалендарь = ПараметрыПодготовкиПечатнойФормы.ПроизводственныйКалендарь; + НомерГода = ПараметрыПодготовкиПечатнойФормы.НомерГода; + + ЗаголовокПечати = Макет.ПолучитьОбласть("Заголовок"); + ЗаголовокПечати.Параметры.ПроизводственныйКалендарь = ПроизводственныйКалендарь; + ЗаголовокПечати.Параметры.Год = Формат(НомерГода, "ЧГ="); + ТабличныйДокумент.Вывести(ЗаголовокПечати); + + // Начальные значения, независимо от результата выполнения запроса. + ЗаГод = ОписаниеГруппыПоказателей(); + + НерабочиеПериоды = КалендарныеГрафики.ПериодыНерабочихДней( + ПроизводственныйКалендарь, Новый СтандартныйПериод(Дата(НомерГода, 1, 1), Дата(НомерГода, 12, 31))); + НерабочиеДаты = Новый Массив; + Представление = ""; + Для Каждого НерабочийПериод Из НерабочиеПериоды Цикл + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(НерабочиеДаты, НерабочийПериод.Даты); + Представление = Представление + ?(ПустаяСтрока(Представление), "", Символы.ПС) + НерабочийПериод.Представление; + КонецЦикла; + Если НерабочиеПериоды.Количество() > 0 Тогда + ОбластьПредупреждения = Макет.ПолучитьОбласть("НерабочиеПериоды"); + ОбластьПредупреждения.Параметры.Представление = Представление; + ТабличныйДокумент.Вывести(ОбластьПредупреждения); + КонецЕсли; + + ВидыНерабочихДней = Новый Массив; + ВидыНерабочихДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота); + ВидыНерабочихДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье); + ВидыНерабочихДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник); + ВидыНерабочихДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Год", НомерГода); + Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь); + Запрос.УстановитьПараметр("НерабочиеДаты", НерабочиеДаты); + Запрос.Текст = + "ВЫБРАТЬ + | ГОД(ДанныеКалендаря.Дата) КАК ГодКалендаря, + | КВАРТАЛ(ДанныеКалендаря.Дата) КАК КварталКалендаря, + | МЕСЯЦ(ДанныеКалендаря.Дата) КАК МесяцКалендаря, + | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДанныеКалендаря.Дата) КАК КалендарныеДни, + | СУММА(ВЫБОР + | КОГДА ДанныеКалендаря.Дата В (&НерабочиеДаты) + | ТОГДА 1 + | ИНАЧЕ 0 + | КОНЕЦ) КАК ДниНерабочихПериодов, + | ДанныеКалендаря.ВидДня КАК ВидДня + |ИЗ + | РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеКалендаря + |ГДЕ + | ДанныеКалендаря.Год = &Год + | И ДанныеКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь + | + |СГРУППИРОВАТЬ ПО + | ДанныеКалендаря.ВидДня, + | ГОД(ДанныеКалендаря.Дата), + | КВАРТАЛ(ДанныеКалендаря.Дата), + | МЕСЯЦ(ДанныеКалендаря.Дата) + | + |УПОРЯДОЧИТЬ ПО + | ГодКалендаря, + | КварталКалендаря, + | МесяцКалендаря + |ИТОГИ ПО + | ГодКалендаря, + | КварталКалендаря, + | МесяцКалендаря"; + Результат = Запрос.Выполнить(); + + ВыборкаПоГоду = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + Пока ВыборкаПоГоду.Следующий() Цикл + ВыборкаПоКварталу = ВыборкаПоГоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + Пока ВыборкаПоКварталу.Следующий() Цикл + НомерКвартала = Макет.ПолучитьОбласть("Квартал"); + НомерКвартала.Параметры.НомерКвартала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 квартал'"), ВыборкаПоКварталу.КварталКалендаря); + ТабличныйДокумент.Вывести(НомерКвартала); + ШапкаКвартала = Макет.ПолучитьОбласть("ШапкаКвартала"); + ТабличныйДокумент.Вывести(ШапкаКвартала); + ЗаКвартал = ОписаниеГруппыПоказателей(); + Если ВыборкаПоКварталу.КварталКалендаря = 1 + Или ВыборкаПоКварталу.КварталКалендаря = 3 Тогда + ЗаПолугодие = ОписаниеГруппыПоказателей(); + КонецЕсли; + Если ВыборкаПоКварталу.КварталКалендаря = 1 Тогда + ЗаГод = ОписаниеГруппыПоказателей(); + КонецЕсли; + ВыборкаПоМесяцу = ВыборкаПоКварталу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + Пока ВыборкаПоМесяцу.Следующий() Цикл + ЗаМесяц = ОписаниеГруппыПоказателей(); + ВыборкаПоВидуДня = ВыборкаПоМесяцу.Выбрать(ОбходРезультатаЗапроса.Прямой); + Пока ВыборкаПоВидуДня.Следующий() Цикл + Если ВидыНерабочихДней.Найти(ВыборкаПоВидуДня.ВидДня) <> Неопределено Тогда + НакопитьЗначение(ЗаМесяц.Основной.ВыходныеДни, ВыборкаПоВидуДня.КалендарныеДни); + НакопитьЗначение(ЗаМесяц.Нерабочий.ВыходныеДни, ВыборкаПоВидуДня.ДниНерабочихПериодов); + ИначеЕсли ВыборкаПоВидуДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий Тогда + НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя40, ВыборкаПоВидуДня.КалендарныеДни * 8); + НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя36, ВыборкаПоВидуДня.КалендарныеДни * 36 / 5); + НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя24, ВыборкаПоВидуДня.КалендарныеДни * 24 / 5); + НакопитьЗначение(ЗаМесяц.Основной.РабочиеДни, ВыборкаПоВидуДня.КалендарныеДни); + НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя40, ВыборкаПоВидуДня.ДниНерабочихПериодов * 8); + НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя36, ВыборкаПоВидуДня.ДниНерабочихПериодов * 36 / 5); + НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя24, ВыборкаПоВидуДня.ДниНерабочихПериодов * 24 / 5); + НакопитьЗначение(ЗаМесяц.Нерабочий.РабочиеДни, ВыборкаПоВидуДня.ДниНерабочихПериодов); + ИначеЕсли ВыборкаПоВидуДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный Тогда + НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя40, ВыборкаПоВидуДня.КалендарныеДни * 7); + НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя36, ВыборкаПоВидуДня.КалендарныеДни * (36 / 5 - 1)); + НакопитьЗначение(ЗаМесяц.Основной.РабочееВремя24, ВыборкаПоВидуДня.КалендарныеДни * (24 / 5 - 1)); + НакопитьЗначение(ЗаМесяц.Основной.РабочиеДни, ВыборкаПоВидуДня.КалендарныеДни); + НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя40, ВыборкаПоВидуДня.ДниНерабочихПериодов * 7); + НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя36, ВыборкаПоВидуДня.ДниНерабочихПериодов * (36 / 5 - 1)); + НакопитьЗначение(ЗаМесяц.Нерабочий.РабочееВремя24, ВыборкаПоВидуДня.ДниНерабочихПериодов * (24 / 5 - 1)); + НакопитьЗначение(ЗаМесяц.Нерабочий.РабочиеДни, ВыборкаПоВидуДня.ДниНерабочихПериодов); + КонецЕсли; + НакопитьЗначение(ЗаМесяц.Основной.КалендарныеДни, ВыборкаПоВидуДня.КалендарныеДни); + НакопитьЗначение(ЗаМесяц.Нерабочий.ВыходныеДни, - ВыборкаПоВидуДня.ДниНерабочихПериодов); + КонецЦикла; + НакопитьКолонку(ЗаКвартал, ЗаМесяц); + НакопитьКолонку(ЗаПолугодие, ЗаМесяц); + НакопитьКолонку(ЗаГод, ЗаМесяц); + КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяца"); + ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаМесяц); + КолонкаМесяца.Параметры.ИмяМесяца = Формат(Дата(НомерГода, ВыборкаПоМесяцу.МесяцКалендаря, 1), "ДФ='ММММ'"); // АПК:1367 + ТабличныйДокумент.Присоединить(КолонкаМесяца); + КонецЦикла; + КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяца"); + ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаКвартал); + КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 квартал'"), ВыборкаПоКварталу.КварталКалендаря); + ТабличныйДокумент.Присоединить(КолонкаМесяца); + Если ВыборкаПоКварталу.КварталКалендаря = 2 + Или ВыборкаПоКварталу.КварталКалендаря = 4 Тогда + КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяца"); + ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаПолугодие); + КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 полугодие'"), ВыборкаПоКварталу.КварталКалендаря / 2); + ТабличныйДокумент.Присоединить(КолонкаМесяца); + КонецЕсли; + КонецЦикла; + КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяца"); + ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаГод); + КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 год'"), Формат(ВыборкаПоГоду.ГодКалендаря, "ЧГ=")); + ТабличныйДокумент.Присоединить(КолонкаМесяца); + КонецЦикла; + + КолонкаМесяца = Макет.ПолучитьОбласть("Среднемесячный"); + ЗаполнитьПараметрыОбласти(КолонкаМесяца.Параметры, ЗаГод); + КолонкаМесяца.Параметры.ИмяМесяца = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 год'"), Формат(НомерГода, "ЧГ=")); + ТабличныйДокумент.Вывести(КолонкаМесяца); + + КолонкаМесяца = Макет.ПолучитьОбласть("КолонкаМесяцаСр"); + КолонкаМесяца.Параметры.РабочееВремя40 = Формат(ЗаГод.Основной.РабочееВремя40 / 12, "ЧДЦ=2; ЧГ=0"); + КолонкаМесяца.Параметры.РабочееВремя36 = Формат(ЗаГод.Основной.РабочееВремя36 / 12, "ЧДЦ=2; ЧГ=0"); + КолонкаМесяца.Параметры.РабочееВремя24 = Формат(ЗаГод.Основной.РабочееВремя24 / 12, "ЧДЦ=2; ЧГ=0"); + КолонкаМесяца.Параметры.ИмяМесяца = НСтр("ru = 'Среднемесячное количество'"); + ТабличныйДокумент.Присоединить(КолонкаМесяца); + + Возврат ТабличныйДокумент; + +КонецФункции + +Функция ОписаниеГруппыПоказателей() + Описание = Новый Структура("Основной, Нерабочий"); + Описание.Основной = ОписаниеКолонки(); + Описание.Нерабочий = ОписаниеКолонки(); + Возврат Описание; +КонецФункции + +Функция ОписаниеКолонки() + Описание = Новый Структура( + "КалендарныеДни, + |РабочиеДни, + |ВыходныеДни, + |РабочееВремя40, + |РабочееВремя36, + |РабочееВремя24"); + Описание.КалендарныеДни = 0; + Описание.РабочиеДни = 0; + Описание.ВыходныеДни = 0; + Описание.РабочееВремя40 = 0; + Описание.РабочееВремя36 = 0; + Описание.РабочееВремя24 = 0; + Возврат Описание; +КонецФункции + +Процедура НакопитьКолонку(Колонка1, Колонка2) + Для Каждого Группы Из Колонка1 Цикл + Для Каждого Показатели Из Группы.Значение Цикл + Колонка1[Группы.Ключ][Показатели.Ключ] = Колонка1[Группы.Ключ][Показатели.Ключ] + Колонка2[Группы.Ключ][Показатели.Ключ]; + КонецЦикла + КонецЦикла; +КонецПроцедуры + +Процедура НакопитьЗначение(Накопленное, Значение) + Накопленное = Накопленное + Значение; +КонецПроцедуры + +Процедура ЗаполнитьПараметрыОбласти(Параметры, ГруппаПоказателей) + + Параметры.Заполнить(ГруппаПоказателей.Основной); + + Показатели = Новый Массив; + Показатели.Добавить("КалендарныеДни"); + Показатели.Добавить("РабочиеДни"); + Показатели.Добавить("ВыходныеДни"); + Показатели.Добавить("РабочееВремя40"); + Показатели.Добавить("РабочееВремя36"); + Показатели.Добавить("РабочееВремя24"); + + ЗначенияПараметров = Новый Структура; + Для Каждого Показатель Из Показатели Цикл + Если ЗначениеЗаполнено(ГруппаПоказателей.Нерабочий[Показатель]) Тогда + ЗначенияПараметров.Вставить(Показатель, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "%1 (%2)", + ГруппаПоказателей.Основной[Показатель], + ГруппаПоказателей.Основной[Показатель] - ГруппаПоказателей.Нерабочий[Показатель])); + КонецЕсли; + КонецЦикла; + + Если ЗначенияПараметров.Количество() > 0 Тогда + Параметры.Заполнить(ЗначенияПараметров); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..219d80fd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/ObjectModule.bsl" @@ -0,0 +1,75 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + ПроверитьИспользованиеБазовогоКалендаря(Отказ); +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + КалендарныеГрафики.ОбновитьИспользованиеНесколькихПроизводственныхКалендарей(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПроверитьИспользованиеБазовогоКалендаря(Отказ) + + Если Ссылка.Пустая() Или Не ЗначениеЗаполнено(БазовыйКалендарь) Тогда + Возврат; + КонецЕсли; + + // Запрещаем ссылку на самого себя. + Если Ссылка = БазовыйКалендарь Тогда + ТекстСообщения = НСтр("ru = 'В качестве базового не может быть выбран тот же самый календарь.'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , , "Объект.БазовыйКалендарь", Отказ); + Возврат; + КонецЕсли; + + // Если календарь уже является базовым для какого-то другого календаря, + // то запрещаем заполнить базовый, чтобы избежать циклических зависимостей. + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Календарь", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Ссылка + |ИЗ + | Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари + |ГДЕ + | ПроизводственныеКалендари.БазовыйКалендарь = &Календарь"; + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Календарь уже является базовым для календаря «%1» и не может зависеть от другого.'"), + Выборка.Ссылка); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Выборка.Ссылка, , "Объект.БазовыйКалендарь", Отказ); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Templates/\320\237\320\244_MXL_\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\321\214/Template.mxlx" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Templates/\320\237\320\244_MXL_\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\321\214/Template.mxlx" new file mode 100644 index 00000000..4c0de16b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/Templates/\320\237\320\244_MXL_\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\271\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\321\214/Template.mxlx" @@ -0,0 +1,726 @@ + + + + ru + ru + + ru + Русский + Русский + + + + 3 + + 0 + + 1 + + + + 1 + + 2 + + + + 2 + + 3 + + + + + 2b524b55-0236-48d5-8939-3f2baa1be962 + 3 + + 0 + + 1 + + + + 1 + + 4 + + + + 2 + + 5 + + + + + 0 + + + + 6 + + + + + 7 + + + ru + Количество дней и часов + + + + + + + 8 + ИмяМесяца + + + + + + 1 + + + + 9 + + + + + 10 + + + ru + Календарные дни + + + + + + + 11 + КалендарныеДни + + + + + + 2 + + + + 9 + + + + + 10 + + + ru + Рабочие дни + + + + + + + 11 + РабочиеДни + + + + + + 3 + + + + 9 + + + + + 10 + + + ru + Выходные и праздничные дни + + + + + + + 11 + ВыходныеДни + + + + + + 4 + + + + 9 + + + + + 10 + + + ru + Рабочее время (в часах): +при 40-часовой рабочей неделе + + + + + + + 11 + РабочееВремя40 + + + + + + 5 + + + + 9 + + + + + 10 + + + ru + при 36-часовой рабочей неделе + + + + + + + 11 + РабочееВремя36 + + + + + + 6 + + + + 6 + + + + + 12 + + + ru + при 24-часовой рабочей неделе + + + + + + + 13 + РабочееВремя24 + + + + + + 7 + + true + + + + 8 + + 14 + + + 15 + + + + + 16 + НомерКвартала + + + + + + 9 + + true + + + + 10 + + 17 + + 1 + + 18 + + + ru + Производственный календарь [ПроизводственныйКалендарь] на [Год] год + + + + + + + + 11 + + true + + + + 12 + + + 1 + + 15 + + + ru + Расчет среднемесячного количества часов + + + + + + + + 13 + + + 1 + + 19 + + + ru + Количество дней и часов + + + + + + + 20 + ИмяМесяца + + + + + + 14 + + + 1 + + 21 + + + ru + Рабочее время (в часах): +при 40-часовой рабочей неделе + + + + + + + 22 + РабочееВремя40 + + + + + + 15 + + + 1 + + 23 + + + ru + при 36-часовой рабочей неделе + + + + + + + 24 + РабочееВремя36 + + + + + + 16 + + + 1 + + 25 + + + ru + при 24-часовой рабочей неделе + + + + + + + 26 + РабочееВремя24 + + + + + + 17 + 18 + + true + + + + 19 + + 2b524b55-0236-48d5-8939-3f2baa1be962 + 27 + + 1 + + 28 + + + ru + Нерабочие периоды + + + + + + + + 20 + + 2b524b55-0236-48d5-8939-3f2baa1be962 + 29 + + 1 + + 0 + + + ru + + + + + + + + 30 + Представление + + + + + + Picture + 1 + 31 + 20 + 6 + 20 + 70 + 1 + 24 + 1 + 88 + false + Stretch + 1 + 1 + + true + 32 + 21 + 21 + + Заголовок + + Rows + 10 + 10 + -1 + -1 + + + + Квартал + + Rows + 8 + 8 + -1 + -1 + + + + КолонкаМесяца + + Rectangle + 0 + 6 + 2 + 2 + + + + КолонкаМесяцаСр + + Rectangle + 11 + 16 + 2 + 2 + + + + НерабочиеПериоды + + Rows + 19 + 20 + -1 + -1 + 2b524b55-0236-48d5-8939-3f2baa1be962 + + + + Среднемесячный + + Rectangle + 11 + 16 + 0 + 2 + + + + ШапкаКвартала + + Rectangle + 0 + 6 + 0 + 1 + + + + Rows + 20 + 21 + -1 + -1 + + + None + + + Solid + + + None + + + + + + + 19 + + + 215 + + + 95 + + + 41 + + + 269 + + + 0 + + + 1 + style:FormBackColor + + + 0 + 1 + Center + Parameter + + + 0 + 0 + + + 1 + 1 + style:FormBackColor + + + 1 + 1 + Center + Parameter + + + 1 + 1 + 1 + style:FormBackColor + + + 1 + 1 + 1 + Center + Parameter + + + 72 + + + 0 + + + 0 + Parameter + + + 67 + + + 1 + Template + + + 1 + 187 + style:FormBackColor + + + 0 + 1 + 72 + Center + Wrap + Parameter + + + 1 + 0 + 1 + 187 + style:FormBackColor + + + 1 + 0 + 1 + 72 + Center + Parameter + + + 1 + 1 + 187 + style:FormBackColor + + + 1 + 1 + 72 + Center + Parameter + + + 1 + 1 + 1 + 187 + style:FormBackColor + + + 1 + 1 + 1 + 72 + Center + Parameter + + + 84 + + + 2 + 84 + 41 + + + 132 + + + 3 + Top + Parameter + + + 2 + + + 72 + + + 0 + + + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270.mdo" new file mode 100644 index 00000000..93704962 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\321\213\320\265\320\232\320\260\320\273\320\265\320\275\320\264\320\260\321\200\320\270.mdo" @@ -0,0 +1,184 @@ + + + + + + + + + + ПроизводственныеКалендари + + ru + Производственные календари + + true + Catalog.ПроизводственныеКалендари.StandardAttribute.Description + Catalog.ПроизводственныеКалендари.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование календаря + + + ShowError + Use + + + + + Use + Code + + ru + Код календаря + + + Use + + + + DontUse + true + + + ru + + + Managed + Use + + ru + Производственный календарь + + 2 + true + 3 + 100 + String + Variable + true + AsDescription + InDialog + true + BothWays + Catalog.ПроизводственныеКалендари.Form.ФормаЭлемента + Catalog.ПроизводственныеКалендари.Form.ФормаСписка + + БазовыйКалендарь + + ru + Базовый календарь + + + CatalogRef.ПроизводственныеКалендари + + + ru + Календарь, заполнение которого берется за основу при заполнении настоящего календаря. + + + + + Отбор.БазовыйКалендарь + + Catalog.ПроизводственныеКалендари.EmptyRef + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ПФ_MXL_ПроизводственныйКалендарь + + ru + Производственный календарь (табличный документ 1С:Предприятия) + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/CommandModule.bsl" new file mode 100644 index 00000000..3769ad60 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Commands/\320\223\321\200\321\203\320\277\320\277\321\213\320\224\320\276\321\201\321\202\321\203\320\277\320\260/CommandModule.bsl" @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Профиль", ПараметрКоманды); + ОткрытьФорму("Справочник.ГруппыДоступа.ФормаСписка", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..fd55276c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,405 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Create + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 8 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 11 + + СписокСтрокаПоискаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 12 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 14 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 15 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 17 + + СписокУправлениеПоискомРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 18 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Folders + + true + true + + + + Комментарий + 20 + true + true + + true + + + + Items.Список.CurrentData.Комментарий + + + Left + + КомментарийРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 21 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Create + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ПрофилиГруппДоступа + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..814a7325 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,9 @@ + +

Список предназначен для выбора папок профилей групп доступа.

+

Т.к. профилей групп доступа может быть очень много и с похожими настройками ограничений прав, предусмотрена возможность создавать папки для упрощения поиска нужного профиля групп доступа и понимания ограничений прав доступа в целом.

+

Профили групп доступа можно сгруппировать по различным признакам.

+

Выбор папки профилей групп доступа

+
  • Выделите папку, нажмите Выбрать. Также можно воспользоваться двойным щелчком левой кнопки мыши.

Ввод папки профилей групп доступа

+
  • Нажмите Создать группу, введите наименование папки.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..ead8061c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Отбор только групп. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ЭтоГруппа", Истина, , , Истина); + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..f616d99b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,174 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + ru + Наименование группы (папки) + + + НаименованиеРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 3 + + <key>ru</key> + <value>Вышестоящая группа (папка)</value> + + true + true + + true + + + + Объект.Parent + + + 2 + + ru + Вышестоящая группа (папка), объединяющая группы (папки) для удобства поиска + + + РодительРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПрофилиГруппДоступа + + + true + + + true + +
true
+ true +
+ + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..3b649249 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,10 @@ + +

Сведения о папке профилей групп доступа.

+

Профилей групп доступа может быть много и с похожим назначением, поэтому предусмотрена возможность создавать папки (группы) для упрощения поиска нужного профиля и понимания принципов их формирования.

+

Ввод папки профилей групп доступа

+
  • +
    Введите Наименование;
    +
  • +
    +
    Папку можно включить в Вышестоящую группу (папку). Выберите из списка нужную папку, нажмите кнопку Выбрать. Также можно выбрать вышестоящую папку двойным щелчком мыши.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..51271c5e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,44 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..dce54d41 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,993 @@ + + + + ГруппаНастроек + 33 + + ПоказатьПрофили + 17 + + <key>ru</key> + <value>Показать</value> + + true + true + + true + + + + ПоказатьПрофили + + + Button + + OnChange + ПоказатьПрофилиПриИзменении + + + ПоказатьПрофилиРасширеннаяПодсказка + 19 + + <key>ru</key> + <value>Поставляемые профили входят в состав конфигурации (обновляются автоматически). +Непоставляемые профили - все остальные (обновляются вручную). +Устаревшие профили содержат удаленные роли (не обновлены вручную).</value> + + true + true + + true + + Label + true + true + + Left + + + + ПоказатьПрофилиКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + true + + + ru + Все профили + + + ВсеПрофили + + + + + ru + Поставляемые + + + Поставляемые + + + + + ru + Непоставляемые + + + Непоставляемые + + + + + ru + Устаревшие + + + Устаревшие + + + + + + ВидПользователей + 35 + + <key>ru</key> + <value>Назначение</value> + + true + true + + true + + + + ВидПользователей + + + + ВидПользователейРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + + ВидПользователейКонтекстноеМеню + 36 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ВидПользователейНачалоВыбора + + + Clearing + ВидПользователейОчистка + + true + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Настроек</value> + + + ГруппаНастроекРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПользовательскихНастроек + 20 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 22 + + ФормаВыбрать + 64 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаСоздать + 50 + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаСоздатьГруппу + 52 + true + true + + true + + + ФормаСоздатьГруппуРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 54 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаИзменить + 56 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьПометкуУдаления + 58 + true + true + + true + + + ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ФормаОбновить + 48 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСтандартныеКоманды + 60 + true + true + + true + + + <key>ru</key> + <value>Форма стандартные команды</value> + + + ФормаСтандартныеКомандыРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + Справка + 62 + true + true + + true + + + СправкаРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Delete + Refresh + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Ссылка + 8 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + OnChange + СписокПриИзменении + + + true + true + + true + + СписокСтрокаПоиска + 24 + + СписокСтрокаПоискаРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 25 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 27 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 28 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 30 + + СписокУправлениеПоискомРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 31 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + 8 + true + true + true + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Delete + Refresh + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Predefined + + + Список.Ref + +
true
+ + ВЫБРАТЬ + Профили.Ссылка, + Профили.ПометкаУдаления, + Профили.Предопределенный, + Профили.Родитель, + Профили.ЭтоГруппа, + Профили.Наименование КАК Наименование, + Профили.ПоставляемыйПрофильИзменен, + Профили.Комментарий +ИЗ + Справочник.ПрофилиГруппДоступа КАК Профили + Catalog.ПрофилиГруппДоступа + true + true + true + true + true + +
+ + ПоказатьПрофили + + <key>ru</key> + <value>Показать профили</value> + + 2 + + String + + + + true + + + true + + + + ВидПользователей + + <key>ru</key> + <value>Вид пользователей</value> + + 3 + + String + + + + true + + + true + + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 1 + + ru + Обновить текущий список + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + Text + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Help/ru.html" new file mode 100644 index 00000000..8cbc743a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Help/ru.html" @@ -0,0 +1,26 @@ + +

Предназначен для управления профилями групп доступа.

+

Профилей групп доступа может быть много и с похожим назначением, поэтому предусмотрена возможность создавать папки для упрощения поиска нужного профиля и понимания принципов их формирования.

+

Список открывается по команде Профили групп доступа в разделе Администрирование - Настройка пользователей и прав.

+

Отборы списка

+
  • С помощью поля Показать можно выводить на просмотр: +
    • Все профили (по умолчанию); +
    • Поставляемые - профили, входящие в поставку программы; +
    • Непоставляемые - профили, которые не входят в поставку программы; +
    • Устаревшие.
  • С помощью поля Назначение можно отобрать профили групп доступа по видам пользователей, для кого они предназначены: +
    • Нажмите кнопку  Выбрать. +
    • Укажите с помощью флажков, для кого предназначены профили групп доступа, например, Пользователи.

Основные и дополнительные профили групп доступа

+
  • Различают основные и дополнительные профили групп доступа: +
    • Основной профиль описывает некоторую совокупность прав доступа, достаточную для выполнения в программе определенного участка работ. +
    • С помощью дополнительных профилей пользователям могут быть выданы какие-либо вспомогательные права дополнительно к основному профилю. +
      • Например, дополнительно к основным профилям Бухгалтер и Кладовщик предусмотрены профили Ведение переписки с контрагентами и Печать непроведенных документов.

Рекомендации по созданию основных профилей групп доступа

+
  • В основных профилях важно предусмотреть такой набор ролей, который с одной стороны, не будет давать избыточного (нежелательного) доступа к функциям и данным программы, а с другой - будет достаточным для работы пользователей в рамках их круга задач и обязанностей. +
  • В частности, в основном профиле следует предусмотреть ряд вспомогательных ролей, которые напрямую не связаны с основной деятельностью пользователей, но, тем не менее, необходимы для нее. +
  • Например, для оператора по вводу документов помимо роли на добавление и изменение этих документов нужно также не забыть включить в профиль следующие роли: +
    • роль для входа в программу с помощью тонкого, толстого или веб-клиента; +
    • предопределенные роли Базовые права и Базовые права УТ; +
    • роли для просмотра справочников, элементы которых требуется выбирать в полях документов; +
    • роли для просмотра отчетов по движениям документов и т.п.
  • Например, в профиль Аудитор помимо основной роли Чтение физических лиц, разрешающей просмотр сведений о физических лицах, необходимо включить также ряд вспомогательных ролей, обеспечивающих базовые возможности для работы в программе (например, Базовые права, Запуск тонкого клиента и т.п.).

Ввод профиля групп доступа

+
  • Нажмите Создать, заполните необходимые поля.

Ввод папки профилей групп доступа

+
  • Нажмите Создать группу, заполните необходимые поля.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..09cce87f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,177 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.РежимВыбора Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор"); + КонецЕсли; + + Если Параметры.РежимВыбора Тогда + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + + // Скрытие профиля Администратор. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.ПрофилиГруппДоступа.Администратор, + ВидСравненияКомпоновкиДанных.НеРавно, , Истина); + + Элементы.Список.ВыборГруппИЭлементов = Параметры.ВыборГруппИЭлементов; + + АвтоЗаголовок = Ложь; + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + // Режим подбора. + Элементы.Список.МножественныйВыбор = Истина; + Элементы.Список.РежимВыделения = РежимВыделенияТаблицы.Множественный; + + Заголовок = НСтр("ru = 'Подбор профилей групп доступа'"); + Иначе + Заголовок = НСтр("ru = 'Выбор профиля групп доступа'"); + КонецЕсли; + Иначе + Элементы.Список.РежимВыбора = Ложь; + КонецЕсли; + + Если Параметры.Свойство("ПрофилиСРолямиПомеченнымиНаУдаление") Тогда + ПоказатьПрофили = "Устаревшие"; + Иначе + ПоказатьПрофили = "ВсеПрофили"; + КонецЕсли; + + Если Не Параметры.РежимВыбора Тогда + УстановитьОтбор(); + Иначе + Элементы.ПоказатьПрофили.Видимость = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПоказатьПрофилиПриИзменении(Элемент) + + УстановитьОтбор(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидПользователейНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораНазначения", ЭтотОбъект); + + ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, + НСтр("ru = 'Выбор назначения профилей'"), Истина, Истина, ОписаниеОповещения); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидПользователейОчистка(Элемент, СтандартнаяОбработка) + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка.Назначение.ТипПользователей", , , , Ложь); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПриИзменении(Элемент) + + СписокПриИзмененииНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Обновить(Команда) + + ОбновитьНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбновитьНаСервере() + + УстановитьОтбор(); + + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтбор() + + Если ПоказатьПрофили = "Устаревшие" Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Ссылка", + Справочники.ПрофилиГруппДоступа.НесовместимыеПрофилиГруппДоступа(), + ВидСравненияКомпоновкиДанных.ВСписке, , Истина); + Иначе + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Ссылка", , , , Ложь); + КонецЕсли; + + Если ПоказатьПрофили = "Поставляемые" Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Ссылка.ИдентификаторПоставляемыхДанных", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор(), + ВидСравненияКомпоновкиДанных.НеРавно, , Истина); + + ИначеЕсли ПоказатьПрофили = "Непоставляемые" Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Ссылка.ИдентификаторПоставляемыхДанных", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор(), + ВидСравненияКомпоновкиДанных.Равно, , Истина); + Иначе + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Ссылка.ИдентификаторПоставляемыхДанных", , , , Ложь); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораНазначения(МассивТипов, ДополнительныеПараметры) Экспорт + + Если МассивТипов.Количество() <> 0 Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Ссылка.Назначение.ТипПользователей", + МассивТипов, + ВидСравненияКомпоновкиДанных.ВСписке, , Истина); + Иначе + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка.Назначение.ТипПользователей", , , , Ложь); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриИзмененииНаСервере() + + УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..639b1bc6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,2994 @@ + + + + ПоставляемыйПрофильИзменен + 346 + + ПоставляемыйПрофильИзмененКартинка + 348 + + <key>ru</key> + <value>Поставляемый профиль изменен картинка</value> + + true + true + + true + + + ПоставляемыйПрофильИзмененКартинкаРасширеннаяПодсказка + 350 + true + true + + true + + Label + true + true + + Left + + + + ПоставляемыйПрофильИзмененКартинкаКонтекстноеМеню + 349 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + ПоставляемыйПрофильИзмененПояснение + 343 + + <key>ru</key> + <value>В поставляемый профиль были внесены изменения. +Описание может отличаться от текущей настройки профиля.</value> + + true + true + + true + + Button + + ПоставляемыйПрофильИзмененПояснениеРасширеннаяПодсказка + 345 + true + true + + true + + Label + true + true + + Left + + + + ПоставляемыйПрофильИзмененПояснениеКонтекстноеМеню + 344 + true + true + + true + + true + + Label + true + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Поставляемый профиль изменен</value> + + + ПоставляемыйПрофильИзмененРасширеннаяПодсказка + 347 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + true + + НаименованиеExtendedTooltip + 252 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Родитель + 189 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 253 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 190 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаНазначение + 381 + + ЗаголовокНазначение + 385 + + <key>ru</key> + <value>Назначение:</value> + + true + true + + true + + + ЗаголовокНазначениеРасширеннаяПодсказка + 387 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокНазначениеКонтекстноеМеню + 386 + true + true + + true + + true + + Label + true + + Left + + + + ВыбратьНазначение + 383 + true + true + + true + + + ВыбратьНазначениеРасширеннаяПодсказка + 384 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ВыбратьНазначение + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Назначение</value> + + + ГруппаНазначениеРасширеннаяПодсказка + 382 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Доступ + 242 + + ОтображениеРолей + 232 + + Роли + 197 + + <key>ru</key> + <value>Роли</value> + + true + true + + true + + + Роли + + false + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + РолиКолонок + 227 + + РолиПометка + 228 + true + true + + true + + + + Роли.Пометка + + + + OnChange + РолиПометкаПриИзменении + + + РолиПометкаExtendedTooltip + 263 + true + true + + true + + Label + true + true + + Left + + + + РолиПометкаКонтекстноеМеню + 229 + true + true + + true + + true + + CheckBoxField + Left + true + + + + РолиСиноним + 230 + true + true + + true + + + + Роли.Синоним + + + + РолиСинонимExtendedTooltip + 264 + true + true + + true + + Label + true + true + + Left + + + + РолиСинонимКонтекстноеМеню + 231 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Роли колонок</value> + + + РолиКолонокExtendedTooltip + 262 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + РолиИмя + 400 + true + true + + + + Роли.Имя + + + + РолиИмяРасширеннаяПодсказка + 402 + true + true + + true + + Label + true + true + + Left + + + + РолиИмяКонтекстноеМеню + 401 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + РолиЭтоНедоступнаяРоль + 406 + true + true + + + + Роли.ЭтоНедоступнаяРоль + + + + РолиЭтоНедоступнаяРольРасширеннаяПодсказка + 408 + true + true + + true + + Label + true + true + + Left + + + + РолиЭтоНедоступнаяРольКонтекстноеМеню + 407 + true + true + + true + + true + + CheckBoxField + true + EnterOnInput + true + Left + true + + + + РолиЭтоНесуществующаяРоль + 409 + true + true + + + + Роли.ЭтоНесуществующаяРоль + + + + РолиЭтоНесуществующаяРольРасширеннаяПодсказка + 411 + true + true + + true + + Label + true + true + + Left + + + + РолиЭтоНесуществующаяРольКонтекстноеМеню + 410 + true + true + + true + + true + + CheckBoxField + true + EnterOnInput + true + Left + true + + + + РолиКоманднаяПанель + 199 + + РолиУстановитьФлажки + 212 + true + true + + true + + false + + РолиУстановитьФлажкиExtendedTooltip + 257 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьРоли + Auto + true + true + UserCmds + Auto + + + РолиСнятьФлажки + 213 + true + true + + true + + false + + РолиСнятьФлажкиExtendedTooltip + 258 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИсключитьРоли + Auto + true + true + UserCmds + Auto + + + РолиПоказатьТолькоВыбранныеРоли + 218 + true + true + + true + + false + + РолиПоказатьТолькоВыбранныеРолиExtendedTooltip + 259 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьТолькоВыбранныеРоли + Auto + true + true + UserCmds + Auto + + + РолиПоказатьПодсистемыРолей + 243 + true + true + + true + + + РолиПоказатьПодсистемыРолейExtendedTooltip + 260 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ГруппировкаРолейПоПодсистемам + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + РолиСтандартныеКоманды + 303 + true + true + + true + + + <key>ru</key> + <value>Роли стандартные команды</value> + + + РолиСтандартныеКомандыРасширеннаяПодсказка + 304 + true + true + + true + + Label + true + true + + Left + + + + Item.Роли + + + true + true + + true + + Left + + + true + true + + true + + РолиСтрокаПоиска + 351 + + РолиСтрокаПоискаРасширеннаяПодсказка + 353 + true + true + + true + + Label + true + true + + Left + + + + РолиСтрокаПоискаКонтекстноеМеню + 352 + true + true + + true + + true + + + true + + + + true + true + + true + + РолиСостояниеПросмотра + 354 + + РолиСостояниеПросмотраРасширеннаяПодсказка + 356 + true + true + + true + + Label + true + true + + Left + + + + РолиСостояниеПросмотраКонтекстноеМеню + 355 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РолиУправлениеПоиском + 357 + + РолиУправлениеПоискомРасширеннаяПодсказка + 359 + true + true + + true + + Label + true + true + + Left + + + + РолиУправлениеПоискомКонтекстноеМеню + 358 + true + true + + true + + true + + SearchControlAddition + + true + + + + РолиExtendedTooltip + 261 + true + true + + true + + Label + true + true + + Left + + + + РолиКонтекстноеМеню + 198 + true + true + + true + + + Tree + true + true + true + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + ExpandAllLevels + true + true + + Роли.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + + true + true + + true + + + <key>ru</key> + <value>Разрешенные действия (роли)</value> + + + ОтображениеРолейExtendedTooltip + 256 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ВидыИЗначенияДоступа + 137 + + ВидыДоступа + 22 + + <key>ru</key> + <value>Виды доступа</value> + + true + true + + true + + + Объект.ВидыДоступа + + false + None + CancelSearch + Change + Copy + CopyToClipboard + EndEdit + Find + OutputList + + ВидыДоступаВидДоступаПредставление + 27 + true + true + + true + + + + Объект.ВидыДоступа.ВидДоступаПредставление + + + + OnChange + ВидыДоступаВидДоступаПредставлениеПриИзменении + + + ВидыДоступаВидДоступаПредставлениеРасширеннаяПодсказка + 278 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаВидДоступаПредставлениеКонтекстноеМеню + 28 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + ВидыДоступаВидДоступаПредставлениеОбработкаВыбора + + 20 + true + true + false + true + true + true + true + true + true + + + + ВидыДоступаВсеРазрешеныПредставление + 187 + true + true + + true + + + + Объект.ВидыДоступа.ВсеРазрешеныПредставление + + + + ru + Способ определения разрешенных значений доступа + + + OnChange + ВидыДоступаВсеРазрешеныПредставлениеПриИзменении + + + ВидыДоступаВсеРазрешеныПредставлениеРасширеннаяПодсказка + 279 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаВсеРазрешеныПредставлениеКонтекстноеМеню + 188 + true + true + + true + + true + + InputField + Enter + true + true + Left + true + + + ChoiceProcessing + ВидыДоступаВсеРазрешеныПредставлениеОбработкаВыбора + + true + true + true + true + true + true + true + true + true + + + + ВидыДоступаКоманднаяПанель + 24 + true + true + + true + + Left + true + + + OnEditEnd + ВидыДоступаПриОкончанииРедактирования + + + BeforeAddRow + ВидыДоступаПередНачаломДобавления + + + BeforeDeleteRow + ВидыДоступаПередУдалением + + + OnActivateRow + ВидыДоступаПриАктивизацииСтроки + + + OnStartEdit + ВидыДоступаПриНачалеРедактирования + + + OnChange + ВидыДоступаПриИзменении + + + true + true + + true + + ВидыДоступаСтрокаПоиска + 360 + + ВидыДоступаСтрокаПоискаРасширеннаяПодсказка + 362 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаСтрокаПоискаКонтекстноеМеню + 361 + true + true + + true + + true + + + true + + + + true + true + + true + + ВидыДоступаСостояниеПросмотра + 363 + + ВидыДоступаСостояниеПросмотраРасширеннаяПодсказка + 365 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаСостояниеПросмотраКонтекстноеМеню + 364 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВидыДоступаУправлениеПоиском + 366 + + ВидыДоступаУправлениеПоискомРасширеннаяПодсказка + 368 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаУправлениеПоискомКонтекстноеМеню + 367 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВидыДоступаExtendedTooltip + 277 + true + true + + true + + Label + true + true + + Left + + + + ВидыДоступаКонтекстноеМеню + 23 + true + true + + true + + true + + true + true + true + 4 + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + +
+ + ЗначенияДоступаПоВидуДоступа + 138 + + ТекстВидДоступаНеИспользуется + 246 + + <key>ru</key> + <value>В данный момент не используется, т.к. эта возможность отключена в программе.</value> + + true + + true + + + ТекстВидДоступаНеИспользуетсяExtendedTooltip + 283 + true + true + + true + + Label + true + true + + Left + + + + ТекстВидДоступаНеИспользуетсяКонтекстноеМеню + 247 + true + true + + true + + true + + Label + true + + Left + + + + ТипыВидовДоступа + 141 + + ПредустановленныйВидДоступа + 142 + + ЗначенияДоступа + 233 + + <key>ru</key> + <value>Значения доступа</value> + + true + true + + true + + + Объект.ЗначенияДоступа + + None + Copy + EndEdit + OutputList + + ЗначенияДоступаНомерСтрокиПоВиду + 236 + true + true + + true + + + + Объект.ЗначенияДоступа.НомерСтрокиПоВиду + + + + ЗначенияДоступаНомерСтрокиПоВидуРасширеннаяПодсказка + 295 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаНомерСтрокиПоВидуКонтекстноеМеню + 237 + true + true + + true + + true + + LabelField + true + EnterOnInput + true + Left + true + + 3 + true + true + false + + + + ЗначенияДоступаЗначениеДоступа + 240 + true + true + + true + + + + Объект.ЗначенияДоступа.ЗначениеДоступа + + + + ЗначенияДоступаЗначениеДоступаРасширеннаяПодсказка + 296 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаЗначениеДоступаКонтекстноеМеню + 241 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + AutoComplete + ЗначениеДоступаАвтоПодбор + + + StartChoice + ЗначениеДоступаНачалоВыбора + + + Clearing + ЗначениеДоступаОчистка + + + TextEditEnd + ЗначениеДоступаОкончаниеВводаТекста + + + ChoiceProcessing + ЗначениеДоступаОбработкаВыбора + + true + true + true + true + true + + + + ЗначенияДоступаВключаяНижестоящие + 397 + true + true + + true + + + + Объект.ЗначенияДоступа.ВключаяНижестоящие + + + None + + ЗначенияДоступаВключаяНижестоящиеРасширеннаяПодсказка + 399 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаВключаяНижестоящиеКонтекстноеМеню + 398 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + + CommonPicture.ИерархическийСписок + + Left + true + + + + ЗначенияДоступаКоманднаяПанель + 235 + true + true + + true + + Left + true + + + OnEditEnd + ЗначенияДоступаПриОкончанииРедактирования + + + OnStartEdit + ЗначенияДоступаПриНачалеРедактирования + + + OnChange + ЗначенияДоступаПриИзменении + + + true + true + + true + + ЗначенияДоступаСтрокаПоиска + 369 + + ЗначенияДоступаСтрокаПоискаРасширеннаяПодсказка + 371 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаСтрокаПоискаКонтекстноеМеню + 370 + true + true + + true + + true + + + true + + + + true + true + + true + + ЗначенияДоступаСостояниеПросмотра + 372 + + ЗначенияДоступаСостояниеПросмотраРасширеннаяПодсказка + 374 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаСостояниеПросмотраКонтекстноеМеню + 373 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ЗначенияДоступаУправлениеПоиском + 375 + + ЗначенияДоступаУправлениеПоискомРасширеннаяПодсказка + 377 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаУправлениеПоискомКонтекстноеМеню + 376 + true + true + + true + + true + + SearchControlAddition + + true + + + + ЗначенияДоступаExtendedTooltip + 294 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДоступаКонтекстноеМеню + 234 + true + true + + true + + true + + true + true + true + 6 + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + true + true + +
+ true + true + + true + + + <key>ru</key> + <value>Предустановленный вид доступа</value> + + + ПредустановленныйВидДоступаExtendedTooltip + 285 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + +
+ + ОбычныйВидДоступа + 182 + + ТекстИнформацииОбычногоВидаДоступа + 185 + + <key>ru</key> + <value>Список значений назначается в группах доступа. + </value> + + true + true + + true + + + ТекстИнформацииОбычногоВидаДоступаExtendedTooltip + 300 + true + true + + true + + Label + true + true + + Left + + + + ТекстИнформацииОбычногоВидаДоступаКонтекстноеМеню + 186 + true + true + + true + + true + + Label + true + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Обычный вид доступа</value> + + + ОбычныйВидДоступаExtendedTooltip + 299 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + + + true + true + + true + + + <key>ru</key> + <value>Типы видов доступа</value> + + + ТипыВидовДоступаExtendedTooltip + 284 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
+ true + true + + true + + + <key>ru</key> + <value>Значения доступа по виду доступа</value> + + + ЗначенияДоступаПоВидуДоступаExtendedTooltip + 280 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + + НадписьВидДоступа + + Auto + Auto + +
+ true + true + + true + + + <key>ru</key> + <value>Ограничения доступа</value> + + + ВидыИЗначенияДоступаExtendedTooltip + 265 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + СтраницаОписание + 332 + + ОписаниеПоставляемогоПрофиля + 334 + true + true + + true + + + + ОписаниеПоставляемогоПрофиля + + + None + + ru + Описание поставляемого профиля. + + + ОписаниеПоставляемогоПрофиляРасширеннаяПодсказка + 336 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеПоставляемогоПрофиляКонтекстноеМеню + 335 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + Комментарий1 + 47 + true + true + + true + + + + Объект.Комментарий + + + Top + + Комментарий1РасширеннаяПодсказка + 254 + true + true + + true + + Label + true + true + + Left + + + + Комментарий1КонтекстноеМеню + 48 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Описание</value> + + + СтраницаОписаниеРасширеннаяПодсказка + 333 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаКомментарий + 301 + + Комментарий2 + 388 + true + true + + true + + + + Объект.Комментарий + + + None + + Комментарий2РасширеннаяПодсказка + 390 + true + true + + true + + Label + true + true + + Left + + + + Комментарий2КонтекстноеМеню + 389 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + СтраницаКомментарийРасширеннаяПодсказка + 302 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Доступ</value> + + + ДоступExtendedTooltip + 255 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
+ + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 391 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 392 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + PictureAndText + true + true + true + UserCmds + Auto + + + КомандыФормы + 393 + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + КомандыФормыРасширеннаяПодсказка + 394 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ВосстановитьПоНачальномуЗаполнению + 46 + true + true + + true + + false + + ВосстановитьПоНачальномуЗаполнениюExtendedTooltip + 249 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВосстановитьПоНачальномуЗаполнению + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПоказыватьНеиспользуемыеВидыДоступа + 248 + true + true + + true + + + ПоказыватьНеиспользуемыеВидыДоступаExtendedTooltip + 251 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьНеиспользуемыеВидыДоступа + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСправка + 395 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 396 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + WriteAndClose + Use + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПрофилиГруппДоступа + + + true + + + true + +
true
+ true + + + Объект.ВидыДоступа + + + ВидДоступаПредставление + + <key>ru</key> + <value>Вид доступа</value> + + 1 + + String + + + + true + + + true + + + + ВсеРазрешеныПредставление + + <key>ru</key> + <value>Значения доступа</value> + + 2 + + String + + + + true + + + true + + + + + + Объект.Роли + + + + + Объект.ЗначенияДоступа + + + НомерСтрокиПоВиду + + <key>ru</key> + <value>N</value> + + 1 + + Number + + 10 + true + + + + true + + + true + + + +
+ + НадписьВидДоступа + 7 + + String + + + + true + + + true + + FunctionalOption.ОграничиватьДоступНаУровнеЗаписей + + + ТребуетсяОбновитьГруппыДоступаПрофиля + 21 + + Boolean + + + true + + + true + + + + ОбъектЗаписывался + 14 + + Boolean + + + true + + + true + + + + Роли + + <key>ru</key> + <value>Роли</value> + + 2 + + ValueTree + + + true + + + true + + true + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 1 + + Boolean + + + true + + + true + + + + Синоним + + <key>ru</key> + <value>Разрешенное действие (роль)</value> + + 2 + + String + + + + true + + + true + + + + НомерКартинки + 4 + + Number + + 1 + true + + + + true + + + true + + + + Имя + + <key>ru</key> + <value>Имя роли в конфигурации</value> + + 5 + + String + + + + true + + + true + + + + ЭтоРоль + 3 + + Boolean + + + true + + + true + + + + ЭтоНедоступнаяРоль + + <key>ru</key> + <value>Это недоступная роль</value> + + 6 + + Boolean + + + true + + + true + + + + ЭтоНесуществующаяРоль + + <key>ru</key> + <value>Это несуществующая роль</value> + + 7 + + Boolean + + + true + + + true + + + + + ПоказатьПодсистемыРолей + 3 + + Boolean + + + true + + + true + + + ПоказатьПодсистемыРолей + + + + ТребуетсяПроверитьЗаполнениеПрофиля + 8 + + Boolean + + + true + + + true + + + + КоллекцияРолей + 5 + + ValueTable + + + true + + + true + + + Роль + 1 + + String + + + + true + + + true + + + + + ВыполненаПроцедураПриСозданииНаСервере + 4 + + Boolean + + + true + + + true + + + + ОписаниеПоставляемогоПрофиля + + <key>ru</key> + <value>Описание поставляемого профиля</value> + + 6 + + String + + + + true + + + true + + + + ВосстановитьПоНачальномуЗаполнению + + <key>ru</key> + <value>Восстановить по начальному заполнению</value> + + 1 + + ru + Восстановить профиль по начальному заполнению (только для профилей поставляемых с прикладным решением) + + + true + + + + ВосстановитьПоНачальномуЗаполнению + + + DontUse + + + ПоказатьТолькоВыбранныеРоли + + <key>ru</key> + <value>Только выбранные</value> + + 4 + + ru + Показать только выбранные роли + + + true + + + CommonPicture.ПоказатьТолькоВыбранныеРоли + + + + ПоказатьТолькоВыбранныеРоли + + + TextPicture + DontUse + + + ВключитьРоли + + <key>ru</key> + <value>Включить роли</value> + + 5 + + ru + Включить роли + + + true + + + StdPicture.CheckAll + + + + ВключитьРоли + + + true + DontUse + + + ИсключитьРоли + + <key>ru</key> + <value>Исключить роли</value> + + 6 + + ru + Исключить роли + + + true + + + StdPicture.UncheckAll + + + + ИсключитьРоли + + + true + DontUse + + + ГруппировкаРолейПоПодсистемам + + <key>ru</key> + <value>По подсистемам</value> + + 2 + + ru + Группировать список ролей по подсистемам + + + true + + + CommonPicture.Подсистема + + + + ГруппировкаРолейПоПодсистемам + + + TextPicture + DontUse + + + ПоказыватьНеиспользуемыеВидыДоступа + + <key>ru</key> + <value>Показывать неиспользуемые виды доступа</value> + + 7 + + ru + Показывать неиспользуемые виды доступа + + + true + + + + ПоказыватьНеиспользуемыеВидыДоступа + + + DontUse + + + ВыбратьНазначение + + <key>ru</key> + <value>Выбрать назначение</value> + + 3 + + ru + Выбрать назначение + + + true + + + + ВыбратьНазначение + + + true + DontUse + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 8 + + ru + Записать объект и закрыть форму + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..ddcf048d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,39 @@ + +

Описание свойств профиля групп доступа.

+

В программе существуют предопределенные профили групп доступа. В ряде случаев предустановленных профилей групп доступа оказывается недостаточно для осуществления требуемой настройки прав доступа пользователей. В таких случаях администратор имеет возможность добавить новые профили групп доступа.

+

Профиль групп доступа объединяет в себе, как правило, несколько ролей, а также содержит описание видов доступа, в разрезе которых администратор может настраивать права с помощью групп доступа. Таким образом, профиль представляет собой определенный шаблон, в соответствии с которым администратор ведет группы доступа.

+

С одним профилем может быть связана одна или несколько групп доступа. Например, на базе профиля Бухгалтер могут быть настроены группы доступа Бухгалтеры центрального офиса и Бухгалтеры филиала в Н-ске, которые отличаются друг от друга разрешенными организациями: "Центральный офис" и "Филиал в Н-ске".

+

Ввод профиля групп доступа

+
  • Введите Наименование профиля. +
  • При необходимости можно включить профиль групп доступа в папку, заполнив поле Группа (папка). Профили групп доступа можно группировать по различным признакам. Выберите нужную папку из списка. +
  • В поле Назначение перейдите по ссылке, с помощью флажков выберите, для кого предназначен профиль групп доступа, например, Пользователи, нажмите кнопку Выбрать. После этого ссылка принимает выбранное значение. +
  • Выберите Разрешенные действия (роли) на соответствующей вкладке. +
  • Укажите Ограничения доступа на соответствующей вкладке. +
  • На вкладке Комментарий можно написать дополнительные сведения о профиле групп доступа. +
    • У предопределенных профилей доступа предусмотрена аналогичная вкладка Описание с подробным описанием данного профиля и его назначения.

Разрешенные действия (роли) 

+
  • На вкладке Разрешенные действия (роли) при добавлении нового профиля групп доступа сначала необходимо определить состав его ролей, исходя из потребностей целевой группы пользователей. +
  • Роль определяет некоторую совокупность действий над объектами программы, которые может выполнять пользователь. Роли могут соответствовать как различным должностным обязанностям (или видам деятельности) пользователей программы, так и могут соотноситься с более мелкими функциями. Например, роль Бухгалтер предоставляет доступ к функциональному блоку, необходимому для выполнения должностных обязанностей бухгалтера, а для включения отдельной возможности просмотра файлов может быть дополнительно назначена роль Чтение файлов. Зачастую, роли либо разрешают просмотр, либо дают возможность редактирования тех или иных данных в программе. +
  • С помощью флажков выберите одну или несколько ролей. +
    • С помощью кнопки  можно выбрать все роли в списке. +
    • С помощью кнопки  можно отменить выбор всех ролей.
  • С помощью соответствующей кнопки можно показать Только выбранные роли. +
  • С помощью команды Еще - По подсистемам можно показать список ролей одним из способов: +
    • в алфавитном порядке; +
    • сгруппировать по подсистемам.

Ограничения доступа

+
  • На вкладке Ограничения доступа необходимо принять решение по поводу состава видов доступа, которые должны быть определены в профиле. +
  • Под видом доступа подразумевается некоторое правило, по которому "разрешается" доступ к данным программы. С их помощью можно более точно настраивать границы области данных, с которой разрешено работать участникам тех или иных групп доступа. +
  • В простейшем случае, если в профиль не включено ни одного вида доступа, то права доступа к данным определяются только ролями. Например, в случае, если профиль включает в себя роль для чтения документов Демо: Поступление товаров, то участники групп доступа получают возможность просмотра всех документов. Но если в дополнение к этой роли в профиль добавить вид доступа Демо: Организации, то появляется возможность разрешать пользователям работу с документами только по конкретным организациям; или наоборот, скрывать от них документы некоторых организаций. +
  • Таким образом, если список ролей в профиле отвечает на вопрос "что должно быть доступно, а что - нет" (какие функции и данные программы), то виды доступа уточняют, как именно они должны быть доступны (в разрезе каких разрешенных и запрещенных значений). +
  • Состав видов доступа в профиле рекомендуется определять, исходя из соображений гибкости настройки прав доступа. +
  • Укажите Виды доступа. +
    • Нажмите Добавить, выберите из списка один из видов доступа. +
    • С помощью соответствующей команды меню Еще или контекстного меню по правой кнопке мыши можно Удалить ненужные записи.
  • Для каждого вида доступа, заданного в профиле, можно указать одно из четырех Значений доступа: +
    • Все запрещены, исключения назначаются в группах доступа - применяется в тех случаях, когда по умолчанию доступ ко всем данным должен быть закрыт, но для отдельных объектов в группах доступа могут быть настроены разрешения. +
    • Все разрешены, исключения назначаются в группах доступа - аналогично предыдущему варианту, но по умолчанию все данные разрешены, а для отдельных объектов в группах доступа могут быть установлены исключения - запрет. +
    • Все запрещены, исключения назначаются в профиле - используется тогда, когда в группах доступа не предполагается предоставлять возможность настройки для вида доступа; т.е. вся настройка должна быть выполнена непосредственно в самом профиле и не может быть изменена в группах доступа. Такие виды доступа скрыты в группах доступа. +
      • В этом случае становится доступным ввод исключений. +
      • Нажмите Добавить, выберите значения из списков. +
      • С помощью соответствующей команды меню Еще или контекстного меню по правой кнопке мыши можно Удалить лишние значения.
    • Все разрешены, исключения назначаются в профиле - аналогично предыдущему варианту.

Просмотр неиспользуемых видов доступа

+
  • +
    С помощью команды Еще - Показывать неиспользуемые виды доступа можно просмотреть те виды доступа, которые не используются в данный момент (например, данная возможность отключена в программе).

Просмотр групп доступа

+
  • Для быстрого перехода к списку групп доступа, созданных на базе данного профиля, можно воспользоваться командой Группы доступа на панели навигации.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..5770fcfc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,715 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ПараметрыЗаписиПередЗаписьюПродолжение; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОбработатьИнтерфейсРолей("ЗаполнитьРоли", Объект.Роли); + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриСозданииФормы", ЗначениеЗаполнено(Объект.Ссылка)); + + // Подготовка вспомогательных данных. + УправлениеДоступомСлужебный.ПриСозданииНаСервереФормыРедактированияРазрешенныхЗначений(ЭтотОбъект, Истина); + + // Установка постоянной доступности свойств. + + // Определение необходимости настройки ограничений доступа. + Если НЕ УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписей() Тогда + Элементы.ВидыИЗначенияДоступа.Видимость = Ложь; + КонецЕсли; + + // Определение возможности редактирования элементов формы (перезапись доступна). + БезРедактированияПоставляемыхЗначений = ТолькоПросмотр + ИЛИ НЕ Объект.Ссылка.Пустая() И Справочники.ПрофилиГруппДоступа.ЗапретИзмененияПрофиля(Объект); + + РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); + Если Объект.Ссылка = Справочники.ПрофилиГруппДоступа.Администратор + И Не Пользователи.ЭтоПолноправныйПользователь(, Не РазделениеВключено) Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + Элементы.Наименование.ТолькоПросмотр = БезРедактированияПоставляемыхЗначений; + + // Настройка редактирования видов доступа. + Элементы.ВидыДоступа.ТолькоПросмотр = БезРедактированияПоставляемыхЗначений; + Элементы.ЗначенияДоступа.ТолькоПросмотр = БезРедактированияПоставляемыхЗначений; + Элементы.ВыбратьНазначение.Доступность = Не БезРедактированияПоставляемыхЗначений; + + ОбработатьИнтерфейсРолей("УстановитьТолькоПросмотрРолей", БезРедактированияПоставляемыхЗначений); + + УстановитьДоступностьОписанияИВосстановленияПоставляемогоПрофиля(); + + ВыполненаПроцедураПриСозданииНаСервере = Истина; + + ПользователиСлужебный.ОбновитьНазначениеПриСозданииНаСервере(ЭтотОбъект); + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + Элементы.ФормаЗаписатьИЗакрыть.Доступность = Не ТолькоПросмотр + И ПравоДоступа("Редактирование", Метаданные.Справочники.ПрофилиГруппДоступа); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если НЕ ВыполненаПроцедураПриСозданииНаСервере Тогда + Возврат; + КонецЕсли; + + ОбработатьИнтерфейсРолей("ЗаполнитьРоли", Объект.Роли); + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЧтенииНаСервере", Истина); + + УправлениеДоступомСлужебный.ПриПовторномЧтенииНаСервереФормыРедактированияРазрешенныхЗначений( + ЭтотОбъект, ТекущийОбъект); + + УстановитьДоступностьОписанияИВосстановленияПоставляемогоПрофиля(ТекущийОбъект); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + ТребуетсяПроверитьЗаполнениеПрофиля = НЕ ПараметрыЗаписи.Свойство( + "ОтветПоОбновлениюГруппДоступаПрофиляПолучен"); + + Если ЗначениеЗаполнено(Объект.Ссылка) + И ТребуетсяОбновитьГруппыДоступаПрофиля + И НЕ ПараметрыЗаписи.Свойство("ОтветПоОбновлениюГруппДоступаПрофиляПолучен") Тогда + + Отказ = Истина; + ПараметрыЗаписиПередЗаписьюПродолжение = ПараметрыЗаписи; + ПодключитьОбработчикОжидания("ПередЗаписьюПродолжениеОбработчикОжидания", 0.1, Истина); + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + // Заполнение ролей объекта из коллекции. + ТекущийОбъект.Роли.Очистить(); + Для каждого Строка Из КоллекцияРолей Цикл + ТекущийОбъект.Роли.Добавить().Роль = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( + "Роль." + Строка.Роль); + КонецЦикла; + + Если ПараметрыЗаписи.Свойство("ОбновитьГруппыДоступаПрофиля") Тогда + ТекущийОбъект.ДополнительныеСвойства.Вставить("ОбновитьГруппыДоступаПрофиля"); + КонецЕсли; + + УправлениеДоступомСлужебный.ПередЗаписьюНаСервереФормыРедактированияРазрешенныхЗначений( + ЭтотОбъект, ТекущийОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + Если ТекущийОбъект.ДополнительныеСвойства.Свойство( + "ПерсональныеГруппыДоступаСОбновленнымНаименованием") Тогда + + ПараметрыЗаписи.Вставить( + "ПерсональныеГруппыДоступаСОбновленнымНаименованием", + ТекущийОбъект.ДополнительныеСвойства.ПерсональныеГруппыДоступаСОбновленнымНаименованием); + КонецЕсли; + + УправлениеДоступомСлужебный.ПослеЗаписиНаСервереФормыРедактированияРазрешенныхЗначений( + ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + + УстановитьДоступностьОписанияИВосстановленияПоставляемогоПрофиля(ТекущийОбъект); + + УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + ОбъектЗаписывался = Истина; + ТребуетсяОбновитьГруппыДоступаПрофиля = Ложь; + + Оповестить("Запись_ПрофилиГруппДоступа", Новый Структура, Объект.Ссылка); + + Если ПараметрыЗаписи.Свойство("ПерсональныеГруппыДоступаСОбновленнымНаименованием") Тогда + ОповеститьОбИзменении(Тип("СправочникСсылка.ГруппыДоступа")); + + Для каждого ПерсональнаяГруппаДоступа Из ПараметрыЗаписи.ПерсональныеГруппыДоступаСОбновленнымНаименованием Цикл + Оповестить("Запись_ГруппыДоступа", Новый Структура, ПерсональнаяГруппаДоступа); + КонецЦикла; + КонецЕсли; + + Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда + ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + Если НЕ ТребуетсяПроверитьЗаполнениеПрофиля Тогда + ПроверяемыеРеквизиты.Очистить(); + Возврат; + КонецЕсли; + + ПроверенныеРеквизитыОбъекта = Новый Массив; + Ошибки = Неопределено; + + // Проверка наличия ролей в метаданных. + ПроверенныеРеквизитыОбъекта.Добавить("Роли.Роль"); + Если Не Элементы.Роли.ТолькоПросмотр Тогда + ЭлементыДерева = Роли.ПолучитьЭлементы(); + Для Каждого Строка Из ЭлементыДерева Цикл + Если Не Строка.Пометка Тогда + Продолжить; + КонецЕсли; + Если Строка.ЭтоНесуществующаяРоль Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Роли[%1].РолиСиноним", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним), + "Роли", + ЭлементыДерева.Индекс(Строка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 не найдена в метаданных.'"), Строка.Синоним, "%1")); + КонецЕсли; + Если Строка.ЭтоНедоступнаяРоль Тогда + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, + "Роли[%1].РолиСиноним", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для назначения профиля.'"), Строка.Синоним), + "Роли", + ЭлементыДерева.Индекс(Строка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для назначения профиля.'"), Строка.Синоним, "%1")); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + // Проверка незаполненных и повторяющихся видов и значений доступа. + УправлениеДоступомСлужебныйКлиентСервер.ОбработкаПроверкиЗаполненияНаСервереФормыРедактированияРазрешенныхЗначений( + ЭтотОбъект, Отказ, ПроверенныеРеквизитыОбъекта, Ошибки); + + ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ); + + ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Объект")); + ТекущийОбъект = РеквизитФормыВЗначение("Объект"); + + ТекущийОбъект.ДополнительныеСвойства.Вставить("ПроверенныеРеквизитыОбъекта", + ПроверенныеРеквизитыОбъекта); + + Если НЕ ТекущийОбъект.ПроверитьЗаполнение() Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЗагрузкеНастроек", Настройки); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыВидыДоступа + +&НаКлиенте +Процедура ВидыДоступаПриИзменении(Элемент) + + ТребуетсяОбновитьГруппыДоступаПрофиля = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПриАктивизацииСтроки(Элемент) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПриАктивизацииСтроки( + ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПередНачаломДобавления( + ЭтотОбъект, Элемент, Отказ, Копирование, Родитель, Группа); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПередУдалением(Элемент, Отказ) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПередУдалением( + ЭтотОбъект, Элемент, Отказ); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПриНачалеРедактирования( + ЭтотОбъект, Элемент, НоваяСтрока, Копирование); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаПриОкончанииРедактирования( + ЭтотОбъект, Элемент, НоваяСтрока, ОтменаРедактирования); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий элемента ВидДоступаПредставление таблицы формы ВидыДоступа. + +&НаКлиенте +Процедура ВидыДоступаВидДоступаПредставлениеПриИзменении(Элемент) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаВидДоступаПредставлениеПриИзменении( + ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаВидДоступаПредставлениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаВидДоступаПредставлениеОбработкаВыбора( + ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий элемента ВсеРазрешеныПредставление таблицы формы ВидыДоступа. + +&НаКлиенте +Процедура ВидыДоступаВсеРазрешеныПредставлениеПриИзменении(Элемент) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаВсеРазрешеныПредставлениеПриИзменении( + ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидыДоступаВсеРазрешеныПредставлениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ВидыДоступаВсеРазрешеныПредставлениеОбработкаВыбора( + ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыЗначенияДоступа + +&НаКлиенте +Процедура ЗначенияДоступаПриИзменении(Элемент) + + УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПриИзменении( + ЭтотОбъект, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияДоступаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + + УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПриНачалеРедактирования( + ЭтотОбъект, Элемент, НоваяСтрока, Копирование); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияДоступаПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПриОкончанииРедактирования( + ЭтотОбъект, Элемент, НоваяСтрока, ОтменаРедактирования); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаНачалоВыбора( + ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОбработкаВыбора( + ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаОчистка(Элемент, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОчистка( + ЭтотОбъект, Элемент, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаАвтоПодбор( + ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначениеДоступаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + + УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОкончаниеВводаТекста( + ЭтотОбъект, Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыРоли + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаКлиенте +Процедура РолиПометкаПриИзменении(Элемент) + + СтрокаТаблицы = Элементы.Роли.ТекущиеДанные; + Если СтрокаТаблицы = Неопределено Тогда + Возврат; + КонецЕсли; + + Если СтрокаТаблицы.Пометка И СтрокаТаблицы.Имя = "ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок" Тогда + Оповещение = Новый ОписаниеОповещения("РолиПометкаПриИзмененииПослеПодтверждения", ЭтотОбъект); + ПараметрыФормы = Новый Структура("Ключ", "ПередВыборомРоли"); + ОткрытьФорму("ОбщаяФорма.ПредупреждениеБезопасности", ПараметрыФормы, , , , , Оповещение); + Иначе + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РолиПометкаПриИзмененииПослеПодтверждения(Ответ, ПараметрыВыполнения) Экспорт + СтрокаТаблицы = Элементы.Роли.ТекущиеДанные; + Если СтрокаТаблицы = Неопределено Тогда + Возврат; + КонецЕсли; + Если Ответ = "Продолжить" Тогда + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей"); + Иначе + СтрокаТаблицы.Пометка = Ложь; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + Записать(Новый Структура("ЗаписатьИЗакрыть")); + +КонецПроцедуры + +&НаКлиенте +Процедура ВосстановитьПоНачальномуЗаполнению(Команда) + + ПоказатьВопрос( + Новый ОписаниеОповещения("ВосстановитьПоНачальномуЗаполнениюПродолжение", ЭтотОбъект), + НСтр("ru = 'Восстановить профиль по содержимому начального заполнения?'"), + РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНеИспользуемыеВидыДоступа(Команда) + + ПоказыватьНеИспользуемыеВидыДоступаНаСервере(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаКлиенте +Процедура ПоказатьТолькоВыбранныеРоли(Команда) + + ОбработатьИнтерфейсРолей("ТолькоВыбранныеРоли"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппировкаРолейПоПодсистемам(Команда) + + ОбработатьИнтерфейсРолей("ГруппировкаПоПодсистемам"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьРоли(Команда) + + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе"); + + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ИсключитьРоли(Команда) + + ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВсе"); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьНазначение(Команда) + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораНазначения", ЭтотОбъект); + ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, НСтр("ru = 'Выбор назначения профиля групп доступа'"),,, ОписаниеОповещения); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Продолжение обработчика события ПередЗаписью. +&НаКлиенте +Процедура ПередЗаписьюПродолжениеОбработчикОжидания() + + ПараметрыЗаписи = ПараметрыЗаписиПередЗаписьюПродолжение; + ПараметрыЗаписиПередЗаписьюПродолжение = Неопределено; + + Если ПроверитьЗаполнение() Тогда + ПоказатьВопрос( + Новый ОписаниеОповещения("ПередЗаписьюПродолжение", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопросаОбновитьГруппыДоступаПрофиля(), + РежимДиалогаВопрос.ДаНетОтмена, + , + КодВозвратаДиалога.Нет); + КонецЕсли; + +КонецПроцедуры + +// Продолжение обработчика события ПередЗаписью. +&НаКлиенте +Процедура ПередЗаписьюПродолжение(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ = КодВозвратаДиалога.Отмена Тогда + Возврат; + КонецЕсли; + + Если Ответ = КодВозвратаДиалога.Да Тогда + ПараметрыЗаписи.Вставить("ОбновитьГруппыДоступаПрофиля"); + КонецЕсли; + + ПараметрыЗаписи.Вставить("ОтветПоОбновлениюГруппДоступаПрофиляПолучен"); + + Записать(ПараметрыЗаписи); + +КонецПроцедуры + +// Продолжение обработчика команды ВосстановитьПоНачальномуЗаполнению. +&НаКлиенте +Процедура ВосстановитьПоНачальномуЗаполнениюПродолжение(Ответ, Контекст) Экспорт + + Если Ответ <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + ПоказатьВопрос( + Новый ОписаниеОповещения("ВосстановитьПоНачальномуЗаполнениюЗавершение", ЭтотОбъект), + ТекстВопросаОбновитьГруппыДоступаПрофиля(), + РежимДиалогаВопрос.ДаНетОтмена, + , + КодВозвратаДиалога.Нет); + +КонецПроцедуры + +// Продолжение обработчика команды ВосстановитьПоНачальномуЗаполнению. +&НаКлиенте +Процедура ВосстановитьПоНачальномуЗаполнениюЗавершение(Ответ, Контекст) Экспорт + + Если Ответ = КодВозвратаДиалога.Отмена Тогда + Возврат; + КонецЕсли; + + Если Модифицированность ИЛИ ОбъектЗаписывался Тогда + РазблокироватьДанныеФормыДляРедактирования(); + КонецЕсли; + + ОбновитьГруппыДоступа = (Ответ = КодВозвратаДиалога.Да); + + ГруппыДоступаПрофиля = Неопределено; + НачальноеЗаполнениеПрофиляГруппДоступа(ОбновитьГруппыДоступа, ГруппыДоступаПрофиля); + + Прочитать(); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + + Если ОбновитьГруппыДоступа Тогда + Текст = + НСтр("ru = 'Профиль ""%1"" восстановлен по содержимому начального заполнения, + |группы доступа профиля обновлены.'"); + Иначе + Текст = + НСтр("ru = 'Профиль ""%1"" восстановлен по содержимому начального заполнения, + |группы доступа профиля не обновлены.'"); + КонецЕсли; + + ПоказатьОповещениеПользователя(НСтр("ru = 'Профиль восстановлен'"), + ПолучитьНавигационнуюСсылку(Объект.Ссылка), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст, Объект.Наименование)); + + Оповестить("Запись_ПрофилиГруппДоступа", Новый Структура, Объект.Ссылка); + + Если ОбновитьГруппыДоступа Тогда + ОповеститьОбИзменении(Тип("СправочникСсылка.ГруппыДоступа")); + + Для каждого ГруппаДоступаПрофиля Из ГруппыДоступаПрофиля Цикл + Оповестить("Запись_ГруппыДоступа", Новый Структура, ГруппаДоступаПрофиля); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПоказыватьНеИспользуемыеВидыДоступаНаСервере() + + УправлениеДоступомСлужебный.ОбновитьОтображениеНеиспользуемыхВидовДоступа(ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьДоступностьОписанияИВосстановленияПоставляемогоПрофиля(ТекущийОбъект = Неопределено) + + Если ТекущийОбъект = Неопределено Тогда + ТекущийОбъект = Объект; + КонецЕсли; + + Если Справочники.ПрофилиГруппДоступа.ЕстьНачальноеЗаполнениеПрофиля(ТекущийОбъект.Ссылка) Тогда + + ОписаниеПоставляемогоПрофиля = + Справочники.ПрофилиГруппДоступа.ПояснениеПоставляемогоПрофиля(ТекущийОбъект.Ссылка); + + Если Справочники.ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен(ТекущийОбъект) Тогда + // Определение прав восстановления по начальному заполнению. + Элементы.ВосстановитьПоНачальномуЗаполнению.Видимость = + Пользователи.ЭтоПолноправныйПользователь(,, Ложь); + + Элементы.ПоставляемыйПрофильИзменен.Видимость = Истина; + Иначе + Элементы.ВосстановитьПоНачальномуЗаполнению.Видимость = Ложь; + Элементы.ПоставляемыйПрофильИзменен.Видимость = Ложь; + КонецЕсли; + + Элементы.Комментарий2.Видимость = Ложь; + Иначе + Элементы.ВосстановитьПоНачальномуЗаполнению.Видимость = Ложь; + Элементы.ОписаниеПоставляемогоПрофиля.Видимость = Ложь; + Элементы.ПоставляемыйПрофильИзменен.Видимость = Ложь; + Элементы.Комментарий1.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ТекстВопросаОбновитьГруппыДоступаПрофиля() + + Возврат + НСтр("ru = 'Обновить группы доступа, использующие этот профиль? + | + |Будут удалены лишние виды доступа с заданными для них + |значениями доступа и добавлены недостающие виды доступа.'"); + +КонецФункции + +&НаКлиенте +Процедура ЗакрытьФорму() + + Закрыть(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Для работы интерфейса ролей. + +&НаСервере +Процедура ОбработатьИнтерфейсРолей(Действие, ОсновнойПараметр = Неопределено) + + ПараметрыДействия = Новый Структура; + ПараметрыДействия.Вставить("ОсновнойПараметр", ОсновнойПараметр); + ПараметрыДействия.Вставить("Форма", ЭтотОбъект); + ПараметрыДействия.Вставить("КоллекцияРолей", КоллекцияРолей); + + ПараметрыДействия.Вставить("СкрытьРольПолныеПрава", + Объект.Ссылка <> Справочники.ПрофилиГруппДоступа.Администратор); + + ПараметрыДействия.Вставить("НазначениеРолей", + УправлениеДоступомСлужебныйКлиентСервер.НазначениеПрофиля(Объект)); + + ПользователиСлужебный.ОбработатьИнтерфейсРолей(Действие, ПараметрыДействия); + +КонецПроцедуры + +&НаСервере +Процедура НачальноеЗаполнениеПрофиляГруппДоступа(Знач ОбновитьГруппыДоступа, ГруппыДоступаПрофиля) + + Справочники.ПрофилиГруппДоступа.ЗаполнитьПоставляемыйПрофиль( + Объект.Ссылка, ОбновитьГруппыДоступа); + + Если Не ОбновитьГруппыДоступа Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Профиль", Объект.Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ГруппыДоступа.Профиль = &Профиль"; + + ГруппыДоступаПрофиля = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораНазначения(Результат, ДополнительныеПараметры) Экспорт + + Если Результат <> Неопределено Тогда + Модифицированность = Истина; + ОбработатьИнтерфейсРолей("ОбновитьДеревоРолей"); + ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Help/ru.html" new file mode 100644 index 00000000..d4d6279a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/Help/ru.html" @@ -0,0 +1,13 @@ + +

Как правило, настройка профилей групп доступа обычно выполняется при внедрении и конфигурировании прикладного решения. Они предназначены для создания готовых подборок разрешенных действий (ролей), содержащих права доступа к объектам программы, и "разрезов" ограничения этих прав (видов доступа), которые предполагается использовать в группах доступа.

+

В ряде случаев предустановленных профилей групп доступа оказывается недостаточно для осуществления требуемой настройки прав доступа пользователей. В таких случаях администратор имеет возможность добавить новые или изменить предустановленные профили групп доступа.

+

С помощью профилей становится возможным:

+
  • задать общий список ролей для некоторой группы пользователей программы. Например, для менеджеров может быть определен профиль групп доступа "Менеджер" с ролями: +
    • Добавление и изменение заказов клиентов, +
    • Чтение нормативно-справочной информации, +
    • ...
  • определить, в разрезе каких видов доступа должен быть предоставлен доступ к отдельным элементам справочников, документов и пр., доступ к которым в целом разрешен с помощью определенного выше списка ролей. Например, в профиле "Менеджер" доступ может быть разрешен (или запрещен) к отдельным заказам клиентов, нормативно-справочной информации и прочим данным программы в разрезе организаций, партнеров, видов хозяйственных операций и других имеющихся в конфигурации видов доступа. Настройка же конкретных значений организаций, партнеров, видов хозяйственных операций и прочих заданных в профиле видов доступа выполняется в соответствующих группах доступа.

Виды доступа и ограничения доступа

+
  • В зависимости от своей специфики, различные роли могут поддерживать или не поддерживать ограничение доступа в разрезе тех или иных видов доступа. Например, роль Добавление и изменение заказов клиентов может ограничивать добавление и изменение заказов клиентов в разрезе организаций и партнеров, а роль Запуск веб-клиента - всегда разрешает запуск веб-клиента независимо ни от чего. +
  • Поэтому при настройке состава видов доступа в профиле необходимо иметь в виду, что в профиле всегда должен задаваться совокупный список видов доступа для всех перечисленных в нем ролей. +
  • Если же какой-либо вид доступа не был указан в профиле, то по нему ограничения не будут применены (как если бы он не использовался в логике ограничения прав в ролях).

Профиль для администрирования программы

+
  • В составе программы имеется предопределенный профиль Администратор, в который включена единственная роль Полные права. Эта роль предоставляет полный доступ к данным программы без каких-либо ограничений. Не рекомендуется добавлять роль Полные права в какие-либо другие профили, так как она автоматически отключает любые другие ограничения доступа (и профиль, содержащий такую роль, "вырождается" в профиль Администратор). +
  • Профиль Администратор используется в предопределенной группе доступа Администраторы. Не рекомендуется создавать другие группы доступа с этим профилем.
\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ManagerModule.bsl" new file mode 100644 index 00000000..79024b63 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ManagerModule.bsl" @@ -0,0 +1,1661 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + НеРедактируемыеРеквизиты = Новый Массив; + НеРедактируемыеРеквизиты.Добавить("ИдентификаторПоставляемыхДанных"); + НеРедактируемыеРеквизиты.Добавить("ПоставляемыйПрофильИзменен"); + НеРедактируемыеРеквизиты.Добавить("ВидыДоступа.*"); + НеРедактируемыеРеквизиты.Добавить("ЗначенияДоступа.*"); + + Возврат НеРедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "ПрисоединитьДополнительныеТаблицы + |ЭтотСписок КАК ПрофилиГруппДоступа + | + |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа + | ПО ГруппыДоступа.Профиль = ПрофилиГруппДоступа.Ссылка + |; + |РазрешитьЧтениеИзменение + |ГДЕ + | ЭтоГруппа + | ИЛИ Ссылка <> Значение(Справочник.ПрофилиГруппДоступа.Администратор) + | И ЭтоАвторизованныйПользователь(ГруппыДоступа.Ответственный)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Подключается в ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриРегистрацииОбработчиковВыгрузкиДанных. +// +// Параметры: +// Контейнер - ОбработкаОбъект.ВыгрузкаЗагрузкаДанныхМенеджерКонтейнера +// МенеджерВыгрузкиОбъекта - ОбработкаОбъект.ВыгрузкаЗагрузкаДанныхМенеджерВыгрузкиДанныхИнформационнойБазы +// Сериализатор - СериализаторXDTO +// Объект - КонстантаМенеджерЗначения +// - СправочникОбъект +// - ДокументОбъект +// - БизнесПроцессОбъект +// - ЗадачаОбъект +// - ПланСчетовОбъект +// - ПланОбменаОбъект +// - ПланВидовХарактеристикОбъект +// - ПланВидовРасчетаОбъект +// - РегистрСведенийНаборЗаписей +// - РегистрНакопленияНаборЗаписей +// - РегистрБухгалтерииНаборЗаписей +// - РегистрРасчетаНаборЗаписей +// - ПоследовательностьНаборЗаписей +// - ПерерасчетНаборЗаписей +// Артефакты - Массив из ОбъектXDTO +// Отказ - Булево +// +Процедура ПередВыгрузкойОбъекта(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ) Экспорт + + УправлениеДоступомСлужебный.ПередВыгрузкойОбъекта(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ); + +КонецПроцедуры + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Процедура Обновляет описание поставляемых профилей в +// параметрах ограничения доступа при изменении конфигурации. +// +// Параметры: +// ЕстьИзменения - Булево - (возвращаемое значение) - если производилась запись, +// устанавливается Истина, иначе не изменяется. +// +Процедура ОбновитьОписаниеПоставляемыхПрофилей(ЕстьИзменения = Неопределено) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПоставляемыеПрофили = ПоставляемыеПрофили(); + + НачатьТранзакцию(); + Попытка + ЕстьТекущиеИзменения = Ложь; + + СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы( + "СтандартныеПодсистемы.УправлениеДоступом.ОписаниеПоставляемыхПрофилей", + ПоставляемыеПрофили, ЕстьТекущиеИзменения); + + СтандартныеПодсистемыСервер.ДобавитьИзмененияПараметраРаботыПрограммы( + "СтандартныеПодсистемы.УправлениеДоступом.ОписаниеПоставляемыхПрофилей", + ?(ЕстьТекущиеИзменения, + Новый ФиксированнаяСтруктура("ЕстьИзменения", Истина), + Новый ФиксированнаяСтруктура()) ); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Процедура Обновляет состав предопределенных профилей в +// параметрах ограничения доступа при изменении конфигурации. +// +// Параметры: +// ЕстьИзменения - Булево - (возвращаемое значение) - если производилась запись, +// устанавливается Истина, иначе не изменяется. +// +Процедура ОбновитьСоставПредопределенныхПрофилей(ЕстьИзменения = Неопределено) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПредопределенныеПрофили = Метаданные.Справочники.ПрофилиГруппДоступа.ПолучитьИменаПредопределенных(); + + НачатьТранзакцию(); + Попытка + ЕстьУдаленные = Ложь; + ЕстьТекущиеИзменения = Ложь; + СтароеЗначение = Неопределено; + + СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы( + "СтандартныеПодсистемы.УправлениеДоступом.ПредопределенныеПрофилиГруппДоступа", + ПредопределенныеПрофили, , СтароеЗначение); + + Если Не ПредопределенныеПрофилиСовпадают(ПредопределенныеПрофили, СтароеЗначение, ЕстьУдаленные) Тогда + ЕстьТекущиеИзменения = Истина; + КонецЕсли; + + СтандартныеПодсистемыСервер.ДобавитьИзмененияПараметраРаботыПрограммы( + "СтандартныеПодсистемы.УправлениеДоступом.ПредопределенныеПрофилиГруппДоступа", + ?(ЕстьУдаленные, + Новый ФиксированнаяСтруктура("ЕстьУдаленные", Истина), + Новый ФиксированнаяСтруктура()) ); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если ЕстьТекущиеИзменения Тогда + ЕстьИзменения = Истина; + КонецЕсли; + +КонецПроцедуры + +// Процедура обновляет поставляемые профили справочника по результату изменения +// описаний поставляемых профилей, сохраненных в параметрах ограничения доступа. +// +Процедура ОбновитьПоставляемыеПрофилиПоИзменениямКонфигурации() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПоследниеИзменения = СтандартныеПодсистемыСервер.ИзмененияПараметраРаботыПрограммы( + "СтандартныеПодсистемы.УправлениеДоступом.ОписаниеПоставляемыхПрофилей"); + + Если ПоследниеИзменения = Неопределено Тогда + ТребуетсяОбновление = Истина; + Иначе + ТребуетсяОбновление = Ложь; + Для каждого ЧастьИзменений Из ПоследниеИзменения Цикл + + Если ТипЗнч(ЧастьИзменений) = Тип("ФиксированнаяСтруктура") + И ЧастьИзменений.Свойство("ЕстьИзменения") + И ТипЗнч(ЧастьИзменений.ЕстьИзменения) = Тип("Булево") Тогда + + Если ЧастьИзменений.ЕстьИзменения Тогда + ТребуетсяОбновление = Истина; + Прервать; + КонецЕсли; + Иначе + ТребуетсяОбновление = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если ТребуетсяОбновление Тогда + ОбновитьПоставляемыеПрофили(); + КонецЕсли; + +КонецПроцедуры + +// Обновляет поставляемые профили, и при необходимости обновляет группы доступа этих профилей. +// Создаются не найденные поставляемые профили групп доступа. +// +// Особенности обновления настраиваются в процедуре ЗаполнитьПоставляемыеПрофилиГруппДоступа +// общего модуля УправлениеДоступомПереопределяемый (см. комментарий к процедуре). +// +// Параметры: +// ЕстьИзменения - Булево - (возвращаемое значение) - если производилась запись, +// устанавливается Истина, иначе не изменяется. +// +Процедура ОбновитьПоставляемыеПрофили(ЕстьИзменения = Неопределено) Экспорт + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); // См. ОписаниеПоставляемыхПрофилей + + ОписанияПрофилей = ПоставляемыеПрофили.ОписанияПрофилейМассив; + ПараметрыОбновления = ПоставляемыеПрофили.ПараметрыОбновления; + ОбновленныеПрофили = Новый Массив; + + ТекущиеПрофили = ТекущиеПрофили(); + + Для Каждого СвойстваПрофиля Из ОписанияПрофилей Цикл + + СтрокаТекущегоПрофиля = ТекущиеПрофили.Найти( + Новый УникальныйИдентификатор(СвойстваПрофиля.Идентификатор), + "ИдентификаторПоставляемыхДанных"); + + ПрофильОбновлен = Ложь; + + Если СтрокаТекущегоПрофиля = Неопределено Тогда + // Создание нового поставляемого профиля. + Если ОбновитьПрофильГруппДоступа(СвойстваПрофиля, Истина) Тогда + ЕстьИзменения = Истина; + КонецЕсли; + Профиль = ПоставляемыйПрофильПоИдентификатору(СвойстваПрофиля.Идентификатор); + + Иначе + СтрокаТекущегоПрофиля.Найден = Истина; + + Профиль = СтрокаТекущегоПрофиля.Ссылка; + Если НЕ СтрокаТекущегоПрофиля.ПоставляемыйПрофильИзменен + ИЛИ ПараметрыОбновления.ОбновлятьИзмененныеПрофили Тогда + // Обновление поставляемого профиля. + ПрофильОбновлен = ОбновитьПрофильГруппДоступа(СвойстваПрофиля, Истина); + КонецЕсли; + КонецЕсли; + + Если ПараметрыОбновления.ОбновлятьГруппыДоступа Тогда + ГруппыДоступаПрофиляОбновлены = Справочники.ГруппыДоступа.ОбновитьГруппыДоступаПрофиля( + Профиль, ПараметрыОбновления.ОбновлятьГруппыДоступаСУстаревшимиНастройками); + + ПрофильОбновлен = ПрофильОбновлен ИЛИ ГруппыДоступаПрофиляОбновлены; + КонецЕсли; + + Если ПрофильОбновлен Тогда + ЕстьИзменения = Истина; + ОбновленныеПрофили.Добавить(Профиль); + КонецЕсли; + КонецЦикла; + + Для Каждого СтрокаТекущегоПрофиля Из ТекущиеПрофили Цикл + Если СтрокаТекущегоПрофиля.Найден Тогда + Продолжить; + КонецЕсли; + Если СтрокаТекущегоПрофиля.ПоставляемыйПрофильИзменен Тогда + Продолжить; + КонецЕсли; + ПрофильОбъект = СтрокаТекущегоПрофиля.Ссылка.ПолучитьОбъект(); + Если ПрофильОбъект.ПометкаУдаления Тогда + Продолжить; + КонецЕсли; + ПрофильОбъект.ПометкаУдаления = Истина; + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПрофильОбъект); + ОбновленныеПрофили.Добавить(ПрофильОбъект.Ссылка); + ЕстьИзменения = Истина; + КонецЦикла; + + ОбновитьВспомогательныеДанныеПрофилей(ОбновленныеПрофили, ЕстьИзменения); + +КонецПроцедуры + +Процедура ОбновитьВспомогательныеДанныеПрофилей(Профили = Неопределено, ЕстьИзменения = Ложь) Экспорт + + Если Профили = Неопределено Тогда + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра( , , ЕстьИзменения); + РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра( , ЕстьИзменения); + УправлениеДоступомСлужебный.ОбновитьРолиПользователей( , , ЕстьИзменения); + + ИначеЕсли Профили.Количество() > 0 Тогда + ГруппыДоступаПрофилей = Справочники.ГруппыДоступа.ГруппыДоступаПрофиля(Профили); + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(ГруппыДоступаПрофилей, , ЕстьИзменения); + РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(ГруппыДоступаПрофилей, ЕстьИзменения); + + // Обновление ролей пользователей. + ПользователиДляОбновления = + Справочники.ГруппыДоступа.ПользователиДляОбновленияРолейПоПрофилю(Профили); + + УправлениеДоступомСлужебный.ОбновитьРолиПользователей(ПользователиДляОбновления, , ЕстьИзменения); + КонецЕсли; + +КонецПроцедуры + +// Параметры: +// ТекущиеДела - см. ТекущиеДелаСервер.ТекущиеДела. +// +Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт + + МодульТекущиеДелаСервер = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСервер"); + Если Не Пользователи.ЭтоПолноправныйПользователь() + Или МодульТекущиеДелаСервер.ДелоОтключено("ПрофилиГруппДоступа") Тогда + Возврат; + КонецЕсли; + + // Процедура вызывается только при наличии подсистемы "Текущие дела", поэтому здесь + // не делается проверка существования подсистемы. + Разделы = МодульТекущиеДелаСервер.РазделыДляОбъекта(Метаданные.Справочники.ПрофилиГруппДоступа.ПолноеИмя()); + + Для Каждого Раздел Из Разделы Цикл + + КоличествоНесовместимыхПрофилейГруппДоступа = НесовместимыеПрофилиГруппДоступа().Количество(); + + ИдентификаторПрофиля = "НеСовместимыСТекущейВерсией" + СтрЗаменить(Раздел.ПолноеИмя(), ".", ""); + Дело = ТекущиеДела.Добавить(); + Дело.Идентификатор = ИдентификаторПрофиля; + Дело.ЕстьДела = КоличествоНесовместимыхПрофилейГруппДоступа > 0; + Дело.Представление = НСтр("ru = 'Не совместимы с текущей версией'"); + Дело.Количество = КоличествоНесовместимыхПрофилейГруппДоступа; + Дело.Владелец = Раздел; + + Дело = ТекущиеДела.Добавить(); + Дело.Идентификатор = "ПрофилиГруппДоступа"; + Дело.ЕстьДела = КоличествоНесовместимыхПрофилейГруппДоступа > 0; + Дело.Важное = Истина; + Дело.Представление = НСтр("ru = 'Профили групп доступа'"); + Дело.Количество = КоличествоНесовместимыхПрофилейГруппДоступа; + Дело.Форма = "Справочник.ПрофилиГруппДоступа.Форма.ФормаСписка"; + Дело.ПараметрыФормы= Новый Структура("ПрофилиСРолямиПомеченнымиНаУдаление", Истина); + Дело.Владелец = ИдентификаторПрофиля; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Возвращает строку уникального идентификатора +// поставляемого и предопределенного профиля Администратор. +// +// Возвращаемое значение: +// Строка - строка уникального идентификатора. +// +Функция ИдентификаторПрофиляАдминистратор() Экспорт + + Возврат "6c4b0307-43a4-4141-9c35-3dd7e9586d41"; + +КонецФункции + +// Возвращает ссылку на поставляемый профиль по идентификатору. +// +// Параметры: +// Идентификатор - Строка - имя или уникальный идентификатор поставляемого профиля. +// ВызыватьИсключениеЕслиНетВБазеДанных - Булево +// +// Возвращаемое значение: +// СправочникСсылка.ПрофилиГруппДоступа +// Неопределено +// +Функция ПоставляемыйПрофильПоИдентификатору(Идентификатор, ВызыватьИсключениеЕслиНетВБазеДанных = Ложь) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); + СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить(Строка(Идентификатор)); // См. СвойстваПоставляемогоПрофиля + + Если СвойстваПрофиля = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Профиль c идентификатором ""%1"" + |не поставляется в программе.'"), + Строка(Идентификатор)); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИдентификаторПоставляемыхДанных", + Новый УникальныйИдентификатор(СвойстваПрофиля.Идентификатор)); + + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных = &ИдентификаторПоставляемыхДанных"; + + Выборка = Запрос.Выполнить().Выбрать(); + + Если Выборка.Следующий() Тогда + Возврат Выборка.Ссылка; + КонецЕсли; + + Если ВызыватьИсключениеЕслиНетВБазеДанных Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Поставляемый профиль с идентификатором ""%1"" + |не существует в программе.'"), + Строка(Идентификатор)); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Возвращает строку уникального идентификатора +// данных поставляемого профиля. +// +// Возвращаемое значение: +// Строка +// Неопределено +// +Функция ИдентификаторПоставляемогоПрофиля(Профиль) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Профиль); + + Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()); + + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.Ссылка = &Ссылка + | И ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных <> &ПустойУникальныйИдентификатор"; + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Возврат Строка(Выборка.ИдентификаторПоставляемыхДанных); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Проверяет изменен ли поставляемый профиль по сравнению с описанием из процедуры. +// УправлениеДоступомПереопределяемый.ЗаполнитьПоставляемыеПрофилиГруппДоступа(). +// +// Параметры: +// Профиль - СправочникСсылка.ПрофилиГруппДоступа +// (возвращается реквизит ПоставляемыйПрофильИзменен), +// - СправочникОбъект.ПрофилиГруппДоступа +// (возвращается результат сравнения заполнения объекта +// с описанием в переопределяемом общем модуле). +// +// Возвращаемое значение: +// Булево +// +Функция ПоставляемыйПрофильИзменен(Профиль) Экспорт + + Если ТипЗнч(Профиль) = Тип("СправочникСсылка.ПрофилиГруппДоступа") Тогда + Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Профиль, "ПоставляемыйПрофильИзменен"); + КонецЕсли; + + ОписанияПрофилей = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей().ОписанияПрофилей; + СвойстваПрофиля = ОписанияПрофилей.Получить(Строка(Профиль.ИдентификаторПоставляемыхДанных)); // См. СвойстваПоставляемогоПрофиля + + Если СвойстваПрофиля = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + ОписаниеРолейПрофиля = ОписаниеРолейПрофиля(СвойстваПрофиля); + + Если ВРег(Профиль.Наименование) <> ВРег(СвойстваПрофиля.Наименование) Тогда + Возврат Истина; + КонецЕсли; + + Если Профиль.Роли.Количество() <> ОписаниеРолейПрофиля.Количество() + ИЛИ Профиль.ВидыДоступа.Количество() <> СвойстваПрофиля.ВидыДоступа.Количество() + ИЛИ Профиль.ЗначенияДоступа.Количество() <> СвойстваПрофиля.ЗначенияДоступа.Количество() + ИЛИ Профиль.Назначение.Количество() <> СвойстваПрофиля.Назначение.Количество() Тогда + Возврат Истина; + КонецЕсли; + + Для каждого Роль Из ОписаниеРолейПрофиля Цикл + МетаданныеРоли = Метаданные.Роли.Найти(Роль); + Если МетаданныеРоли = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В поставляемом профиле ""%1"" + |указана несуществующая роль ""%2"".'"), + СвойстваПрофиля.Наименование, + Роль); + КонецЕсли; + ИдентификаторРоли = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(МетаданныеРоли); + Если Профиль.Роли.НайтиСтроки(Новый Структура("Роль", ИдентификаторРоли)).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Для каждого ОписаниеВидаДоступа Из СвойстваПрофиля.ВидыДоступа Цикл + СвойстваВидаДоступа = УправлениеДоступомСлужебный.СвойстваВидаДоступа(ОписаниеВидаДоступа.Ключ); + Отбор = Новый Структура; + Отбор.Вставить("ВидДоступа", СвойстваВидаДоступа.Ссылка); + Отбор.Вставить("Предустановленный", ОписаниеВидаДоступа.Значение = "Предустановленный"); + Отбор.Вставить("ВсеРазрешены", ОписаниеВидаДоступа.Значение = "ВначалеВсеРазрешены"); + Если Профиль.ВидыДоступа.НайтиСтроки(Отбор).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Для каждого ОписаниеЗначенияДоступа Из СвойстваПрофиля.ЗначенияДоступа Цикл + Отбор = Новый Структура; + Запрос = Новый Запрос(СтрЗаменить("ВЫБРАТЬ Значение(ЗначениеДоступа) КАК Значение", + "ЗначениеДоступа", ОписаниеЗначенияДоступа.ЗначениеДоступа)); + Отбор.Вставить("ЗначениеДоступа", Запрос.Выполнить().Выгрузить()[0].Значение); + Если Профиль.ЗначенияДоступа.НайтиСтроки(Отбор).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Для Каждого ТипПользователей Из СвойстваПрофиля.Назначение Цикл + Отбор = Новый Структура; + Отбор.Вставить("ТипПользователей", ТипПользователей); + Если Профиль.Назначение.НайтиСтроки(Отбор).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +// Определяет наличие начального заполнения для профиля групп доступа в переопределяемом модуле. +// +// Параметры: +// Профиль - СправочникСсылка.ПрофилиГруппДоступа. +// +// Возвращаемое значение: +// Булево +// +Функция ЕстьНачальноеЗаполнениеПрофиля(Знач Профиль) Экспорт + + ИдентификаторПоставляемыхДанных = Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Профиль, "ИдентификаторПоставляемыхДанных")); + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); + СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить(ИдентификаторПоставляемыхДанных); + + Возврат СвойстваПрофиля <> Неопределено; + +КонецФункции + +// Определяет запрет изменения поставляемого профиля. +// Не поставляемый профиль не может иметь запрета изменения. +// +// Параметры: +// Профиль - СправочникОбъект.ПрофилиГруппДоступа, +// ДанныеФормыСтруктура созданные по объекту. +// +// Возвращаемое значение: +// Булево +// +Функция ЗапретИзмененияПрофиля(Знач Профиль) Экспорт + + Если Профиль.ИдентификаторПоставляемыхДанных = + Новый УникальныйИдентификатор(ИдентификаторПрофиляАдминистратор()) Тогда + // Изменение профиля Администратор всегда запрещено. + Возврат Истина; + КонецЕсли; + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); + + СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить( + Строка(Профиль.ИдентификаторПоставляемыхДанных)); + + Возврат СвойстваПрофиля <> Неопределено + И ПоставляемыеПрофили.ПараметрыОбновления.ЗапретитьИзменениеПрофилей; + +КонецФункции + +// Возвращает описание назначения поставляемого профиля. +// +// Параметры: +// Профиль - СправочникСсылка.ПрофилиГруппДоступа. +// +// Возвращаемое значение: +// Строка. +// +Функция ПояснениеПоставляемогоПрофиля(Профиль) Экспорт + + ИдентификаторПоставляемыхДанных = Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Профиль, "ИдентификаторПоставляемыхДанных")); + + ПояснениеПоставляемыхПрофилей = УправлениеДоступомСлужебныйПовтИсп.ПояснениеПоставляемыхПрофилей(); + + Возврат Строка(ПояснениеПоставляемыхПрофилей.Получить(ИдентификаторПоставляемыхДанных)); + +КонецФункции + +// Создает поставляемый профиль в справочнике ПрофилиГруппДоступа, свойственный +// прикладному решению и позволяет перезаполнить ранее созданный поставляемый профиль +// по его поставляемому описанию. +// Поиск начального заполнения осуществляется по строке уникального идентификатора профиля. +// +// Параметры: +// Профиль - СправочникСсылка.ПрофилиГруппДоступа. +// Если для указанного профиля описание начального заполнения найдено, +// содержимое профиля полностью замещается. +// +// ОбновитьГруппыДоступа - Булево - если Истина, виды доступа групп доступа профиля будут обновлены. +// +Процедура ЗаполнитьПоставляемыйПрофиль(Знач Профиль, Знач ОбновитьГруппыДоступа) Экспорт + + ИдентификаторПоставляемыхДанных = Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Профиль, "ИдентификаторПоставляемыхДанных")); + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); + СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить(ИдентификаторПоставляемыхДанных); + + Если СвойстваПрофиля <> Неопределено Тогда + + ОбновитьПрофильГруппДоступа(СвойстваПрофиля); + + Если ОбновитьГруппыДоступа Тогда + Справочники.ГруппыДоступа.ОбновитьГруппыДоступаПрофиля(Профиль, Истина); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Возвращает список ссылок на профили, содержащие недоступные роли или роли помеченные на удаление. +// +// Возвращаемое значение: +// Массив - массив элементов СправочникСсылка.ПрофилиГруппДоступа. +// +Функция НесовместимыеПрофилиГруппДоступа() Экспорт + + Выгрузка = НазначениеИРолиПрофилейГруппаДоступа(); + + НесовместимыеПрофили = Новый Массив; + НедоступныеРолиПоНазначению = Новый Соответствие; + + Для Каждого ОписаниеПрофиля Из Выгрузка Цикл + НазначениеПрофиля = УправлениеДоступомСлужебныйКлиентСервер.НазначениеПрофиля(ОписаниеПрофиля); + НедоступныеРоли = НедоступныеРолиПоНазначению.Получить(НазначениеПрофиля); + Если НедоступныеРоли = Неопределено Тогда + НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеПрофиля); + НедоступныеРолиПоНазначению.Вставить(НазначениеПрофиля, НедоступныеРоли); + КонецЕсли; + + Если ОписаниеПрофиля.Роли.Найти(Неопределено, "Роль") <> Неопределено Тогда + НесовместимыеПрофили.Добавить(ОписаниеПрофиля.Ссылка); + Продолжить; + КонецЕсли; + + ОписаниеРолей = ОбщегоНазначения.ОбъектыМетаданныхПоИдентификаторам( + ОписаниеПрофиля.Роли.ВыгрузитьКолонку("Роль"), Ложь); + + Для Каждого ОписаниеРоли Из ОписаниеРолей Цикл + ОбъектМетаданных = ОписаниеРоли.Значение; // ОбъектМетаданных + Если ОбъектМетаданных = Неопределено Тогда + // Роль, недоступная до перезапуска, не является проблемой. + Продолжить; + КонецЕсли; + + Если ОбъектМетаданных = Null + Или НедоступныеРоли.Получить(ОбъектМетаданных.Имя) <> Неопределено + Или ВРег(Лев(ОбъектМетаданных.Имя, СтрДлина("Удалить"))) = ВРег("Удалить") Тогда + + НесовместимыеПрофили.Добавить(ОписаниеПрофиля.Ссылка); + Прервать; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Возврат НесовместимыеПрофили; + +КонецФункции + +// Смотри также ПоставляемыеПрофили. +// +// Возвращаемое значение: +// ФиксированнаяСтруктура: +// * ОписанияПрофилей - Соответствие из КлючИЗначение: +// ** Ключ - Строка +// ** Значение - см. СвойстваПоставляемогоПрофиля +// * ОписанияПрофилейМассив - Массив из см. СвойстваПоставляемогоПрофиля +// * ПараметрыОбновления - ФиксированнаяСтруктура: +// ** ОбновлятьИзмененныеПрофили - Булево +// ** ЗапретитьИзменениеПрофилей - Булево +// ** ОбновлятьГруппыДоступа - Булево +// ** ОбновлятьГруппыДоступаСУстаревшимиНастройками - Булево +// +Функция ОписаниеПоставляемыхПрофилей() Экспорт + + ПоставляемыеПрофили = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы( + "СтандартныеПодсистемы.УправлениеДоступом.ОписаниеПоставляемыхПрофилей"); + + Если ПоставляемыеПрофили = Неопределено Тогда + ОбновитьОписаниеПоставляемыхПрофилей(); + КонецЕсли; + + ПоставляемыеПрофили = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы( + "СтандартныеПодсистемы.УправлениеДоступом.ОписаниеПоставляемыхПрофилей"); + + Возврат ПоставляемыеПрофили; + +КонецФункции + +Функция ИзменилисьВидыИлиЗначенияДоступаИлиНазначение(СтарыеЗначения, ТекущийОбъект) Экспорт + + Если СтарыеЗначения.Ссылка <> ТекущийОбъект.Ссылка Тогда + Возврат Истина; + КонецЕсли; + + ВидыДоступа = СтарыеЗначения.ВидыДоступа.Выгрузить(); + ЗначенияДоступа = СтарыеЗначения.ЗначенияДоступа.Выгрузить(); + Назначение = СтарыеЗначения.Назначение.Выгрузить(); + + Если ВидыДоступа.Количество() <> ТекущийОбъект.ВидыДоступа.Количество() + Или ЗначенияДоступа.Количество() <> ТекущийОбъект.ЗначенияДоступа.Количество() + Или Назначение.Количество() <> ТекущийОбъект.Назначение.Количество() Тогда + + Возврат Истина; + КонецЕсли; + + Отбор = Новый Структура("ВидДоступа, Предустановленный, ВсеРазрешены"); + Для Каждого Строка Из ТекущийОбъект.ВидыДоступа Цикл + ЗаполнитьЗначенияСвойств(Отбор, Строка); + Если ВидыДоступа.НайтиСтроки(Отбор).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Отбор = Новый Структура("ВидДоступа, ЗначениеДоступа"); + Для Каждого Строка Из ТекущийОбъект.ЗначенияДоступа Цикл + ЗаполнитьЗначенияСвойств(Отбор, Строка); + Если ЗначенияДоступа.НайтиСтроки(Отбор).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Отбор = Новый Структура("ТипПользователей"); + Для Каждого Строка Из ТекущийОбъект.Назначение Цикл + ЗаполнитьЗначенияСвойств(Отбор, Строка); + Если Назначение.НайтиСтроки(Отбор).Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Начальное заполнение + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "Администратор"; + Элемент.Наименование = НСтр("ru = 'Администратор'", ОбщегоНазначения.КодОсновногоЯзыка()); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции для поддержки обмена данными в РИБ. + +// Только для внутреннего использования. +// +// Параметры: +// ЭлементДанных - СправочникОбъект.ПрофилиГруппДоступа +// +Процедура ВосстановитьСоставРолейРасширений(ЭлементДанных) Экспорт + + УдалитьРолиРасширений(ЭлементДанных); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Профиль", ЭлементДанных.Ссылка); + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | РолиПрофилей.Роль КАК Роль + |ИЗ + | Справочник.ПрофилиГруппДоступа.Роли КАК РолиПрофилей + |ГДЕ + | РолиПрофилей.Ссылка = &Профиль + | И ТИПЗНАЧЕНИЯ(РолиПрофилей.Роль) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)"; + + // Добавление ролей расширений к новому состав ролей конфигурации. + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + ЭлементДанных.Роли.Добавить().Роль = Выборка.Роль; + КонецЦикла; + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура УдалитьРолиРасширений(ЭлементДанных) Экспорт + + Индекс = ЭлементДанных.Роли.Количество() - 1; + Пока Индекс >= 0 Цикл + Если ТипЗнч(ЭлементДанных.Роли[Индекс].Роль) <> Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда + ЭлементДанных.Роли.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура УдалитьРолиРасширенийВоВсехПрофиляхГруппДоступа() Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | РолиПрофилей.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПрофилиГруппДоступа.Роли КАК РолиПрофилей + |ГДЕ + | ТИПЗНАЧЕНИЯ(РолиПрофилей.Роль) <> ТИП(Справочник.ИдентификаторыОбъектовМетаданных)"; + + ЕстьИзменения = Ложь; + + // АПК:1328-выкл. См. 648.1.1. Допустимо чтение без предварительной + // управляемой разделяемой блокировки, так как используется только + // для очистки и какой сеанс очистит первым не важно. + Выборка = Запрос.Выполнить().Выбрать(); + // АПК:1328-вкл. + + Пока Выборка.Следующий() Цикл + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ПрофилиГруппДоступа"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + ПрофильОбъект = Выборка.Ссылка.ПолучитьОбъект(); + Если ПрофильОбъект <> Неопределено Тогда + УдалитьРолиРасширений(ПрофильОбъект); + Если ПрофильОбъект.Модифицированность() Тогда + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПрофильОбъект, Ложь); + ЕстьИзменения = Истина; + КонецЕсли; + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЦикла; + + Если ЕстьИзменения Тогда + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(); + КонецЕсли; + +КонецПроцедуры + +// Только для внутреннего использования. +// +// Параметры: +// ЭлементДанных - СправочникОбъект.ПрофилиГруппДоступа +// +Процедура ЗарегистрироватьПрофильИзмененныйПриЗагрузке(ЭлементДанных) Экспорт + + // Регистрация профилей, для групп доступа которых нужно обновить регистры сведений + // ТаблицыГруппДоступа, ЗначенияГруппДоступа и ЗначенияГруппДоступаПоУмолчанию и роли пользователей. + + СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭлементДанных.Ссылка, + "Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа"); + + ТребуетсяРегистрация = Ложь; + Профиль = ЭлементДанных.Ссылка; + + Если ТипЗнч(ЭлементДанных) = Тип("УдалениеОбъекта") Тогда + ТребуетсяРегистрация = Истина; + + ИначеЕсли СтарыеЗначения.Ссылка <> ЭлементДанных.Ссылка Тогда + ТребуетсяРегистрация = Истина; + Профиль = ПользователиСлужебный.СсылкаОбъекта(ЭлементДанных); + + ИначеЕсли СтарыеЗначения.ПометкаУдаления <> ЭлементДанных.ПометкаУдаления + Или ИзменилисьВидыИлиЗначенияДоступаИлиНазначение(СтарыеЗначения, ЭлементДанных) Тогда + + ТребуетсяРегистрация = Истина; + Иначе + СтарыеРоли = СтарыеЗначения.Роли.Выгрузить(); + Если СтарыеРоли.Количество() <> ЭлементДанных.Роли.Количество() Тогда + ТребуетсяРегистрация = Истина; + Иначе + Для Каждого Строка Из ЭлементДанных.Роли Цикл + Если СтарыеРоли.Найти(Строка.Роль, "Роль") = Неопределено Тогда + ТребуетсяРегистрация = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Если Не ТребуетсяРегистрация Тогда + Возврат; + КонецЕсли; + + Справочники.ГруппыДоступа.ЗарегистрироватьСсылки("Профили", Профиль); + +КонецПроцедуры + +// Только для внутреннего использования. +Процедура ОбновитьВспомогательныеДанныеПрофилейИзмененныхПриЗагрузке() Экспорт + + Если ОбщегоНазначения.РазделениеВключено() Тогда + // Изменения профилей в АРМ заблокированы и не загружаются в область данных. + Возврат; + КонецЕсли; + + ИзмененныеПрофили = Справочники.ГруппыДоступа.ЗарегистрированныеСсылки("Профили"); + + Если ИзмененныеПрофили.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Если ИзмененныеПрофили.Количество() = 1 + И ИзмененныеПрофили[0] = Неопределено Тогда + + ОбновитьВспомогательныеДанныеПрофилей(); + Иначе + ОбновитьВспомогательныеДанныеПрофилей(ИзмененныеПрофили); + КонецЕсли; + + Справочники.ГруппыДоступа.ЗарегистрироватьСсылки("Профили", Null); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры и функции. + +Функция ЗаполненныеПоставляемыеПрофили() + + ПараметрыОбновления = Новый Структура; + // Свойства обновления поставляемых профилей. + ПараметрыОбновления.Вставить("ОбновлятьИзмененныеПрофили", Истина); + ПараметрыОбновления.Вставить("ЗапретитьИзменениеПрофилей", Истина); + // Свойства обновления групп доступа поставляемых профилей. + ПараметрыОбновления.Вставить("ОбновлятьГруппыДоступа", Истина); + ПараметрыОбновления.Вставить("ОбновлятьГруппыДоступаСУстаревшимиНастройками", Ложь); + + ОписанияПрофилей = Новый Массив; + + // Описание для заполнения предопределенного профиля "Администратор". + ОписаниеПрофиляАдминистратор = УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа(); + ЗаполнитьПрофильАдминистратор(ОписаниеПрофиляАдминистратор); + + ОписанияПрофилей.Добавить(ОписаниеПрофиляАдминистратор); + + ИнтеграцияПодсистемБСП.ПриЗаполненииПоставляемыхПрофилейГруппДоступа( + ОписанияПрофилей, ПараметрыОбновления); + + УправлениеДоступомПереопределяемый.ПриЗаполненииПоставляемыхПрофилейГруппДоступа( + ОписанияПрофилей, ПараметрыОбновления); + + Если ОписанияПрофилей.Найти(ОписаниеПрофиляАдминистратор) = Неопределено Тогда + ОписанияПрофилей.Добавить(ОписаниеПрофиляАдминистратор); + КонецЕсли; + + ЗаполнитьПрофильАдминистратор(ОписаниеПрофиляАдминистратор, Истина); + + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + ОписанияПрофилей.Добавить( + УправлениеДоступомСлужебный.ОписаниеПрофиляОткрытиеВнешнихОтчетовИОбработок()); + КонецЕсли; + + Возврат Новый Структура("ОписанияПрофилей, ПараметрыОбновления", ОписанияПрофилей, ПараметрыОбновления); + +КонецФункции + +// Для функции ЗаполненныеПоставляемыеПрофили. +// +// Параметры: +// ОписаниеПрофиляАдминистратор - см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа +// +Процедура ЗаполнитьПрофильАдминистратор(ОписаниеПрофиляАдминистратор, КромеОписания = Ложь) + + Если КромеОписания Тогда + Описание = ОписаниеПрофиляАдминистратор.Описание; + Иначе + Описание = + НСтр("ru = 'Предназначен для: + |- настройки параметров работы и обслуживания информационной системы, + |- настройки прав доступа других пользователей, + |- удаления помеченных объектов, + |- в редких случаях для внесения изменений в конфигурацию. + | + |Рекомендуется не использовать для ""обычной"" работы в информационной системе.'"); + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ОписаниеПрофиляАдминистратор, + УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа()); + + ОписаниеПрофиляАдминистратор.Имя = "Администратор"; + ОписаниеПрофиляАдминистратор.Идентификатор = ИдентификаторПрофиляАдминистратор(); + ОписаниеПрофиляАдминистратор.Наименование = НСтр("ru = 'Администратор'", ОбщегоНазначения.КодОсновногоЯзыка()); + ОписаниеПрофиляАдминистратор.Роли.Добавить("АдминистраторСистемы"); + ОписаниеПрофиляАдминистратор.Роли.Добавить("ПолныеПрава"); + ОписаниеПрофиляАдминистратор.Описание = Описание; + +КонецПроцедуры + +// Возвращаемое значение: +// см. ОписаниеПоставляемыхПрофилей +// +Функция ПоставляемыеПрофили() + + ЗаполненныеПоставляемыеПрофили = ЗаполненныеПоставляемыеПрофили(); + ПараметрыОбновления = ЗаполненныеПоставляемыеПрофили.ПараметрыОбновления; + ОписанияПрофилей = ЗаполненныеПоставляемыеПрофили.ОписанияПрофилей; // Массив из см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа - + + ЗаголовокОшибки = + НСтр("ru = 'Заданы недопустимые значения в процедуре ПриЗаполненииПоставляемыхПрофилейГруппДоступа + |общего модуля УправлениеДоступомПереопределяемый.'") + + Символы.ПС + + Символы.ПС; + + Если ПараметрыОбновления.ЗапретитьИзменениеПрофилей + И НЕ ПараметрыОбновления.ОбновлятьИзмененныеПрофили Тогда + + ВызватьИсключение ЗаголовокОшибки + + НСтр("ru = 'Когда в параметре ПараметрыОбновления свойство + |ОбновлятьИзмененныеПрофили установлено Ложь, + |тогда свойство ЗапретитьИзменениеПрофилей тоже + |должно быть установлено Ложь.'"); + КонецЕсли; + + ВсеРоли = ПользователиСлужебный.ВсеРоли().Соответствие; + + СвойстваВидовДоступа = УправлениеДоступомСлужебныйПовтИсп.СвойстваВидовДоступа(); + + // Преобразование описаний в соответствие идентификаторов и + // свойств для хранения и быстрой обработки. + СвойстваПрофилей = Новый Соответствие; + ОписанияПрофилейМассив = Новый Массив; + Для Каждого ОписаниеПрофиля Из ОписанияПрофилей Цикл + ОписаниеПрофиля.Удалить("Описание"); + // Идентификатор профиля. + Если Не ЗначениеЗаполнено(ОписаниеПрофиля.Идентификатор) Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" не заполнено свойство Идентификатор.'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), ОписаниеПрофиля.Имя, ОписаниеПрофиля.Наименование)); + + ИначеЕсли Не СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(ОписаниеПрофиля.Идентификатор) Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" указан некорректный идентификатор: ""%2"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), ОписаниеПрофиля.Имя, ОписаниеПрофиля.Наименование), + ОписаниеПрофиля.Идентификатор); + КонецЕсли; + + СвойстваПрофиля = Новый Структура; + СвойстваПрофиля.Вставить("Имя", ""); + СвойстваПрофиля.Вставить("Идентификатор", ""); + СвойстваПрофиля.Вставить("Наименование", ""); + СвойстваПрофиля.Вставить("Роли", Новый Массив); + ЗаполнитьЗначенияСвойств(СвойстваПрофиля, ОписаниеПрофиля); + + // Назначение профиля. + Если ОписаниеПрофиля.Назначение.Количество() = 0 Тогда + ОписаниеПрофиля.Назначение.Добавить(Тип("СправочникСсылка.Пользователи")); + КонецЕсли; + МассивНазначений = Новый Массив; + Для Каждого Тип Из ОписаниеПрофиля.Назначение Цикл + Если ТипЗнч(Тип) = Тип("ОписаниеТипов") Тогда + Типы = Тип.Типы(); + Иначе + Типы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Тип); + КонецЕсли; + Для Каждого Тип Из Типы Цикл + Если ТипЗнч(Тип) <> Тип("Тип") + Или Не ОбщегоНазначения.ЭтоСсылка(Тип) + Или Не Метаданные.ОпределяемыеТипы.Пользователь.Тип.СодержитТип(Тип) + Или Тип <> Тип("СправочникСсылка.Пользователи") + И Не Метаданные.ОпределяемыеТипы.ВнешнийПользователь.Тип.СодержитТип(Тип) Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |указано недопустимое назначение ""%2 (%3)"". + |Ожидается назначение, как значение типа ""Тип"" для ссылки, + |указанное в определяемом типе Пользователь и + |указанное в определяемом типе ВнешнийПользователь + |(кроме типа СправочникСсылка.Пользователи).'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + Строка(Тип), Строка(ТипЗнч(Тип))); + КонецЕсли; + ОписаниеТипаСсылки = Новый ОписаниеТипов(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Тип)); + Значение = ОписаниеТипаСсылки.ПривестиЗначение(Неопределено); + МассивНазначений.Добавить(Значение); + КонецЦикла; + КонецЦикла; + СвойстваПрофиля.Вставить("Назначение", МассивНазначений); + + // Проверка ролей. + НазначениеПрофиля = УправлениеДоступомСлужебныйКлиентСервер.НазначениеПрофиля(СвойстваПрофиля); + НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеПрофиля, Ложь); + ПроверенныеРоли = Новый Соответствие; + ИндексРоли = ОписаниеПрофиля.Роли.Количество(); + Пока ИндексРоли > 0 Цикл + ИндексРоли = ИндексРоли - 1; + Роль = ОписаниеПрофиля.Роли[ИндексРоли]; + // Проверка наличия ролей в метаданных. + Если ВсеРоли.Получить(Роль) = Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1 (%2)"" + |указана несуществующая роль ""%3"".'"), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор, + Роль); + КонецЕсли; + // Удаление дублей ролей. + Если ПроверенныеРоли.Получить(ВРег(Роль)) <> Неопределено Тогда + ОписаниеПрофиля.Роли.Удалить(ИндексРоли); + Продолжить; + КонецЕсли; + ПроверенныеРоли.Вставить(ВРег(Роль), Истина); + // Проверка соответствия назначения ролей и профиля. + Если НедоступныеРоли.Получить(Роль) <> Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1 (%2)"" + |указана роль ""%3"", + |которая не соответствует назначению профиля: + |""%4"".'"), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор, + Роль, + ПредставлениеНазначенияПрофиля(НазначениеПрофиля)); + КонецЕсли; + КонецЦикла; + Если ОбщегоНазначения.РазделениеВключено() Тогда + // Заполнение списка недоступных ролей в модели сервиса + // для определения необходимости обновления поставляемых профилей. + СвойстваПрофиля.Вставить("РолиНедоступныеВСервисе", + РолиПрофиляНедоступныеВСервисе(ОписаниеПрофиля, НазначениеПрофиля)); + КонецЕсли; + + Если СвойстваПрофилей.Получить(СвойстваПрофиля.Идентификатор) <> Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Профиль с идентификатором ""%1"" уже существует.'"), + СвойстваПрофиля.Идентификатор); + КонецЕсли; + СвойстваПрофилей.Вставить(СвойстваПрофиля.Идентификатор, СвойстваПрофиля); + ОписанияПрофилейМассив.Добавить(СвойстваПрофиля); + Если ЗначениеЗаполнено(СвойстваПрофиля.Имя) Тогда + Если СвойстваПрофилей.Получить(СвойстваПрофиля.Имя) <> Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Профиль с именем ""%1"" уже существует.'"), + СвойстваПрофиля.Имя); + КонецЕсли; + СвойстваПрофилей.Вставить(СвойстваПрофиля.Имя, СвойстваПрофиля); + КонецЕсли; + // Преобразование СпискаЗначений к Соответствию для фиксации. + ВидыДоступа = Новый Соответствие; + Для Каждого ЭлементСписка Из ОписаниеПрофиля.ВидыДоступа Цикл + ИмяВидаДоступа = ЭлементСписка.Значение; + УточнениеВидаДоступа = ЭлементСписка.Представление; + Если СвойстваВидовДоступа.ПоИменам.Получить(ИмяВидаДоступа) = Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |указан несуществующий вид доступа ""%2"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + ИмяВидаДоступа); + КонецЕсли; + + ВидДоступаСоответствуетНазначениюПрофиля = + УправлениеДоступомСлужебныйКлиентСервер.ВидДоступаСоответствуетНазначениюПрофиля( + ИмяВидаДоступа, НазначениеПрофиля); + + Если Не ВидДоступаСоответствуетНазначениюПрофиля Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |указан вид доступа ""%2"" + |который не соответствует назначению профиля: + |""%3"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + ИмяВидаДоступа, + ПредставлениеНазначенияПрофиля(НазначениеПрофиля)); + КонецЕсли; + Если УточнениеВидаДоступа <> "" + И УточнениеВидаДоступа <> "ВначалеВсеЗапрещены" + И УточнениеВидаДоступа <> "Предустановленный" + И УточнениеВидаДоступа <> "ВначалеВсеРазрешены" Тогда + + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |для вида доступа ""%2"" указано неизвестное уточнение ""%3"". + | + |Допустимы только следующие уточнения: + |- ""ВначалеВсеЗапрещены"" или """", + |- ""ВначалеВсеРазрешены"", + |- ""Предустановленный"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + ИмяВидаДоступа, + УточнениеВидаДоступа); + КонецЕсли; + ВидыДоступа.Вставить(ИмяВидаДоступа, УточнениеВидаДоступа); + КонецЦикла; + СвойстваПрофиля.Вставить("ВидыДоступа", ВидыДоступа); + + // Удаление повторяющихся значений. + ЗначенияДоступа = Новый Массив; + ТаблицаЗначенийДоступа = Новый ТаблицаЗначений; + ТаблицаЗначенийДоступа.Колонки.Добавить("ВидДоступа", Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип); + ТаблицаЗначенийДоступа.Колонки.Добавить("ЗначениеДоступа", Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип); + + Для Каждого ЭлементСписка Из ОписаниеПрофиля.ЗначенияДоступа Цикл + Отбор = Новый Структура; + Отбор.Вставить("ВидДоступа", ЭлементСписка.Значение); + Отбор.Вставить("ЗначениеДоступа", ЭлементСписка.Представление); + ВидДоступа = Отбор.ВидДоступа; + ЗначениеДоступа = Отбор.ЗначениеДоступа; + + СвойстваВидаДоступа = СвойстваВидовДоступа.ПоИменам.Получить(ВидДоступа); + Если СвойстваВидаДоступа = Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |указан несуществующий вид доступа ""%2"" + |для значения доступа + |""%3"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + ВидДоступа, + ЗначениеДоступа); + КонецЕсли; + + ОбъектМетаданных = Неопределено; + ПозицияТочки = СтрНайти(ЗначениеДоступа, "."); + Если ПозицияТочки > 0 Тогда + ВидОбъектаМетаданных = Лев(ЗначениеДоступа, ПозицияТочки - 1); + ОстатокСтроки = Сред(ЗначениеДоступа, ПозицияТочки + 1); + ПозицияТочки = СтрНайти(ОстатокСтроки, "."); + Если ПозицияТочки > 0 Тогда + ИмяОбъектаМетаданных = Лев(ОстатокСтроки, ПозицияТочки - 1); + ПолноеИмяОбъектаМетаданных = ВидОбъектаМетаданных + "." + ИмяОбъектаМетаданных; + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных); + КонецЕсли; + КонецЕсли; + + Если ОбъектМетаданных = Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |для вида доступа ""%2"" + |не существует тип указанного значения доступа + |""%3"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + ВидДоступа, + ЗначениеДоступа); + КонецЕсли; + + Попытка + ПустаяСсылкаЗначенияДоступа = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + ПолноеИмяОбъектаМетаданных).ПустаяСсылка(); + Исключение + ПустаяСсылкаЗначенияДоступа = Неопределено; + КонецПопытки; + + Если ПустаяСсылкаЗначенияДоступа = Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |для вида доступа ""%2"" + |указан не ссылочный тип значения доступа + |""%3"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + ВидДоступа, + ЗначениеДоступа); + КонецЕсли; + ТипЗначенияДоступа = ТипЗнч(ПустаяСсылкаЗначенияДоступа); + + СвойстваВидаДоступаПоТипу = СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипЗначенияДоступа); // См. УправлениеДоступомСлужебный.СвойстваВидаДоступа + Если СвойстваВидаДоступаПоТипу = Неопределено + ИЛИ СвойстваВидаДоступаПоТипу.Имя <> ВидДоступа Тогда + + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |указано значение доступа ""%3"" + |типа, который не указан в свойствах вида доступа ""%2"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + ВидДоступа, + ЗначениеДоступа); + КонецЕсли; + + Если ТаблицаЗначенийДоступа.НайтиСтроки(Отбор).Количество() > 0 Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В описании профиля ""%1"" + |для вида доступа ""%2"" + |повторно указано значение доступа + |""%3"".'"), + ?(ЗначениеЗаполнено(ОписаниеПрофиля.Имя), + ОписаниеПрофиля.Имя, + ОписаниеПрофиля.Идентификатор), + ВидДоступа, + ЗначениеДоступа); + КонецЕсли; + ЗначенияДоступа.Добавить(Отбор); + КонецЦикла; + СвойстваПрофиля.Вставить("ЗначенияДоступа", ЗначенияДоступа); + КонецЦикла; + + ПоставляемыеПрофили = Новый Структура; + ПоставляемыеПрофили.Вставить("ПараметрыОбновления", ПараметрыОбновления); + ПоставляемыеПрофили.Вставить("ОписанияПрофилей", СвойстваПрофилей); + ПоставляемыеПрофили.Вставить("ОписанияПрофилейМассив", ОписанияПрофилейМассив); + + Возврат ОбщегоНазначения.ФиксированныеДанные(ПоставляемыеПрофили); + +КонецФункции + +// Возвращает свойства профиля, указанные в переопределяемом модуле, +// преобразованные в фиксированный формат сохранения в базе данных. +// Подробное описание свойств см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа. +// +// Параметры: +// Идентификатор - Строка - имя или идентификатор поставляемого профиля. +// +// Возвращаемое значение: +// ФиксированнаяСтруктура: +// * Имя - Строка +// * Идентификатор - Строка +// * Наименование - Строка +// * Роли - ФиксированныйМассив из Строка +// * Назначение - ФиксированныйМассив из ОпределяемыйТип.Пользователь +// * ВидыДоступа - ФиксированноеСоответствие из КлючИЗначение: +// * Ключ - Строка +// * Значение - Строка +// * ЗначенияДоступа - ФиксированныйМассив из Структура: +// * ВидДоступа - Строка +// * ЗначениеДоступа - Строка +// +// Неопределено - профиль не существует. +// +Функция СвойстваПоставляемогоПрофиля(Идентификатор) Экспорт + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); + + Возврат ПоставляемыеПрофили.ОписанияПрофилей.Получить(Идентификатор); + +КонецФункции + +// Возвращаемое значение: +// ФиксированноеСоответствие из КлючИЗначение: +// * Ключ - Строка - строковый идентификатор поставляемого профиля +// * Значение - Строка - описание поставляемого профиля +// +Функция ПояснениеПоставляемыхПрофилей() Экспорт + + ОписанияПрофилей = ЗаполненныеПоставляемыеПрофили().ОписанияПрофилей; + + ПредставлениеВидовДоступа = Новый Соответствие; + + Для Каждого ОписаниеПрофиля Из ОписанияПрофилей Цикл + ПредставлениеВидовДоступа.Вставить(ОписаниеПрофиля.Идентификатор, ОписаниеПрофиля.Описание); + КонецЦикла; + + Возврат Новый ФиксированноеСоответствие(ПредставлениеВидовДоступа); + +КонецФункции + +// Для процедуры ПоставляемыеПрофили. +Функция ПредставлениеНазначенияПрофиля(НазначениеПрофиля) + + Если НазначениеПрофиля = "СовместноДляПользователейИВнешнихПользователей" Тогда + Возврат НСтр("ru = 'Совместно для пользователей и внешних пользователей'"); + + ИначеЕсли НазначениеПрофиля = "ДляВнешнихПользователей" Тогда + Возврат НСтр("ru = 'Для внешних пользователей'"); + КонецЕсли; + + Возврат НСтр("ru = 'Для пользователей'"); + +КонецФункции + +Функция ПредопределенныеПрофилиСовпадают(НовыеПрофили, СтарыеПрофили, ЕстьУдаленные) + + Если ТипЗнч(НовыеПрофили) <> ТипЗнч(СтарыеПрофили) Тогда + ЕстьУдаленные = Истина; + Возврат Ложь; + КонецЕсли; + + ПредопределенныеПрофилиСовпадают = + НовыеПрофили.Количество() = СтарыеПрофили.Количество(); + + Для Каждого Профиль Из СтарыеПрофили Цикл + Если НовыеПрофили.Найти(Профиль) = Неопределено Тогда + ПредопределенныеПрофилиСовпадают = Ложь; + ЕстьУдаленные = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Возврат ПредопределенныеПрофилиСовпадают; + +КонецФункции + +// Замещает имеющийся или создает новый поставляемый профиль групп доступа по его описанию. +// +// Параметры: +// СвойстваПрофиля - см. СвойстваПоставляемогоПрофиля +// +// Возвращаемое значение: +// Булево - Истина - профиль изменен. +// +Функция ОбновитьПрофильГруппДоступа(СвойстваПрофиля, НеОбновлятьРолиПользователей = Ложь) + + ПрофильИзменен = Ложь; + + ПрофильСсылка = ПоставляемыйПрофильПоИдентификатору(СвойстваПрофиля.Идентификатор); + Если ПрофильСсылка = Неопределено Тогда + + Если ЗначениеЗаполнено(СвойстваПрофиля.Имя) Тогда + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.Ссылка КАК Ссылка, + | ПрофилиГруппДоступа.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.Предопределенный = ИСТИНА"; + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + ИмяПредопределенного = Выборка.ИмяПредопределенныхДанных; + Если ВРег(СвойстваПрофиля.Имя) = ВРег(ИмяПредопределенного) Тогда + ПрофильСсылка = Выборка.Ссылка; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если ПрофильСсылка = Неопределено Тогда + // Поставляемый профиль не существует, нужно создать новый. + ПрофильОбъект = СоздатьЭлемент(); + Иначе + // Поставляемый профиль связан с предопределенным элементом. + ПрофильОбъект = ПрофильСсылка.ПолучитьОбъект(); + КонецЕсли; + + ПрофильОбъект.ИдентификаторПоставляемыхДанных = + Новый УникальныйИдентификатор(СвойстваПрофиля.Идентификатор); + + ПрофильИзменен = Истина; + Иначе + ПрофильОбъект = ПрофильСсылка.ПолучитьОбъект(); + ПрофильИзменен = ПоставляемыйПрофильИзменен(ПрофильОбъект); + КонецЕсли; + + Если ПрофильИзменен Тогда + + Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() + И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + + ЗаблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка, ПрофильОбъект.ВерсияДанных); + КонецЕсли; + + ПрофильОбъект.Наименование = СвойстваПрофиля.Наименование; + + ПрофильОбъект.Роли.Очистить(); + Для каждого Роль Из ОписаниеРолейПрофиля(СвойстваПрофиля) Цикл + МетаданныеРоли = Метаданные.Роли.Найти(Роль); + Если МетаданныеРоли = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При обновлении поставляемого профиля ""%1"" + |обнаружена несуществующая роль ""%2"".'"), + СвойстваПрофиля.Наименование, + Роль); + КонецЕсли; + ПрофильОбъект.Роли.Добавить().Роль = + ОбщегоНазначения.ИдентификаторОбъектаМетаданных(МетаданныеРоли); + КонецЦикла; + + ПрофильОбъект.ВидыДоступа.Очистить(); + Для каждого ОписаниеВидаДоступа Из СвойстваПрофиля.ВидыДоступа Цикл + СвойстваВидаДоступа = УправлениеДоступомСлужебный.СвойстваВидаДоступа(ОписаниеВидаДоступа.Ключ); + Строка = ПрофильОбъект.ВидыДоступа.Добавить(); + Строка.ВидДоступа = СвойстваВидаДоступа.Ссылка; + Строка.Предустановленный = ОписаниеВидаДоступа.Значение = "Предустановленный"; + Строка.ВсеРазрешены = ОписаниеВидаДоступа.Значение = "ВначалеВсеРазрешены"; + КонецЦикла; + + ПрофильОбъект.ЗначенияДоступа.Очистить(); + Для каждого ОписаниеЗначенияДоступа Из СвойстваПрофиля.ЗначенияДоступа Цикл + СвойстваВидаДоступа = УправлениеДоступомСлужебный.СвойстваВидаДоступа(ОписаниеЗначенияДоступа.ВидДоступа); + СтрокаЗначения = ПрофильОбъект.ЗначенияДоступа.Добавить(); + СтрокаЗначения.ВидДоступа = СвойстваВидаДоступа.Ссылка; + Запрос = Новый Запрос(СтрЗаменить("ВЫБРАТЬ Значение(ЗначениеДоступа) КАК Значение", + "ЗначениеДоступа", ОписаниеЗначенияДоступа.ЗначениеДоступа)); + СтрокаЗначения.ЗначениеДоступа = Запрос.Выполнить().Выгрузить()[0].Значение; + КонецЦикла; + + ПрофильОбъект.Назначение.Очистить(); + Для каждого ТипНазначения Из СвойстваПрофиля.Назначение Цикл + СтрокаНазначения = ПрофильОбъект.Назначение.Добавить(); + СтрокаНазначения.ТипПользователей = ТипНазначения; + КонецЦикла; + + Если НеОбновлятьРолиПользователей Тогда + ПрофильОбъект.ДополнительныеСвойства.Вставить("НеОбновлятьРолиПользователей"); + КонецЕсли; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПрофильОбъект); + + Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() + И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + + РазблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка); + КонецЕсли; + + КонецЕсли; + + Возврат ПрофильИзменен; + +КонецФункции + +Функция ОписаниеРолейПрофиля(ОписаниеПрофиля) + + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + Возврат ОписаниеПрофиля.Роли; + КонецЕсли; + + НазначениеПрофиля = УправлениеДоступомСлужебныйКлиентСервер.НазначениеПрофиля(ОписаниеПрофиля); + НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеПрофиля); + + ОписаниеРолейПрофиля = Новый Массив; + + Для Каждого Роль Из ОписаниеПрофиля.Роли Цикл + Если НедоступныеРоли.Получить(Роль) = Неопределено Тогда + ОписаниеРолейПрофиля.Добавить(Роль); + КонецЕсли; + КонецЦикла; + + Возврат Новый ФиксированныйМассив(ОписаниеРолейПрофиля); + +КонецФункции + +Функция РолиПрофиляНедоступныеВСервисе(ОписаниеПрофиля, НазначениеПрофиля) + + НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеПрофиля, Истина); + НедоступныеРолиПрофиля = Новый Соответствие; + + Для Каждого Роль Из ОписаниеПрофиля.Роли Цикл + Если НедоступныеРоли.Получить(Роль) <> Неопределено Тогда + НедоступныеРолиПрофиля.Вставить(Роль, Истина); + КонецЕсли; + КонецЦикла; + + Возврат Новый ФиксированноеСоответствие(НедоступныеРолиПрофиля); + +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * ПоставляемыйПрофильИзменен - Булево +// * ИдентификаторПоставляемыхДанных - УникальныйИдентификатор +// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа +// +Функция ТекущиеПрофили() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()); + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен КАК ПоставляемыйПрофильИзменен, + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных КАК ИдентификаторПоставляемыхДанных, + | ПрофилиГруппДоступа.Ссылка КАК Ссылка, + | ЛОЖЬ КАК Найден + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | НЕ ПрофилиГруппДоступа.ЭтоГруппа + | И ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных <> &ПустойУникальныйИдентификатор"; + ТекущиеПрофили = Запрос.Выполнить().Выгрузить(); + + Возврат ТекущиеПрофили; + +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа +// * Назначение - ТаблицаЗначений: +// ** ТипПользователей - ОпределяемыйТип.Пользователь +// * Роли - ТаблицаЗначений: +// ** Роль - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// +Функция НазначениеИРолиПрофилейГруппаДоступа() + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Профили.Ссылка КАК Ссылка, + | Профили.Назначение.( + | ТипПользователей КАК ТипПользователей + | ) КАК Назначение, + | Профили.Роли.( + | Роль КАК Роль + | ) КАК Роли + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК Профили"; + + Возврат Запрос.Выполнить().Выгрузить(); + +КонецФункции + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ObjectModule.bsl" new file mode 100644 index 00000000..b25a693a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/ObjectModule.bsl" @@ -0,0 +1,436 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +Перем СтарыеЗначения; // см. СтарыеЗначения + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы(); + РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра(); + + СтарыеЗначения = СтарыеЗначения(); + + // Проверка ролей. + РолиАдминистратора = Новый Массив; + РолиАдминистратора.Добавить("Роль.ПолныеПрава"); + РолиАдминистратора.Добавить("Роль.АдминистраторСистемы"); + ИдентификаторыРолей = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(РолиАдминистратора); + ОбработанныеРоли = Новый Соответствие; + Индекс = Роли.Количество(); + Пока Индекс > 0 Цикл + Индекс = Индекс - 1; + Роль = Роли[Индекс].Роль; + Если ОбработанныеРоли.Получить(Роль) <> Неопределено Тогда + Роли.Удалить(Индекс); + Продолжить; + КонецЕсли; + ОбработанныеРоли.Вставить(Роль, Истина); + Если Ссылка = Справочники.ПрофилиГруппДоступа.Администратор Тогда + Продолжить; + КонецЕсли; + Если Роль = ИдентификаторыРолей["Роль.ПолныеПрава"] + Или Роль = ИдентификаторыРолей["Роль.АдминистраторСистемы"] Тогда + + Роли.Удалить(Индекс); + КонецЕсли; + КонецЦикла; + + Если Не ДополнительныеСвойства.Свойство("НеОбновлятьРеквизитПоставляемыйПрофильИзменен") Тогда + ПоставляемыйПрофильИзменен = + Справочники.ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен(ЭтотОбъект); + КонецЕсли; + + // Обновление наименования у персональных групп доступа этого профиля (если есть). + ИнтерфейсУпрощенный = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа(); + Если ИнтерфейсУпрощенный Тогда + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Профиль", Ссылка); + Запрос.УстановитьПараметр("Наименование", Наименование); + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ГруппыДоступа.Профиль = &Профиль + | И ГруппыДоступа.Пользователь <> НЕОПРЕДЕЛЕНО + | И ГруппыДоступа.Пользователь <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) + | И ГруппыДоступа.Пользователь <> ЗНАЧЕНИЕ(Справочник.ВнешниеПользователи.ПустаяСсылка) + | И ГруппыДоступа.Наименование <> &Наименование"; + + НачатьТранзакцию(); + Попытка + ИзмененныеГруппыДоступа = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); // Массив из СправочникСсылка.ПрофилиГруппДоступа + + Если ИзмененныеГруппыДоступа.Количество() > 0 Тогда + Блокировка = Новый БлокировкаДанных; + Для каждого ГруппаДоступаСсылка Из ИзмененныеГруппыДоступа Цикл + ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыДоступа"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ГруппаДоступаСсылка); + КонецЦикла; + Блокировка.Заблокировать(); + + Для каждого ГруппаДоступаСсылка Из ИзмененныеГруппыДоступа Цикл + ПерсональнаяГруппаДоступаОбъект = ГруппаДоступаСсылка.ПолучитьОбъект(); + ПерсональнаяГруппаДоступаОбъект.Наименование = Наименование; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ПерсональнаяГруппаДоступаОбъект); + КонецЦикла; + ДополнительныеСвойства.Вставить("ПерсональныеГруппыДоступаСОбновленнымНаименованием", ИзмененныеГруппыДоступа); + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + ПроверитьОднозначностьПоставляемыхДанных(); + + // При установке пометки удаления нужно установить пометку удаления у групп доступа профиля. + Если ПометкаУдаления И СтарыеЗначения.ПометкаУдаления = Ложь Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Профиль", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | (НЕ ГруппыДоступа.ПометкаУдаления) + | И ГруппыДоступа.Профиль = &Профиль"; + + НачатьТранзакцию(); + Попытка + ИзмененныеГруппыДоступа = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + Если ИзмененныеГруппыДоступа.Количество() > 0 Тогда + Блокировка = Новый БлокировкаДанных; + Для каждого ГруппаДоступаСсылка Из ИзмененныеГруппыДоступа Цикл + ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыДоступа"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ГруппаДоступаСсылка); + ЗаблокироватьДанныеДляРедактирования(ГруппаДоступаСсылка); + КонецЦикла; + Блокировка.Заблокировать(); + + Для каждого ГруппаДоступаСсылка Из ИзмененныеГруппыДоступа Цикл + ГруппаДоступаОбъект = ГруппаДоступаСсылка.ПолучитьОбъект(); + ГруппаДоступаОбъект.ПометкаУдаления = Истина; + ГруппаДоступаОбъект.Записать(); + КонецЦикла; + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЕсли; + + Если ДополнительныеСвойства.Свойство("ОбновитьГруппыДоступаПрофиля") Тогда + Справочники.ГруппыДоступа.ОбновитьГруппыДоступаПрофиля(Ссылка, Истина); + КонецЕсли; + + ИзмененияСоставаТаблицПриИзмененииРолей = ОбновитьРолиПользователейПриИзмененииРолейПрофиля(); + + Если ИзмененияСоставаТаблицПриИзмененииРолей.Количество() > 0 Тогда + ГруппыДоступаПрофиля = Справочники.ГруппыДоступа.ГруппыДоступаПрофиля(Ссылка); + РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(ГруппыДоступаПрофиля, + ИзмененияСоставаТаблицПриИзмененииРолей); + КонецЕсли; + + Если Справочники.ПрофилиГруппДоступа.ИзменилисьВидыИлиЗначенияДоступаИлиНазначение(СтарыеЗначения, ЭтотОбъект) + Или ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления Тогда + + Если ГруппыДоступаПрофиля = Неопределено Тогда + ГруппыДоступаПрофиля = Справочники.ГруппыДоступа.ГруппыДоступаПрофиля(Ссылка); + КонецЕсли; + РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(ГруппыДоступаПрофиля); + КонецЕсли; + + Справочники.ПрофилиГруппДоступа.ОбновитьВспомогательныеДанныеПрофилейИзмененныхПриЗагрузке(); + Справочники.ГруппыДоступа.ОбновитьВспомогательныеДанныеГруппДоступаИзмененныхПриЗагрузке(); + Справочники.ГруппыДоступа.ОбновитьРолиПользователейИзмененныхПриЗагрузке(); + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + Если ДополнительныеСвойства.Свойство("ПроверенныеРеквизитыОбъекта") Тогда + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива( + ПроверяемыеРеквизиты, ДополнительныеСвойства.ПроверенныеРеквизитыОбъекта); + КонецЕсли; + + ПроверитьОднозначностьПоставляемыхДанных(Истина, Отказ); + +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + Если ОбъектКопирования.Ссылка = Справочники.ПрофилиГруппДоступа.Администратор Тогда + Роли.Очистить(); + КонецЕсли; + + ИдентификаторПоставляемыхДанных = Неопределено; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры и функции. + +Функция ОбновитьРолиПользователейПриИзмененииРолейПрофиля() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Профиль", Ссылка); + Запрос.УстановитьПараметр("СтарыеРолиПрофиля", ?(Ссылка = СтарыеЗначения.Ссылка, + СтарыеЗначения.Роли.Выгрузить(), Роли.Выгрузить(Новый Массив))); + + Запрос.Текст = + "ВЫБРАТЬ + | СтарыеРолиПрофиля.Роль + |ПОМЕСТИТЬ СтарыеРолиПрофиля + |ИЗ + | &СтарыеРолиПрофиля КАК СтарыеРолиПрофиля + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | Данные.Роль + |ПОМЕСТИТЬ ИзмененныеРоли + |ИЗ + | (ВЫБРАТЬ + | СтарыеРолиПрофиля.Роль КАК Роль, + | -1 КАК ВидИзмененияСтроки + | ИЗ + | СтарыеРолиПрофиля КАК СтарыеРолиПрофиля + | + | ОБЪЕДИНИТЬ ВСЕ + | + | ВЫБРАТЬ РАЗЛИЧНЫЕ + | НовыеРолиПрофиля.Роль, + | 1 + | ИЗ + | Справочник.ПрофилиГруппДоступа.Роли КАК НовыеРолиПрофиля + | ГДЕ + | НовыеРолиПрофиля.Ссылка = &Профиль) КАК Данные + | + |СГРУППИРОВАТЬ ПО + | Данные.Роль + | + |ИМЕЮЩИЕ + | СУММА(Данные.ВидИзмененияСтроки) <> 0 + | + |ИНДЕКСИРОВАТЬ ПО + | Данные.Роль"; + + ТекстЗапроса = + "ВЫБРАТЬ + | ПраваРолейРасширений.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваРолейРасширений.Роль КАК Роль, + | ПраваРолейРасширений.Добавление КАК Добавление, + | ПраваРолейРасширений.Изменение КАК Изменение, + | ПраваРолейРасширений.ЧтениеБезОграничения КАК ЧтениеБезОграничения, + | ПраваРолейРасширений.ДобавлениеБезОграничения КАК ДобавлениеБезОграничения, + | ПраваРолейРасширений.ИзменениеБезОграничения КАК ИзменениеБезОграничения, + | ПраваРолейРасширений.Просмотр КАК Просмотр, + | ПраваРолейРасширений.ИнтерактивноеДобавление КАК ИнтерактивноеДобавление, + | ПраваРолейРасширений.Редактирование КАК Редактирование, + | ПраваРолейРасширений.ВидИзмененияСтроки КАК ВидИзмененияСтроки + |ПОМЕСТИТЬ ПраваРолейРасширений + |ИЗ + | &ПраваРолейРасширений КАК ПраваРолейРасширений + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваРолейРасширений.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваРолейРасширений.Роль КАК Роль, + | ПраваРолейРасширений.Добавление КАК Добавление, + | ПраваРолейРасширений.Изменение КАК Изменение, + | ПраваРолейРасширений.ЧтениеБезОграничения КАК ЧтениеБезОграничения, + | ПраваРолейРасширений.ДобавлениеБезОграничения КАК ДобавлениеБезОграничения, + | ПраваРолейРасширений.ИзменениеБезОграничения КАК ИзменениеБезОграничения, + | ПраваРолейРасширений.Просмотр КАК Просмотр, + | ПраваРолейРасширений.ИнтерактивноеДобавление КАК ИнтерактивноеДобавление, + | ПраваРолейРасширений.Редактирование КАК Редактирование + |ПОМЕСТИТЬ ПраваРолей + |ИЗ + | ПраваРолейРасширений КАК ПраваРолейРасширений + |ГДЕ + | ПраваРолейРасширений.ВидИзмененияСтроки = 1 + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ПраваРолей.ОбъектМетаданных, + | ПраваРолей.Роль, + | ПраваРолей.Добавление, + | ПраваРолей.Изменение, + | ПраваРолей.ЧтениеБезОграничения, + | ПраваРолей.ДобавлениеБезОграничения, + | ПраваРолей.ИзменениеБезОграничения, + | ПраваРолей.Просмотр, + | ПраваРолей.ИнтерактивноеДобавление, + | ПраваРолей.Редактирование + |ИЗ + | РегистрСведений.ПраваРолей КАК ПраваРолей + | ЛЕВОЕ СОЕДИНЕНИЕ ПраваРолейРасширений КАК ПраваРолейРасширений + | ПО ПраваРолей.ОбъектМетаданных = ПраваРолейРасширений.ОбъектМетаданных + | И ПраваРолей.Роль = ПраваРолейРасширений.Роль + |ГДЕ + | ПраваРолейРасширений.ОбъектМетаданных ЕСТЬ NULL + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ПраваРолей.ОбъектМетаданных + |ИЗ + | ПраваРолей КАК ПраваРолей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИзмененныеРоли КАК ИзмененныеРоли + | ПО ПраваРолей.Роль = ИзмененныеРоли.Роль"; + + Запрос.Текст = Запрос.Текст + " + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |" + ТекстЗапроса; + + Запрос.УстановитьПараметр("ПраваРолейРасширений", УправлениеДоступомСлужебный.ПраваРолейРасширений()); + РезультатыЗапросов = Запрос.ВыполнитьПакет(); + + Если НЕ ДополнительныеСвойства.Свойство("НеОбновлятьРолиПользователей") + И НЕ РезультатыЗапросов[1].Пустой() Тогда + + ПользователиДляОбновленияРолей = Справочники.ГруппыДоступа.ПользователиДляОбновленияРолейПоПрофилю(Ссылка); + УправлениеДоступом.ОбновитьРолиПользователей(ПользователиДляОбновленияРолей); + КонецЕсли; + + Возврат РезультатыЗапросов[4].Выгрузить().ВыгрузитьКолонку("ОбъектМетаданных"); + +КонецФункции + +Процедура ПроверитьОднозначностьПоставляемыхДанных(ПроверкаЗаполнения = Ложь, Отказ = Ложь) + + // Проверка однозначности поставляемых данных. + Если Не ЗначениеЗаполнено(ИдентификаторПоставляемыхДанных) Тогда + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИдентификаторПоставляемыхДанных", ИдентификаторПоставляемыхДанных); + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.Ссылка КАК Ссылка, + | ПрофилиГруппДоступа.Наименование КАК Наименование + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных = &ИдентификаторПоставляемыхДанных"; + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Количество() > 1 Тогда + + КраткоеПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при записи профиля ""%1"". + |Поставляемый профиль уже существует:'"), + Наименование); + + ПодробноеПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при записи профиля ""%1"". + |Идентификатор поставляемых данных ""%2"" уже используется в профиле:'"), + Наименование, + Строка(ИдентификаторПоставляемыхДанных)); + + Пока Выборка.Следующий() Цикл + Если Выборка.Ссылка <> Ссылка Тогда + + КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки + + Символы.ПС + """" + Выборка.Наименование + """."; + + ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки + + Символы.ПС + """" + Выборка.Наименование + """ (" + + Строка(Выборка.Ссылка.УникальныйИдентификатор())+ ")." + КонецЕсли; + КонецЦикла; + + Если ПроверкаЗаполнения Тогда + ОбщегоНазначения.СообщитьПользователю(КраткоеПредставлениеОшибки,,,, Отказ); + Иначе + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Управление доступом.Нарушение однозначности поставляемого профиля'", + ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Значения некоторых реквизитов и табличных частей профиля +// до его изменения для использования в обработчике события ПриЗаписи. +// +// Возвращаемое значение: +// Структура: +// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа +// * ПометкаУдаления - Булево +// * Роли - РезультатЗапроса +// * Назначение - РезультатЗапроса +// * ВидыДоступа - РезультатЗапроса +// * ЗначенияДоступа - РезультатЗапроса +// +Функция СтарыеЗначения() + + Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, + "Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа"); + +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" new file mode 100644 index 00000000..1ad089b8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\223\321\200\321\203\320\277\320\277\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" @@ -0,0 +1,503 @@ + + + + + + + + + + ПрофилиГруппДоступа + + ru + Профили групп доступа + + true + Catalog.ПрофилиГруппДоступа.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа (папка) + + + ru + Группа (папка), объединяющая профили для удобства поиска + + true + + Catalog.ПрофилиГруппДоступа.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование профиля групп доступа + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Профиль групп доступа + + true + 2 + true + 150 + String + AsDescription + + + Администратор + Администратор + + + + + + InDialog + BothWays + Catalog.ПрофилиГруппДоступа.Form.ФормаЭлемента + Catalog.ПрофилиГруппДоступа.Form.ФормаГруппы + Catalog.ПрофилиГруппДоступа.Form.ФормаСписка + Catalog.ПрофилиГруппДоступа.Form.ФормаСписка + Catalog.ПрофилиГруппДоступа.Form.ФормаВыбораГруппы + + ИдентификаторПоставляемыхДанных + + ru + Идентификатор поставляемых данных + + + UUID + + + ru + Для профилей, поставляемых в составе конфигурации, содержит идентификатор по которому можно найти описание поставляемого профиля. + + + + + Index + Use + + + ПоставляемыйПрофильИзменен + + ru + Поставляемый профиль изменен + + + Boolean + + + ru + Флажок установлен Истина, когда профиль групп доступа является поставляемым и был изменен администратором по сравнению с поставкой + + + + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Произвольная строка + + true + + + + + + Use + Use + + + + + + + Роли + + ru + Роли + + + Use + LineNumber + + Use + + + + + Роль + + ru + Роль + + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Разрешенное действие (роль), заданное для профиля групп доступа + + + + ShowError + Use + Index + Use + + + + + + + + ВидыДоступа + + ru + Виды доступа + + + Use + LineNumber + + Use + + + + + ВидДоступа + + ru + Вид доступа + + Представлен пустой ссылкой основного типа значений + + DefinedType.ЗначениеДоступа + + + ru + Возможный "разрез" ограничения прав доступа +в заданном списке разрешенных действий (ролей) + + + + Use + Index + Use + + + Предустановленный + + ru + Предустановленный + + + Boolean + + + ru + Доступ по предустановленному +виду запрещен, +разрешенные значения +задаются в профиле, +а не в группах доступа + + + + Use + Use + + + ВсеРазрешены + + ru + Все разрешены + + + Boolean + + + ru + Способ определения разрешенных значений доступа + + + + Use + Use + + + + + + + + ЗначенияДоступа + + ru + Значения доступа + + + Use + LineNumber + + Use + + + + + ВидДоступа + + ru + Вид доступа + + Представлен пустой ссылкой основного типа значений + + DefinedType.ЗначениеДоступа + + + ru + Предустановленный вид доступа, по которому задано предустановленное значение доступа + + + + Use + Index + Use + + + ЗначениеДоступа + + ru + Значение доступа + + + DefinedType.ЗначениеДоступа + + + ru + Предустановленное разрешенное или запрещенное значение доступа. + + + + Use + Index + Use + + + ВключаяНижестоящие + + ru + Включая нижестоящие + + + Boolean + + + + Use + Use + + + + + + + + Назначение + + ru + Назначение + + ShowError + + Use + LineNumber + + Use + + + + + ТипПользователей + + ru + Тип пользователей + + + DefinedType.Пользователь + + + ru + Пустая ссылка на допустимый тип объектов авторизации + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаВыбораГруппы + + ru + Форма выбора группы + + + + ru + + + PersonalComputer + MobileDevice + + + ГруппыДоступа + + ru + Группы доступа + + FormNavigationPanelGoTo + + CatalogRef.ПрофилиГруппДоступа + + Auto + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..4aed9a24 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,442 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Код + 19 + true + true + + true + + + + Список.Code + + + + КодРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 20 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Наименование + 16 + true + true + + true + + + + Список.Description + + + true + + НаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 22 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 23 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + + <key>ru</key> + <value>Список</value> + + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ПрофилиКлючевыхОпераций + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..8bd00cb3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,440 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Код + 22 + true + true + + true + + + + Список.Code + + + + КодРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 23 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Наименование + 16 + true + true + + true + + + + Список.Description + + + true + + НаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 25 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 26 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + true + true + Vertical + true + true + true + true + true + + Список + + <key>ru</key> + <value>Список</value> + + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.ПрофилиКлючевыхОпераций + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..3d8ab667 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,695 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + + + + КлючевыеОперацииПрофиля + 6 + + <key>ru</key> + <value>Ключевые операции профиля</value> + + true + true + + true + + + Объект.КлючевыеОперацииПрофиля + + None + + КлючевыеОперацииПрофиляКлючеваяОперация + 59 + true + true + + true + + + + Объект.КлючевыеОперацииПрофиля.КлючеваяОперация + + + + КлючевыеОперацииПрофиляКлючеваяОперацияРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + КлючевыеОперацииПрофиляКлючеваяОперацияКонтекстноеМеню + 60 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + КлючевыеОперацииПрофиляЦелевоеВремя + 28 + true + true + + true + + + + Объект.КлючевыеОперацииПрофиля.ЦелевоеВремя + + + + КлючевыеОперацииПрофиляЦелевоеВремяРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + + КлючевыеОперацииПрофиляЦелевоеВремяКонтекстноеМеню + 29 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + КлючевыеОперацииПрофиляВажность + 31 + true + true + + true + + + + Объект.КлючевыеОперацииПрофиля.Приоритет + + + + КлючевыеОперацииПрофиляВажностьРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + + КлючевыеОперацииПрофиляВажностьКонтекстноеМеню + 32 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + КлючевыеОперацииПрофиляКоманднаяПанель + 8 + + КлючевыеОперацииПрофиляСортироватьСписокПоВозрастанию + 37 + true + true + + true + + + КлючевыеОперацииПрофиляСортироватьСписокПоВозрастаниюРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + Form.Item.КлючевыеОперацииПрофиля.StandardCommand.SortListAsc + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КлючевыеОперацииПрофиляСортироватьСписокПоУбыванию + 39 + true + true + + true + + + КлючевыеОперацииПрофиляСортироватьСписокПоУбываниюРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + Form.Item.КлючевыеОперацииПрофиля.StandardCommand.SortListDesc + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КлючевыеОперацииПрофиляЗаполнить + 62 + true + true + + true + + + КлючевыеОперацииПрофиляЗаполнитьРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Заполнить + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + true + true + + true + + КлючевыеОперацииПрофиляСтрокаПоиска + 10 + + КлючевыеОперацииПрофиляСтрокаПоискаРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + КлючевыеОперацииПрофиляСтрокаПоискаКонтекстноеМеню + 11 + true + true + + true + + true + + + true + + + + true + true + + true + + КлючевыеОперацииПрофиляСостояниеПросмотра + 13 + + КлючевыеОперацииПрофиляСостояниеПросмотраРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + КлючевыеОперацииПрофиляСостояниеПросмотраКонтекстноеМеню + 14 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + КлючевыеОперацииПрофиляУправлениеПоиском + 16 + + КлючевыеОперацииПрофиляУправлениеПоискомРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + КлючевыеОперацииПрофиляУправлениеПоискомКонтекстноеМеню + 17 + true + true + + true + + true + + SearchControlAddition + + true + + + + КлючевыеОперацииПрофиляРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + КлючевыеОперацииПрофиляКонтекстноеМеню + 7 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ + ФормаКоманднаяПанель + -1 + + ФормаСохранитьПрофильКлючевыхОпераций + 49 + true + true + + true + + + ФормаСохранитьПрофильКлючевыхОперацийРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьПрофильКлючевыхОпераций + Auto + true + true + UserCmds + Auto + + + ФормаЗагрузитьПрофильКлючевыхОпераций + 4 + true + true + + true + + + ФормаЗагрузитьПрофильКлючевыхОперацийРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗагрузитьПрофильКлючевыхОпераций + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ПрофилиКлючевыхОпераций + + + true + + + true + +
true
+ true + + + Объект.КлючевыеОперацииПрофиля + + +
+ + ЕстьБазоваяФункциональность + 2 + + Boolean + + + true + + + true + + + + ЗаданВопросОбУстановкеРасширения + 3 + + Boolean + + + true + + + true + + + + ЗагрузитьПрофильКлючевыхОпераций + + <key>ru</key> + <value>Загрузить профиль</value> + + 1 + + ru + Загрузить профиль ключевых операций + + + true + + + StdPicture.LoadReportSettings + + + + ЗагрузитьПрофильКлючевыхОпераций + + + TextPicture + DontUse + + + СохранитьПрофильКлючевыхОпераций + + <key>ru</key> + <value>Сохранить профиль</value> + + 3 + + ru + Сохранить профиль ключевых операций + + + true + + + StdPicture.Write + + + + СохранитьПрофильКлючевыхОпераций + + + TextPicture + DontUse + + + Заполнить + + <key>ru</key> + <value>Заполнить</value> + + 5 + + ru + Заполнить + + + true + + + + Заполнить + + + DontUse + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..aa8c7db6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,18 @@ + +

Для дальнейшей оценки производительности программы необходимо заполнить профиль ключевых операций.

+

Создание нового профиля

+

Загрузка имеющегося профиля

+
  • Нажмите кнопку Загрузить профиль. С помощью кнопки можно воспользоваться ранее сохраненным профилем или полученным в файле. +
  • Укажите путь к профилю на компьютере. После этого указанный профиль будет загружен. Поле Наименование будет заполнено из ранее сохраненного профиля.

Заполнение профиля

+
  • Нажмите кнопку Заполнить. +
  • После этого все ключевые операции из списка ключевых операций переносятся автоматически. +
  • При этом по умолчанию заполняются поля Целевое время (значением 1.00) и Приоритет (значением 5).

Ввод ключевых операций

+
  • Нажмите кнопку Добавить. Выберите ключевую операцию из списка. +
  • Заполните поля Целевое время (например, 1.00) и Приоритет (например, 5).

Сохранение профиля

+
  • Нажмите кнопку Сохранить профиль. Укажите путь для сохранения файла на компьютер.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..ce232613 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,295 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ЕстьБазоваяФункциональность = ОценкаПроизводительностиСлужебный.ПодсистемаСуществует("СтандартныеПодсистемы.БазоваяФункциональность"); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗагрузитьПрофильКлючевыхОпераций(Команда) + + Если ЕстьБазоваяФункциональность Тогда + МодульФайловаяСистемаКлиент = Вычислить("ФайловаяСистемаКлиент"); + Если ТипЗнч(МодульФайловаяСистемаКлиент) = Тип("ОбщийМодуль") Тогда + ПараметрыЗагрузки = МодульФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл профиля ключевых операций'"); + ПараметрыЗагрузки.Диалог.Фильтр = "Файлы профиля ключевых операций (*.xml)|*.xml"; + + ОписаниеОповещения = Новый ОписаниеОповещения("ДиалогВыбораФайлаЗавершение", ЭтотОбъект, Неопределено); + МодульФайловаяСистемаКлиент.ЗагрузитьФайл(ОписаниеОповещения, ПараметрыЗагрузки); + КонецЕсли; + Иначе + ДополнительныеПараметры = Новый Структура("Режим, Заголовок, ОповещениеОЗакрытии", + РежимДиалогаВыбораФайла.Открытие, + НСтр("ru = 'Выберите файл профиля ключевых операций'"), + Новый ОписаниеОповещения("ДиалогВыбораФайлаЗавершение", ЭтотОбъект, Неопределено)); + #Если ВебКлиент Тогда + Оповещение = Новый ОписаниеОповещения("НачатьПодключениеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект, + Новый ОписаниеОповещения("ДиалогВыбораФайлаПоказать", ЭтотОбъект, ДополнительныеПараметры)); + НачатьПодключениеРасширенияРаботыСФайлами(Оповещение); + #Иначе + ДиалогВыбораФайлаПоказать(Истина, ДополнительныеПараметры); + #КонецЕсли + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьПрофильКлючевыхОпераций(Команда) + + Если ЕстьБазоваяФункциональность Тогда + МодульФайловаяСистемаКлиент = Вычислить("ФайловаяСистемаКлиент"); + Если ТипЗнч(МодульФайловаяСистемаКлиент) = Тип("ОбщийМодуль") Тогда + ПараметрыСохранения = МодульФайловаяСистемаКлиент.ПараметрыСохраненияФайла(); + ПараметрыСохранения.Диалог.Заголовок = НСтр("ru = 'Сохранить профиль ключевых операций в файл'"); + ПараметрыСохранения.Диалог.Фильтр = "Файлы профиля ключевых операций (*.xml)|*.xml"; + МодульФайловаяСистемаКлиент.СохранитьФайл(Новый ОписаниеОповещения("ДиалогСохраненияФайлаЗавершение", ЭтотОбъект, Неопределено), СохранитьПрофильКлючевыхОперацийНаСервере(), , ПараметрыСохранения); + КонецЕсли; + Иначе + ДополнительныеПараметры = Новый Структура("Режим, Заголовок, ОповещениеОЗакрытии", + РежимДиалогаВыбораФайла.Сохранение, + НСтр("ru = 'Сохранить профиль ключевых операций в файл'"), + Новый ОписаниеОповещения("ДиалогСохраненияФайлаЗавершение", ЭтотОбъект, Неопределено)); + #Если ВебКлиент Тогда + Оповещение = Новый ОписаниеОповещения("НачатьПодключениеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект, + Новый ОписаниеОповещения("ДиалогВыбораФайлаПоказать", ЭтотОбъект, ДополнительныеПараметры)); + НачатьПодключениеРасширенияРаботыСФайлами(Оповещение); + #Иначе + ДиалогВыбораФайлаПоказать(Истина, ДополнительныеПараметры); + #КонецЕсли + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Заполнить(Команда) + ЗаполнитьНаСервере(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ДиалогВыбораФайлаПоказать(Результат, ДополнительныеПараметры) Экспорт + Если Результат Тогда + ДиалогВыбора = Новый ДиалогВыбораФайла(ДополнительныеПараметры.Режим); + ДиалогВыбора.Заголовок = ДополнительныеПараметры.Заголовок; + ДиалогВыбора.Фильтр = "Файлы профиля ключевых операций (*.xml)|*.xml"; + Если ДополнительныеПараметры.Режим = РежимДиалогаВыбораФайла.Открытие Тогда + НачатьПомещениеФайлов(ДополнительныеПараметры.ОповещениеОЗакрытии,, ДиалогВыбора, Истина, ЭтотОбъект.УникальныйИдентификатор); + ИначеЕсли ДополнительныеПараметры.Режим = РежимДиалогаВыбораФайла.Сохранение Тогда + Получаемые = Новый Массив; + Получаемые.Добавить(Новый ОписаниеПередаваемогоФайла("", СохранитьПрофильКлючевыхОперацийНаСервере())); + НачатьПолучениеФайлов(ДополнительныеПараметры.ОповещениеОЗакрытии, Получаемые, ДиалогВыбора, Истина); + КонецЕсли; + + Иначе + СообщитьПользователю(НСтр("ru = 'Без расширения работы с файлами невозможно работать с файлами.'"), "Объект"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДиалогВыбораФайлаЗавершение(ВыбранныйФайл, ДополнительныеПараметры) Экспорт + + Если ВыбранныйФайл = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ЕстьБазоваяФункциональность Тогда + Если НЕ ЗначениеЗаполнено(Объект.Наименование) Тогда + ФайлИмя = Новый Файл(ВыбранныйФайл.Имя); + Объект.Наименование = ФайлИмя.ИмяБезРасширения; + КонецЕсли; + ЗагрузитьПрофильКлючевыхОперацийНаСервере(ВыбранныйФайл.Хранение); + Иначе + Если НЕ ЗначениеЗаполнено(Объект.Наименование) Тогда + ФайлИмя = Новый Файл(ВыбранныйФайл[0].Имя); + Объект.Наименование = ФайлИмя.ИмяБезРасширения; + КонецЕсли; + + ЗагрузитьПрофильКлючевыхОперацийНаСервере(ВыбранныйФайл[0].Хранение); + КонецЕсли; + Модифицированность = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ДиалогСохраненияФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт + + Состояние(НСтр("ru = 'Сохранение файлов завершено.'")); + +КонецПроцедуры + +&НаКлиенте +Процедура НачатьПодключениеРасширенияРаботыСФайламиЗавершение(РасширениеПодключено, ДополнительныеПараметры) Экспорт + + Если РасширениеПодключено Тогда + ВыполнитьОбработкуОповещения(ДополнительныеПараметры, Истина); + Возврат; + КонецЕсли; + + Если Не ЗаданВопросОбУстановкеРасширения Тогда + ЗаданВопросОбУстановкеРасширения = Истина; + ОписаниеОповещенияВопрос = Новый ОписаниеОповещения("ВопросОбУстановкеРасширения", ЭтотОбъект, ДополнительныеПараметры); + НачатьУстановкуРасширенияРаботыСФайлами(ОписаниеОповещенияВопрос ); + Иначе + ВыполнитьОбработкуОповещения(ДополнительныеПараметры, РасширениеПодключено); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВопросОбУстановкеРасширения(Оповещение) Экспорт + + ОповещениеПроверки = Новый ОписаниеОповещения("НачатьПодключениеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект, + Новый ОписаниеОповещения("ДиалогВыбораФайлаПоказать", ЭтотОбъект, Оповещение)); + НачатьПодключениеРасширенияРаботыСФайлами(ОповещениеПроверки); + +КонецПроцедуры + +&НаКлиенте +Процедура СообщитьПользователю(ТекстСообщения, ПутьКДанным = "") + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = ТекстСообщения; + Сообщение.ПутьКДанным = ПутьКДанным; + Сообщение.Сообщить(); + +КонецПроцедуры + + +&НаСервере +Функция СохранитьПрофильКлючевыхОперацийНаСервере() + + ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml"); + + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.ОткрытьФайл(ИмяВременногоФайла); + + ЗаписьXML.ЗаписатьНачалоЭлемента("Items"); + ЗаписьXML.ЗаписатьАтрибут("Description", Объект.Наименование); + ЗаписьXML.ЗаписатьАтрибут("Columns", "Имя,ЦелевоеВремя,Важность"); + + Для Каждого ТекСтрока Из Объект.КлючевыеОперацииПрофиля Цикл + ЗаписьXML.ЗаписатьНачалоЭлемента("Item"); + ЗаписьXML.ЗаписатьАтрибут("Имя", ТекСтрока.КлючеваяОперация.Имя); + ЗаписьXML.ЗаписатьАтрибут("ЦелевоеВремя", Формат(ТекСтрока.ЦелевоеВремя, "ЧГ=0")); + ЗаписьXML.ЗаписатьАтрибут("Важность", Формат(ТекСтрока.Приоритет, "ЧГ=0")); + ЗаписьXML.ЗаписатьКонецЭлемента(); + КонецЦикла; + + ЗаписьXML.ЗаписатьКонецЭлемента(); + + ЗаписьXML.Закрыть(); + + ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); + АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор); + + УдалитьФайлы(ИмяВременногоФайла); + + Возврат АдресХранилища; + +КонецФункции + +&НаСервере +Процедура ЗагрузитьПрофильКлючевыхОперацийНаСервере(АдресХранилища) + + ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища); // ДвоичныеДанные + + ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml"); + ДвоичныеДанные.Записать(ИмяВременногоФайла); + + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.ОткрытьФайл(ИмяВременногоФайла); + КлючевыеОперации = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); + + Колонки = СтрРазделить(КлючевыеОперации["Columns"], ",",Ложь); + Если КлючевыеОперации.Свойства().Получить("Item") <> Неопределено Тогда + Если ТипЗнч(КлючевыеОперации["Item"]) = Тип("ОбъектXDTO") Тогда + ЗагрузитьОбъектXDTO(КлючевыеОперации["Item"], Колонки); + Иначе + Для Каждого ТекЭлемент Из КлючевыеОперации["Item"] Цикл + ЗагрузитьОбъектXDTO(ТекЭлемент, Колонки); + КонецЦикла; + КонецЕсли; + КонецЕсли; + + ЧтениеXML.Закрыть(); + УдалитьФайлы(ИмяВременногоФайла); + +КонецПроцедуры + +&НаСервере +Процедура ЗагрузитьОбъектXDTO(ОбъектXDTO, Колонки) + + ТекЭлемент = ОбъектXDTO; + + КлючеваяОперация = Справочники.КлючевыеОперации.НайтиПоРеквизиту("Имя", ТекЭлемент.Имя); + Если КлючеваяОперация.Пустая() Тогда + КлючеваяОперация = ОценкаПроизводительности.СоздатьКлючевуюОперацию(ТекЭлемент.Имя); + КонецЕсли; + ПараметрыОтбора = Новый Структура("КлючеваяОперация", КлючеваяОперация); + НайденныеСтроки = Объект.КлючевыеОперацииПрофиля.НайтиСтроки(ПараметрыОтбора); + + Если НайденныеСтроки.Количество() = 0 Тогда + + НовСтрока = Объект.КлючевыеОперацииПрофиля.Добавить(); + НовСтрока.КлючеваяОперация = КлючеваяОперация; + + Для Каждого ТекКолонка Из Колонки Цикл + ИмяКолонки = ?(ТекКолонка = "Важность", "Приоритет", ТекКолонка); + Если НовСтрока.Свойство(ИмяКолонки) И ТекЭлемент.Свойства().Получить(ТекКолонка) <> Неопределено Тогда + НовСтрока[ИмяКолонки] = ТекЭлемент[ТекКолонка]; + КонецЕсли; + КонецЦикла; + + Если НЕ ЗначениеЗаполнено(НовСтрока.Приоритет) Тогда + НовСтрока.Приоритет = 5; + КонецЕсли; + Иначе + Для Каждого НовСтрока Из НайденныеСтроки Цикл + Для Каждого ТекКолонка Из Колонки Цикл + ИмяКолонки = ?(ТекКолонка = "Важность", "Приоритет", ТекКолонка); + Если НовСтрока.Свойство(ИмяКолонки) И ТекЭлемент.Свойства().Получить(ТекКолонка) <> Неопределено Тогда + НовСтрока[ИмяКолонки] = ТекЭлемент[ТекКолонка]; + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьНаСервере() + Запрос = Новый Запрос("ВЫБРАТЬ + | КлючевыеОперации.Ссылка КАК КлючеваяОперация, + | КлючевыеОперации.ЦелевоеВремя КАК ЦелевоеВремя, + | ВЫБОР + | КОГДА КлючевыеОперации.Приоритет = 0 + | ТОГДА 5 + | ИНАЧЕ КлючевыеОперации.Приоритет + | КОНЕЦ КАК Приоритет + |ИЗ + | Справочник.КлючевыеОперации КАК КлючевыеОперации + |ГДЕ + | НЕ КлючевыеОперации.ПометкаУдаления + | + |УПОРЯДОЧИТЬ ПО + | КлючевыеОперации.Наименование"); + Объект.КлючевыеОперацииПрофиля.Загрузить(Запрос.Выполнить().Выгрузить()); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Help/ru.html" new file mode 100644 index 00000000..096de123 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/Help/ru.html" @@ -0,0 +1,6 @@ + +

Для оценки производительности программы необходимо заполнить профиль ключевых операций.

+

Список открывается по соответствующей ссылке из раздела Администрирование - Обслуживание - Оценка производительности.

+

Для ввода профиля нажмите кнопку Создать.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271.mdo" new file mode 100644 index 00000000..36708936 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271/\320\237\321\200\320\276\321\204\320\270\320\273\320\270\320\232\320\273\321\216\321\207\320\265\320\262\321\213\321\205\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271.mdo" @@ -0,0 +1,249 @@ + + + + + + + + + + ПрофилиКлючевыхОпераций + + ru + Профили ключевых операций + + true + Catalog.ПрофилиКлючевыхОпераций.StandardAttribute.Description + Catalog.ПрофилиКлючевыхОпераций.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование профиля ключевых операций + + + ShowError + Use + + + + + Use + Code + + ru + Код профиля ключевых операций + + + Use + + + + Use + + + ru + + + Managed + + ru + Профиль ключевых операций + + + ru + Профиль ключевых операций замера производительности + + + ru + Профили ключевых операций замера производительности + + 2 + true + 9 + 100 + String + Variable + true + true + AsDescription + InDialog + BothWays + Catalog.ПрофилиКлючевыхОпераций.Form.ФормаЭлемента + Catalog.ПрофилиКлючевыхОпераций.Form.ФормаСписка + Catalog.ПрофилиКлючевыхОпераций.Form.ФормаВыбора + + + + + + КлючевыеОперацииПрофиля + + ru + Ключевые операции профиля + + + Use + LineNumber + + Use + + + + + КлючеваяОперация + + ru + Ключевая операция + + + CatalogRef.КлючевыеОперации + + + ru + Ключевая операция профиля + + + + Use + Use + + + ЦелевоеВремя + + ru + Целевое время + + + Number + + 5 + 1 + + + + ru + Целевое время ключевой операции с точки зрения пользователя профиля + + + + Use + Use + + + Приоритет + + ru + Приоритет + + + Number + + 5 + true + + + + ru + Приоритет ключевой операции с точки зрения пользователя профиля + + + + Use + Use + + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\241\320\265\320\271\321\207\320\260\321\201/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\241\320\265\320\271\321\207\320\260\321\201/CommandModule.bsl" new file mode 100644 index 00000000..b29a3be5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\222\321\213\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\241\320\265\320\271\321\207\320\260\321\201/CommandModule.bsl" @@ -0,0 +1,27 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(МассивРассылок, ПараметрыВыполненияКоманды) + Если ТипЗнч(МассивРассылок) <> Тип("Массив") ИЛИ МассивРассылок.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Форма = ПараметрыВыполненияКоманды.Источник; + + ПараметрыЗапуска = Новый Структура("МассивРассылок, Форма, ЭтоФормаЭлемента"); + ПараметрыЗапуска.МассивРассылок = МассивРассылок; + ПараметрыЗапуска.Форма = Форма; + ПараметрыЗапуска.ЭтоФормаЭлемента = (Форма.ИмяФормы = "Справочник.РассылкиОтчетов.Форма.ФормаЭлемента"); + + РассылкаОтчетовКлиент.ВыполнитьСейчас(ПараметрыЗапуска); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/CommandModule.bsl" new file mode 100644 index 00000000..cff2db51 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Commands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/CommandModule.bsl" @@ -0,0 +1,30 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(Рассылка, Параметры) + ПараметрыЖурналаРегистрации = ПараметрыЖурналаРегистрации(Рассылка); + Если ПараметрыЖурналаРегистрации = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Рассылка еще не выполнялась.'")); + Возврат; + КонецЕсли; + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", ПараметрыЖурналаРегистрации, ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ПараметрыЖурналаРегистрации(Рассылка) + Возврат РассылкаОтчетов.ПараметрыЖурналаРегистрации(Рассылка); +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Form.form" new file mode 100644 index 00000000..6fec54f5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Form.form" @@ -0,0 +1,626 @@ + + + + СерверИКаталог + 9 + true + true + + true + + + + СерверИКаталог + + + + OnChange + СерверИКаталогПриИзменении + + + СерверИКаталогExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + СерверИКаталогКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + ru + ftp://сервер/каталог/ + + + + + ГруппаНастройкиПортаИТипаСоединения + 28 + + Порт + 3 + true + true + + true + + + + Порт + + + + ПортExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + ПортКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + + ru + ЧН=0; ЧГ=0 + + true + true + true + + 1 + + + 65535 + + + + + ДекорацияРазделитель + 30 + true + true + + true + + + ДекорацияРазделительРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияРазделительКонтекстноеМеню + 31 + true + true + + true + + true + + Label + 10 + true + true + + Left + + + + ПассивноеСоединение + 17 + true + true + + true + + + + ПассивноеСоединение + + + Right + + ПассивноеСоединениеExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + ПассивноеСоединениеКонтекстноеМеню + 18 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Настройки номера порта и типа соединения</value> + + + ГруппаНастройкиПортаИТипаСоединенияРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Логин + 5 + true + true + + true + + + + Логин + + + + ЛогинExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + + ЛогинКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 35 + true + true + true + true + true + + + + Пароль + 7 + true + true + + true + + + + Пароль + + + + ru + Пароль FTP сервера. + + + ПарольExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 35 + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаОК + 15 + true + true + + true + + + ФормаОКExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаполнить + 14 + true + true + + true + + + ФормаЗаполнитьExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Заполнить + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Сервер + 1 + + String + + 100 + + + + true + + + true + + + + Порт + + <key>ru</key> + <value>Порт</value> + + 2 + + Number + + 5 + + + + true + + + true + + + + Логин + + <key>ru</key> + <value>Логин</value> + + 3 + + String + + 50 + + + + true + + + true + + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 4 + + String + + 50 + + + + true + + + true + + + + ПассивноеСоединение + + <key>ru</key> + <value>Пассивное соединение</value> + + 5 + + Boolean + + + true + + + true + + + + Каталог + 6 + + String + + 200 + + + + true + + + true + + + + СерверИКаталог + + <key>ru</key> + <value>Сервер и каталог</value> + + 7 + + String + + 300 + + + + true + + + true + + + + Заполнить + + <key>ru</key> + <value>Заполнить...</value> + + 1 + + ru + Указать все параметры ftp соединения одной строкой + + + true + + + CommonPicture.ЗаполнитьФорму + + + + Заполнить + + + TextPicture + DontUse + + + ОК + + <key>ru</key> + <value>ОК</value> + + 2 + + ru + ОК + + + true + + + StdPicture.ChooseValue + + + + ОК + + + TextPicture + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Help/ru.html" new file mode 100644 index 00000000..0a8d82fe --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Help/ru.html" @@ -0,0 +1,19 @@ + +

Позволяет указать параметры, необходимые для подключения к FTP-ресурсу при рассылке отчетов.
Поле Сервер и каталог является обязательным для заполнения, остальные поля не обязательны.

+

Открывается из окна рассылки отчетов (Вкладка Доставка, поле Публиковать - на FTP-ресурс, в поле ввода параметров FTP-ресурса нажать кнопку  Выбрать).

+

Заполните необходимые сведения:

+
  • Сервер и каталог - путь к FTP-ресурсу в формате ftp://сервер/каталог/; +
  • +
  • Порт - порт FTP-ресурса на сервере (стандартный порт - 21); +
  • +
  • Логин - имя пользователя для доступа к FTP; +
  • +
  • Пароль - пароль пользователя для доступа к FTP; +
  • +
  • Пассивное соединение - флажок использования пассивного соединения при подключении к серверу.

Ввод параметров одной строкой

+
  • +
    Нажмите Заполнить, введите строку вида ftp://User:пароль@сервер:21/каталог/, программа автоматически заполнит все параметры по отдельности.

+

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Module.bsl" new file mode 100644 index 00000000..79c09043 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213FTP/Module.bsl" @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + РеквизитыСправочника = Метаданные.Справочники.РассылкиОтчетов.Реквизиты; + Элементы.СерверИКаталог.Подсказка = РеквизитыСправочника.FTPКаталог.Подсказка; + Элементы.Порт.Подсказка = РеквизитыСправочника.FTPПорт.Подсказка; + Элементы.Логин.Подсказка = РеквизитыСправочника.FTPЛогин.Подсказка; + Элементы.ПассивноеСоединение.Подсказка = РеквизитыСправочника.FTPПассивноеСоединение.Подсказка; + ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "Сервер, Каталог, Порт, Логин, Пароль, ПассивноеСоединение"); + Если ЭтотОбъект.Сервер = "" Тогда + ЭтотОбъект.Сервер = "сервер"; + КонецЕсли; + Если ЭтотОбъект.Каталог = "" Тогда + ЭтотОбъект.Каталог = "/каталог/"; + КонецЕсли; + ВидимостьДоступность(ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СерверИКаталогПриИзменении(Элемент) + ЗаполнитьЗначенияСвойств(ЭтотОбъект, РассылкаОтчетовКлиент.РазобратьFTPАдрес(СерверИКаталог), "Сервер, Каталог"); + ВидимостьДоступность(ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Заполнить(Команда) + Если Сервер = "" Тогда + ПолныйАдрес = НСтр("ru = 'ftp://логин:пароль@сервер:порт/каталог/'"); + Иначе + Если Логин = "" Тогда + ПолныйАдрес = "ftp://"+ Сервер +":"+ Формат(Порт, "ЧН=21; ЧГ=0") + Каталог; + Иначе + ПолныйАдрес = "ftp://"+ Логин +":"+ ?(ЗначениеЗаполнено(Пароль), ПарольСкрыт(), "") +"@"+ Сервер +":"+ Формат(Порт, "ЧН=0; ЧГ=0") + Каталог; + КонецЕсли; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ЗаполнитьЗавершение", ЭтотОбъект); + ПоказатьВводСтроки(Обработчик, ПолныйАдрес, НСтр("ru = 'Введите полный ftp адрес'")) +КонецПроцедуры + +&НаКлиенте +Процедура ОК(Команда) + ЗначениеВыбора = Новый Структура("Сервер, Каталог, Порт, Логин, Пароль, ПассивноеСоединение"); + ЗаполнитьЗначенияСвойств(ЗначениеВыбора, ЭтотОбъект); + ОповеститьОВыборе(ЗначениеВыбора); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ВидимостьДоступность(Форма, Изменения = "") + Если Не СтрЗаканчиваетсяНа(Форма.Каталог, "/") Тогда + Форма.Каталог = Форма.Каталог + "/"; + КонецЕсли; + Форма.СерверИКаталог = "ftp://"+ Форма.Сервер + Форма.Каталог; +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьЗавершение(РезультатВвода, ДополнительныеПараметры) Экспорт + Если РезультатВвода <> Неопределено Тогда + ПарольДоВвода = Пароль; + ЗаполнитьЗначенияСвойств(ЭтотОбъект, РассылкаОтчетовКлиент.РазобратьFTPАдрес(РезультатВвода)); + Если Пароль = ПарольСкрыт() Тогда + Пароль = ПарольДоВвода; + КонецЕсли; + ВидимостьДоступность(ЭтотОбъект); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ПарольСкрыт() + Возврат "********"; +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Form.form" new file mode 100644 index 00000000..74052411 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Form.form" @@ -0,0 +1,1159 @@ + + + + ВидПочтовогоАдресаПолучателей + 41 + true + true + + true + + + + ВидПочтовогоАдресаПолучателей + + + + OnChange + ВидПочтовогоАдресаПолучателейПриИзменении + + + ВидПочтовогоАдресаПолучателейРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + + ВидПочтовогоАдресаПолучателейКонтекстноеМеню + 42 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + Items + true + OnActivate + true + + Отбор.Родитель + + ГруппаКонтактнойИнформацииТипаПолучателей + + + + Отбор.Тип + + + Enum.ТипыКонтактнойИнформации.EnumValue.АдресЭлектроннойПочты + + + + DontUse + + + + Получатели + 64 + + <key>ru</key> + <value>Получатели</value> + + true + true + + true + + + Получатели + + true + None + Change + Copy + EndEdit + + ПолучательНаименованиеИПочта + 78 + + ПолучателиПолучатель + 68 + true + true + + true + + + + Получатели.Получатель + + + + ПолучателиПолучательРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиПолучательКонтекстноеМеню + 69 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 10 + true + true + true + true + true + true + + + + ПолучателиТЗАдрес + 80 + true + true + + true + + + + Получатели.Адрес + + + + ПолучателиТЗАдресРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиТЗАдресКонтекстноеМеню + 81 + true + true + + true + + true + + InputField + EnterOnInput + Left + true + + 20 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Получатель наименование и почта</value> + + false + + ПолучательНаименованиеИПочтаРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ПолучателиИсключен + 71 + true + true + + true + + + + Получатели.Исключен + + + + ПолучателиИсключенРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиИсключенКонтекстноеМеню + 72 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ПолучателиКоманднаяПанель + 66 + + Подобрать + 74 + true + true + + true + + + ПодобратьРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПолучателиПодобрать + Auto + true + true + UserCmds + Auto + + + ВставитьИзБуфераОбмена + 95 + true + true + + true + + + ВставитьИзБуфераОбменаРасширеннаяПодсказка + 96 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВставитьИзБуфераОбмена + Auto + true + true + UserCmds + Auto + + + ПолучателиГруппаПометки + 106 + + ПолучателиУстановитьПометки + 108 + true + true + + true + + + ПолучателиУстановитьПометкиРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПометки + Auto + true + true + UserCmds + Auto + + + ПолучателиСнятьПометки + 110 + true + true + + true + + + ПолучателиСнятьПометкиРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьПометки + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Получатели группа пометки</value> + + + ПолучателиГруппаПометкиРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + + ПолучателиДобавить + 97 + true + true + + true + + + ПолучателиДобавитьРасширеннаяПодсказка + 98 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Получатели.StandardCommand.Add + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ГруппаКоманднаяПанельПолучатели + 99 + true + true + + true + + + <key>ru</key> + <value>Командная панель получатели</value> + + + ГруппаКоманднаяПанельПолучателиРасширеннаяПодсказка + 100 + true + true + + true + + Label + true + true + + Left + + + + Item.Получатели + + + + ГруппаКоманднаяПанельФормы + 104 + true + true + + true + + + <key>ru</key> + <value>Командная панель формы</value> + + + ru + Группа командная панель получатели + + + ГруппаКоманднаяПанельФормыРасширеннаяПодсказка + 105 + true + true + + true + + Label + true + true + + Left + + + + Form + + + true + true + + true + + Left + + + BeforeAddRow + ПолучателиПередНачаломДобавления + + + ChoiceProcessing + ПолучателиОбработкаВыбора + + + true + true + + true + + ПолучателиСтрокаПоиска + 86 + + ПолучателиСтрокаПоискаРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиСтрокаПоискаКонтекстноеМеню + 87 + true + true + + true + + true + + + true + + + + true + true + + true + + ПолучателиСостояниеПросмотра + 89 + + ПолучателиСостояниеПросмотраРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиСостояниеПросмотраКонтекстноеМеню + 90 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПолучателиУправлениеПоиском + 92 + + ПолучателиУправлениеПоискомРасширеннаяПодсказка + 94 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиУправлениеПоискомКонтекстноеМеню + 93 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПолучателиРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиКонтекстноеМеню + 65 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + Получатели.ИндексКартинки + + + CommonPicture.СостоянияПользователей + + +
+ + ГруппаКоманднаяПанель + 47 + + ОК + 49 + true + true + + true + + + ОКРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаЗакрыть + 39 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + ГруппаКоманднаяПанельРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Help + Ignore + No + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + ГруппаКоманднаяПанель + + + + ВидПочтовогоАдресаПолучателей + + <key>ru</key> + <value>Электронная почта</value> + + 3 + + CatalogRef.ВидыКонтактнойИнформации + + + true + + + true + + + + ТипПолучателейРассылки + 5 + + TypeDescription + + + true + + + true + + + + ПутьФормыВыбора + 1 + + String + + + + true + + + true + + + + Получатели + + <key>ru</key> + <value>Получатели</value> + + 2 + + ValueTable + + + true + + + true + + + Получатель + + <key>ru</key> + <value>Получатель</value> + + 1 + + DefinedType.ПолучательРассылки + + + true + + + true + + + + Исключен + + <key>ru</key> + <value>Исключен</value> + + 2 + + Boolean + + + true + + + true + + + + Адрес + + <key>ru</key> + <value>Адрес</value> + + 3 + + String + + + + true + + + true + + + + ИндексКартинки + 4 + + Number + + 1 + + + + true + + + true + + + + + ИдентификаторОбъектаМетаданных + 4 + + + true + + + true + + + + ГруппаКонтактнойИнформацииТипаПолучателей + 6 + + CatalogRef.ВидыКонтактнойИнформации + + + true + + + true + + + + ПолучателиПодобрать + + <key>ru</key> + <value>Подобрать</value> + + 1 + + ru + Подобрать + + + true + + + + ПолучателиПодобрать + + + DontUse + + + ОК + + <key>ru</key> + <value>ОК</value> + + 2 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + ВставитьИзБуфераОбмена + + <key>ru</key> + <value>Вставить из буфера обмена</value> + + 3 + + ru + Вставить из буфера обмена + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ВставитьИзБуфераОбмена + + + DontUse + + + УстановитьПометки + + <key>ru</key> + <value>Установить пометки</value> + + 4 + + ru + Установить пометки + + + true + + + StdPicture.CheckAll + + + + УстановитьПометки + + + DontUse + + + СнятьПометки + + <key>ru</key> + <value>Снять пометки</value> + + 5 + + ru + Снять пометки + + + true + + + StdPicture.UncheckAll + + + + СнятьПометки + + + DontUse + + + ТипПолучателейРассылки + + TypeDescription + + + + ТаблицаТиповПолучателей + + String + + + + + ПутьФормыВыбора + + String + + + + + ВидПочтовогоАдресаПолучателей + + CatalogRef.ВидыКонтактнойИнформации + + + + ГруппаКонтактнойИнформацииТипаПолучателей + + CatalogRef.ВидыКонтактнойИнформации + + + + Получатели + + + + НаименованиеРассылки + + String + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Help/ru.html" new file mode 100644 index 00000000..24d1c9a2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Help/ru.html" @@ -0,0 +1,12 @@ + +

Предназначен для подбора получателей рассылки.

+

Открывается из рассылки отчетов по ссылке Укажите получателей.

+

Список состоит из колонок:

+
  • Получатель - наименование получателя или группы получателей (выводится из соответствующего списка, например, Пользователи) и адрес его электронной почты. +
  • Исключен - с помощью флажка можно исключить получателя из списка рассылки. Например, когда надо отправлять отчеты всем участникам группы, кроме нескольких, тогда следует выбрать и группу и исключаемых получателей, а затем для исключаемых получателей установить флажок. Также этот флажок может использоваться для временного отключения получателей, для того чтобы не удалять их из списка. Исключенные получатели выделяются красным цветом.

Выбор получателей

+
  • С помощью кнопки Подобрать выберите несколько элементов списка. Подбор осуществляется из выбранного в рассылке списка получателей, например, Пользователи.

Добавление из буфера обмена

+
  • Нажмите кнопку , для того чтобы вставить в список получателей из буфера обмена.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Module.bsl" new file mode 100644 index 00000000..c505612b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\320\276\320\273\321\203\321\207\320\260\321\202\320\265\320\273\320\270\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270/Module.bsl" @@ -0,0 +1,310 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + УстановитьУсловноеОформление(); + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "ТипПолучателейРассылки, ВидПочтовогоАдресаПолучателей"); + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Получатели рассылки (%1)'"), + Параметры.НаименованиеРассылки); + + Для Каждого СтрокаТаблицы Из Параметры.Получатели Цикл + НоваяСтрока = Получатели.Добавить(); + НоваяСтрока.Получатель = СтрокаТаблицы.Получатель; + НоваяСтрока.Исключен = СтрокаТаблицы.Исключен; + КонецЦикла; + + Элементы.ПолучателиПолучатель.ОграничениеТипа = ТипПолучателейРассылки; + + ЗаполнитьСведенияОТипеПолучателей(Отказ); + ЗаполнитьПочтовыеАдреса(); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла") Тогда + Элементы.ВставитьИзБуфераОбмена.Видимость = Ложь; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВидПочтовогоАдресаПолучателейПриИзменении(Элемент) + ЗаполнитьПочтовыеАдреса(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПолучатели + +&НаКлиенте +Процедура ПолучателиПодобрать(Команда) + ОткрытьФормаДобавленияПолучателей(Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормаДобавленияПолучателей(ЭтоПодбор) + ВыбранныеПользователи = Новый Массив; + Для Каждого Строка Из Получатели Цикл + ВыбранныеПользователи.Добавить(Строка.Получатель); + КонецЦикла; + + ПараметрыФормыВыбора = Новый Структура; + + // Стандартные реквизиты формы выбора (см. Расширение управляемой формы для динамического списка). + ПараметрыФормыВыбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.ГруппыИЭлементы); + ПараметрыФормыВыбора.Вставить("ЗакрыватьПриВыборе", ?(ЭтоПодбор, Ложь, Истина)); + ПараметрыФормыВыбора.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина); + ПараметрыФормыВыбора.Вставить("МножественныйВыбор", ЭтоПодбор); + ПараметрыФормыВыбора.Вставить("РежимВыбора", Истина); + + // Предполагаемые реквизиты + ПараметрыФормыВыбора.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + ПараметрыФормыВыбора.Вставить("ВыборГрупп", Истина); + ПараметрыФормыВыбора.Вставить("ВыборГруппПользователей", Истина); + + // Параметры открытия расширенной формы подбора + // (описание реквизитов см. в форме списка справочника Пользователи). + Если ЭтоПодбор Тогда + ПараметрыФормыВыбора.Вставить("РасширенныйПодбор", Истина); + ПараметрыФормыВыбора.Вставить("ЗаголовокФормыПодбора", НСтр("ru = 'Подбор получателей рассылки'")); + ПараметрыФормыВыбора.Вставить("ВыбранныеПользователи", ВыбранныеПользователи); + КонецЕсли; + + ОткрытьФорму(ПутьФормыВыбора, ПараметрыФормыВыбора, Элементы.Получатели); +КонецПроцедуры + +&НаКлиенте +Процедура ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ДобавитьПеретащитьПолучателя(ВыбранноеЗначение); +КонецПроцедуры + +&НаКлиенте +Процедура ПолучателиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Отказ = Истина; + ОткрытьФормаДобавленияПолучателей(Ложь); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + Результат = Новый Структура; + Результат.Вставить("Получатели", Получатели); + Результат.Вставить("ВидПочтовогоАдресаПолучателей", ВидПочтовогоАдресаПолучателей); + Закрыть(Результат); +КонецПроцедуры + +&НаКлиенте +Процедура ВставитьИзБуфераОбмена(Команда) + ПараметрыПоиска = Новый Структура; + ПараметрыПоиска.Вставить("ОписаниеТипов", ТипПолучателейРассылки); + ПараметрыПоиска.Вставить("ПараметрыВыбора", Неопределено); + ПараметрыПоиска.Вставить("ПредставлениеПоля", "Получатели"); + ПараметрыПоиска.Вставить("Сценарий", "ПоискСсылок"); + + ПараметрыВыполнения = Новый Структура; + Обработчик = Новый ОписаниеОповещения("ВставитьИзБуфераОбменаЗавершение", ЭтотОбъект, ПараметрыВыполнения); + + МодульЗагрузкаДанныхИзФайлаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗагрузкаДанныхИзФайлаКлиент"); + МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПометки(Команда) + + Для каждого Получатель Из Получатели Цикл + Получатель.Исключен = Истина; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура СнятьПометки(Команда) + + Для каждого Получатель Из Получатели Цикл + Получатель.Исключен = Ложь; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ДобавитьПеретащитьПолучателя(ПолучательИлиНаборПолучателей) + // Удаление пользователей, которые были удалены в форме подбора или которые уже есть в списке. + Если ЭтоПодборПользователейИлиГрупп(ПолучательИлиНаборПолучателей) Тогда + Количество = Получатели.Количество(); + Для Номер = 1 По Количество Цикл + ОбратныйИндекс = Количество - Номер; + СтрокаПолучатель = Получатели.Получить(ОбратныйИндекс); + + ИндексВМассиве = ПолучательИлиНаборПолучателей.Найти(СтрокаПолучатель.Получатель); + Если ИндексВМассиве = Неопределено Тогда + Получатели.Удалить(СтрокаПолучатель); // Пользователь удален в форме подбора. + Иначе + ПолучательИлиНаборПолучателей.Удалить(ИндексВМассиве); // Пользователь уже есть в списке. + КонецЕсли; + КонецЦикла; + КонецЕсли; + + // Добавление выбранных строк. + МассивНовыхСтрок = ВыборПодборПеретаскиваниеВТабличнуюЧасть(ПолучательИлиНаборПолучателей); + + // Подготовка текста оповещения. + Если МассивНовыхСтрок.Количество() > 0 Тогда + Если МассивНовыхСтрок.Количество() = 1 Тогда + ЗаголовокОповещения = НСтр("ru = 'Получатель добавлен в рассылку'"); + Иначе + ЗаголовокОповещения = НСтр("ru = 'Получатели добавлены в рассылку'"); + КонецЕсли; + + ТекстОповещения = ""; + Для Каждого СтрокаПолучатель Из МассивНовыхСтрок Цикл + ТекстОповещения = ТекстОповещения + ?(ТекстОповещения = "", "", ", ") + СтрокаПолучатель; + КонецЦикла; + ПоказатьОповещениеПользователя(ЗаголовокОповещения,, ТекстОповещения, БиблиотекаКартинок.ВыполнитьЗадачу); + + ЗаполнитьПочтовыеАдреса(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ЭтоПодборПользователейИлиГрупп(ПолучательИлиНаборПолучателей) + Возврат ТипЗнч(ПолучательИлиНаборПолучателей) = Тип("Массив") + И ТипПолучателейРассылки.СодержитТип(Тип("СправочникСсылка.Пользователи")); +КонецФункции + +&НаКлиенте +Функция ВыборПодборПеретаскиваниеВТабличнуюЧасть(ВыбранноеЗначение) + МассивНовыхСтрок = Новый Массив; + Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда + Для Каждого ЭлементПодбора Из ВыбранноеЗначение Цикл + Результат = ВыборПодборПеретаскиваниеЭлементаВТабличнуюЧасть(ЭлементПодбора); + ДобавитьЗначениеВМассивОповещений(Результат, МассивНовыхСтрок); + КонецЦикла; + Иначе + Результат = ВыборПодборПеретаскиваниеЭлементаВТабличнуюЧасть(ВыбранноеЗначение); + ДобавитьЗначениеВМассивОповещений(Результат, МассивНовыхСтрок); + КонецЕсли; + Возврат МассивНовыхСтрок; +КонецФункции + +&НаКлиенте +Процедура ДобавитьЗначениеВМассивОповещений(Текст, МассивНовыхСтрок) + Если ЗначениеЗаполнено(Текст) Тогда + МассивНовыхСтрок.Добавить(Текст); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ВыборПодборПеретаскиваниеЭлементаВТабличнуюЧасть(ЗначениеРеквизита) + Отбор = Новый Структура("Получатель", ЗначениеРеквизита); + НайденныеСтроки = Получатели.НайтиСтроки(Отбор); + + Если НайденныеСтроки.Количество() > 0 Тогда + Возврат Неопределено; + КонецЕсли; + + Строка = Получатели.Добавить(); + Строка.Получатель = ЗначениеРеквизита; + + Возврат ЗначениеРеквизита; +КонецФункции + +&НаКлиенте +Процедура ВставитьИзБуфераОбменаЗавершение(Результат, Параметр) Экспорт + + Если Результат <> Неопределено Тогда + Для каждого Получатель Из Результат Цикл + НоваяСтрока = Получатели.Добавить(); + НоваяСтрока.Получатель = Получатель; + КонецЦикла; + + ЗаполнитьПочтовыеАдреса(); + КонецЕсли; + + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПочтовыеАдреса() + + ПараметрыПолучателей = Новый Структура("Ссылка, ВидПочтовогоАдресаПолучателей, Личная, Получатели, ТипПолучателейРассылки"); + ЗаполнитьЗначенияСвойств(ПараметрыПолучателей, ЭтотОбъект); + ПараметрыПолучателей.Личная = Ложь; + ПараметрыПолучателей.ТипПолучателейРассылки = ИдентификаторОбъектаМетаданных; + ПараметрыПолучателей.Получатели = Получатели; + + ПолучателиРассылки = РассылкаОтчетов.СформироватьСписокПолучателейРассылки(ПараметрыПолучателей);; + Для каждого ПолучательРассылки Из Получатели Цикл + Если ПолучателиРассылки.Количество() = 0 Тогда + Если ПолучательРассылки.Получатель = Неопределено Тогда + Продолжить; + КонецЕсли; + Иначе + ПочтаПолучателя = ПолучателиРассылки.Получить(ПолучательРассылки.Получатель); + ПолучательРассылки.Адрес = ?(ПочтаПолучателя <> Неопределено, ПочтаПолучателя, "") + КонецЕсли; + Если ПолучательРассылки.Получатель.ЭтоГруппа Или ТипЗнч(ПолучательРассылки.Получатель) = Тип("СправочникСсылка.ГруппыПользователей") Тогда + ПолучательРассылки.ИндексКартинки = 3; + Иначе + ПолучательРассылки.ИндексКартинки = 1; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПолучателиПолучатель.Имя); + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПолучателиИсключен.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Получатели.Исключен"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Метаданные.ЭлементыСтиля.ПросроченныеДанныеЦвет.Значение); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСведенияОТипеПолучателей(Отказ) + ТаблицаТиповПолучателей = РассылкаОтчетовПовтИсп.ТаблицаТиповПолучателей(); + Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); + Если Найденные.Количество() = 1 Тогда + СтрокаПолучатель = Найденные[0]; + ИдентификаторОбъектаМетаданных = СтрокаПолучатель.ИдентификаторОбъектаМетаданных; + ПутьФормыВыбора = СтрокаПолучатель.ПутьФормыВыбора; + ГруппаКонтактнойИнформацииТипаПолучателей = СтрокаПолучатель.ГруппаКИ; + // ГруппаКИ используется для поля "ВидПочтовогоАдресаПолучателей" в "СвязиПараметровВыбора.Отбор". + Иначе + Отказ = Истина; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\320\265/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\320\265/Form.form" new file mode 100644 index 00000000..a037b7d7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\320\265/Form.form" @@ -0,0 +1,358 @@ + + + + Основное + 24 + + Индикатор + 21 + + <key>ru</key> + <value>Индикатор</value> + + true + true + + true + + + ИндикаторРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + ИндикаторКонтекстноеМеню + 22 + true + true + + true + + true + + true + true + + + CommonPicture.Информация32 + + AsFileRef + + + + Текст + 18 + true + true + + true + + + + Текст + + + true + None + AlignCenter + AlignJustify + AlignLeft + AlignRight + BackColor + Bold + BulletedList + Char + CopyToClipboard + CutToClipboard + DecreaseFontSize + DecreaseIndent + Font + Hyperlink + IncreaseFontSize + IncreaseIndent + Italic + LineSpacing + NumberedList + PasteFromClipboard + Picture + Preview + Print + Redo + SaveAs + SelectAll + Strikeout + TextColor + Underline + Undo + + ТекстРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + ТекстКонтекстноеМеню + 19 + true + true + + true + + true + + FormattedDocumentField + true + Enter + true + Left + true + + 50 + true + 10 + true + true + true + + Style.FormBackColor + + + + true + true + + true + + + ОсновноеРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 10 + + ПерейтиКДокументации + 16 + true + true + + true + + + ПерейтиКДокументацииРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПерейтиКДокументации + Auto + true + true + UserCmds + Auto + + + ОсновныеКоманды + 12 + + ОК + 14 + true + true + + true + + + ОКРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OK + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + + ОсновныеКомандыРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + КоманднаяПанельРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + DefaultButton + true + Vertical + true + true + UseIfNecessary + true + true + + Текст + + <key>ru</key> + <value>Текст</value> + + 1 + + FormattedDocument + + + true + + + true + + + + ПерейтиКДокументации + + <key>ru</key> + <value>Нужна помощь?</value> + + 1 + + ru + Перейти к документации... + + + true + + + + ПерейтиКДокументации + + + Auto + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\320\265/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\320\265/Module.bsl" new file mode 100644 index 00000000..3d24f1d1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\320\265/Module.bsl" @@ -0,0 +1,110 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьЗаголовок(); + УстановитьОписание(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПерейтиКДокументации(Команда) + + МодульРаботаСПочтовымиСообщениямиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент"); + МодульРаботаСПочтовымиСообщениямиКлиент.ПерейтиКДокументацииПоВводуУчетнойЗаписиЭлектроннойПочты(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьЗаголовок() + + ТекстЗаголовка = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Заголовок"); + + Если ЗначениеЗаполнено(ТекстЗаголовка) Тогда + Заголовок = ТекстЗаголовка; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОписание() + + Описание = Новый Структура("Текст, Подробно, Ссылка"); + ЗаполнитьЗначенияСвойств(Описание, Параметры); + + Элементы.ПерейтиКДокументации.Видимость = + ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") + И ЗначениеЗаполнено(Описание.Подробно) + И ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ИспользоватьЭлектроннуюПочту", Ложь); + + Если Не ЗначениеЗаполнено(Описание.Текст) Тогда + Возврат; + КонецЕсли; + + Текст.Добавить(Описание.Текст, Тип("ТекстФорматированногоДокумента")); + + Если ЗначениеЗаполнено(Описание.Подробно) Тогда + + Текст.Добавить(, Тип("ПереводСтрокиФорматированногоДокумента")); + Текст.Добавить(, Тип("ПереводСтрокиФорматированногоДокумента")); + Текст.Добавить(Описание.Подробно, Тип("ТекстФорматированногоДокумента")); + + Элементы.Индикатор.Картинка = БиблиотекаКартинок.Предупреждение32; + + КонецЕсли; + + УстановитьОписаниеОшибкиАутентификации(Описание); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОписаниеОшибкиАутентификации(Описание) + + Если СтрНайти(ВРег(Описание.Подробно), "USERNAME AND PASSWORD NOT ACCEPTED") = 0 Тогда + Возврат; + КонецЕсли; + + Текст.Добавить(, Тип("ПереводСтрокиФорматированногоДокумента")); + Текст.Добавить(, Тип("ПереводСтрокиФорматированногоДокумента")); + + Ссылка = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Ссылка"); + + Если ЗначениеЗаполнено(Ссылка) Тогда + + ШаблонСтроки = НСтр("ru = 'Перейдите к настройкам учетной записи электронной почты для корректировки логина, пароля.'"); + НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Ссылка); + + Строка = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтроки, НавигационнаяСсылка); + + Иначе + + Строка = НСтр("ru = 'Перейдите к настройкам учетной записи электронной почты для корректировки логина, пароля.'"); + + КонецЕсли; + + Строки = Новый Массив; + Строки.Добавить(Текст.ПолучитьФорматированнуюСтроку()); + Строки.Добавить(Строка); + + Текст.УстановитьФорматированнуюСтроку(Новый ФорматированнаяСтрока(Строки)); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..d8d8e6ae --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,417 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Create + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 21 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 22 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 12 + + СписокСтрокаПоискаРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 13 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 15 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 16 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 18 + + СписокУправлениеПоискомРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 19 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Folders + + true + true + + + + ФормаКоманднаяПанель + -1 + + ВыполнитьСейчас + 6 + true + + true + + + Items.Список.CurrentData.Ref + + + ВыполнитьСейчасExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + Catalog.РассылкиОтчетов.Command.ВыполнитьСейчас + Auto + true + true + UserCmds + Auto + + + СобытияРассылки + 7 + true + + true + + + Items.Список.CurrentData.Ref + + + СобытияРассылкиExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + Catalog.РассылкиОтчетов.Command.СобытияРассылки + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Create + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + Catalog.РассылкиОтчетов + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..2e08ee80 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,7 @@ + +

Предназначен для выбора группы рассылок.

+

Открывается из окна группы рассылок по кнопке выбора.

+

Список по умолчанию выводится в виде дерева.

+

Ввод группы

+
  • Нажмите Создать группу, введите необходимые поля.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..d8da1e61 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ЭтоГруппа", Истина, + ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" new file mode 100644 index 00000000..6d22f698 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Form.form" @@ -0,0 +1,191 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 5 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Родитель + 3 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 6 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписать + 7 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Picture + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.РассылкиОтчетов + + + true + + + true + +
true
+ true +
+ + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + Folders + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" new file mode 100644 index 00000000..cba6342e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Help/ru.html" @@ -0,0 +1,6 @@ + +

Предназначена для ввода группы рассылок отчетов.

+

Сведения о группе

+
  • Напишите Наименование группы. +
  • Для того чтобы подчинить новую группу одной из имеющихся, в поле Группа выберите группу из списка.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" new file mode 100644 index 00000000..2cfe9fc9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\223\321\200\321\203\320\277\320\277\321\213/Module.bsl" @@ -0,0 +1,46 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Ссылка.Пустая() Тогда + Если Объект.Родитель = Справочники.РассылкиОтчетов.ЛичныеРассылки Тогда + Объект.Родитель = Справочники.РассылкиОтчетов.ПустаяСсылка(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..e229d15e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,2555 @@ + + + + ГруппаОтборы + 157 + + СостояниеОтбор + 165 + true + true + + true + + + + СостояниеОтбор + + + None + + OnChange + СостояниеОтборПриИзменении + + + СостояниеОтборРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + + СостояниеОтборКонтекстноеМеню + 166 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 12 + true + 15 + true + true + true + true + true + true + + + ru + Все + + + Все + + + + + ru + Выполненные + + + Выполненные + + + + + ru + Невыполненные + + + Невыполненные + + + + ru + Все рассылки + + + + + ОтветственныйОтбор + 159 + true + true + + true + + + + ОтветственныйОтбор + + + + OnChange + ОтветственныйОтборПриИзменении + + + ОтветственныйОтборРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + + ОтветственныйОтборКонтекстноеМеню + 160 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + true + true + false + true + true + true + + ru + Все + + + + + ОтчетОтбор + 162 + true + true + + true + + + + ОтчетОтбор + + + + OnChange + ОтчетОтборПриИзменении + + + ОтчетОтборРасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + + ОтчетОтборКонтекстноеМеню + 163 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + true + true + false + true + true + true + + ru + Все + + + + true + true + + true + + + <key>ru</key> + <value>Отборы</value> + + + ГруппаОтборыРасширеннаяПодсказка + 158 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПользовательскихНастроек + 83 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 84 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 85 + + ВажныеКоманды + 89 + + ФормаВыбрать + 152 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 153 + true + true + + true + + Label + true + true + + Left + + + 1:8969c93a-23e5-4bef-941d-aaef315858d2 + Auto + true + true + UserCmds + Auto + + + ФормаСоздать + 91 + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаСоздатьГруппу + 93 + true + true + + true + + + ФормаСоздатьГруппуРасширеннаяПодсказка + 94 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + + ФормаИзменить + 97 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 98 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 95 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 96 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Важные команды</value> + + + ВажныеКомандыРасширеннаяПодсказка + 90 + true + true + + true + + Label + true + true + + Left + + + + + + КомандыПоиска + 99 + + Найти + 101 + true + true + + true + + + НайтиРасширеннаяПодсказка + 102 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ОтменитьПоиск + 103 + true + true + + true + + + ОтменитьПоискРасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CancelSearch + Picture + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды поиска</value> + + + КомандыПоискаРасширеннаяПодсказка + 100 + true + true + + true + + Label + true + true + + Left + + + + + + ОбщиеКоманды + 87 + + ВыполнитьСейчас + 23 + true + true + + true + + + Items.Список.CurrentData.Ref + + + ВыполнитьСейчасExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + Catalog.РассылкиОтчетов.Command.ВыполнитьСейчас + Auto + true + true + UserCmds + Auto + + + СобытияРассылки + 30 + true + true + + true + + + Items.Список.CurrentData.Ref + + + СобытияРассылкиExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + Catalog.РассылкиОтчетов.Command.СобытияРассылки + Auto + true + true + UserCmds + Auto + + + ИзменитьВыделенные + 79 + true + true + + true + + + ИзменитьВыделенныеРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Общие команды</value> + + + ОбщиеКомандыРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + + + + ВторостепенныеКоманды + 127 + + ФормаПеренестиЭлемент + 135 + true + true + + true + + + ФормаПеренестиЭлементРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.MoveItem + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьПометкуУдаления + 129 + true + true + + true + + + ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка + 130 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ФормаУдалить + 131 + true + true + + true + + + ФормаУдалитьРасширеннаяПодсказка + 132 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Второстепенные команды</value> + + + ВторостепенныеКомандыРасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + + + + ОсновныеКоманды + 22 + + ИзменитьФорму + 49 + true + true + + true + + + ИзменитьФормуРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ИзменитьСписок + 105 + + ФормаОбновить + 133 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 134 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Refresh + Auto + true + true + UserCmds + Auto + + + НастройкаСписка + 115 + + ФормаНастройкаСписка + 117 + true + true + + true + + + ФормаНастройкаСпискаРасширеннаяПодсказка + 118 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ListSettings + Auto + true + true + UserCmds + Auto + + + ФормаЗагрузитьНастройки + 119 + true + true + + true + + + ФормаЗагрузитьНастройкиРасширеннаяПодсказка + 120 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.LoadDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьНастройки + 121 + true + true + + true + + + ФормаСохранитьНастройкиРасширеннаяПодсказка + 122 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SaveDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСтандартныеНастройки + 123 + true + true + + true + + + ФормаСтандартныеНастройкиРасширеннаяПодсказка + 124 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.DynamicListStandardSettings + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Настройка списка</value> + + + НастройкаСпискаРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + + + + РежимПросмотраСписка + 113 + + ФормаИерархическийСписок + 107 + true + true + + true + + + ФормаИерархическийСписокРасширеннаяПодсказка + 108 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.HierarchicalList + Auto + true + true + UserCmds + Auto + + + ФормаСписок + 137 + true + true + + true + + + ФормаСписокРасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.List + Auto + true + true + UserCmds + Auto + + + ФормаДерево + 111 + true + true + + true + + + ФормаДеревоРасширеннаяПодсказка + 112 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Tree + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Режим просмотра</value> + + + РежимПросмотраСпискаРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.ListViewMode + + Auto + + + + ФормаВывестиСписок + 125 + true + true + + true + + + ФормаВывестиСписокРасширеннаяПодсказка + 126 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Список</value> + + + ИзменитьСписокРасширеннаяПодсказка + 106 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Основные команды</value> + + + ОсновныеКомандыРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + + + + Справка + 37 + true + true + + true + + + СправкаРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 86 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + None + + Наименование + 6 + Usual + true + true + + true + + + + Список.Description + + + + НаименованиеExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 25 + true + 35 + true + + + + Подготовлена + 14 + VeryHigh + true + true + + true + + + + Список.Подготовлена + + + None + + ПодготовленаExtendedTooltip + 71 + true + true + + true + + Label + true + true + + Left + + + + ПодготовленаКонтекстноеМеню + 15 + true + true + + true + + true + + CheckBoxField + Enter + true + + CommonPicture.Успешно + + Left + true + + + + ПоследнийЗапускСКартинкой + 31 + + Картинка + 32 + + <key>ru</key> + <value>Статус последнего запуска</value> + + true + true + + true + + + + Список.ИндексКартинкиПоследнегоЗапуска + + + + КартинкаExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + + КартинкаКонтекстноеМеню + 33 + true + true + + true + + true + + PictureField + Enter + Left + + true + true + true + + CommonPicture.СостояниеРассылкиОтчетов + + + + + ПоследнийЗапуск + 24 + + <key>ru</key> + <value>Последний запуск</value> + + true + true + + true + + + + Список.ПоследнийЗапуск + + + + ПоследнийЗапускExtendedTooltip + 66 + true + true + + true + + Label + true + true + + Left + + + + ПоследнийЗапускКонтекстноеМеню + 25 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 8 + true + 4 + true + false + + + true + true + + true + + + <key>ru</key> + <value>Последний запуск с картинкой</value> + + + ПоследнийЗапускСКартинкойExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + РасписаниеСКартинкой + 50 + + Расписание + 18 + + <key>ru</key> + <value>Расписание</value> + + true + true + + true + + + + Список.ИндексКартинкиРасписания + + + + РасписаниеExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеКонтекстноеМеню + 19 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + 12 + true + true + true + + StdPicture.SetTime + + + + + ПериодичностьРасписания + 51 + + <key>ru</key> + <value>Периодичность расписания</value> + + true + true + + true + + + + Список.ПериодичностьРасписания + + + + ПериодичностьРасписанияExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + + ПериодичностьРасписанияКонтекстноеМеню + 52 + true + true + + true + + true + + LabelField + Enter + Left + + 2 + true + true + false + + + true + true + + true + + + <key>ru</key> + <value>Расписание с картинкой</value> + + + РасписаниеСКартинкойExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + УспешныйЗапуск + 154 + + <key>ru</key> + <value>Успешный запуск</value> + + true + true + + true + + + + Список.УспешныйЗапуск + + + + УспешныйЗапускРасширеннаяПодсказка + 156 + true + true + + true + + Label + true + true + + Left + + + + УспешныйЗапускКонтекстноеМеню + 155 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + 20 + true + + + + Автор + 12 + true + true + + + + Список.Автор + + + + АвторExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 13 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Состояние + 26 + + <key>ru</key> + <value>Состояние</value> + + true + true + + + + Список.Состояние + + + + СостояниеExtendedTooltip + 72 + true + true + + true + + Label + true + true + + Left + + + + СостояниеКонтекстноеМеню + 27 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 15 + true + true + + + + Архивировать + 39 + true + true + + + + Список.Архивировать + + + + АрхивироватьExtendedTooltip + 73 + true + true + + true + + Label + true + true + + Left + + + + АрхивироватьКонтекстноеМеню + 40 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ТипПолучателейРассылки + 43 + true + true + + + + Список.ТипПолучателейРассылки + + + + ТипПолучателейРассылкиExtendedTooltip + 74 + true + true + + true + + Label + true + true + + Left + + + + ТипПолучателейРассылкиКонтекстноеМеню + 44 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 5 + true + true + + + + ВидПочтовогоАдресаПолучателей + 41 + true + true + + + + Список.ВидПочтовогоАдресаПолучателей + + + + ВидПочтовогоАдресаПолучателейExtendedTooltip + 75 + true + true + + true + + Label + true + true + + Left + + + + ВидПочтовогоАдресаПолучателейКонтекстноеМеню + 42 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 5 + true + true + + + + Ссылка + 76 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 77 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 139 + + СписокСтрокаПоискаРасширеннаяПодсказка + 141 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 140 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 142 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 144 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 143 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 145 + + СписокУправлениеПоискомРасширеннаяПодсказка + 147 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 146 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + ВыполнитьСейчасСписок + 53 + true + true + + true + + + Items.Список.CurrentData.Ref + + + ВыполнитьСейчасСписокРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + Catalog.РассылкиОтчетов.Command.ВыполнитьСейчас + Auto + true + true + UserCmds + Auto + + + СобытияРассылкиСписок + 54 + true + true + + true + + + Items.Список.CurrentData.Ref + + + СобытияРассылкиСписокРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Catalog.РассылкиОтчетов.Command.СобытияРассылки + Auto + true + true + UserCmds + Auto + + + ИзменитьВыделенныеСписок + 81 + true + true + + true + + + ИзменитьВыделенныеСписокРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandAllLevels + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ + Рассылки.Ссылка, + Рассылки.ВерсияДанных, + Рассылки.ПометкаУдаления, + Рассылки.Предопределенный, + Рассылки.Родитель, + Рассылки.ЭтоГруппа, + Рассылки.Наименование, + Рассылки.Автор, + Рассылки.Подготовлена, + Рассылки.Личная, + Рассылки.Персонализирована, + Рассылки.ВыполнятьПоРасписанию, + ВЫБОР + КОГДА Рассылки.ВыполнятьПоРасписанию = ИСТИНА + И Рассылки.Подготовлена = ИСТИНА + ТОГДА Рассылки.ПериодичностьРасписания + ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ПериодичностиРасписанийРассылокОтчетов.ПустаяСсылка) + КОНЕЦ КАК ПериодичностьРасписания, + Рассылки.РегламентноеЗадание, + ВЫБОР + КОГДА Рассылки.ВыполнятьПоРасписанию = ИСТИНА + И Рассылки.Подготовлена = ИСТИНА + ТОГДА 0 + ИНАЧЕ 1 + КОНЕЦ КАК ИндексКартинкиРасписания, + Рассылки.ИспользоватьПапку, + Рассылки.Папка, + Рассылки.ИспользоватьСетевойКаталог, + Рассылки.СетевойКаталогWindows, + Рассылки.СетевойКаталогLinux, + Рассылки.ИспользоватьFTPРесурс, + Рассылки.FTPСервер, + Рассылки.FTPКаталог, + Рассылки.FTPПорт, + Рассылки.FTPПассивноеСоединение, + Рассылки.ИспользоватьЭлектроннуюПочту, + Рассылки.ТолькоУведомить, + Рассылки.УчетнаяЗапись, + Рассылки.ПисьмоВФорматеHTML, + Рассылки.ТекстПисьмаВФорматеHTML, + Рассылки.КартинкиПисьмаВФорматеHTML, + Рассылки.ТекстПисьма, + Рассылки.ТемаПисьма, + Рассылки.ТипПолучателейРассылки, + Рассылки.ВидПочтовогоАдресаПолучателей, + Рассылки.СкрытыеКопии, + Рассылки.АдресОтвета, + Рассылки.Архивировать, + Рассылки.ИмяАрхива, + Состояние.ПоследнийЗапускНачало Как ПоследнийЗапуск, + Состояние.СОшибками, + ВЫБОР + КОГДА Состояние.Выполнена + ТОГДА Состояние.ПоследнийЗапускНачало + ИНАЧЕ Состояние.УспешныйЗапуск + КОНЕЦ КАК УспешныйЗапуск, + ВЫБОР + КОГДА Состояние.ПоследнийЗапускНачало ЕСТЬ NULL + ИЛИ Рассылки.ПометкаУдаления = ИСТИНА + ТОГДА 0 + КОГДА Состояние.ПоследнийЗапускНачало = &ПустаяДата + ТОГДА 0 + КОГДА НЕ Состояние.Выполнена + ТОГДА 1 + КОГДА Состояние.СОшибками + ТОГДА 1 + ИНАЧЕ 2 + КОНЕЦ КАК ИндексКартинкиПоследнегоЗапуска, + ВЫБОР + КОГДА Состояние.ПоследнийЗапускНачало ЕСТЬ NULL + ИЛИ Рассылки.ПометкаУдаления = ИСТИНА + ТОГДА ВЫРАЗИТЬ("" КАК СТРОКА(50)) + КОГДА Состояние.ПоследнийЗапускНачало = &ПустаяДата + ТОГДА &ПредставлениеСостоянияНовая + КОГДА НЕ Состояние.Выполнена + ТОГДА &ПредставлениеСостоянияНеВыполнена + КОГДА Состояние.СОшибками + ТОГДА &ПредставлениеСостоянияВыполненаСОшибками + ИНАЧЕ &ПредставлениеСостоянияВыполнена + КОНЕЦ КАК Состояние +ИЗ + Справочник.РассылкиОтчетов КАК Рассылки +ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияРассылокОтчетов КАК Состояние +ПО (Состояние.Рассылка = Рассылки.Ссылка) +{ГДЕ ИСТИНА В +( + ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА + ИЗ + Справочник.РассылкиОтчетов.Отчеты КАК Отчеты + ГДЕ Отчеты.Ссылка = Рассылки.Ссылка И Отчеты.Отчет = &ОтчетОтбор +)} + Catalog.РассылкиОтчетов + true + true + true + true + true + +
+ + ПараметрыФоновогоЗадания + 2 + + ValueList + + + true + + + true + + + + + + + ОтветственныйОтбор + + <key>ru</key> + <value>Ответственный</value> + + 4 + + CatalogRef.Пользователи + + + true + + + true + + + + ОтчетОтбор + + <key>ru</key> + <value>Отчет</value> + + 5 + + CatalogRef.ВариантыОтчетов + + + true + + + true + + + + СостояниеОтбор + + <key>ru</key> + <value>Состояние</value> + + 6 + + String + + + + true + + + true + + + + ИзменитьВыделенные + + <key>ru</key> + <value>Изменить выделенные...</value> + + 1 + + ru + Изменить выделенные объекты + + + true + + + + ИзменитьВыделенные + + + DontUse + + + Отчет + + CatalogRef.ВариантыОтчетов + + true + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..0d4dbadd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,176 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Параметры.Свойство("Отображение") Тогда + Элементы.Список.Отображение = ОтображениеТаблицы[Параметры.Отображение]; + КонецЕсли; + + ТекстОшибкиПриОткрытии = РассылкаОтчетов.ТекстОшибкиПроверкиПраваДобавления(); + Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда + ВызватьИсключение ТекстОшибкиПриОткрытии; + КонецЕсли; + + // Установка отборов динамического списка. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ВыполнятьПоРасписанию", Ложь, + ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПериодичностьРасписания", , + ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Подготовлена", Ложь, + ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Автор", , + ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); + + ЗаполнитьПараметрСписка("РежимВыбора"); + ЗаполнитьПараметрСписка("ВыборГруппИЭлементов"); + ЗаполнитьПараметрСписка("МножественныйВыбор"); + ЗаполнитьПараметрСписка("ТекущаяСтрока"); + + Если Не ПравоДоступа("Изменение", Метаданные.Справочники.РассылкиОтчетов) Тогда + // Режим показа только личных рассылок - скрываются группы и лишние колонки. + Элементы.Список.Отображение = ОтображениеТаблицы.Список; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + КонецЕсли; + + ОтчетОтбор = Параметры.Отчет; + УстановитьОтбор(Ложь); + + Список.Параметры.УстановитьЗначениеПараметра("ПустаяДата", '00010101'); + Список.Параметры.УстановитьЗначениеПараметра("ПредставлениеСостоянияНовая", НСтр("ru = 'Новая'")); + Список.Параметры.УстановитьЗначениеПараметра("ПредставлениеСостоянияНеВыполнена", НСтр("ru = 'Не выполнена'")); + Список.Параметры.УстановитьЗначениеПараметра("ПредставлениеСостоянияВыполненаСОшибками", НСтр("ru = 'Выполнена с ошибками'")); + Список.Параметры.УстановитьЗначениеПараметра("ПредставлениеСостоянияВыполнена", НСтр("ru = 'Выполнена'")); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") + Или Не ПравоДоступа("Изменение", Метаданные.Справочники.РассылкиОтчетов) Тогда + Элементы.ИзменитьВыделенные.Видимость = Ложь; + Элементы.ИзменитьВыделенныеСписок.Видимость = Ложь; + КонецЕсли; + + Если Не ПравоДоступа("ЖурналРегистрации", Метаданные) Тогда + Элементы.СобытияРассылки.Видимость = Ложь; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + УстановитьОтборСписка(Настройки); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СостояниеОтборПриИзменении(Элемент) + УстановитьОтбор(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтчетОтборПриИзменении(Элемент) + УстановитьОтбор(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтветственныйОтборПриИзменении(Элемент) + УстановитьОтбор(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ИзменитьВыделенные(Команда) + МодульГрупповоеИзменениеОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ГрупповоеИзменениеОбъектовКлиент"); + МодульГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "Список.ПоследнийЗапуск", Элементы.ПоследнийЗапуск.Имя); + СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "Список.УспешныйЗапуск", Элементы.УспешныйЗапуск.Имя); + + ЭлементУсловногоОформления = Список.УсловноеОформление.Элементы.Добавить(); + ЭлементУсловногоОформления.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + + // Неподготовленные рассылки отчетов + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЭтоГруппа"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Ложь; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подготовлена"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Ложь; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("ЦветТекста"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПараметрСписка(Ключ) + Если Параметры.Свойство(Ключ) И ЗначениеЗаполнено(Параметры[Ключ]) Тогда + Элементы.Список[Ключ] = Параметры[Ключ]; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтбор(СнятьФиксированныеОтборы = Истина) + + Если СнятьФиксированныеОтборы Тогда + Список.Отбор.Элементы.Очистить(); + КонецЕсли; + ПараметрыОтбора = Новый Соответствие(); + ПараметрыОтбора.Вставить("СОшибками", СостояниеОтбор); + ПараметрыОтбора.Вставить("Отчет", ОтчетОтбор); + ПараметрыОтбора.Вставить("Автор", ОтветственныйОтбор); + УстановитьОтборСписка(ПараметрыОтбора); +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтборСписка(ПараметрыОтбора) + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Автор", ПараметрыОтбора["Автор"],,, + Не ПараметрыОтбора["Автор"].Пустая()); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "СОшибками", ПараметрыОтбора["СОшибками"] = "Невыполненные",,, + ПараметрыОтбора["СОшибками"] <> "Все" И ЗначениеЗаполнено(ПараметрыОтбора["СОшибками"])); + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "ОтчетОтбор", ПараметрыОтбора["Отчет"], + ЗначениеЗаполнено(ПараметрыОтбора["Отчет"]) И Не ПараметрыОтбора["Отчет"].Пустая()); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..9ff49869 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,12319 @@ + + + + ГруппаРассылкаПодготовлена + 339 + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 701 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 55 + true + true + true + true + true + true + + + + Подготовлена + 337 + true + true + + true + + + + Объект.Подготовлена + + + Right + + OnChange + ПодготовленаПриИзменении + + + ПодготовленаExtendedTooltip + 702 + true + true + + true + + Label + true + true + + Left + + + + ПодготовленаКонтекстноеМеню + 338 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Рассылка подготовлена</value> + + + ГруппаРассылкаПодготовленаExtendedTooltip + 700 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаВидРассылки + 538 + + ВидРассылки + 536 + + <key>ru</key> + <value>Отправлять</value> + + true + true + + true + + + + ВидРассылки + + + + OnChange + ВидРассылкиПриИзменении + + + ВидРассылкиExtendedTooltip + 704 + true + true + + true + + Label + true + true + + Left + + + + ВидРассылкиКонтекстноеМеню + 537 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + false + false + false + true + OnActivate + true + true + + + ru + Отчеты указанным получателям + + + Общая + + + + + ru + Свой отчет для каждого получателя + + + Персонализирована + + + + + ru + Только мне (личная рассылка автора) + + + Личная + + + + Style.ФонУправляющегоПоля + + + + + ВидыРассылки + 597 + + ВидыРассылкиЛичная + 600 + + ВидПочтовогоАдресаАвтора + 574 + true + true + + true + + + + Объект.ВидПочтовогоАдресаПолучателей + + + + ВидПочтовогоАдресаАвтораExtendedTooltip + 707 + true + true + + true + + Label + true + true + + Left + + + + ВидПочтовогоАдресаАвтораКонтекстноеМеню + 575 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Opening + ВидПочтовогоАдресаАвтораОткрытие + + 25 + true + true + false + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Виды рассылки личная</value> + + + ВидыРассылкиЛичнаяExtendedTooltip + 706 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ВидыРассылкиДляПолучателей + 598 + + ТипПолучателейРассылки + 132 + true + true + + true + + + + ТипПолучателейРассылки + + + + OnChange + ТипПолучателейРассылкиПриИзменении + + + ТипПолучателейРассылкиExtendedTooltip + 709 + true + true + + true + + Label + true + true + + Left + + + + ТипПолучателейРассылкиКонтекстноеМеню + 133 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + ТипПолучателейРассылкиОчистка + + + ChoiceProcessing + ТипПолучателейРассылкиОбработкаВыбора + + 25 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Виды рассылки для получателей</value> + + + ВидыРассылкиДляПолучателейExtendedTooltip + 708 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Виды рассылки</value> + + + ВидыРассылкиExtendedTooltip + 705 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Вид рассылки</value> + + + ГруппаВидРассылкиExtendedTooltip + 703 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Страницы + 37 + + СтраницаОтчеты + 56 + + Отчеты + 218 + + <key>ru</key> + <value>Отчеты</value> + + true + true + + true + + + Объект.Отчеты + + None + Add + Change + Copy + + ОтчетыПредставление + 223 + true + true + + true + + + + Объект.Отчеты.Представление + + + + ОтчетыПредставлениеРасширеннаяПодсказка + 719 + true + true + + true + + Label + true + true + + Left + + + + ОтчетыПредставлениеКонтекстноеМеню + 224 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + + + + ОтчетыКоманднаяПанель + 220 + + ОтчетыВключитьВРассылку + 225 + + ОтчетыДобавитьОтчет + 226 + true + true + + true + + + ОтчетыДобавитьОтчетExtendedTooltip + 714 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьОтчет + Auto + true + true + UserCmds + Auto + + + ОтчетыДобавитьДополнительныйОтчет + 227 + true + true + + true + + + ОтчетыДобавитьДополнительныйОтчетExtendedTooltip + 715 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьДополнительныйОтчет + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Включить в рассылку</value> + + + ru + Включить отчет в рассылку + + + ОтчетыВключитьВРассылкуExtendedTooltip + 713 + true + true + + true + + Label + true + true + + Left + + + + + + ОтчетыУдалить + 1002 + true + true + + true + + + ОтчетыУдалитьРасширеннаяПодсказка + 1003 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Отчеты.StandardCommand.Delete + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КомандыПеремещения + 1004 + + ОтчетыПереместитьВверх + 998 + true + true + + true + + + ОтчетыПереместитьВверхРасширеннаяПодсказка + 999 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Отчеты.StandardCommand.MoveUp + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ОтчетыПереместитьВниз + 1000 + true + true + + true + + + ОтчетыПереместитьВнизРасширеннаяПодсказка + 1001 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Отчеты.StandardCommand.MoveDown + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Команды перемещения</value> + + + КомандыПеремещенияРасширеннаяПодсказка + 1005 + true + true + + true + + Label + true + true + + Left + + + + + + ОтчетыСформироватьОтчет + 356 + true + true + + true + + + ОтчетыСформироватьОтчетExtendedTooltip + 717 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредварительныйПросмотрОтчета + Auto + true + true + UserCmds + Auto + + + КоманднаяПанельОтчеты + 354 + true + true + + true + + + <key>ru</key> + <value>Командная панель отчеты</value> + + + КоманднаяПанельОтчетыРасширеннаяПодсказка + 716 + true + true + + true + + Label + true + true + + Left + + + + Item.Отчеты + + + true + true + + true + + Left + + + BeforeAddRow + ОтчетыПередНачаломДобавления + + + OnActivateRow + ОтчетыПриАктивизацииСтроки + + + ChoiceProcessing + ОтчетыОбработкаВыбора + + + BeforeRowChange + ОтчетыПередНачаломИзменения + + + AfterDeleteRow + ОтчетыПослеУдаления + + + true + true + + true + + ОтчетыСтрокаПоиска + 1006 + + ОтчетыСтрокаПоискаРасширеннаяПодсказка + 1008 + true + true + + true + + Label + true + true + + Left + + + + ОтчетыСтрокаПоискаКонтекстноеМеню + 1007 + true + true + + true + + true + + + true + + + + true + true + + true + + ОтчетыСостояниеПросмотра + 1009 + + ОтчетыСостояниеПросмотраРасширеннаяПодсказка + 1011 + true + true + + true + + Label + true + true + + Left + + + + ОтчетыСостояниеПросмотраКонтекстноеМеню + 1010 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОтчетыУправлениеПоиском + 1012 + + ОтчетыУправлениеПоискомРасширеннаяПодсказка + 1014 + true + true + + true + + Label + true + true + + Left + + + + ОтчетыУправлениеПоискомКонтекстноеМеню + 1013 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОтчетыExtendedTooltip + 718 + true + true + + true + + Label + true + true + + Left + + + + ОтчетыКонтекстноеМеню + 219 + + ОтчетыСформироватьОтчетКонтекстноеМеню + 1178 + true + true + + true + + + ОтчетыСформироватьОтчетКонтекстноеМенюРасширеннаяПодсказка + 1179 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредварительныйПросмотрОтчета + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + HierarchicalList + true + true + true + 3 + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + SelectionPresentationAndChoice + + + + ГруппаНастройкиОтчетов + 987 + + СтраницыНастроекОтчета + 249 + + ПустаяСтраница + 252 + + ПустыеНастройки + 657 + + <key>ru</key> + <value>Пустые настройки</value> + + true + true + + true + + + НастройкиТекущегоОтчета + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + SelectAll + SortListAsc + SortListDesc + + НастройкиТекущегоОтчетаИспользование1 + 660 + true + true + + true + + + + НастройкиТекущегоОтчета.Использование + + + + НастройкиТекущегоОтчетаИспользование1ExtendedTooltip + 724 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаИспользование1КонтекстноеМеню + 661 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + НастройкиТекущегоОтчетаПредставление1 + 662 + + <key>ru</key> + <value>Настройка</value> + + true + true + + true + + + + НастройкиТекущегоОтчета.Представление + + + true + + НастройкиТекущегоОтчетаПредставление1ExtendedTooltip + 725 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаПредставление1КонтекстноеМеню + 663 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + НастройкиТекущегоОтчетаЗначение1 + 664 + true + true + + true + + + + НастройкиТекущегоОтчета.Значение + + + + НастройкиТекущегоОтчетаЗначение1ExtendedTooltip + 726 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаЗначение1КонтекстноеМеню + 665 + true + true + + true + + true + + InputField + true + Left + true + + true + true + true + true + true + true + + + Items.НастройкиТекущегоОтчета.CurrentData.Тип + + + + + + ПустыеНастройкиКоманднаяПанель + 659 + true + true + + true + + Left + + + true + true + + true + + ПустыеНастройкиСтрокаПоиска + 1015 + + ПустыеНастройкиСтрокаПоискаРасширеннаяПодсказка + 1017 + true + true + + true + + Label + true + true + + Left + + + + ПустыеНастройкиСтрокаПоискаКонтекстноеМеню + 1016 + true + true + + true + + true + + + true + + + + true + true + + true + + ПустыеНастройкиСостояниеПросмотра + 1018 + + ПустыеНастройкиСостояниеПросмотраРасширеннаяПодсказка + 1020 + true + true + + true + + Label + true + true + + Left + + + + ПустыеНастройкиСостояниеПросмотраКонтекстноеМеню + 1019 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПустыеНастройкиУправлениеПоиском + 1021 + + ПустыеНастройкиУправлениеПоискомРасширеннаяПодсказка + 1023 + true + true + + true + + Label + true + true + + Left + + + + ПустыеНастройкиУправлениеПоискомКонтекстноеМеню + 1022 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПустыеНастройкиExtendedTooltip + 723 + true + true + + true + + Label + true + true + + Left + + + + ПустыеНастройкиКонтекстноеМеню + 658 + true + true + + true + + + true + true + true + 5 + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + НастройкиТекущегоОтчета.ИндексКартинки + + + CommonPicture.ПиктограммыЭлементов + + +
+ true + true + + true + + + <key>ru</key> + <value>Пустая страница</value> + + + ПустаяСтраницаExtendedTooltip + 722 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + СтраницаКомпоновщик + 250 + + ПользовательскиеНастройки + 187 + + <key>ru</key> + <value>Пользовательские настройки</value> + + true + true + + true + + + КомпоновщикНастроекКД.UserSettings + + None + Change + EndEdit + HierarchicalList + List + Tree + UseFieldAsValue + + ПользовательскиеНастройкиИспользование + 581 + true + true + + true + + + + КомпоновщикНастроекКД.UserSettings.Use + + + None + + ПользовательскиеНастройкиИспользованиеРасширеннаяПодсказка + 729 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиИспользованиеКонтекстноеМеню + 582 + true + true + + true + + true + + CheckBoxField + true + Left + true + + + + ПользовательскиеНастройкиГруппаКолонок + 583 + + ПользовательскиеНастройкиКартинкаНастройки + 584 + true + true + + true + + + + КомпоновщикНастроекКД.UserSettings.SettingPicture + + + + ПользовательскиеНастройкиКартинкаНастройкиРасширеннаяПодсказка + 731 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиКартинкаНастройкиКонтекстноеМеню + 585 + true + true + + true + + true + + PictureField + Enter + Left + + true + true + true + true + + + + ПользовательскиеНастройкиНастройка + 586 + true + true + + true + + + + КомпоновщикНастроекКД.UserSettings.Setting + + + + ПользовательскиеНастройкиНастройкаРасширеннаяПодсказка + 732 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиНастройкаКонтекстноеМеню + 587 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пользовательские настройки группа колонок</value> + + + ПользовательскиеНастройкиГруппаКолонокРасширеннаяПодсказка + 730 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ПользовательскиеНастройкиВидСравнения + 588 + true + true + + true + + + + КомпоновщикНастроекКД.UserSettings.ComparisonType + + + + ПользовательскиеНастройкиВидСравненияРасширеннаяПодсказка + 733 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиВидСравненияКонтекстноеМеню + 589 + true + true + + true + + true + + InputField + true + Left + true + + true + true + true + true + true + true + + + + ПользовательскиеНастройкиГруппаКолонок1 + 590 + + ПользовательскиеНастройкиКартинкаЗначения + 591 + true + true + + true + + + + КомпоновщикНастроекКД.UserSettings.ValuePicture + + + + ПользовательскиеНастройкиКартинкаЗначенияРасширеннаяПодсказка + 735 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиКартинкаЗначенияКонтекстноеМеню + 592 + true + true + + true + + true + + PictureField + Enter + Left + + true + true + true + true + + + + ПользовательскиеНастройкиЗначение + 593 + true + true + + true + + + + КомпоновщикНастроекКД.UserSettings.Value + + + true + + ПользовательскиеНастройкиЗначениеРасширеннаяПодсказка + 736 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиЗначениеКонтекстноеМеню + 594 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ПользовательскиеНастройкиЗначениеНачалоВыбора + + + Clearing + ПользовательскиеНастройкиЗначениеОчистка + + 15 + true + true + true + true + true + OnActivate + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пользовательские настройки группа колонок 1</value> + + + ПользовательскиеНастройкиГруппаКолонок1РасширеннаяПодсказка + 734 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ПользовательскиеНастройкиРедактированиеВФормеОтчета + 595 + true + + + + КомпоновщикНастроекКД.UserSettings.EditInReportForm + + + + ПользовательскиеНастройкиРедактированиеВФормеОтчетаРасширеннаяПодсказка + 737 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиРедактированиеВФормеОтчетаКонтекстноеМеню + 596 + true + true + + true + + true + + CheckBoxField + true + Left + true + + + + ПользовательскиеНастройкиКоманднаяПанель + 189 + + ПользовательскиеНастройкиУстановитьФлажки + 951 + true + true + + true + + + ПользовательскиеНастройкиУстановитьФлажкиРасширеннаяПодсказка + 952 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользовательскиеНастройки.StandardCommand.CheckAll + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ПользовательскиеНастройкиСнятьФлажки + 953 + true + true + + true + + + ПользовательскиеНастройкиСнятьФлажкиРасширеннаяПодсказка + 954 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПользовательскиеНастройки.StandardCommand.UncheckAll + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ИспользоватьПолучателяРассылкиВНастройкеОтчета1 + 945 + true + true + + true + + + ИспользоватьПолучателяРассылкиВНастройкеОтчета1РасширеннаяПодсказка + 946 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УказатьПолучателяРассылки + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + Selection + ПользовательскиеНастройкиВыбор + + + OnActivateRow + ПользовательскиеНастройкиПриАктивизацииСтроки + + + OnChange + ПользовательскиеНастройкиПриИзменении + + + true + true + + true + + ПользовательскиеНастройкиСтрокаПоиска + 1024 + + ПользовательскиеНастройкиСтрокаПоискаРасширеннаяПодсказка + 1026 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиСтрокаПоискаКонтекстноеМеню + 1025 + true + true + + true + + true + + + true + + + + true + true + + true + + ПользовательскиеНастройкиСостояниеПросмотра + 1027 + + ПользовательскиеНастройкиСостояниеПросмотраРасширеннаяПодсказка + 1029 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиСостояниеПросмотраКонтекстноеМеню + 1028 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПользовательскиеНастройкиУправлениеПоиском + 1030 + + ПользовательскиеНастройкиУправлениеПоискомРасширеннаяПодсказка + 1032 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиУправлениеПоискомКонтекстноеМеню + 1031 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПользовательскиеНастройкиРасширеннаяПодсказка + 728 + true + true + + true + + Label + true + true + + Left + + + + ПользовательскиеНастройкиКонтекстноеМеню + 188 + + ИспользоватьПолучателяРассылкиВНастройкеОтчета2 + 949 + true + true + + true + + + ИспользоватьПолучателяРассылкиВНастройкеОтчета2РасширеннаяПодсказка + 950 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УказатьПолучателяРассылки + Auto + true + true + UserCmds + Auto + + + ПользовательскиеНастройкиКонтекстноеМенюУдалитьПолучателяРассылки + 1183 + true + true + + true + + + ПользовательскиеНастройкиКонтекстноеМенюУдалитьПолучателяРассылкиРасширеннаяПодсказка + 1184 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УдалитьПолучателяРассылки + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + HierarchicalList + true + true + true + 5 + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + All +
+ true + true + + true + + + <key>ru</key> + <value>Страница компоновщик</value> + + + СтраницаКомпоновщикExtendedTooltip + 727 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + +
+ + СтраницаНастройкиТекущегоОтчета + 251 + + НастройкиТекущегоОтчета + 234 + + <key>ru</key> + <value>Настройки текущего отчета</value> + + true + true + + true + + + НастройкиТекущегоОтчета + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + SelectAll + SortListAsc + SortListDesc + + НастройкиТекущегоОтчетаИспользование + 245 + true + true + + true + + + + НастройкиТекущегоОтчета.Использование + + + + НастройкиТекущегоОтчетаИспользованиеExtendedTooltip + 740 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаИспользованиеКонтекстноеМеню + 246 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + НастройкиТекущегоОтчетаПредставление + 239 + + <key>ru</key> + <value>Настройка</value> + + true + true + + true + + + + НастройкиТекущегоОтчета.Представление + + + true + + НастройкиТекущегоОтчетаПредставлениеExtendedTooltip + 741 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаПредставлениеКонтекстноеМеню + 240 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + НастройкиТекущегоОтчетаЗначение + 243 + true + true + + true + + + + НастройкиТекущегоОтчета.Значение + + + + OnChange + НастройкиТекущегоОтчетаЗначениеПриИзменении + + + НастройкиТекущегоОтчетаЗначениеExtendedTooltip + 742 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаЗначениеКонтекстноеМеню + 244 + true + true + + true + + true + + InputField + true + Left + true + + true + true + true + true + true + true + + + Items.НастройкиТекущегоОтчета.CurrentData.Тип + + + + + + НастройкиТекущегоОтчетаКоманднаяПанель + 236 + + ИспользоватьПолучателяРассылкиВНастройкеОтчета3 + 943 + true + true + + true + + + ИспользоватьПолучателяРассылкиВНастройкеОтчета3РасширеннаяПодсказка + 944 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УказатьПолучателяРассылки + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnChange + НастройкиТекущегоОтчетаПриИзменении + + + true + true + + true + + НастройкиТекущегоОтчетаСтрокаПоиска + 1033 + + НастройкиТекущегоОтчетаСтрокаПоискаРасширеннаяПодсказка + 1035 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаСтрокаПоискаКонтекстноеМеню + 1034 + true + true + + true + + true + + + true + + + + true + true + + true + + НастройкиТекущегоОтчетаСостояниеПросмотра + 1036 + + НастройкиТекущегоОтчетаСостояниеПросмотраРасширеннаяПодсказка + 1038 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаСостояниеПросмотраКонтекстноеМеню + 1037 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НастройкиТекущегоОтчетаУправлениеПоиском + 1039 + + НастройкиТекущегоОтчетаУправлениеПоискомРасширеннаяПодсказка + 1041 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаУправлениеПоискомКонтекстноеМеню + 1040 + true + true + + true + + true + + SearchControlAddition + + true + + + + НастройкиТекущегоОтчетаExtendedTooltip + 739 + true + true + + true + + Label + true + true + + Left + + + + НастройкиТекущегоОтчетаКонтекстноеМеню + 235 + + ИспользоватьПолучателяРассылкиВНастройкеОтчета4 + 947 + true + true + + true + + + ИспользоватьПолучателяРассылкиВНастройкеОтчета4РасширеннаяПодсказка + 948 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УказатьПолучателяРассылки + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + 5 + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + НастройкиТекущегоОтчета.ИндексКартинки + + + CommonPicture.ПиктограммыЭлементов + + +
+ true + true + + true + + + <key>ru</key> + <value>Страница настройки текущего отчета</value> + + + СтраницаНастройкиТекущегоОтчетаExtendedTooltip + 738 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + +
+ true + true + + true + + + <key>ru</key> + <value>Настройки отчета:</value> + + + СтраницыНастроекОтчетаExtendedTooltip + 721 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
+ true + true + + true + + + <key>ru</key> + <value>Настройки отчета:</value> + + + ГруппаНастройкиОтчетовРасширеннаяПодсказка + 988 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + +
+ true + true + + true + + + <key>ru</key> + <value>Отчеты</value> + + + ru + Выбор отчетов для рассылки + + + СтраницаОтчетыExtendedTooltip + 712 + true + true + + true + + Label + true + true + + Left + + + Page + + + StdPicture.Report + + Vertical + true + +
+ + СтраницаРасписание + 423 + + ГруппаПериодичность + 424 + + ВыполнятьПоРасписанию + 676 + + <key>ru</key> + <value>Выполнять по расписанию:</value> + + true + true + + true + + + + Объект.ВыполнятьПоРасписанию + + + Right + + OnChange + ВыполнятьПоРасписаниюПриИзменении + + + ВыполнятьПоРасписаниюExtendedTooltip + 745 + true + true + + true + + Label + true + true + + Left + + + + ВыполнятьПоРасписаниюКонтекстноеМеню + 677 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПараметрыВыполненияПоРасписанию + 678 + + ПериодичностьРасписания + 425 + true + true + + true + + + + Объект.ПериодичностьРасписания + + + None + + OnChange + ПериодичностьРасписанияПриИзменении + + + ПериодичностьРасписанияExtendedTooltip + 747 + true + true + + true + + Label + true + true + + Left + + + + ПериодичностьРасписанияКонтекстноеМеню + 426 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + false + false + false + false + true + + + + СтраницыВремяИлиИзменить + 427 + + СтраницаВремяНачала + 428 + + ВремяНачала + 429 + true + true + + true + + + + ВремяНачала + + + + OnChange + ВремяНачалаПриИзменении + + + ВремяНачалаExtendedTooltip + 750 + true + true + + true + + Label + true + true + + Left + + + + ВремяНачалаКонтекстноеМеню + 430 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + + ru + ДФ=HH:mm + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница время начала</value> + + + СтраницаВремяНачалаExtendedTooltip + 749 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаИзменитьРасписание + 431 + + ИзменитьРасписание + 432 + true + true + + true + + + ИзменитьРасписаниеExtendedTooltip + 752 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ИзменитьРасписание + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Страница изменить расписание</value> + + + СтраницаИзменитьРасписаниеExtendedTooltip + 751 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы время или изменить</value> + + + СтраницыВремяИлиИзменитьExtendedTooltip + 748 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ЗаполнитьРасписаниеПоШаблону + 526 + true + true + + true + + + ЗаполнитьРасписаниеПоШаблонуExtendedTooltip + 754 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ЗаполнитьРасписаниеПоШаблону + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Параметры выполнения по расписанию</value> + + + ПараметрыВыполненияПоРасписаниюExtendedTooltip + 746 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Периодичность</value> + + + ГруппаПериодичностьExtendedTooltip + 744 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + СтраницыПериодичности + 433 + + СтраницаЕжедневно + 437 + + ГруппаСтрокаПериодПовтораДней + 438 + + ПериодПовтораДней + 439 + true + true + + true + + + + ПериодПовтораДней + + + + OnChange + ПериодПовтораДнейПриИзменении + + + ПериодПовтораДнейExtendedTooltip + 760 + true + true + + true + + Label + true + true + + Left + + + + ПериодПовтораДнейКонтекстноеМеню + 440 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ДекорацияДней + 441 + + <key>ru</key> + <value>дней</value> + + true + true + + true + + + ДекорацияДнейРасширеннаяПодсказка + 761 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияДнейКонтекстноеМеню + 442 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Строка период повтора дней</value> + + + ГруппаСтрокаПериодПовтораДнейExtendedTooltip + 759 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница ежедневно</value> + + + СтраницаЕжедневноExtendedTooltip + 758 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаЕженедельно + 445 + + ГруппаДниНедели + 974 + + Понедельник + 447 + true + true + + true + + + + Понедельник + + + Right + + OnChange + ДниНеделиПриИзменении + + + ПонедельникExtendedTooltip + 765 + true + true + + true + + Label + true + true + + Left + + + + ПонедельникКонтекстноеМеню + 448 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Вторник + 449 + true + true + + true + + + + Вторник + + + Right + + OnChange + ДниНеделиПриИзменении + + + ВторникExtendedTooltip + 766 + true + true + + true + + Label + true + true + + Left + + + + ВторникКонтекстноеМеню + 450 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Среда + 451 + true + true + + true + + + + Среда + + + Right + + OnChange + ДниНеделиПриИзменении + + + СредаExtendedTooltip + 767 + true + true + + true + + Label + true + true + + Left + + + + СредаКонтекстноеМеню + 452 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Четверг + 453 + true + true + + true + + + + Четверг + + + Right + + OnChange + ДниНеделиПриИзменении + + + ЧетвергExtendedTooltip + 768 + true + true + + true + + Label + true + true + + Left + + + + ЧетвергКонтекстноеМеню + 454 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Пятница + 455 + true + true + + true + + + + Пятница + + + Right + + OnChange + ДниНеделиПриИзменении + + + ПятницаExtendedTooltip + 769 + true + true + + true + + Label + true + true + + Left + + + + ПятницаКонтекстноеМеню + 456 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Суббота + 457 + true + true + + true + + + + Суббота + + + Right + + OnChange + ДниНеделиПриИзменении + + + СубботаExtendedTooltip + 770 + true + true + + true + + Label + true + true + + Left + + + + СубботаКонтекстноеМеню + 458 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Воскресенье + 459 + true + true + + true + + + + Воскресенье + + + Right + + OnChange + ДниНеделиПриИзменении + + + ВоскресеньеExtendedTooltip + 771 + true + true + + true + + Label + true + true + + Left + + + + ВоскресеньеКонтекстноеМеню + 460 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Дни недели</value> + + + ГруппаДниНеделиРасширеннаяПодсказка + 975 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Equal + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница еженедельно</value> + + + СтраницаЕженедельноExtendedTooltip + 763 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаЕжемесячно + 463 + + ГруппаСтрокаЕжемесячныхПараметров + 464 + + ДекорацияКаждый + 465 + + <key>ru</key> + <value>Каждый</value> + + true + true + + true + + + ДекорацияКаждыйРасширеннаяПодсказка + 775 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияКаждыйКонтекстноеМеню + 466 + true + true + + true + + true + + Label + true + + Left + + + + ДеньВМесяце + 467 + true + true + + true + + + + ДеньВМесяце + + + None + + OnChange + ДеньМесяцаПриИзменении + + + ДеньВМесяцеExtendedTooltip + 776 + true + true + + true + + Label + true + true + + Left + + + + ДеньВМесяцеКонтекстноеМеню + 468 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ДекорацияДеньМесяцаС + 469 + + <key>ru</key> + <value>день месяца с</value> + + true + true + + true + + + ДекорацияДеньМесяцаСРасширеннаяПодсказка + 777 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияДеньМесяцаСКонтекстноеМеню + 470 + true + true + + true + + true + + Label + true + + Left + + + + ГиперссылкаНачалоКонецМесяца + 471 + + <key>ru</key> + <value>начала</value> + + true + true + + true + + + ГиперссылкаНачалоКонецМесяцаExtendedTooltip + 778 + true + true + + true + + Label + true + true + + Left + + + + ГиперссылкаНачалоКонецМесяцаКонтекстноеМеню + 472 + true + true + + true + + true + + Label + true + + + Click + ГиперссылкаНачалоКонецМесяцаНажатие + + true + Left + + + + ДекорацияМесяца + 473 + + <key>ru</key> + <value>месяца.</value> + + true + true + + true + + + ДекорацияМесяцаРасширеннаяПодсказка + 779 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияМесяцаКонтекстноеМеню + 474 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Строка ежемесячных параметров</value> + + + ГруппаСтрокаЕжемесячныхПараметровExtendedTooltip + 774 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаМесяцы + 475 + + ГруппаКвартал1 + 476 + + Январь + 477 + true + true + + true + + + + Январь + + + Right + + OnChange + МесяцыПриИзменении + + + ЯнварьExtendedTooltip + 782 + true + true + + true + + Label + true + true + + Left + + + + ЯнварьКонтекстноеМеню + 478 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Февраль + 479 + true + true + + true + + + + Февраль + + + Right + + OnChange + МесяцыПриИзменении + + + ФевральExtendedTooltip + 783 + true + true + + true + + Label + true + true + + Left + + + + ФевральКонтекстноеМеню + 480 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Март + 481 + true + true + + true + + + + Март + + + Right + + OnChange + МесяцыПриИзменении + + + МартExtendedTooltip + 784 + true + true + + true + + Label + true + true + + Left + + + + МартКонтекстноеМеню + 482 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Квартал I</value> + + + ГруппаКвартал1ExtendedTooltip + 781 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + ГруппаКвартал2 + 483 + + Апрель + 484 + true + true + + true + + + + Апрель + + + Right + + OnChange + МесяцыПриИзменении + + + АпрельExtendedTooltip + 786 + true + true + + true + + Label + true + true + + Left + + + + АпрельКонтекстноеМеню + 485 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Май + 486 + true + true + + true + + + + Май + + + Right + + OnChange + МесяцыПриИзменении + + + МайExtendedTooltip + 787 + true + true + + true + + Label + true + true + + Left + + + + МайКонтекстноеМеню + 487 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Июнь + 488 + true + true + + true + + + + Июнь + + + Right + + OnChange + МесяцыПриИзменении + + + ИюньExtendedTooltip + 788 + true + true + + true + + Label + true + true + + Left + + + + ИюньКонтекстноеМеню + 489 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Квартал II</value> + + + ГруппаКвартал2ExtendedTooltip + 785 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + ГруппаКвартал3 + 493 + + Июль + 494 + true + true + + true + + + + Июль + + + Right + + OnChange + МесяцыПриИзменении + + + ИюльExtendedTooltip + 793 + true + true + + true + + Label + true + true + + Left + + + + ИюльКонтекстноеМеню + 495 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Август + 496 + true + true + + true + + + + Август + + + Right + + OnChange + МесяцыПриИзменении + + + АвгустExtendedTooltip + 794 + true + true + + true + + Label + true + true + + Left + + + + АвгустКонтекстноеМеню + 497 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Сентябрь + 498 + true + true + + true + + + + Сентябрь + + + Right + + OnChange + МесяцыПриИзменении + + + СентябрьExtendedTooltip + 795 + true + true + + true + + Label + true + true + + Left + + + + СентябрьКонтекстноеМеню + 499 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Квартал III</value> + + + ГруппаКвартал3ExtendedTooltip + 792 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + ГруппаКвартал4 + 500 + + Октябрь + 501 + true + true + + true + + + + Октябрь + + + Right + + OnChange + МесяцыПриИзменении + + + ОктябрьExtendedTooltip + 797 + true + true + + true + + Label + true + true + + Left + + + + ОктябрьКонтекстноеМеню + 502 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Ноябрь + 503 + true + true + + true + + + + Ноябрь + + + Right + + OnChange + МесяцыПриИзменении + + + НоябрьExtendedTooltip + 798 + true + true + + true + + Label + true + true + + Left + + + + НоябрьКонтекстноеМеню + 504 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Декабрь + 505 + true + true + + true + + + + Декабрь + + + Right + + OnChange + МесяцыПриИзменении + + + ДекабрьExtendedTooltip + 799 + true + true + + true + + Label + true + true + + Left + + + + ДекабрьКонтекстноеМеню + 506 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Квартал IV</value> + + + ГруппаКвартал4ExtendedTooltip + 796 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + ГруппаПометки + 507 + + УстановитьПометки + 491 + true + true + + true + + + УстановитьПометкиExtendedTooltip + 790 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.УстановитьПометки + Auto + true + true + UserCmds + Auto + + + СнятьПометки + 508 + true + true + + true + + + СнятьПометкиExtendedTooltip + 801 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.СнятьПометки + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Пометки</value> + + Center + + ГруппаПометкиРасширеннаяПодсказка + 800 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Месяцы</value> + + + ГруппаМесяцыРасширеннаяПодсказка + 780 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница ежемесячно</value> + + + СтраницаЕжемесячноExtendedTooltip + 773 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы периодичности</value> + + + СтраницыПериодичностиExtendedTooltip + 755 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ПредставлениеРасписания + 1175 + + <key>ru</key> + <value>Представление расписания</value> + + true + true + + true + + + ПредставлениеРасписанияРасширеннаяПодсказка + 1177 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеРасписанияКонтекстноеМеню + 1176 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + + Автор + 3 + true + true + + true + + + + Объект.Автор + + + Button + + OnChange + АвторПриИзменении + + + АвторExtendedTooltip + 806 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Расписание</value> + + + СтраницаРасписаниеExtendedTooltip + 743 + true + true + + true + + Label + true + true + + Left + + + Page + + + StdPicture.ScheduledJob + + Vertical + true + + + + СтраницаДоставка + 79 + + ДругиеСпособыДоставки + 630 + + Публиковать + 631 + true + true + + true + + + + Публиковать + + + Right + + OnChange + ПубликоватьПриИзменении + + + ПубликоватьExtendedTooltip + 810 + true + true + + true + + Label + true + true + + Left + + + + ПубликоватьКонтекстноеМеню + 632 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ДругойСпособДоставки + 615 + true + true + + true + + + + ДругойСпособДоставки + + + None + + OnChange + ДругойСпособДоставкиПриИзменении + + + ДругойСпособДоставкиExtendedTooltip + 811 + true + true + + true + + Label + true + true + + Left + + + + ДругойСпособДоставкиКонтекстноеМеню + 616 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + TextEditEnd + ДругойСпособДоставкиОкончаниеВводаТекста + + 13 + true + true + false + true + false + false + false + true + OnActivate + true + true + + + ru + В папку + + + ИспользоватьПапку + + + + + ru + В сетевой каталог + + + ИспользоватьСетевойКаталог + + + + + ru + На FTP ресурс + + + ИспользоватьFTPРесурс + + + + + + ПараметрыДоставки + 617 + + ИспользоватьПапку + 288 + + Папка + 214 + true + true + + true + + + + Объект.Папка + + + None + + ПапкаExtendedTooltip + 814 + true + true + + true + + Label + true + true + + Left + + + + ПапкаКонтекстноеМеню + 215 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Opening + ПапкаОткрытие + + + ChoiceProcessing + ПапкаОбработкаВыбора + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Использовать папку</value> + + + ИспользоватьПапкуExtendedTooltip + 813 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + + ИспользоватьСетевойКаталог + 289 + + СетевойКаталогWindows + 216 + + <key>ru</key> + <value>Windows</value> + + true + true + + true + + + + Объект.СетевойКаталогWindows + + + + OnChange + СетевойКаталогWindowsПриИзменении + + + СетевойКаталогWindowsExtendedTooltip + 816 + true + true + + true + + Label + true + true + + Left + + + + СетевойКаталогWindowsКонтекстноеМеню + 217 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + false + false + false + false + true + true + true + true + + + + СетевойКаталогLinux + 692 + + <key>ru</key> + <value>Linux</value> + + true + true + + true + + + + Объект.СетевойКаталогLinux + + + + OnChange + СетевойКаталогLinuxПриИзменении + + + СетевойКаталогLinuxExtendedTooltip + 817 + true + true + + true + + Label + true + true + + Left + + + + СетевойКаталогLinuxКонтекстноеМеню + 693 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + false + false + false + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Использовать сетевой каталог</value> + + + ИспользоватьСетевойКаталогExtendedTooltip + 815 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + + ИспользоватьFTPРесурс + 291 + + FTPСерверИКаталог + 388 + true + true + + true + + + + FTPСерверИКаталог + + + None + + OnChange + FTPСерверИКаталогПриИзменении + + + FTPСерверИКаталогExtendedTooltip + 819 + true + true + + true + + Label + true + true + + Left + + + + FTPСерверИКаталогКонтекстноеМеню + 389 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + FTPСерверИКаталогНачалоВыбора + + + Opening + FTPСерверИКаталогОткрытие + + + Clearing + FTPСерверИКаталогОчистка + + + ChoiceProcessing + FTPСерверИКаталогОбработкаВыбора + + true + true + false + true + true + true + true + true + + ru + ftp://сервер/каталог/ + + + + true + true + + true + + + <key>ru</key> + <value>Использовать FTP ресурс</value> + + + ИспользоватьFTPРесурсExtendedTooltip + 818 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + true + true + + true + + + <key>ru</key> + <value>Параметры доставки</value> + + + ПараметрыДоставкиExtendedTooltip + 812 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ВключатьДатуВИмяФайла + 1187 + true + true + + true + + + + Объект.ВключатьДатуВИмяФайла + + + Right + + ВключатьДатуВИмяФайлаРасширеннаяПодсказка + 1189 + true + true + + true + + Label + true + true + + Left + + + + ВключатьДатуВИмяФайлаКонтекстноеМеню + 1188 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Другие способы доставки</value> + + + ДругиеСпособыДоставкиExtendedTooltip + 809 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ДоставкаПоЭлектроннойПочте + 668 + + ГруппаДоставкаПоЭлектроннойПочте + 985 + + ИспользоватьЭлектроннуюПочту + 559 + true + true + + true + + + + Объект.ИспользоватьЭлектроннуюПочту + + + Right + + OnChange + ИспользоватьЭлектроннуюПочтуПриИзменении + + + ИспользоватьЭлектроннуюПочтуExtendedTooltip + 823 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьЭлектроннуюПочтуКонтекстноеМеню + 560 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПолучателиРассылки + 982 + true + true + + true + + + + ПолучателиРассылки + + + None + Balloon + + ПолучателиРассылкиРасширеннаяПодсказка + 984 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиРассылкиКонтекстноеМеню + 983 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ПолучателиРассылкиНажатие + + 50 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Доставка по электронной почте</value> + + + ГруппаДоставкаПоЭлектроннойПочтеРасширеннаяПодсказка + 986 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаУчетнаяЗапись + 645 + + УчетнаяЗапись + 31 + true + true + + true + + + + Объект.УчетнаяЗапись + + + + УчетнаяЗаписьExtendedTooltip + 830 + true + true + + true + + Label + true + true + + Left + + + + УчетнаяЗаписьКонтекстноеМеню + 32 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + + ТолькоУведомить + 413 + + <key>ru</key> + <value>Отправлять только уведомления</value> + + true + true + + true + + + + Объект.ТолькоУведомить + + + Right + Button + + OnChange + ТолькоУведомитьПриИзменении + + + ТолькоУведомитьExtendedTooltip + 826 + true + true + + true + + Label + true + true + + Left + + + + ТолькоУведомитьКонтекстноеМеню + 414 + true + true + + true + + true + + CheckBoxField + Center + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Учетная запись</value> + + + ГруппаУчетнаяЗаписьExtendedTooltip + 829 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ПараметрыПисьма + 330 + + ТемаИТекстПисьма + 609 + + ТемаПисьма + 27 + true + true + + true + + + + Объект.ТемаПисьма + + + + ТемаПисьмаExtendedTooltip + 842 + true + true + + true + + Label + true + true + + Left + + + + ТемаПисьмаКонтекстноеМеню + 28 + + ТемаПисьмаКонтекстноеМенюПодменюПараметр + 694 + + ТемаПисьмаКонтекстноеМенюДобавитьИлиИзменитьШаблонДатыРассылки + 172 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюДобавитьИлиИзменитьШаблонДатыРассылкиExtendedTooltip + 835 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзменитьШаблонДатыРассылки + Auto + true + true + UserCmds + Auto + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонАвтора + 267 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонАвтораExtendedTooltip + 836 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонАвтора + Auto + true + true + UserCmds + Auto + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонПолучателя + 173 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонПолучателяExtendedTooltip + 837 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПолучателя + Auto + true + true + UserCmds + Auto + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонРассылки + 268 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонРассылкиExtendedTooltip + 838 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонНаименованияРассылки + Auto + true + true + UserCmds + Auto + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонСистемы + 402 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонСистемыExtendedTooltip + 839 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСистемы + Auto + true + true + UserCmds + Auto + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонПоУмолчанию + 671 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюДобавитьШаблонПоУмолчаниюРасширеннаяПодсказка + 840 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПоУмолчанию + Auto + true + true + UserCmds + Auto + + + ТемаПисьмаКонтекстноеМенюПредпросмотрШаблона + 277 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюПредпросмотрШаблонаExtendedTooltip + 841 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредпросмотрШаблона + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Параметр</value> + + + ТемаПисьмаКонтекстноеМенюПодменюПараметрExtendedTooltip + 834 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.DataCompositionConditionalAppearance + + Auto + + + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + + + + СтраницыТекстПисьма + 127 + + СтраницыТекстПисьмаHTML + 128 + + КоманднаяПанельТекстПисьмаФорматированныйДокумент + 131 + + ТекстПисьмаФорматированныйДокументДобавитьПараметрШаблона + 301 + + ТекстПисьмаФорматированныйДокументДобавитьИлиИзменитьШаблонДатыРассылки + 303 + true + true + + true + + + ТекстПисьмаФорматированныйДокументДобавитьИлиИзменитьШаблонДатыРассылкиExtendedTooltip + 847 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзменитьШаблонДатыРассылки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонАвтора + 304 + true + true + + true + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонАвтораExtendedTooltip + 848 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонАвтора + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонПолучателя + 305 + true + true + + true + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонПолучателяExtendedTooltip + 849 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПолучателя + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонРассылки + 306 + true + true + + true + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонРассылкиExtendedTooltip + 850 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонНаименованияРассылки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонСформированныхОтчетов + 307 + true + true + + true + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонСформированныхОтчетовExtendedTooltip + 851 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСформированныхОтчетов + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонСистемы + 406 + true + true + + true + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонСистемыExtendedTooltip + 852 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСистемы + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонСпособаДоставки + 419 + true + true + + true + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонСпособаДоставкиExtendedTooltip + 853 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСпособаДоставки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонПоУмолчанию + 698 + true + true + + true + + + ТекстПисьмаФорматированныйДокументДобавитьШаблонПоУмолчаниюExtendedTooltip + 854 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПоУмолчанию + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументПредпросмотрШаблона + 395 + true + true + + true + + + ТекстПисьмаФорматированныйДокументПредпросмотрШаблонаExtendedTooltip + 855 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредпросмотрШаблона + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Параметр</value> + + + ru + Добавить параметр в текст письма + + + ТекстПисьмаФорматированныйДокументДобавитьПараметрШаблонаExtendedTooltip + 846 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + HTML + 605 + + ИзменитьТипТекстаНаHTMLПометка + 628 + true + true + + true + + + ИзменитьТипТекстаНаHTMLПометкаExtendedTooltip + 857 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьТипТекстаНаHTML + Auto + true + true + UserCmds + true + Auto + + + ИзменитьТипТекстаНаОбычный + 606 + true + true + + true + + + ИзменитьТипТекстаНаОбычныйExtendedTooltip + 858 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьТипТекстаНаОбычный + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>HTML</value> + + + ru + Сменить формат письма + + + HTMLExtendedTooltip + 856 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ТекстПисьмаФорматированныйДокументКартинка + 174 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКартинкаExtendedTooltip + 859 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекстПисьмаФорматированныйДокумент.StandardCommand.Picture + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + СтандартныеДействия + 363 + + ТекстПисьмаФорматированныйДокументВыровнятьВлево + 633 + true + true + + true + + + ТекстПисьмаФорматированныйДокументВыровнятьВлевоExtendedTooltip + 861 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекстПисьмаФорматированныйДокумент.StandardCommand.AlignLeft + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ТекстПисьмаФорматированныйДокументВыровнятьПоЦентру + 634 + true + true + + true + + + ТекстПисьмаФорматированныйДокументВыровнятьПоЦентруExtendedTooltip + 862 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекстПисьмаФорматированныйДокумент.StandardCommand.AlignCenter + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ТекстПисьмаФорматированныйДокументВыровнятьВправо + 636 + true + true + + true + + + ТекстПисьмаФорматированныйДокументВыровнятьВправоExtendedTooltip + 863 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекстПисьмаФорматированныйДокумент.StandardCommand.AlignRight + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ТекстПисьмаФорматированныйДокументВыровнятьПоШирине + 637 + true + true + + true + + + ТекстПисьмаФорматированныйДокументВыровнятьПоШиринеExtendedTooltip + 864 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекстПисьмаФорматированныйДокумент.StandardCommand.AlignJustify + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ТекстПисьмаФорматированныйДокументУвеличитьОтступ + 638 + true + true + + true + + + ТекстПисьмаФорматированныйДокументУвеличитьОтступExtendedTooltip + 865 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекстПисьмаФорматированныйДокумент.StandardCommand.IncreaseIndent + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ТекстПисьмаФорматированныйДокументУменьшитьОтступ + 639 + true + true + + true + + + ТекстПисьмаФорматированныйДокументУменьшитьОтступExtendedTooltip + 866 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекстПисьмаФорматированныйДокумент.StandardCommand.DecreaseIndent + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Стандартные действия</value> + + + СтандартныеДействияExtendedTooltip + 860 + true + true + + true + + Label + true + true + + Left + + + + Item.ТекстПисьмаФорматированныйДокумент + + + true + true + + true + + + <key>ru</key> + <value>Командная панель текст письма форматированный документ</value> + + + КоманднаяПанельТекстПисьмаФорматированныйДокументExtendedTooltip + 845 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ТекстПисьмаФорматированныйДокумент + 129 + true + true + + true + + + + ТекстПисьмаФорматированныйДокумент + + + None + + ТекстПисьмаФорматированныйДокументExtendedTooltip + 877 + true + true + + true + + Label + true + true + + Left + + + + ТекстПисьмаФорматированныйДокументКонтекстноеМеню + 130 + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюПодменюПараметр + 695 + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьИлиИзменитьШаблонДатыРассылки + 312 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьИлиИзменитьШаблонДатыРассылкиExtendedTooltip + 868 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзменитьШаблонДатыРассылки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонАвтора + 308 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонАвтораExtendedTooltip + 869 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонАвтора + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонПолучателя + 309 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонПолучателяExtendedTooltip + 870 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПолучателя + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонРассылки + 310 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонРассылкиExtendedTooltip + 871 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонНаименованияРассылки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонСформированныхОтчетов + 311 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонСформированныхОтчетовExtendedTooltip + 872 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСформированныхОтчетов + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонСистемы + 403 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонСистемыExtendedTooltip + 873 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСистемы + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонСпособаДоставки + 420 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонСпособаДоставкиExtendedTooltip + 874 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСпособаДоставки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонПоУмолчанию + 673 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюДобавитьШаблонПоУмолчаниюExtendedTooltip + 875 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПоУмолчанию + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюПредпросмотрШаблона + 394 + true + true + + true + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюПредпросмотрШаблонаExtendedTooltip + 876 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредпросмотрШаблона + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Параметр</value> + + + ТекстПисьмаФорматированныйДокументКонтекстноеМенюПодменюПараметрExtendedTooltip + 867 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.DataCompositionConditionalAppearance + + Auto + + + true + true + + true + + true + + FormattedDocumentField + Enter + true + Left + true + + 1 + true + 1 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы текст письма HTML</value> + + + СтраницыТекстПисьмаHTMLExtendedTooltip + 844 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницыТекстПисьмаОбычныйТекст + 125 + + КоманднаяПанельТекстПисьма + 157 + + ТекстПисьмаДобавитьПараметрШаблона + 323 + + ДобавитьИлиИзменитьШаблонДатыРассылки + 328 + true + true + + true + + + ДобавитьИлиИзменитьШаблонДатыРассылкиExtendedTooltip + 881 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзменитьШаблонДатыРассылки + Auto + true + true + UserCmds + Auto + + + ДобавитьШаблонАвтора + 324 + true + true + + true + + + ДобавитьШаблонАвтораExtendedTooltip + 882 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонАвтора + Auto + true + true + UserCmds + Auto + + + ДобавитьШаблонПолучателя + 325 + true + true + + true + + + ДобавитьШаблонПолучателяExtendedTooltip + 883 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПолучателя + Auto + true + true + UserCmds + Auto + + + ДобавитьШаблонРассылки + 326 + true + true + + true + + + ДобавитьШаблонРассылкиExtendedTooltip + 884 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонНаименованияРассылки + Auto + true + true + UserCmds + Auto + + + ДобавитьШаблонСформированныхОтчетов + 327 + true + true + + true + + + ДобавитьШаблонСформированныхОтчетовExtendedTooltip + 885 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСформированныхОтчетов + Auto + true + true + UserCmds + Auto + + + ДобавитьШаблонСистемы + 404 + true + true + + true + + + ДобавитьШаблонСистемыExtendedTooltip + 886 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСистемы + Auto + true + true + UserCmds + Auto + + + ДобавитьШаблонСпособаДоставки + 421 + true + true + + true + + + ДобавитьШаблонСпособаДоставкиExtendedTooltip + 887 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСпособаДоставки + Auto + true + true + UserCmds + Auto + + + ДобавитьШаблонПоУмолчанию + 699 + true + true + + true + + + ДобавитьШаблонПоУмолчаниюExtendedTooltip + 888 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПоУмолчанию + Auto + true + true + UserCmds + Auto + + + ПредпросмотрШаблона + 393 + true + true + + true + + + ПредпросмотрШаблонаExtendedTooltip + 889 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредпросмотрШаблона + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Параметр</value> + + + ru + Добавить параметр шаблона + + + ТекстПисьмаДобавитьПараметрШаблонаExtendedTooltip + 880 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ОбычныйТекст + 607 + + ИзменитьТипТекстаНаHTML + 608 + true + true + + true + + + ИзменитьТипТекстаНаHTMLExtendedTooltip + 891 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьТипТекстаНаHTML + Auto + true + true + UserCmds + Auto + + + ИзменитьТипТекстаНаОбычныйПометка + 629 + true + true + + true + + + ИзменитьТипТекстаНаОбычныйПометкаExtendedTooltip + 892 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьТипТекстаНаОбычный + Auto + true + true + UserCmds + true + Auto + + true + true + + true + + + <key>ru</key> + <value>Обычный текст</value> + + + ru + Сменить формат письма + + + ОбычныйТекстExtendedTooltip + 890 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Командная панель текст письма</value> + + + КоманднаяПанельТекстПисьмаExtendedTooltip + 879 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ТекстПисьма + 21 + true + true + + true + + + + Объект.ТекстПисьма + + + None + + ТекстПисьмаExtendedTooltip + 903 + true + true + + true + + Label + true + true + + Left + + + + ТекстПисьмаКонтекстноеМеню + 22 + + ТекстПисьмаКонтекстноеМенюПодменюПараметр + 696 + + ТекстПисьмаКонтекстноеМенюДобавитьИлиИзменитьШаблонДатыРассылки + 322 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюДобавитьИлиИзменитьШаблонДатыРассылкиExtendedTooltip + 894 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзменитьШаблонДатыРассылки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонАвтора + 318 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонАвтораExtendedTooltip + 895 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонАвтора + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонПолучателя + 319 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонПолучателяExtendedTooltip + 896 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПолучателя + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонРассылки + 320 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонРассылкиExtendedTooltip + 897 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонНаименованияРассылки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонСформированныхОтчетов + 321 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонСформированныхОтчетовExtendedTooltip + 898 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСформированныхОтчетов + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонСистемы + 405 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонСистемыExtendedTooltip + 899 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСистемы + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонСпособаДоставки + 422 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонСпособаДоставкиExtendedTooltip + 900 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонСпособаДоставки + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонПоУмолчанию + 672 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюДобавитьШаблонПоУмолчаниюExtendedTooltip + 901 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонПоУмолчанию + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюПредпросмотрШаблона + 392 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюПредпросмотрШаблонаExtendedTooltip + 902 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредпросмотрШаблона + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Параметр</value> + + + ТекстПисьмаКонтекстноеМенюПодменюПараметрExtendedTooltip + 893 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.DataCompositionConditionalAppearance + + Auto + + + true + true + + true + + true + + TextDocumentField + EnterOnInput + true + Left + true + + 1 + true + 1 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы текст письма обычный текст</value> + + + СтраницыТекстПисьмаОбычныйТекстExtendedTooltip + 878 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы текст письма</value> + + + СтраницыТекстПисьмаExtendedTooltip + 843 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Тема и текст письма</value> + + + ТемаИТекстПисьмаExtendedTooltip + 833 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Параметры письма</value> + + + ПараметрыПисьмаExtendedTooltip + 832 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Доставка по электронной почте</value> + + + ДоставкаПоЭлектроннойПочтеExtendedTooltip + 821 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Доставка</value> + + + ru + Способы доставки рассылки до получателей + + + СтраницаДоставкаExtendedTooltip + 808 + true + true + + true + + Label + true + true + + Left + + + Page + + + StdPicture.ExecuteTask + + Vertical + true + + + + СтраницаДополнительно + 199 + + ФорматыПоУмолчанию + 335 + true + true + + true + + + + ФорматыПоУмолчанию + + + + ФорматыПоУмолчаниюExtendedTooltip + 916 + true + true + + true + + Label + true + true + + Left + + + + ФорматыПоУмолчаниюКонтекстноеМеню + 336 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ФорматыПоУмолчаниюНачалоВыбора + + + Clearing + ФорматыПоУмолчаниюОчистка + + true + true + true + false + true + true + true + + + + ФорматыОтчетовИКнопки + 686 + + ФорматыОтчетов + 100 + + <key>ru</key> + <value>Форматы отчетов</value> + + true + true + + true + + + Объект.Отчеты + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + SortListAsc + SortListDesc + + ФорматыОтчетовПредставление + 230 + true + true + + true + + + + Объект.Отчеты.Представление + + + + ФорматыОтчетовПредставлениеРасширеннаяПодсказка + 923 + true + true + + true + + Label + true + true + + Left + + + + ФорматыОтчетовПредставлениеКонтекстноеМеню + 231 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ФорматыОтчетовФорматы + 232 + true + true + + true + + + + Объект.Отчеты.Форматы + + + + ФорматыОтчетовФорматыExtendedTooltip + 924 + true + true + + true + + Label + true + true + + Left + + + + ФорматыОтчетовФорматыКонтекстноеМеню + 233 + true + true + + true + + true + + InputField + true + true + Left + true + + + StartChoice + ФорматыОтчетовФорматыНачалоВыбора + + + Clearing + ФорматыОтчетовФорматыОчистка + + true + true + true + false + true + true + true + + + + ФорматыОтчетовОтправлятьЕслиПустой + 534 + true + true + + true + + + + Объект.Отчеты.ОтправлятьЕслиПустой + + + + OnChange + ФорматыОтчетовОтправлятьЕслиПустойПриИзменении + + + ФорматыОтчетовОтправлятьЕслиПустойExtendedTooltip + 925 + true + true + + true + + Label + true + true + + Left + + + + ФорматыОтчетовОтправлятьЕслиПустойКонтекстноеМеню + 535 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ФорматыОтчетовНеОтправлятьПустой + 989 + true + + true + + + + Объект.Отчеты.НеОтправлятьПустой + + + + ru + Не отправлять отчет если он не содержит данных. + + + OnChange + ФорматыОтчетовНеОтправлятьПустойПриИзменении + + + ФорматыОтчетовНеОтправлятьПустойРасширеннаяПодсказка + 991 + true + true + + true + + Label + true + true + + Left + + + + ФорматыОтчетовНеОтправлятьПустойКонтекстноеМеню + 990 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ФорматыОтчетовКоманднаяПанель + 102 + + ФорматыОтчетовУстановитьПометкиОтправлятьЕслиПустой + 690 + true + + true + + + ФорматыОтчетовУстановитьПометкиОтправлятьЕслиПустойExtendedTooltip + 920 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПометкиОтправлятьЕслиПустой + PictureAndText + true + true + UserCmds + Auto + + + ФорматыОтчетовСнятьПометкиОтправлятьЕслиПустой + 691 + true + + true + + + ФорматыОтчетовСнятьПометкиОтправлятьЕслиПустойExtendedTooltip + 921 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьПометкиОтправлятьЕслиПустой + PictureAndText + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + BeforeAddRow + ФорматыОтчетовПередНачаломДобавления + + + BeforeDeleteRow + ФорматыОтчетовПередУдалением + + + true + true + + true + + ФорматыОтчетовСтрокаПоиска + 1042 + + ФорматыОтчетовСтрокаПоискаРасширеннаяПодсказка + 1044 + true + true + + true + + Label + true + true + + Left + + + + ФорматыОтчетовСтрокаПоискаКонтекстноеМеню + 1043 + true + true + + true + + true + + + true + + + + true + true + + true + + ФорматыОтчетовСостояниеПросмотра + 1045 + + ФорматыОтчетовСостояниеПросмотраРасширеннаяПодсказка + 1047 + true + true + + true + + Label + true + true + + Left + + + + ФорматыОтчетовСостояниеПросмотраКонтекстноеМеню + 1046 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ФорматыОтчетовУправлениеПоиском + 1048 + + ФорматыОтчетовУправлениеПоискомРасширеннаяПодсказка + 1050 + true + true + + true + + Label + true + true + + Left + + + + ФорматыОтчетовУправлениеПоискомКонтекстноеМеню + 1049 + true + true + + true + + true + + SearchControlAddition + + true + + + + ФорматыОтчетовExtendedTooltip + 922 + true + true + + true + + Label + true + true + + Left + + + + ФорматыОтчетовКонтекстноеМеню + 101 + + ФорматыОтчетовКонтекстноеМенюУстановитьПометкиОтправлятьЕслиПустой + 684 + true + true + + true + + + ФорматыОтчетовКонтекстноеМенюУстановитьПометкиОтправлятьЕслиПустойExtendedTooltip + 918 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьПометкиОтправлятьЕслиПустой + Auto + true + true + UserCmds + Auto + + + ФорматыОтчетовКонтекстноеМенюСнятьПометкиОтправлятьЕслиПустой + 685 + true + true + + true + + + ФорматыОтчетовКонтекстноеМенюСнятьПометкиОтправлятьЕслиПустойExtendedTooltip + 919 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьПометкиОтправлятьЕслиПустой + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + 5 + true + true +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + +
+ + КнопкиФорматовОтчетов + 687 + + УстановитьПометкиОтправлятьЕслиПустой + 688 + true + true + + true + + + УстановитьПометкиОтправлятьЕслиПустойExtendedTooltip + 927 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УстановитьПометкиОтправлятьЕслиПустой + Picture + true + true + UserCmds + Auto + + + СнятьПометкиОтправлятьЕслиПустой + 689 + true + true + + true + + + СнятьПометкиОтправлятьЕслиПустойExtendedTooltip + 928 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.СнятьПометкиОтправлятьЕслиПустой + Picture + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопки форматов отчетов</value> + + + КнопкиФорматовОтчетовExtendedTooltip + 926 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Форматы отчетов и кнопки</value> + + + ФорматыОтчетовИКнопкиExtendedTooltip + 917 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + +
+ + ТранслитерироватьИменаФайлов + 1180 + true + true + + true + + + + Объект.ТранслитерироватьИменаФайлов + + + Right + Button + + ТранслитерироватьИменаФайловРасширеннаяПодсказка + 1182 + true + true + + true + + Label + true + true + + Left + + + + ТранслитерироватьИменаФайловКонтекстноеМеню + 1181 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаПараметрыАрхивацииВZIP + 98 + + Архивировать + 13 + + <key>ru</key> + <value>Архивировать в ZIP:</value> + + true + true + + true + + + + Объект.Архивировать + + + Right + + OnChange + АрхивироватьПриИзменении + + + АрхивироватьExtendedTooltip + 930 + true + true + + true + + Label + true + true + + Left + + + + АрхивироватьКонтекстноеМеню + 14 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ИмяАрхива + 15 + true + true + + true + + + + Объект.ИмяАрхива + + + None + + ИмяАрхиваExtendedTooltip + 934 + true + true + + true + + Label + true + true + + Left + + + + ИмяАрхиваКонтекстноеМеню + 16 + + ИмяАрхиваКонтекстноеМенюПодменюПараметр + 697 + + ИмяАрхиваКонтекстноеМенюДобавитьИлиИзменитьШаблонДатыРассылки + 352 + true + true + + true + + + ИмяАрхиваКонтекстноеМенюДобавитьИлиИзменитьШаблонДатыРассылкиExtendedTooltip + 932 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзменитьШаблонДатыРассылки + Auto + true + true + UserCmds + Auto + + + ИмяАрхиваКонтекстноеМенюДобавитьШаблонРассылки + 351 + true + true + + true + + + ИмяАрхиваКонтекстноеМенюДобавитьШаблонРассылкиExtendedTooltip + 933 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьШаблонНаименованияРассылки + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Параметр</value> + + + ИмяАрхиваКонтекстноеМенюПодменюПараметрExtendedTooltip + 931 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.DataCompositionConditionalAppearance + + Auto + + + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 10 + true + 45 + true + true + true + true + true + + ru + Имя файла архива + + + + + ПарольАрхива + 17 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + + ПарольАрхива + + + + OnChange + ПарольАрхиваПриИзменении + + + ПарольАрхиваExtendedTooltip + 935 + true + true + + true + + Label + true + true + + Left + + + + ПарольАрхиваКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 12 + true + true + true + true + true + true + + ru + Пароль архива + + + + true + true + + true + + + <key>ru</key> + <value>Параметры архивации в ZIP</value> + + + ГруппаПараметрыАрхивацииВZIPExtendedTooltip + 929 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ДополнительныеПараметрыРассылкиПоЭлектроннойПочте + 200 + + АдресОтвета + 33 + true + true + + true + + + + Объект.АдресОтвета + + + + АдресОтветаExtendedTooltip + 937 + true + true + + true + + Label + true + true + + Left + + + + АдресОтветаКонтекстноеМеню + 34 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 10 + true + 35 + true + true + true + true + true + + + + ИспользоватьСкрытыеКопии + 35 + true + true + + true + + + + Объект.СкрытыеКопии + + + Right + Button + + ИспользоватьСкрытыеКопииExtendedTooltip + 938 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьСкрытыеКопииКонтекстноеМеню + 36 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Параметры доставки по электронной почте</value> + + + ДополнительныеПараметрыРассылкиПоЭлектроннойПочтеExtendedTooltip + 936 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + + ДополнительныеПараметры + 355 + + Родитель + 382 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 940 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 383 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + РодительОбработкаВыбора + + 10 + true + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Дополнительные параметры</value> + + + ДополнительныеПараметрыExtendedTooltip + 939 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + СтраницаДополнительноExtendedTooltip + 915 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыExtendedTooltip + 711 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
+ + ФормаКоманднаяПанель + -1 + + КомандаЗаписатьИЗакрыть + 955 + true + true + + true + + + КомандаЗаписатьИЗакрытьРасширеннаяПодсказка + 956 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаЗаписатьИЗакрыть + true + true + true + UserCmds + Auto + + + КомандаЗаписать + 957 + true + true + + true + + + КомандаЗаписатьРасширеннаяПодсказка + 958 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаЗаписать + Auto + true + true + UserCmds + Auto + + + ОбщиеКоманды + 994 + + КомандаВыполнитьСейчас + 1051 + true + true + + true + + + КомандаВыполнитьСейчасРасширеннаяПодсказка + 1052 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаВыполнитьСейчас + Auto + true + true + UserCmds + Auto + + + ВыполнитьСейчас + 996 + true + + true + + + Объект.Ref + + + ВыполнитьСейчасРасширеннаяПодсказка + 997 + true + true + + true + + Label + true + true + + Left + + + Catalog.РассылкиОтчетов.Command.ВыполнитьСейчас + Auto + true + true + UserCmds + Auto + + + ФормаПроверитьВозможностьРассылки + 1185 + true + true + + true + + + ФормаПроверитьВозможностьРассылкиРасширеннаяПодсказка + 1186 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверитьВозможностьРассылки + Auto + true + true + UserCmds + Auto + + + КомандаСобытияРассылки + 1053 + true + true + + true + + + КомандаСобытияРассылкиРасширеннаяПодсказка + 1054 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаСобытияРассылки + Auto + true + true + UserCmds + Auto + + + СобытияРассылки + 992 + true + + true + + + Объект.Ref + + + СобытияРассылкиРасширеннаяПодсказка + 993 + true + true + + true + + Label + true + true + + Left + + + Catalog.РассылкиОтчетов.Command.СобытияРассылки + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Общие команды</value> + + + ОбщиеКомандыРасширеннаяПодсказка + 995 + true + true + + true + + Label + true + true + + Left + + + + + + Кнопки + 959 + true + true + + true + + + <key>ru</key> + <value>Кнопки</value> + + + КнопкиРасширеннаяПодсказка + 960 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + Справка + 961 + true + true + + true + + + СправкаРасширеннаяПодсказка + 962 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + Write + WriteAndClose + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + Объект + 1 + + CatalogObject.РассылкиОтчетов + + + true + + + true + +
true
+ true + + + Объект.Получатели + + + Адрес + + <key>ru</key> + <value>Адрес</value> + + 1 + + String + + + + true + + + true + + + + + + Объект.Отчеты + + + Форматы + + <key>ru</key> + <value>Форматы</value> + + 1 + + String + + + + true + + + true + + + + ВнесеныИзменения + + <key>ru</key> + <value>Внесены изменения</value> + + 9 + + Boolean + + + true + + + true + + + + СКД + + <key>ru</key> + <value>СКД</value> + + 2 + + Boolean + + + true + + + true + + + + АдресНастроек + + <key>ru</key> + <value>Адрес настроек</value> + + 3 + + String + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Отчет</value> + + 4 + + String + + + + true + + + true + + + + Инициализирован + + <key>ru</key> + <value>Инициализирован</value> + + 5 + + Boolean + + + true + + + true + + + + НеОтправлятьПустой + + <key>ru</key> + <value>Не отправлять пустой</value> + + 6 + + Boolean + + + true + + + true + + + + ПолноеИмя + + <key>ru</key> + <value>Полное имя</value> + + 7 + + String + + + + true + + + true + + + + КлючВарианта + + <key>ru</key> + <value>Ключ варианта</value> + + 8 + + String + + + + true + + + true + + + + Доступность + + <key>ru</key> + <value>Доступность</value> + + 10 + + Boolean + + + true + + + true + + + +
+ + НастройкиТекущегоОтчета + + <key>ru</key> + <value>Настройки текущего отчета</value> + + 2 + + ValueTable + + + true + + + true + + true + + Реквизит + 1 + + String + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + Тип + 4 + + TypeDescription + + + true + + + true + + + + Значение + + <key>ru</key> + <value>Значение</value> + + 3 + + Boolean + String + Date + Number + AnyRef + + 20 + 8 + + + + + + true + + + true + + + + Использование + + <key>ru</key> + <value>Использование</value> + + 5 + + Boolean + + + true + + + true + + + + Обнаружен + 6 + + Boolean + + + true + + + true + + + + ИндексКартинки + 7 + + Number + + 2 + + + + true + + + true + + + + + СписокФорматов + 3 + + ValueList + + + true + + + true + + true + + + + + + ТекстПисьмаФорматированныйДокумент + + <key>ru</key> + <value>Текст письма форматированный документ</value> + + 9 + + FormattedDocument + + + true + + + true + + true + + + СтруктураВложенийПисьмаВФорматеHTML + 10 + + + true + + + true + + true + + + ТипПолучателейРассылки + + <key>ru</key> + <value>Получатели</value> + + 8 + + TypeDescription + + + true + + + true + + true + + + КомпоновщикНастроекКД + 16 + + DataCompositionSettingsComposer + + + true + + + true + + true + + + ИдентификаторТекущейСтрокиТаблицыОтчетов + 17 + + Number + + + + true + + + true + + + + ТаблицаНастроекОтчетов + 19 + + ValueTable + + + true + + + true + + + Отчет + 2 + + CatalogRef.ДополнительныеОтчетыИОбработки + CatalogRef.ВариантыОтчетов + + + true + + + true + + + + ИмяОтчета + 1 + + String + + + + true + + + true + + + + ЭтоОтчетСКД + 3 + + Boolean + + + true + + + true + + + + АдресНастройки + 4 + + String + + + + true + + + true + + + + + ФорматыПоУмолчанию + + <key>ru</key> + <value>Форматы сохранения отчетов (по умолчанию)</value> + + 20 + + String + + + + true + + + true + + true + + + ТаблицаТиповПолучателей + 11 + + ValueTable + + + true + + + true + + + ИдентификаторОбъектаМетаданных + 1 + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + ТипПолучателей + 3 + + TypeDescription + + + true + + + true + + + + Представление + 6 + + String + + + + true + + + true + + + + ОсновнойВидКИ + 2 + + CatalogRef.ВидыКонтактнойИнформации + + + true + + + true + + + + ГруппаКИ + 4 + + CatalogRef.ВидыКонтактнойИнформации + + + true + + + true + + + + ПутьФормыВыбора + 5 + + String + + + + true + + + true + + + + ОсновнойТип + 7 + + TypeDescription + + + true + + + true + + + + + РассылкуРедактируетАвтор + 6 + + Boolean + + + true + + + true + + + + СписокФорматовПоУмолчанию + 7 + + ValueList + + + true + + + true + + + + + + + СписокФорматовПоУмолчаниюПредставление + 12 + + String + + + + true + + + true + + + + FTPСерверИКаталог + + <key>ru</key> + <value>Сервер и каталог</value> + + 18 + + String + + 300 + + + + true + + + true + + + + Кэш + 23 + + + true + + + true + + + + Август + + <key>ru</key> + <value>Август </value> + + 5 + + Boolean + + + true + + + true + + true + + + Апрель + + <key>ru</key> + <value>Апрель </value> + + 13 + + Boolean + + + true + + + true + + true + + + Воскресенье + + <key>ru</key> + <value>Воскресенье</value> + + 21 + + Boolean + + + true + + + true + + true + + + ВремяНачала + + <key>ru</key> + <value>Время начала</value> + + 22 + + Date + + Time + + + + true + + + true + + true + + + Вторник + + <key>ru</key> + <value>Вторник</value> + + 24 + + Boolean + + + true + + + true + + true + + + Декабрь + + <key>ru</key> + <value>Декабрь</value> + + 25 + + Boolean + + + true + + + true + + true + + + ДеньВМесяце + + <key>ru</key> + <value>День в месяце</value> + + 26 + + Number + + 2 + true + + + + true + + + true + + true + + + ИндексыДнейНедели + 27 + + + true + + + true + + + + ИндексыМесяцев + 28 + + + true + + + true + + + + Июль + + <key>ru</key> + <value>Июль </value> + + 29 + + Boolean + + + true + + + true + + true + + + Июнь + + <key>ru</key> + <value>Июнь </value> + + 30 + + Boolean + + + true + + + true + + true + + + Май + + <key>ru</key> + <value>Май </value> + + 32 + + Boolean + + + true + + + true + + true + + + Март + + <key>ru</key> + <value>Март </value> + + 33 + + Boolean + + + true + + + true + + true + + + Ноябрь + + <key>ru</key> + <value>Ноябрь</value> + + 34 + + Boolean + + + true + + + true + + true + + + Октябрь + + <key>ru</key> + <value>Октябрь</value> + + 35 + + Boolean + + + true + + + true + + true + + + ПериодПовтораДней + + <key>ru</key> + <value>Период повтора</value> + + 36 + + Number + + 3 + true + + + + true + + + true + + true + + + Понедельник + + <key>ru</key> + <value>Понедельник</value> + + 37 + + Boolean + + + true + + + true + + true + + + Пятница + + <key>ru</key> + <value>Пятница</value> + + 38 + + Boolean + + + true + + + true + + true + + + Расписание + 39 + + + true + + + true + + true + + + Сентябрь + + <key>ru</key> + <value>Сентябрь</value> + + 40 + + Boolean + + + true + + + true + + true + + + Среда + + <key>ru</key> + <value>Среда</value> + + 41 + + Boolean + + + true + + + true + + true + + + Суббота + + <key>ru</key> + <value>Суббота</value> + + 42 + + Boolean + + + true + + + true + + true + + + ТекстРасписания + 43 + + String + + + + true + + + true + + + + Февраль + + <key>ru</key> + <value>Февраль</value> + + 44 + + Boolean + + + true + + + true + + true + + + Четверг + + <key>ru</key> + <value>Четверг</value> + + 45 + + Boolean + + + true + + + true + + true + + + Январь + + <key>ru</key> + <value>Январь</value> + + 46 + + Boolean + + + true + + + true + + true + + + ВидРассылки + + <key>ru</key> + <value>Вид рассылки</value> + + 15 + + String + + 40 + + + + true + + + true + + true + + + ДругойСпособДоставки + + <key>ru</key> + <value>Другой способ доставки</value> + + 47 + + String + + 50 + + + + true + + + true + + true + + + Публиковать + + <key>ru</key> + <value>Публиковать</value> + + 31 + + Boolean + + + true + + + true + + true + + + РассылкаБылаПерсонализирована + 48 + + Boolean + + + true + + + true + + + + ПравоВывода + 49 + + Boolean + + + true + + + true + + + + РассылкаОснование + 50 + + CatalogRef.РассылкиОтчетов + + + true + + + true + + + + СозданКопированием + 14 + + Boolean + + + true + + + true + + + + ЗначенияРеквизитовДоИзменения + 51 + + + true + + + true + + + + ЭлементСвязиПоТипу + 52 + + + true + + + true + + + + ФормаБылаМодифицированаНаСервере + 53 + + Boolean + + + true + + + true + + + + ЭтоНовый + 56 + + Boolean + + + true + + + true + + + + ПолучателиРассылки + + <key>ru</key> + <value>Получатели рассылки</value> + + 57 + + String + + + + true + + + true + + + + ПарольАрхива + + <key>ru</key> + <value>Пароль архива</value> + + 58 + + String + + 50 + + + + true + + + true + + + + FTPПароль + 59 + + String + + 50 + + + + true + + + true + + + + FTPПарольИзменен + 60 + + Boolean + + + true + + + true + + + + ПарольАрхиваИзменен + 61 + + Boolean + + + true + + + true + + + + ТекстОшибкиПриОткрытии + 62 + + String + + + + true + + + true + + + + ТекстВсплывающегоОповещенияПриОткрытии + 64 + + String + + + + true + + + true + + + + НастройкиПерсонализации + 4 + + ValueList + + + true + + + true + + + + String + + + + + + ДобавитьИзменитьШаблонДатыРассылки + + <key>ru</key> + <value>Дата рассылки</value> + + 2 + + ru + Добавить или изменить шаблон даты рассылки + + + true + + + + ДобавитьИзменитьШаблонДатыРассылки + + + TextPicture + true + DontUse + + + ДобавитьШаблонПолучателя + + <key>ru</key> + <value>Получатель</value> + + 3 + + ru + Добавить представление получателя + + + true + + + + ДобавитьШаблонПолучателя + + + TextPicture + true + DontUse + + + ДобавитьШаблонСформированныхОтчетов + + <key>ru</key> + <value>Сформированные отчеты</value> + + 4 + + ru + Добавить шаблон сформированных отчетов + + + true + + + + ДобавитьШаблонСформированныхОтчетов + + + TextPicture + true + DontUse + + + ДобавитьОтчет + + <key>ru</key> + <value>Подобрать</value> + + 5 + + ru + Добавить отчет + + + true + + + + ДобавитьОтчет + + + DontUse + + + ДобавитьДополнительныйОтчет + + <key>ru</key> + <value>Подобрать дополнительный отчет</value> + + 6 + + ru + Подобрать дополнительный отчет + + + true + + + StdPicture.ExternalDataSourceTable + + + + ДобавитьДополнительныйОтчет + + + DontUse + + + ДобавитьШаблонАвтора + + <key>ru</key> + <value>Автор</value> + + 8 + + ru + Добавить представление автора + + + true + + + + ДобавитьШаблонАвтора + + + TextPicture + true + DontUse + + + ДобавитьШаблонНаименованияРассылки + + <key>ru</key> + <value>Наименование рассылки</value> + + 9 + + ru + Добавить шаблон наименования рассылки + + + true + + + + ДобавитьШаблонНаименованияРассылки + + + TextPicture + true + DontUse + + + ПредпросмотрШаблона + + <key>ru</key> + <value>Предварительный просмотр</value> + + 10 + + ru + Предпросмотр шаблона + + + true + + + StdPicture.Find + + + + ПредпросмотрШаблона + + + TextPicture + DontUse + + + ПредварительныйПросмотрОтчета + + <key>ru</key> + <value>Предварительный просмотр...</value> + + 11 + + ru + Предварительный просмотр отчета + + + true + + + StdPicture.ShowData + + + + ПредварительныйПросмотрОтчета + + + TextPicture + DontUse + + + ДобавитьШаблонСистемы + + <key>ru</key> + <value>Заголовок системы</value> + + 12 + + ru + Добавить представление рассылки + + + true + + + + ДобавитьШаблонСистемы + + + TextPicture + true + DontUse + + + ДобавитьШаблонСпособаДоставки + + <key>ru</key> + <value>Способ доставки</value> + + 13 + + ru + Добавить представление способа доставки + + + true + + + + ДобавитьШаблонСпособаДоставки + + + TextPicture + true + DontUse + + + ЗаполнитьРасписаниеПоШаблону + + <key>ru</key> + <value>Заполнить по шаблону...</value> + + 14 + + ru + Заполнить расписание по шаблону + + + true + + + + ЗаполнитьРасписаниеПоШаблону + + + TextPicture + DontUse + + + ИзменитьРасписание + + <key>ru</key> + <value>Изменить...</value> + + 15 + + true + + + + ИзменитьРасписание + + + TextPicture + true + DontUse + + + СнятьПометки + + <key>ru</key> + <value>Снять пометки</value> + + 16 + + ru + Снять пометки + + + true + + + StdPicture.UncheckAll + + + + СнятьПометки + + + Picture + DontUse + + + УстановитьПометки + + <key>ru</key> + <value>Установить пометки</value> + + 17 + + ru + Установить пометки + + + true + + + StdPicture.CheckAll + + + + УстановитьПометки + + + Picture + DontUse + + + ИзменитьТипТекстаНаHTML + + <key>ru</key> + <value>HTML</value> + + 18 + + ru + Изменить тип текста на HTML + + + true + + + + ИзменитьТипТекстаНаHTML + + + DontUse + + + ИзменитьТипТекстаНаОбычный + + <key>ru</key> + <value>Обычный текст</value> + + 19 + + ru + Изменить тип текста на HTML + + + true + + + + ИзменитьТипТекстаНаОбычный + + + DontUse + + + ДобавитьШаблонПоУмолчанию + + <key>ru</key> + <value>Шаблон по умолчанию</value> + + 21 + + ru + Добавить/Заменить шаблоном по умолчанию + + + true + + + StdPicture.DataCompositionSettingsWizard + + + + ДобавитьШаблонПоУмолчанию + + + TextPicture + true + DontUse + + + СнятьПометкиОтправлятьЕслиПустой + + <key>ru</key> + <value>Снять пометки</value> + + 22 + + ru + Снять пометки флажка "Отправлять, если пустой" для всех отчетов + + + true + + + StdPicture.UncheckAll + + + + СнятьПометкиОтправлятьЕслиПустой + + + DontUse + + + УстановитьПометкиОтправлятьЕслиПустой + + <key>ru</key> + <value>Установить пометки</value> + + 23 + + ru + Установить пометки флажка "Отправлять, если пустой" для всех отчетов + + + true + + + StdPicture.CheckAll + + + + УстановитьПометкиОтправлятьЕслиПустой + + + DontUse + + + УказатьПолучателяРассылки + + <key>ru</key> + <value>Указать получателя рассылки</value> + + 24 + + ru + Указать получателя рассылки в настройке отчета + + + true + + + CommonPicture.ВариантыОтчетовДоступныеВсемПользователям + + + + УказатьПолучателяРассылки + + + TextPicture + DontUse + + + КомандаЗаписать + + <key>ru</key> + <value>Записать</value> + + 25 + + ru + Записать объект + + + true + + Ctrl+S + + StdPicture.Write + + + + КомандаЗаписать + + + DontUse + + + КомандаЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 26 + + ru + Записать объект и закрыть форму + + + true + + + StdPicture.WriteAndClose + + + + КомандаЗаписатьИЗакрыть + + + DontUse + + + КомандаВыполнитьСейчас + + <key>ru</key> + <value>Выполнить сейчас</value> + + 1 + + ru + Команда выполнить сейчас + + + true + + + StdPicture.BusinessProcessStart + + + + КомандаВыполнитьСейчас + + + TextPicture + DontUse + + + КомандаСобытияРассылки + + <key>ru</key> + <value>События рассылки...</value> + + 27 + + ru + Перейти в журнал регистрации с отбором по рассылке + + + true + + + StdPicture.EventLog + + + + КомандаСобытияРассылки + + + TextPicture + DontUse + + + УдалитьПолучателяРассылки + + <key>ru</key> + <value>Удалить получателя рассылки</value> + + 28 + + ru + Удалить получателя рассылки из настройки отчета + + + true + + + + УдалитьПолучателяРассылки + + + DontUse + + + ПроверитьВозможностьРассылки + + <key>ru</key> + <value>Проверить</value> + + 29 + + ru + Проверить возможность публикации в и/или рассылки на электронную почту + + + true + + + + ПроверитьВозможностьРассылки + + + Auto + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..9dfab4a7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,143 @@ + +

Предназначена для автоматического формирования отчетов и доставки сформированных отчетов получателям.

+

Рассылки отчетов позволяют автоматизировать процесс получения отчетов так, что, не открывая программу, можно получить в нужное время готовый отчет на свою электронную почту или в определенный каталог в виде файла.

+

Основные сведения

+
  • +
    Наименование - представление рассылки в списках, может быть указано как шаблон.
    +
  • +
  • Подготовлена - флажок, который обозначает готовность рассылки к выполнению. Включение флажка активизирует дополнительные проверки заполнения реквизитов. +
  • +
  • Отправлять - вид рассылки, определяющий цель: +
    • Отчеты указанным получателям - одинаковые отчеты отправляются одновременно всем получателям. Для этого вида рассылки отчетов предусмотрена не только отправка по электронной почте, но и возможность публикации сформированных отчетов в папке файлов программы, в сетевом каталоге или на сайте FTP. +
      • в поле Получатели выберите тип получателей - один из списков программы (например, Пользователи).
    • +
    • Свой отчет для каждого получателя - используется, если нужно персонализировать содержимое отправляемых отчетов по каждому получателю. В настройках отборов отчетов появляется возможность указать получателя рассылки. Таким образом, для каждого получателя будет сформирован собственный отчет с отбором по этому получателю. +
      • в поле Получатели выберите тип получателей.
    • +
    • Только мне (личная рассылка автора) - отчеты получает по почте только пользователь, создавший эту рассылку (автор). Личные рассылки видны только автору. +

Отчеты

+
  • На этой вкладке можно выбрать для рассылки один или несколько отчетов из списка с помощью кнопки Подобрать. +
  • +
  • С помощью кнопки Предварительный просмотр можно сформировать выбранный отчет. +
  • +
  • Настройки отчета - выводятся настройки отчета, с помощью флажков можно выбрать нужные настройки и указать значения, по которым будет выведен отчет. При необходимости можно изменить настройки выбранного отчета. Для этого выберите нужное значение из списков. +
  • +
  • Если выбран вид рассылки Свой отчет для каждого получателя, то с помощью соответствующей кнопки в настройках каждого отчета можно Указать получателя рассылки из списка Пользователи, для того чтобы для каждого получателя формировался свой отчет с показателями, доступными только для этого получателя. +
  • +
  • В заголовке вкладки ведется количество отчетов, входящих в рассылку.

Расписание

+
  • +
    Для автоматической отправки отчетов с некоторым интервалом или в некоторые дни недели на вкладке можно описать, по каким дням, и в какое время программа должна отправлять эту рассылку. На основании каждой рассылки отчетов в программе формируются одноименные регламентные задания "Рассылка отчетов".
    +
  • +
  • +
    Включите флажок Выполнять по расписанию.
    +
  • +
  • +
    Имеется возможность автоматического составления расписания с помощью кнопки Заполнить по шаблону. Выберите нужное расписание из списка, например, в первый день месяца. Расписание заполнится автоматически.
    +
  • +
  • +
     Кроме этого, в программе предусмотрена возможность самостоятельно выбрать периодичность расписания (определяет частотность срабатывания рассылки, переключение данного параметра влияет на все настройки расписания):
    +
    • Ежедневно - рассылка будет выполняться с заданной частотой в днях. +
      • выберите Период повтора;
    • +
    • Еженедельно - по выбранным дням недели. +
      • Выберите дни недели с помощью флажков.
    • +
    • Ежемесячно - по выбранным месяцам в требуемый день месяца. +
      • Выберите месяцы с помощью флажков, укажите номер дня с начала или с конца месяца, в который будет производиться рассылка.
    • +
    • Произвольное - позволяет детально настроить каждый параметр расписания. Открывается окно Расписание для детальной разработки своего расписания. При этом необязательно заполнять его сразу, после закрытия окна становится доступной кнопка Изменить, по которой можно вернуться к настройке расписания в любое время. В этом случае Время начала настраивается также в окне Расписание.
  • +
  •  Напишите Время начала запуска рассылки. +
  • +
  • В поле Автор выберите пользователя из списка. По умолчанию программа выбирает в качестве автора текущего пользователя, который создает рассылку. +
    • При запуске по расписанию рассылка выполняется от имени автора.

Доставка

+
  • На вкладке описываются все возможные способы доставки настраиваемой рассылки. Содержимое вкладки может меняться, в зависимости от вида рассылки. +
  • +
  • Если выбрана личная рассылка автора, то доставка выполняется только по электронной почте по единственному адресу, который указывается в поле Почтовый адрес. +
  • +
  • Если выбран Свой отчет для каждого получателя, то доставка также выполняется только по электронной почте, но уже не одному, а нескольким получателям. +
  • +
  • Если выбраны Отчеты указанным получателям, то кроме доставки по почте появляется возможность сохранить (опубликовать) готовые отчеты. 
  • +
    • Для этого включите флажок Публиковать - признак необходимости публикации рассылки. Выберите соответствующее значение:
    • +
      • В папку - отчеты будут сохранены в указанную папку подсистемы "Работа с файлами". С помощью этого способа доставки можно организовать регулярную архивацию отчетов в папку файлов (при этом отключив отправку по электронной почте);
      • +
      • В сетевой каталог - отчеты будут сохранены в выбранный сетевой каталог. Запись производится с сервера, поэтому рекомендуется указывать сетевой путь в формате UNC, например: \\server\folder\. Укажите адрес этого каталога в поле Windows (если вы работаете на компьютере под управлением этой операционной системы) или в поле Linux (если вы работаете на компьютере под управлением Linux). Внимание! Данный способ доставки отчетов недоступен в приложении в Интернете;
      • +
      • На FTP ресурс - отчеты будут сохранены на ftp-сервере. Заполните необходимые параметры.
      • +
      • Включать дату в имя файла - Если при публикации рассылки включить флажок, то каждый файл получает уникальное наименование и после сохранения в папке не будет затерт при следующей рассылке. По умолчанию флажок выключен.
  • Проверить - проверка публикации путем записи и удаления тестового файла. Тест считается успешным, если ошибок не возникло. +
  • +
  • Отправлять по электронной почте - признак использования электронной почты для отправки отчетов (или уведомлений). +
  • +
  • Укажите получателей - перейдите по ссылке, для того чтобы заполнить список получателей и исключений из получателей рассылки. Можно выбирать элементы или группы получателей. После заполнения ссылка принимает вид списка получателей: указывается первый получатель списка. +
  • +
  • В поле От из выпадающего списка выберите учетную запись для отправки. Поле является обязательным для заполнения. Выпадающий список для выбора содержит только элементы списка учетных записей, ввести учетную запись в поле вручную невозможно. +
  • +
  • Проверить - проверка учетной записи электронной почты путем отправки тестового сообщения. Тест считается успешным, если ошибок не возникло. +
  • +
  • Если используются оба способа доставки (и публикация, и отправка по почте), то можно указать, что по почте нужно Отправлять только уведомление о том, что отчет сформирован. Сами отчеты не будут присоединяться к письму, а будут помещаться в каталог публикации. В этом случае письмо-уведомление будет содержать адрес, по которому находится сформированный отчет. +
  • +
  • После установки флажка Отправлять по электронной почте становятся доступными Тема и текст письма. Могут содержать шаблоны параметров рассылки. По умолчанию шаблон письма уже сформирован автоматически. Для добавления параметров в письмо нажмите Параметр, выберите нужное значение: +
    • [ДатаВыполнения] - дата рассылки. Параметр может быть указан в имени архива. +
    • +
    • +
      [Автор] - пользователь, запустивший рассылку.
      +
    • +
    • +
      [Получатель] - представление получателя рассылки. Доступен только для вида рассылки свой отчет для каждого получателя.
      +
    • +
    • +
      [НаименованиеРассылки] - наименование рассылки. Параметр может быть указан в имени архива.
      +
    • +
    • +
      [СформированныеОтчеты] - список отчетов и форматов, в которые они были сохранены.
      +
    • +
    • +
      [ЗаголовокСистемы] - заголовок информационной базы 1С:Предприятие для всех пользователей. Устанавливается в разделе Администрирование - Общие настройки.
      +
    • +
    • +
      [СпособДоставки] - представление ресурса, на котором был опубликован отчет.
  • +
  • +
    По умолчанию установлен формат письма HTML, можно изменить его на Обычный. В формате HTML доступны стандартные команды форматирования текста (часть из них размещена в виде кнопок, остальные можно найти в меню Еще).
    +
  • +
  • +
    С помощью соответствующего флажка можно Транслитерировать имена файлов. В этом случае сохраненные файлы будут иметь имена, содержащие только латинские буквы и цифры, для возможности переноса между различными операционными системами. Например, файл Отчет.mxl будет сохранен с именем Otchet.mxl.

Дополнительно

+
  • Форматы сохранения отчетов (по умолчанию) - определяет форматы, в которых будут по умолчанию сохранены отчеты.  Выберите общие форматы для всех отчетов с помощью флажков. Можно выбрать несколько форматов. +
  • +
  • В таблице ниже для каждого отчета можно задать свой набор форматов в колонке Форматы. +
  • +
  • В колонке Отправлять пустой установите флажок для отправки сформированного отчета, даже если он пустой. По умолчанию флажок снят. Отчеты с графикой всегда считаются не пустыми. +
  • +
  • Установите флажок Архивировать в ZIP, для того чтобы архивировать сформированные отчеты в формате .zip. Рекомендуется включать архивацию, если отчеты отправляются по электронной почте, для снижения объема вложений. +
    • Становится доступным поле Наименование архива (наименование архива формируется автоматически по указанному в поле шаблону). +
    • +
    • С помощью команды Параметр контекстного меню по правой кнопке мыши в поле Наименование архива можно изменить шаблон наименования. Для изменения доступны параметры: +
      • Дата рассылки; +
      • +
      • Наименование рассылки.
    • +
    • При необходимости напишите Пароль архива.
  • +
  • В поле Адрес ответа укажите E-mail адрес, на который будут высылаться ответы на рассылку. Можно указать обратный адрес, для того чтобы получателям рассылки можно было отправить на него предложения и замечания по поводу присылаемых в рассылке отчетов (с помощью кнопки Ответить в полученном письме с отчетами. Этот адрес невозможно использовать для анализа результатов рассылки, т.к. он предназначен для ответов реальных пользователей и письма с этого адреса не придут автоматически. Адрес ответа может отличаться от адреса системной учетной записи, с которой обычно осуществляется рассылка.
  • +
  • Включите флажок Отправлять письма через скрытые копии, для того чтобы получатели не знали, кто еще получает отчеты из данной рассылки. +
  • +
  • Группа - рассылки можно сгруппировать по различным признакам. Для того чтобы поместить рассылку в группу, выберите ее из списка.

Выполнение рассылки

+
  • +
    Нажмите Выполнить сейчас, для того чтобы выполнить рассылку от имени текущего пользователя. Рассылка будет выполнена, если у нее установлен флажок Подготовлена.

Просмотр событий рассылки

+
  • +
    Нажмите События рассылки, для того чтобы открыть журнал регистрации, предварительно отфильтровав его по событиям рассылки со времени последнего запуска.

Анализ результатов рассылки

+
+

Для контроля результатов рассылки можно использовать:

+
  • Контроль папки Отправленные. Отправленные письма обычно помещаются в эту папку на почтовом сервере. Если это не так, то нужно проверить настройки почтового сервера и исправить их.
  • +
  • Дополнительные адреса для рассылки. Если в папку Отправленные письма не попадают или необходим дополнительный контроль, можно добавить свой почтовый ящик в список адресов рассылки. В карточке учетной записи электронной почты можно включить флажок Отправлять скрытые копии писем на этот адрес (тогда другие адресаты не увидят копии писем, флажок работает только для почтовых серверов POP), настроить правило для сортировки входящих писем, для того чтобы такие письма перемещались в нужную папку.
+

+

Работа в клиент-серверном режиме

+

+
  • При работе программы в клиент-серверном режиме необходимо иметь в виду, что рассылка выполняется на сервере 1С:Предприятия. +
  • +
  • Путь к одному ресурсу может отличаться для клиента и сервера, в зависимости от их сетевого расположения и операционных систем. +
  • +
  • Если сервер 1С:Предприятия работает под Windows, то необходимо убедиться, что сетевой каталог Windows доступен для чтения и записи пользователю операционной системы, от имени которого запущен сервер 1С:Предприятия. Если это не так, то необходимо дать этому пользователю необходимые права, или выбрать другого пользователя для запуска сервера 1С:Предприятия с необходимыми правами к сетевому каталогу. Эти же рекомендации актуальны и для доступа к ресурсам FTP и электронной почты. +
  • +
  • Поле сетевой каталог Linux предназначено для серверов 1С:Предприятия, работающих под управлением ОС Linux. В этом поле можно указать только локальный путь, например, /home/path. +
  • +
  • Для того чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора (root) сделайте следующее: +
    • mkdir folder
      --- вместо folder напишите имя каталога. например в каталоге /home выполните команду mkdir shared, для того чтобы создать каталог shared с полным путем /home/shared. +
    • +
    • mount -t cifs //server/share folder -o //domain/user, password=pwd
      - где //server/share - UNC путь к другому компьютеру , folder - путь каталога на Linux компьютере, например \home\shared, //domain/user - имя домена/пользователя, если нужно, pwd - пароль пользователя (если
      нужно). +
    • +
    • Если имя и пароль не нужны, команда выглядит так:
      mount -t cifs //server/share folder +
    • +
    • После этого в пути к тому указываем folder, например /home/shared.
  • +
  • Подробнее об администрировании сервера 1С:Предприятия см. документацию к платформе 1С:Предприятие.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..a64bb56a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,3737 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + ПовторноеЧтение = (Кэш <> Неопределено); + + // Чтение хранилища значений + Если ТекущийОбъект.ПисьмоВФорматеHTML Тогда + СтруктураВложенийПисьмаВФорматеHTML = ТекущийОбъект.КартинкиПисьмаВФорматеHTML.Получить(); + Если СтруктураВложенийПисьмаВФорматеHTML = Неопределено Тогда + СтруктураВложенийПисьмаВФорматеHTML = Новый Структура; + КонецЕсли; + ТекстПисьмаФорматированныйДокумент.УстановитьHTML(ТекущийОбъект.ТекстПисьмаВФорматеHTML, СтруктураВложенийПисьмаВФорматеHTML); + КонецЕсли; + + // Перезаполнение очищаемых данных формы при повторном чтении объекта из БД. + Если ПовторноеЧтение Тогда + ЗаполнитьСведенияТаблицыОтчеты(); + ПрочитатьРасписаниеРегламентногоЗадания(); + КонецЕсли; + + Для Каждого Строка Из Объект.Отчеты Цикл + Строка.НеОтправлятьПустой = Не Строка.ОтправлятьЕслиПустой; + КонецЦикла; + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + УстановитьУсловноеОформление(); + + ТекстОшибкиПриОткрытии = РассылкаОтчетов.ТекстОшибкиПроверкиПраваДобавления(); + Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда + Возврат; + КонецЕсли; + + Если Объект.ПометкаУдаления Тогда + ЭтотОбъект.ТолькоПросмотр = Истина; + КонецЕсли; + + // Удаление варианта "В папку", если не используется интеграция с подсистемой "РаботаСФайлами". + Если ТипЗнч(Объект.Папка) = Тип("Неопределено") Или ТипЗнч(Объект.Папка) = Тип("Строка") Тогда + Элементы.ДругойСпособДоставки.СписокВыбора.Удалить(0); + КонецЕсли; + + // Удаление варианта "В сетевой каталог", если режим работы в модели сервиса. + Если ОбщегоНазначения.РазделениеВключено() Тогда + СпособДоставкиСетевойКаталог = Элементы.ДругойСпособДоставки.СписокВыбора.НайтиПоЗначению("ИспользоватьСетевойКаталог"); + Элементы.ДругойСпособДоставки.СписокВыбора.Удалить(СпособДоставкиСетевойКаталог); + КонецЕсли; + + Если Не ПравоДоступа("ЖурналРегистрации", Метаданные) Тогда + Элементы.КомандаСобытияРассылки.Видимость = Ложь; + Элементы.СобытияРассылки.Видимость = Ложь; + КонецЕсли; + + РассылкаОснование = Параметры.ЗначениеКопирования; + + // Используется при загрузке и записи настроек выбранного отчета. + ИдентификаторТекущейСтрокиТаблицыОтчетов = -1; + + // Кэш проверки + ЭтоНовый = Объект.Ссылка.Пустая(); + СозданКопированием = Не РассылкаОснование.Пустая(); + + // Добавление отчетов в табличную часть. + Если Параметры.Свойство("ПрисоединяемыеОтчеты") И ТипЗнч(Параметры.ПрисоединяемыеОтчеты) = Тип("Массив") Тогда + Модифицированность = Истина; + ДобавитьНастройкиОтчетов(Параметры.ПрисоединяемыеОтчеты); + КонецЕсли; + + Кэш = ПолучитьКэш(); + + Расписание = Новый РасписаниеРегламентногоЗадания; + + РассылкаБылаПерсонализирована = Объект.Персонализирована; + + // Чтение + ЗаполнитьСведенияТаблицыОтчеты(); + ЗаполнитьПустыеШаблоныСтандартными(Объект); + + Если ЭтоНовый И Не СозданКопированием Тогда + ВариантРасписания = Неопределено; + Параметры.Свойство("ВариантРасписания", ВариантРасписания); + ЗаполнитьРасписаниеПоВарианту(ВариантРасписания); + Иначе + ПрочитатьРасписаниеРегламентногоЗадания(); + КонецЕсли; + + // Заполнение автора рассылки + Если ЭтоНовый Тогда + // Автор рассылки + ТекущийПользователь = Пользователи.ТекущийПользователь(); + Объект.Автор = ТекущийПользователь; + Если Не ЗначениеЗаполнено(Объект.Автор) Тогда + Отказ = Истина; + + ПараметрыЖурнала = Новый Структура; + ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Открытие формы элемента'", ОбщегоНазначения.КодОсновногоЯзыка())); + ПараметрыЖурнала.Вставить("Данные", Неопределено); + ПараметрыЖурнала.Вставить("Метаданные", Метаданные.Справочники.РассылкиОтчетов); + + Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка заполнения автора рассылки: + |Пользователь ""%1"" (%2) не может быть автором.'"), + Строка(ТекущийПользователь), + Строка(ТипЗнч(ТекущийПользователь))); + + РассылкаОтчетов.ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, Текст); + + Возврат; + КонецЕсли; + + // Звездочки для паролей, копируемых из основания. + Если СозданКопированием Тогда + АвторОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РассылкаОснование, "Автор"); + Если АвторОснования = ТекущийПользователь Тогда + УстановитьПривилегированныйРежим(Истина); + Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(РассылкаОснование, "ПарольАрхива, FTPПароль"); + УстановитьПривилегированныйРежим(Ложь); + Если ЗначениеЗаполнено(Пароли.ПарольАрхива) Тогда + ПарольАрхива = ПарольСкрыт(); + ПарольАрхиваИзменен = Истина; // См. обработку этого параметра в ПриЗаписиНаСервере. + КонецЕсли; + Если ЗначениеЗаполнено(Пароли.FTPПароль) Тогда + FTPПароль = ПарольСкрыт(); + FTPПарольИзменен = Истина; // См. обработку этого параметра в ПриЗаписиНаСервере. + КонецЕсли; + КонецЕсли; + КонецЕсли; + + // Сброс на умолчания параметров, копирование которых невозможно. + Если Не ПарольАрхиваИзменен Тогда + Объект.ИмяАрхива = Кэш.Шаблоны.ИмяАрхива; + КонецЕсли; + Если Не FTPПарольИзменен Тогда + Объект.FTPЛогин = ""; + Объект.FTPСервер = ""; + Объект.FTPПорт = 21; + Объект.FTPКаталог = ""; + КонецЕсли; + Иначе + УстановитьПривилегированныйРежим(Истина); + Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка, "ПарольАрхива, FTPПароль"); + УстановитьПривилегированныйРежим(Ложь); + ПарольАрхива = ?(ЗначениеЗаполнено(Пароли.ПарольАрхива), ПарольСкрыт(), ""); + FTPПароль = ?(ЗначениеЗаполнено(Пароли.FTPПароль), ПарольСкрыт(), ""); + КонецЕсли; + Пароли = Неопределено; + + // Позволяет видеть и управлять некоторыми защищенными параметры рассылки. + РассылкуРедактируетАвтор = (Объект.Автор = Пользователи.ТекущийПользователь()); + + // Доступность кнопки добавления дополнительного отчета. + Элементы.ОтчетыДобавитьДополнительныйОтчет.Доступность = ?(Кэш.ПустоеЗначениеОтчета = Неопределено, Истина, Ложь); + // СКэш.ПустоеЗначениеОтчета = Неопределено" когда тип реквизита "отчет" составной, + // соответственно используется интеграция с подсистемой Дополнительные отчеты и обработки. + + // Доступность автора рассылки. + Элементы.Автор.Доступность = Пользователи.ЭтоПолноправныйПользователь(); + + // Список форматов с пометками для форматов по умолчанию. + СписокФорматовПоУмолчанию = РассылкаОтчетов.СписокФорматов(); + + // Представление списка форматов по умолчанию. + СписокФорматовПоУмолчаниюПредставление = ""; + Для Каждого ЭлементСписка Из СписокФорматовПоУмолчанию Цикл + Если ЭлементСписка.Пометка Тогда + СписокФорматовПоУмолчаниюПредставление = СписокФорматовПоУмолчаниюПредставление + ?(СписокФорматовПоУмолчаниюПредставление = "", "", ", ") + Строка(ЭлементСписка.Представление); + КонецЕсли; + КонецЦикла; + + // Список редактирования форматов. + СписокФорматов = СписокФорматовПоУмолчанию.Скопировать(); + + // Представление форматов по умолчанию в пределах рассылки. + ФорматыПоУмолчанию = ""; + Найденные = Объект.ФорматыОтчетов.НайтиСтроки(Новый Структура("Отчет", Кэш.ПустоеЗначениеОтчета)); + Если Найденные.Количество() = 0 Тогда + ФорматыПоУмолчанию = СписокФорматовПоУмолчаниюПредставление; + Иначе + Для Каждого СтрокаФормат Из Найденные Цикл + ФорматыПоУмолчанию = ФорматыПоУмолчанию + ?(ФорматыПоУмолчанию = "", "", ", ") + РассылкаОтчетов.ПредставлениеФормата(СтрокаФормат.Формат); + КонецЦикла; + КонецЕсли; + + // Вложения. + Если СтруктураВложенийПисьмаВФорматеHTML = Неопределено Тогда + СтруктураВложенийПисьмаВФорматеHTML = Новый Структура; + КонецЕсли; + + // Для списков получателей и исключенных используется одна табличная часть. + Элементы.ПустыеНастройки.ОтборСтрок = Новый ФиксированнаяСтруктура("ИндексКартинки", 200); + + // Список выбора почтовых адресов автора. + ПочтовыеАдресаПолучателя(Объект.Автор, Элементы.ВидПочтовогоАдресаАвтора.СписокВыбора); + + // Список выбора почтовых адресов автора. + ПодключитьКэшНастроекЭлектроннойПочты(); + + // Чтение настроек отчетов из объекта копирования. + Если СозданКопированием Тогда + ПрочитатьНастройкиОтчетовОбъектаКопирования(); + КонецЕсли; + + // Активизация первой строки + Если Объект.Отчеты.Количество() > 0 И ИдентификаторТекущейСтрокиТаблицыОтчетов = -1 Тогда + СтрокаОтчеты = Объект.Отчеты[0]; + ИдентификаторСтроки = СтрокаОтчеты.ПолучитьИдентификатор(); + ТекстОшибки = ОтчетыПриАктивизацииСтрокиНаСервере(ИдентификаторСтроки); + Если ТекстОшибки <> "" Тогда + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "Объект.Отчеты[0].Представление"); + КонецЕсли; + КонецЕсли; + + ВидимостьДоступностьКорректность(ЭтотОбъект); + + ЗафиксироватьЗначенияРеквизитовДоИзменения(); + + Для Каждого Строка Из Объект.Отчеты Цикл + Строка.НеОтправлятьПустой = Не Строка.ОтправлятьЕслиПустой; + КонецЦикла; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.КомандаЗаписатьИЗакрыть.Отображение = ОтображениеКнопки.Картинка; + Элементы.ДругиеСпособыДоставки.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно; + Элементы.ИспользоватьСетевойКаталог.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно; + Элементы.ИспользоватьПапку.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если ФормаБылаМодифицированаНаСервере Тогда + Модифицированность = Истина; + КонецЕсли; + Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда + Отказ = Истина; + ПоказатьПредупреждение(, ТекстОшибкиПриОткрытии); + Возврат; + КонецЕсли; + Если ЗначениеЗаполнено(ТекстВсплывающегоОповещенияПриОткрытии) Тогда + ПоказатьОповещениеПользователя(ТекстВсплывающегоОповещенияПриОткрытии, , , БиблиотекаКартинок.ВыполнитьЗадачу) + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + // Проверка данных, которые выведены через реквизиты самой формы. + Если Не ЗначениеЗаполнено(Объект.Наименование) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не введено наименование'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.Наименование"); + КонецЕсли; + Если Объект.ИспользоватьЭлектроннуюПочту И Не Объект.Личная Тогда + Если Не ЗначениеЗаполнено(ТипПолучателейРассылки) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не выбран тип получателей'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "ТипПолучателейРассылки"); + КонецЕсли; + КонецЕсли; + + Если Объект.Подготовлена Тогда + Если Объект.Отчеты.Количество() = 0 Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не выбрано ни одного отчета'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.Отчеты"); + КонецЕсли; + + Если Не ЗначениеЗаполнено(Объект.ПериодичностьРасписания) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не выбрана периодичность запуска'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.ПериодичностьРасписания"); + КонецЕсли; + + Если Объект.ИспользоватьFTPРесурс Тогда + Если Не ЗначениеЗаполнено(Объект.FTPСервер) + Или Не ЗначениеЗаполнено(Объект.FTPПорт) + Или Не ЗначениеЗаполнено(Объект.FTPКаталог) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не введен FTP адрес'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "FTPСерверИКаталог"); + КонецЕсли; + КонецЕсли; + + Если Объект.ИспользоватьСетевойКаталог Тогда + Если Не ЗначениеЗаполнено(Объект.СетевойКаталогWindows) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не введен сетевой каталог Windows'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.СетевойКаталогWindows"); + КонецЕсли; + Если Не ЗначениеЗаполнено(Объект.СетевойКаталогLinux) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не введен сетевой каталог Linux'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.СетевойКаталогLinux"); + КонецЕсли; + КонецЕсли; + + Если Объект.ИспользоватьПапку Тогда + Если Не ЗначениеЗаполнено(Объект.Папка) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не выбрана папка'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.Папка"); + КонецЕсли; + КонецЕсли; + + Если Объект.ИспользоватьЭлектроннуюПочту Тогда + Если Объект.Личная Тогда + Если Не ЗначениеЗаполнено(Объект.ВидПочтовогоАдресаПолучателей) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не выбран почтовый адрес'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.ВидПочтовогоАдресаПолучателей"); + КонецЕсли; + Иначе + Если Не ПолучателиУказаны(Объект.Получатели) Тогда + Отказ = Истина; + КонецЕсли; + Если Не ЗначениеЗаполнено(Объект.ВидПочтовогоАдресаПолучателей) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не выбран тип почтового адреса получателей'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "ПолучателиРассылки"); + КонецЕсли; + КонецЕсли; + Если Не ЗначениеЗаполнено(Объект.УчетнаяЗапись) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не выбрана учетная запись для отправки'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.УчетнаяЗапись"); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + Если ПараметрыЗаписи = Неопределено Тогда + ПараметрыЗаписи = Новый Структура; + КонецЕсли; + Если Не ПараметрыЗаписи.Свойство("Шаг") Тогда + Отказ = Истина; + ЗаписатьНаКлиенте(Неопределено, ПараметрыЗаписи); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + // Запись настроек текущей строки. + Если ИдентификаторТекущейСтрокиТаблицыОтчетов <> -1 Тогда + ЗаписатьНастройкиСтрокиОтчеты(ИдентификаторТекущейСтрокиТаблицыОтчетов); + КонецЕсли; + + // Далее выполняются следующие действия: + // [1] Сохранение настроек, сделанных пользователем. + // Помещение измененных настроек строк в настройки записываемого объекта (хранилище значения). + // Анализ выполняется для всех отчетов, если пользователь менял настройки. + // [2] Поиск незаполненных но обязательных для заполнения настроек. + // Анализ выполняется для СКД отчетов, если рассылка подготовлена. + ПроверитьОбязательные = Объект.Подготовлена; + // [3] Поиск персонализированных полей, если эта рассылка не персонализирована. + // Анализ выполняется для всех отчетов, если пользователь сменил вид рассылки с персонализированной на любой + // другой. + РассылкаНеПерсонализирована = (Не Объект.Персонализирована И РассылкаБылаПерсонализирована); + Для Каждого СтрокаОтчеты Из Объект.Отчеты Цикл + + ОбъектСтрокаОтчеты = ТекущийОбъект.Отчеты.Получить(СтрокаОтчеты.НомерСтроки-1); + + Если СтрокаОтчеты.ВнесеныИзменения Тогда + // [1], [2] и [3] Чтение неинициализированных настроек. + ПользовательскиеНастройки = ПолучитьИзВременногоХранилища(СтрокаОтчеты.АдресНастроек); + + // [1] Запись настроек. + ОбъектСтрокаОтчеты.Настройки = Новый ХранилищеЗначения(ПользовательскиеНастройки, Новый СжатиеДанных(9)); + + Если Не ПроверитьОбязательные И Не РассылкаНеПерсонализирована Тогда + Продолжить; + КонецЕсли; + + Иначе + + Если Не ПроверитьОбязательные И Не РассылкаНеПерсонализирована Тогда + Продолжить; + КонецЕсли; + + // [2] и [3] Чтение неинициализированных настроек. + Если ЭтоАдресВременногоХранилища(СтрокаОтчеты.АдресНастроек) Тогда + ПользовательскиеНастройки = ПолучитьИзВременногоХранилища(СтрокаОтчеты.АдресНастроек); + Иначе + ПользовательскиеНастройки = ОбъектСтрокаОтчеты.Настройки.Получить(); + КонецЕсли; + + КонецЕсли; + + // [2] и [3] Инициализация настроек. + ПараметрыОтчета = ИнициализироватьОтчет(СтрокаОтчеты, Истина, ПользовательскиеНастройки, Ложь); + НастройкиОтчета = ?(СтрокаОтчеты.СКД, ПараметрыОтчета.КомпоновщикНастроекКД, ПользовательскиеНастройки); + ОтчетПерсонализирован = Ложь; + + // [2] и [3] Анализ СКД отчетов. + Если СтрокаОтчеты.СКД Тогда + НастройкиКД = НастройкиОтчета.Настройки; + ПользовательскиеНастройкиКД = НастройкиОтчета.ПользовательскиеНастройки; // ПользовательскиеНастройкиКомпоновкиДанных + // [3] Проверка значения настроек. + Фильтр = Новый Структура("Использование, Значение", Истина, ШаблонЗначенияПолучателяРассылки()); + Найденные = ОтчетыКлиентСервер.ЭлементыНастроекОтобранные(ПользовательскиеНастройкиКД, Фильтр); + Если Найденные.Количество() > 0 Тогда + ОтчетПерсонализирован = Истина; + КонецЕсли; + // [2] Поиск и проверка доступной настройки. + ЗаполненыВсеОбязательныеНастройки = Истина; + Для Каждого ПользовательскаяНастройка Из ПользовательскиеНастройкиКД.Элементы Цикл + Если ТипЗнч(ПользовательскаяНастройка) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда + Идентификатор = ПользовательскаяНастройка.ИдентификаторПользовательскойНастройки; + ОбщаяНастройка = ОтчетыКлиентСервер.ПолучитьОбъектПоПользовательскомуИдентификатору(НастройкиКД, Идентификатор); + Если ОбщаяНастройка = Неопределено Тогда + Продолжить; + КонецЕсли; + ДоступнаяНастройка = ОтчетыКлиентСервер.НайтиДоступнуюНастройку(НастройкиКД, ОбщаяНастройка); + Если ДоступнаяНастройка = Неопределено Тогда + Продолжить; + КонецЕсли; + Если Не ДоступнаяНастройка.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда + И Не ПользовательскаяНастройка.Использование Тогда + Продолжить; + КонецЕсли; + Если ДоступнаяНастройка.ЗапрещатьНезаполненныеЗначения И Не ЗначениеЗаполнено(ПользовательскаяНастройка.Значение) Тогда + ЗаполненыВсеОбязательныеНастройки = Ложь; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + // [2] Вывод ошибки. + Если Не ЗаполненыВсеОбязательныеНастройки Тогда + Отказ = Истина; + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для отчета ''%1'' заполнены не все настройки, обязательные для заполнения. Необходимо заполнить все обязательные настройки или снять флажок ''Подготовлена''.'"), + Строка(СтрокаОтчеты.Отчет)); + Поле = "Отчеты["+ Формат(ТекущийОбъект.Отчеты.Индекс(ОбъектСтрокаОтчеты), "ЧН=0; ЧГ=0") +"].Представление"; + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ТекущийОбъект, Поле); + КонецЕсли; + КонецЕсли; // СтрокаОтчеты.СКД + + // [3] Анализ обычных отчетов. + Если ТипЗнч(НастройкиОтчета) = Тип("ТаблицаЗначений") Тогда + Найденные = НастройкиОтчета.НайтиСтроки(Новый Структура("Значение, Использование", ШаблонЗначенияПолучателяРассылки(), Истина)); + Если Найденные.Количество() > 0 Тогда + ОтчетПерсонализирован = Истина; + КонецЕсли; + КонецЕсли; + Если РассылкаНеПерсонализирована И ОтчетПерсонализирован Тогда + Отказ = Истина; + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В настройках отчета ''%1'' задан отбор по получателю рассылки. Необходимо отключить этот отбор или изменить вид рассылки на ''Свой отчет для каждого получателя''.'"), + Строка(СтрокаОтчеты.Отчет)); + Поле = "Отчеты["+ Формат(ТекущийОбъект.Отчеты.Индекс(ОбъектСтрокаОтчеты), "ЧН=0; ЧГ=0") +"].Представление"; + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ТекущийОбъект, Поле); + КонецЕсли; + + Если Объект.Персонализирована И НЕ ОтчетПерсонализирован Тогда + Отказ = Истина; + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В настройках отчета ""%1"" не указан отбор по получателю рассылки.'"), + Строка(СтрокаОтчеты.Отчет)); + Поле = "Отчеты["+ Формат(ТекущийОбъект.Отчеты.Индекс(ОбъектСтрокаОтчеты), "ЧН=0; ЧГ=0") +"].Представление"; + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ТекущийОбъект, Поле); + КонецЕсли; + + КонецЦикла; + + ТекущийОбъект.КартинкиПисьмаВФорматеHTML = Неопределено; + Если ТекущийОбъект.ПисьмоВФорматеHTML Тогда + ТекущийОбъект.ТекстПисьма = СокрЛП(ТекстПисьмаФорматированныйДокумент.ПолучитьТекст()); + Если ТекущийОбъект.ТекстПисьма = "" Тогда + ТекущийОбъект.ТекстПисьмаВФорматеHTML = ""; + Иначе + ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(ТекущийОбъект.ТекстПисьмаВФорматеHTML, СтруктураВложенийПисьмаВФорматеHTML); + Если ТипЗнч(СтруктураВложенийПисьмаВФорматеHTML) = Тип("Структура") + И СтруктураВложенийПисьмаВФорматеHTML.Количество() > 0 Тогда + ТекущийОбъект.КартинкиПисьмаВФорматеHTML = Новый ХранилищеЗначения(СтруктураВложенийПисьмаВФорматеHTML, Новый СжатиеДанных(9)); + КонецЕсли; + ТекущийОбъект.ТекстПисьма = ТекстПисьмаФорматированныйДокумент.ПолучитьТекст(); + КонецЕсли; + КонецЕсли; + + // Записываем значения + Если ЗначениеЗаполнено(ТипПолучателейРассылки) Тогда + Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); + Если Найденные.Количество() = 1 Тогда + ТекущийОбъект.ТипПолучателейРассылки = Найденные[0].ИдентификаторОбъектаМетаданных; + Иначе + ТекущийОбъект.ТипПолучателейРассылки = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); + КонецЕсли; + Иначе + ТекущийОбъект.ТипПолучателейРассылки = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); + КонецЕсли; + + // Все операции с регламентными заданиями размещены в модуле объекта. + Если Объект.ПериодичностьРасписания <> Перечисления.ПериодичностиРасписанийРассылокОтчетов.Произвольное Тогда + Расписание.ВремяКонца = Расписание.ВремяНачала + 600; + КонецЕсли; + ТекущийОбъект.ДополнительныеСвойства.Вставить("Расписание", Расписание); +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + ПарольАрхиваИзмененНоСкрыт = ПарольАрхиваИзменен И ПарольАрхива = ПарольСкрыт(); + FTPПарольИзмененНоСкрыт = FTPПарольИзменен И FTPПароль = ПарольСкрыт(); + + Если (ПарольАрхиваИзмененНоСкрыт Или FTPПарольИзмененНоСкрыт) И ЗначениеЗаполнено(РассылкаОснование) Тогда + ТекущийПользователь = Пользователи.ТекущийПользователь(); + АвторОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РассылкаОснование, "Автор"); + Если АвторОснования = ТекущийПользователь Тогда + УстановитьПривилегированныйРежим(Истина); + Если ПарольАрхиваИзмененНоСкрыт Тогда + ВременнаяПеременная = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(РассылкаОснование, "ПарольАрхива"); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, ВременнаяПеременная, "ПарольАрхива"); + ПарольАрхиваИзменен = Ложь; + КонецЕсли; + Если FTPПарольИзмененНоСкрыт Тогда + ВременнаяПеременная = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(РассылкаОснование, "FTPПароль"); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, ВременнаяПеременная, "FTPПароль"); + FTPПарольИзменен = Ложь; + КонецЕсли; + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + РассылкаОснование = Неопределено; + КонецЕсли; + + Если ПарольАрхиваИзменен Тогда + УстановитьПривилегированныйРежим(Истина); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, ПарольАрхива, "ПарольАрхива"); + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + + Если FTPПарольИзменен Тогда + УстановитьПривилегированныйРежим(Истина); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, FTPПароль, "FTPПароль"); + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + // Перезаполнение таблиц формы, связанных с таблицами объектов (т.к. таблицы объектов уже перезаполнились). + ЗаполнитьСведенияТаблицыОтчеты(); + ОтчетыПриАктивизацииСтрокиНаСервере(ИдентификаторТекущейСтрокиТаблицыОтчетов); + + // Обновление изначальных значений реквизитов в кэше. + ЗафиксироватьЗначенияРеквизитовДоИзменения(); + Для Каждого Строка Из Объект.Отчеты Цикл + Строка.НеОтправлятьПустой = Не Строка.ОтправлятьЕслиПустой; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПодготовленаПриИзменении(Элемент) + ВидимостьДоступностьКорректность(ЭтотОбъект, "Подготовлена"); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Страница "Расписание" + +&НаКлиенте +Процедура ВыполнятьПоРасписаниюПриИзменении(Элемент) + ВидимостьДоступностьКорректность(ЭтотОбъект, "ВыполнятьПоРасписанию"); +КонецПроцедуры + +&НаКлиенте +Процедура МесяцыПриИзменении(Элемент) + Если Элемент <> Неопределено Тогда + Расписание.Месяцы = ИзменитьСоставМассива(ЭтотОбъект[Элемент.Имя], Кэш.Соответствия.Месяцы[Элемент.Имя], Расписание.Месяцы); + КонецЕсли; + ВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы"); +КонецПроцедуры + +&НаКлиенте +Процедура ДниНеделиПриИзменении(Элемент) + Если Элемент <> Неопределено Тогда + Расписание.ДниНедели = ИзменитьСоставМассива(ЭтотОбъект[Элемент.Имя], Кэш.Соответствия.ДниНедели[Элемент.Имя], Расписание.ДниНедели); + КонецЕсли; + ВидимостьДоступностьКорректность(ЭтотОбъект, "ДниНедели"); +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРасписание(Команда) + ИзменитьРасписаниеВДиалоге(); +КонецПроцедуры + +&НаКлиенте +Процедура ПериодичностьРасписанияПриИзменении(Элемент) + ВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодичностьРасписания"); + Если Объект.ПериодичностьРасписания = ПредопределенноеЗначение("Перечисление.ПериодичностиРасписанийРассылокОтчетов.Произвольное") Тогда + ИзменитьРасписаниеВДиалоге(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ГиперссылкаНачалоКонецМесяцаНажатие(Элемент) + Если Расписание.ДеньВМесяце = 0 Тогда + ДеньВМесяце = 1; + Расписание.ДеньВМесяце = -1; + Иначе + Расписание.ДеньВМесяце = -Расписание.ДеньВМесяце; + КонецЕсли; + Модифицированность = Истина; + ВидимостьДоступностьКорректность(ЭтотОбъект, "НачалоКонецМесяца"); +КонецПроцедуры + +&НаКлиенте +Процедура ВремяНачалаПриИзменении(Элемент) + Расписание.ВремяНачала = ВремяНачала; + ВидимостьДоступностьКорректность(ЭтотОбъект, "ВремяНачала"); +КонецПроцедуры + +&НаКлиенте +Процедура ПериодПовтораДнейПриИзменении(Элемент) + Расписание.ПериодПовтораДней = ПериодПовтораДней; + ВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораДней"); +КонецПроцедуры + +&НаКлиенте +Процедура ДеньМесяцаПриИзменении(Элемент) + Расписание.ДеньВМесяце = ?(Расписание.ДеньВМесяце >= 0, ДеньВМесяце, -ДеньВМесяце); + ВидимостьДоступностьКорректность(ЭтотОбъект, "ДеньВМесяце"); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Страница "Доставка" + +&НаКлиенте +Процедура ТипПолучателейРассылкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + Если ВыбранноеЗначение = ТипПолучателейРассылки Тогда + СтандартнаяОбработка = Ложь; + Возврат; + КонецЕсли; + + Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ВыбранноеЗначение)); + Если Найденные.Количество() <> 1 Тогда + СтандартнаяОбработка = Ложь; + Возврат; + КонецЕсли; + + // Очистка получателей (если нужно). + Если Объект.Получатели.Количество() > 0 Тогда + СтандартнаяОбработка = Ложь; + + СтрокаВопроса = НСтр("ru = 'Для продолжения необходимо очистить список получателей.'"); + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Очистить'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ВыбранноеЗначение", ВыбранноеЗначение); + Обработчик = Новый ОписаниеОповещения("ТипПолучателейРассылкиОбработкаВыбораЗавершение", ЭтотОбъект, ДополнительныеПараметры); + + ПоказатьВопрос(Обработчик, СтрокаВопроса, Кнопки, 60, КодВозвратаДиалога.Да); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ТипПолучателейРассылкиПриИзменении(Элемент) + Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); + Если Найденные.Количество() = 1 Тогда + СтрокаПолучатель = Найденные[0]; + Объект.ТипПолучателейРассылки = СтрокаПолучатель.ИдентификаторОбъектаМетаданных; + Объект.ВидПочтовогоАдресаПолучателей = СтрокаПолучатель.ОсновнойВидКИ; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ТипПолучателейРассылкиОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ВидПочтовогоАдресаАвтораОткрытие(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ПоказатьЗначение(, Объект.Автор); +КонецПроцедуры + +&НаКлиенте +Процедура FTPСерверИКаталогПриИзменении(Элемент) + ВыбранноеЗначение = РассылкаОтчетовКлиент.РазобратьFTPАдрес(FTPСерверИКаталог); + FTPСерверИКаталогОбработкаВыбора(Элемент, ВыбранноеЗначение, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура FTPСерверИКаталогНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + ПараметрыПроизвольнойФормы = Новый Структура("Сервер, Каталог, Порт, Логин, ПассивноеСоединение"); + Для Каждого КлючИЗначение Из ПараметрыПроизвольнойФормы Цикл + ПараметрыПроизвольнойФормы[КлючИЗначение.Ключ] = Объект["FTP" + КлючИЗначение.Ключ]; + КонецЦикла; + ПараметрыПроизвольнойФормы.Вставить("Пароль", FTPПароль); + ПараметрыПроизвольнойФормы.Вставить("Заголовок", НСтр("ru = '<Укажите получателя>'")); + + ОткрытьФорму("Справочник.РассылкиОтчетов.Форма.ПараметрыFTP", ПараметрыПроизвольнойФормы, Элемент); +КонецПроцедуры + +&НаКлиенте +Процедура FTPСерверИКаталогОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Если ВыбранноеЗначение = Неопределено Или ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + Для Каждого КлючИЗначение Из ВыбранноеЗначение Цикл + Если КлючИЗначение.Ключ = "Пароль" Тогда + Если КлючИЗначение.Значение <> FTPПароль И КлючИЗначение.Значение <> ПарольСкрыт() Тогда + FTPПароль = КлючИЗначение.Значение; + FTPПарольИзменен = Истина; + КонецЕсли; + Иначе + Объект["FTP" + КлючИЗначение.Ключ] = КлючИЗначение.Значение; + КонецЕсли; + КонецЦикла; + + ВидимостьДоступностьКорректность(ЭтотОбъект, "FTPСерверИКаталог"); + Модифицированность = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура FTPСерверИКаталогОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура FTPСерверИКаталогОткрытие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ПолныйАдрес = "ftp://"+ Объект.FTPСервер +":"+ Формат(Объект.FTPПорт, "ЧН=21; ЧГ=0") + Объект.FTPКаталог; + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(ПолныйАдрес); + +КонецПроцедуры + +&НаКлиенте +Процедура ВидРассылкиПриИзменении(Элемент) + Объект.Личная = (ВидРассылки = "Личная"); + Объект.Персонализирована = (ВидРассылки = "Персонализирована"); + + ВидимостьДоступностьКорректность(ЭтотОбъект, "ВидРассылки"); +КонецПроцедуры + +&НаКлиенте +Процедура ИспользоватьЭлектроннуюПочтуПриИзменении(Элемент) + ВидимостьДоступностьКорректность(ЭтотОбъект, "ИспользоватьЭлектроннуюПочту"); + + Если Не Публиковать И Не Объект.ИспользоватьЭлектроннуюПочту Тогда + Публиковать = Истина; + ВычислитьФлажкиДополнительныхСпособовДоставки(); + ВидимостьДоступностьКорректность(ЭтотОбъект, "Публиковать"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ТолькоУведомитьПриИзменении(Элемент) + ВидимостьДоступностьКорректность(ЭтотОбъект, "ТолькоУведомить"); +КонецПроцедуры + +&НаКлиенте +Процедура ДругойСпособДоставкиПриИзменении(Элемент) + ВычислитьФлажкиДополнительныхСпособовДоставки(); + ВидимостьДоступностьКорректность(ЭтотОбъект, "ДругойСпособДоставки"); +КонецПроцедуры + +&НаКлиенте +Процедура ДругойСпособДоставкиОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка) + СтандартнаяОбработка = НЕ ПустаяСтрока(Текст); +КонецПроцедуры + +&НаКлиенте +Процедура ПубликоватьПриИзменении(Элемент) + ВычислитьФлажкиДополнительныхСпособовДоставки(); + ВидимостьДоступностьКорректность(ЭтотОбъект, "Публиковать"); + + Если Не Публиковать И Не Объект.ИспользоватьЭлектроннуюПочту Тогда + Объект.ИспользоватьЭлектроннуюПочту = Истина; + ВидимостьДоступностьКорректность(ЭтотОбъект, "ИспользоватьЭлектроннуюПочту"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПапкаОткрытие(Элемент, СтандартнаяОбработка) + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиСлужебныйКлиент"); + МодульРаботаСФайламиСлужебныйКлиент.РассылкаОтчетовПросмотрПапки(СтандартнаяОбработка, Объект.Папка); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПапкаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + Если Не ПравоИзмененияПапкиИФайлов(ВыбранноеЗначение) Тогда + СтандартнаяОбработка = Ложь; + ТекстПредупреждения = НСтр("ru = 'Недостаточно прав для изменения файлов папки ""%1"".'"); + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, Строка(ВыбранноеЗначение)); + ПоказатьПредупреждение(, ТекстПредупреждения); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СетевойКаталогWindowsПриИзменении(Элемент) + Объект.СетевойКаталогWindows = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Объект.СетевойКаталогWindows); + Если ПустаяСтрока(Объект.СетевойКаталогLinux) Тогда + Объект.СетевойКаталогLinux = СтрЗаменить(Объект.СетевойКаталогWindows, "\", "/"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СетевойКаталогLinuxПриИзменении(Элемент) + Объект.СетевойКаталогLinux = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Объект.СетевойКаталогLinux); + Если ПустаяСтрока(Объект.СетевойКаталогWindows) Тогда + Объект.СетевойКаталогWindows = СтрЗаменить(Объект.СетевойКаталогLinux, "/", "\"); + КонецЕсли; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Страница "Дополнительно" + +&НаКлиенте +Процедура ФорматыПоУмолчаниюНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Обработчик = Новый ОписаниеОповещения("ФорматыПоУмолчаниюЗавершениеВыбора", ЭтотОбъект); + ВыбратьФормат(Кэш.ПустоеЗначениеОтчета, Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура ФорматыПоУмолчаниюОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОчиститьФормат(Кэш.ПустоеЗначениеОтчета); + ФорматыПоУмолчанию = СписокФорматовПоУмолчаниюПредставление; + ВидимостьДоступностьКорректность(ЭтотОбъект, "ФорматыПоУмолчанию"); +КонецПроцедуры + +&НаКлиенте +Процедура АрхивироватьПриИзменении(Элемент) + ВидимостьДоступностьКорректность(ЭтотОбъект, "Архивировать"); +КонецПроцедуры + +&НаКлиенте +Процедура АвторПриИзменении(Элемент) + ТекущийСписок = Элементы.ВидПочтовогоАдресаАвтора.СписокВыбора; + ТекущийСписок.Очистить(); + НовыйСписок = Новый СписокЗначений; + ПочтовыеАдресаПолучателя(Объект.Автор, НовыйСписок); + Для Каждого ЭлементСписка Из НовыйСписок Цикл + ЗаполнитьЗначенияСвойств(ТекущийСписок.Добавить(), ЭлементСписка); + КонецЦикла; + Если НовыйСписок.НайтиПоЗначению(Объект.ВидПочтовогоАдресаПолучателей) = Неопределено Тогда + Объект.ВидПочтовогоАдресаПолучателей = Неопределено; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура РодительОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + Если ВыбранноеЗначение = Кэш.ГруппаЛичныхРассылок Тогда + СтандартнаяОбработка = Ложь; + ПоказатьПредупреждение(, НСтр("ru = 'Выбранная группа используется только для личных рассылок по электронной почте'")); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПарольАрхиваПриИзменении(Элемент) + ПарольАрхиваИзменен = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыОтчеты + +&НаКлиенте +Процедура ОтчетыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + СтруктураЗаполнения = Новый Структура; + СтруктураЗаполнения.Вставить("Форматы", ПредставлениеФорматовПоУмолчанию()); + СтруктураЗаполнения.Вставить("ОтправлятьЕслиПустой", Ложь); + СтруктураЗаполнения.Вставить("НеОтправлятьПустой", Истина); + СтруктураЗаполнения.Вставить("Доступность", Истина); + + МассивНовыхСтрок = ВыборПодборПеретаскиваниеВТабличнуюЧасть( + ВыбранноеЗначение, + Объект.Отчеты, + "Отчет", + СтруктураЗаполнения, + Истина); + + Шаблон = Новый ФиксированнаяСтруктура("Количество, МассивСтрок, ПредставлениеОтчетов, Текст", 0, Неопределено, ""); + СтруктураВыбора = Новый Структура; + СтруктураВыбора.Вставить("Выбрано", Новый Структура(Шаблон)); + СтруктураВыбора.Вставить("Успешно", Новый Структура(Шаблон)); + СтруктураВыбора.Вставить("СОшибками", Новый Структура(Шаблон)); + СтруктураВыбора.Выбрано.МассивСтрок = МассивНовыхСтрок; + СтруктураВыбора.Успешно.МассивСтрок = Новый Массив; + СтруктураВыбора.СОшибками.МассивСтрок = Новый Массив; + + // Инициализация добавленных строк отчетов и заполнение структуры выбора. + ПроверитьДобавленныеСтрокиОтчетов(СтруктураВыбора); + + Если СтруктураВыбора.СОшибками.Количество > 0 Тогда + + Если СтруктураВыбора.Выбрано.Количество = 1 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось включить отчет в рассылку по причине: + |%1'"), СтруктураВыбора.СОшибками.Текст); + ИначеЕсли СтруктураВыбора.Успешно.Количество = 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось включить отчеты в рассылку по причине: + |%1'"), СтруктураВыбора.СОшибками.Текст); + Иначе + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В рассылку включено отчетов: %1 из %2 + |Подробности: + |%3'"), + Формат(СтруктураВыбора.Успешно.Количество, "ЧН=0; ЧГ="), + Формат(СтруктураВыбора.Выбрано.Количество, "ЧН=0; ЧГ="), + СтруктураВыбора.СОшибками.Текст); + КонецЕсли; + ПоказатьПредупреждение(Неопределено, ТекстСообщения); + + Иначе + + Если СтруктураВыбора.Успешно.Количество = 0 Тогда + ЗаголовокОповещения = Неопределено; + ТекстОповещения = НСтр("ru = 'Все выбранные отчеты уже включены в рассылку'"); + Иначе + Если СтруктураВыбора.Выбрано.Количество = 1 Тогда + ЗаголовокОповещения = НСтр("ru = 'Отчет включен в рассылку'"); + Иначе + ЗаголовокОповещения = НСтр("ru = 'Отчеты включены в рассылку'"); + КонецЕсли; + ТекстОповещения = СтруктураВыбора.Успешно.ПредставлениеОтчетов; + КонецЕсли; + + ПоказатьОповещениеПользователя( + ЗаголовокОповещения, + , + ТекстОповещения, + БиблиотекаКартинок.Успешно32); + + КонецЕсли; + + ВидимостьДоступностьКорректность(ЭтотОбъект, "Отчеты"); +КонецПроцедуры + +&НаКлиенте +Процедура ОтчетыПриАктивизацииСтроки(Элемент) + ПодключитьОбработчикОжидания("ОбработчикАктивизацииСтрокиТаблицыОтчеты", 0.1, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикАктивизацииСтрокиТаблицыОтчеты() + СтрокаОтчеты = Элементы.Отчеты.ТекущиеДанные; + Если СтрокаОтчеты = Неопределено Тогда + Элементы.СтраницыНастроекОтчета.ТекущаяСтраница = Элементы.ПустаяСтраница; + Возврат; + КонецЕсли; + + ИдентификаторСтроки = СтрокаОтчеты.ПолучитьИдентификатор(); + Если ИдентификаторСтроки = ИдентификаторТекущейСтрокиТаблицыОтчетов Тогда + Возврат; + КонецЕсли; + + ТекстПредупреждения = ОтчетыПриАктивизацииСтрокиНаСервере(ИдентификаторСтроки); + Если ТекстПредупреждения <> "" Тогда + ПоказатьПредупреждение(, ТекстПредупреждения); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОтчетыПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ОтчетыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ОтчетыПослеУдаления(Элемент) + ВидимостьДоступностьКорректность(ЭтотОбъект, "Отчеты"); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПользовательскиеНастройки + +&НаКлиенте +Процедура ПользовательскиеНастройкиПриИзменении(Элемент) + СтрокаОтчеты = Элементы.Отчеты.ТекущиеДанные; + Если СтрокаОтчеты = Неопределено Тогда + Возврат; + КонецЕсли; + + СтрокаОтчеты.ВнесеныИзменения = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательскиеНастройкиПриАктивизацииСтроки(Элемент) + Если Элементы.СтраницыНастроекОтчета.ТекущаяСтраница <> Элементы.СтраницаКомпоновщик Тогда + Возврат; + КонецЕсли; + Отчет = Элементы.Отчеты.ТекущиеДанные; + Если Отчет = Неопределено Или ТипЗнч(Отчет.Отчет) <> Тип("СправочникСсылка.ВариантыОтчетов") Тогда + Возврат; + КонецЕсли; + ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока; + ТолькоПросмотрЗначения = Ложь; + РассылкаОтчетовКлиентПереопределяемый.ПриАктивизацииСтрокиНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, ТолькоПросмотрЗначения); + Если Элементы.ПользовательскиеНастройкиЗначение.ТолькоПросмотр <> ТолькоПросмотрЗначения Тогда + Элементы.ПользовательскиеНастройкиЗначение.ТолькоПросмотр = ТолькоПросмотрЗначения; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательскиеНастройкиЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + НачалоВыбораПользовательскойНастройки(СтандартнаяОбработка); +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательскиеНастройкиЗначениеОчистка(Элемент, СтандартнаяОбработка) + Если Элементы.СтраницыНастроекОтчета.ТекущаяСтраница <> Элементы.СтраницаКомпоновщик Тогда + Возврат; + КонецЕсли; + Отчет = Элементы.Отчеты.ТекущиеДанные; + Если Отчет = Неопределено Или ТипЗнч(Отчет.Отчет) <> Тип("СправочникСсылка.ВариантыОтчетов") Тогда + Возврат; + КонецЕсли; + ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока; + РассылкаОтчетовКлиентПереопределяемый.ПриОчисткеНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка); +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательскиеНастройкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + НачалоВыбораПользовательскойНастройки(СтандартнаяОбработка); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыНастройкиТекущегоОтчета + +&НаКлиенте +Процедура НастройкиТекущегоОтчетаЗначениеПриИзменении(Элемент) + СтрокаНастроек = Элементы.НастройкиТекущегоОтчета.ТекущиеДанные; + Если СтрокаНастроек = Неопределено Тогда + Возврат; + КонецЕсли; + + СтрокаНастроек.Использование = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура НастройкиТекущегоОтчетаПриИзменении(Элемент) + СтрокаОтчеты = Элементы.Отчеты.ТекущиеДанные; + Если СтрокаОтчеты = Неопределено Тогда + Возврат; + КонецЕсли; + + СтрокаОтчеты.ВнесеныИзменения = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыФорматыОтчетов + +&НаКлиенте +Процедура ФорматыОтчетовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ФорматыОтчетовПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ФорматыОтчетовФорматыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + СтрокаОтчеты = Элементы.ФорматыОтчетов.ТекущиеДанные; + Если СтрокаОтчеты = Неопределено Тогда + Возврат; + КонецЕсли; + + Переменные = Новый Структура; + Переменные.Вставить("СтрокаОтчеты", СтрокаОтчеты); + + Обработчик = Новый ОписаниеОповещения("ФорматыОтчетовФорматыЗавершениеВыбора", ЭтотОбъект, Переменные); + + ВыбратьФормат(СтрокаОтчеты.Отчет, Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура ФорматыОтчетовФорматыОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + СтрокаОтчеты = Элементы.ФорматыОтчетов.ТекущиеДанные; + Если СтрокаОтчеты = Неопределено Тогда + Возврат; + КонецЕсли; + + ОчиститьФормат(СтрокаОтчеты.Отчет); + СтрокаОтчеты.Форматы = ПредставлениеФорматовПоУмолчанию(); +КонецПроцедуры + +&НаКлиенте +Процедура ФорматыОтчетовОтправлятьЕслиПустойПриИзменении(Элемент) + ТекущиеДанные = Элементы.ФорматыОтчетов.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + ТекущиеДанные.НеОтправлятьПустой = Не ТекущиеДанные.ОтправлятьЕслиПустой; +КонецПроцедуры + +&НаКлиенте +Процедура ФорматыОтчетовНеОтправлятьПустойПриИзменении(Элемент) + ТекущиеДанные = Элементы.ФорматыОтчетов.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + ТекущиеДанные.ОтправлятьЕслиПустой = Не ТекущиеДанные.НеОтправлятьПустой; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +//////////////////////////////////////////////////////////////////////////////// +// Командная панель + +&НаКлиенте +Процедура КомандаЗаписатьИЗакрыть(Команда) + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("ИмяКоманды", "КомандаЗаписатьИЗакрыть"); + ЗаписатьНаКлиенте(Неопределено, ПараметрыЗаписи); +КонецПроцедуры + +&НаКлиенте +Процедура ПолучателиРассылкиНажатие(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Если Не ЗначениеЗаполнено(Объект.ТипПолучателейРассылки) Тогда + ТекстОшибки = НСтр("ru = 'Для ввода получателей необходимо выбрать их тип'"); + ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "ТипПолучателейРассылки"); + Возврат; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ПолучателиРассылкиНажатиеЗавершение", ЭтотОбъект); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Получатели", Объект.Получатели); + ПараметрыФормы.Вставить("ТипПолучателейРассылки", ТипПолучателейРассылки); + ПараметрыФормы.Вставить("ВидПочтовогоАдресаПолучателей", Объект.ВидПочтовогоАдресаПолучателей); + ПараметрыФормы.Вставить("НаименованиеРассылки", Объект.Наименование); + + ОткрытьФорму("Справочник.РассылкиОтчетов.Форма.ПолучателиРассылки", ПараметрыФормы, , , , , Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаЗаписать(Команда) + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("ИмяКоманды", "КомандаЗаписать"); + ЗаписатьНаКлиенте(Неопределено, ПараметрыЗаписи); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаВыполнитьСейчас(Команда) + Если Не Объект.Подготовлена Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Рассылка не подготовлена'")); + Возврат; + КонецЕсли; + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("ИмяКоманды", "КомандаВыполнитьСейчас"); + ЗаписатьНаКлиенте(Неопределено, ПараметрыЗаписи); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаСобытияРассылки(Команда) + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("ИмяКоманды", "КомандаСобытияРассылки"); + ЗаписатьНаКлиенте(Неопределено, ПараметрыЗаписи); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Страница "Отчеты" + +&НаКлиенте +Процедура ДобавитьОтчет(Команда) + ВыбранныеЗначения = Новый СписокЗначений; + Для Каждого СтрокаОтчеты Из Объект.Отчеты Цикл + Если ТипЗнч(СтрокаОтчеты.Отчет) = Тип("СправочникСсылка.ВариантыОтчетов") Тогда + ВыбранныеЗначения.Добавить(СтрокаОтчеты.Отчет); + КонецЕсли; + КонецЦикла; + + ОтборВыбора = Новый Структура; + ОтборВыбора.Вставить("ТипОтчета", 1); + ОтборВыбора.Вставить("Отчет", Новый Структура("Вид, Значение", "НеВСписке", Кэш.ИсключаемыеОтчеты)); + + ПараметрыФормыВыбора = Новый Структура; + ПараметрыФормыВыбора.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + ПараметрыФормыВыбора.Вставить("РежимВыбора", Истина); + ПараметрыФормыВыбора.Вставить("МножественныйВыбор", Истина); + ПараметрыФормыВыбора.Вставить("ЗакрыватьПриВыборе", Ложь); + ПараметрыФормыВыбора.Вставить("Отбор", ОтборВыбора); + ПараметрыФормыВыбора.Вставить("ВыбранныеЗначения", ВыбранныеЗначения); + + ОткрытьФорму("Справочник.ВариантыОтчетов.ФормаВыбора", ПараметрыФормыВыбора, Элементы.Отчеты); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьДополнительныйОтчет(Команда) + // Форма подбора дополнительных отчетов. + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработкиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиент"); + МодульДополнительныеОтчетыИОбработкиКлиент.РассылкаОтчетовПодборДопОтчета(Элементы.Отчеты); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПредварительныйПросмотрОтчета(Команда) + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + ОчиститьСообщения(); + + СтрокаОтчеты = Элементы.Отчеты.ТекущиеДанные; + Если СтрокаОтчеты = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите отчет'")); + Возврат; + КонецЕсли; + Если Не СтрокаОтчеты.Доступность Тогда + ПоказатьПредупреждение(, СтрокаОтчеты.Представление); + Возврат; + КонецЕсли; + + ПараметрыОтчета = Новый Структура; + ПараметрыОтчета.Вставить("Отчет", СтрокаОтчеты.Отчет); + ПараметрыОтчета.Вставить("Настройки", Неопределено); + ПараметрыОтчета.Вставить("ОтправлятьЕслиПустой", СтрокаОтчеты.ОтправлятьЕслиПустой); + ПараметрыОтчета.Вставить("Форматы", Новый Массив); + ПараметрыОтчета.Вставить("Представление", СтрокаОтчеты.Представление); + ПараметрыОтчета.Вставить("ПолноеИмя", СтрокаОтчеты.ПолноеИмя); + ПараметрыОтчета.Вставить("КлючВарианта", СтрокаОтчеты.КлючВарианта); + + Если СтрокаОтчеты.СКД Тогда + ПараметрыОтчета.Настройки = КомпоновщикНастроекКД.ПользовательскиеНастройки; + Иначе + Настройки = Новый Массив; + Найденные = НастройкиТекущегоОтчета.НайтиСтроки(Новый Структура("Использование", Истина)); + Для Каждого СтрокаНастройка Из Найденные Цикл + ДобавляемаяНастройка = Новый Структура("Реквизит, Значение", СтрокаНастройка.Реквизит, СтрокаНастройка.Значение); + Настройки.Добавить(ДобавляемаяНастройка); + КонецЦикла; + ПараметрыОтчета.Настройки = Настройки; + КонецЕсли; + + Если Объект.Персонализирована Тогда + Если Не ПолучателиУказаны(Объект.Получатели) Тогда + Возврат; + КонецЕсли; + Обработчик = Новый ОписаниеОповещения("ПредварительныйПросмотрОтчетаПродолжение", ЭтотОбъект, ПараметрыОтчета); + РассылкаОтчетовКлиент.ВыбратьПолучателя(Обработчик, Объект, Ложь, Ложь); + Иначе + ПредварительныйПросмотрОтчетаПродолжение(Неопределено, ПараметрыОтчета); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПредварительныйПросмотрОтчетаПродолжение(РезультатВыбора, ПараметрыОтчета) Экспорт + ПользовательскиеНастройкиКД = ПараметрыОтчета.Настройки; + Фильтр = Новый Структура("Использование, Значение", Истина, ШаблонЗначенияПолучателяРассылки()); + ПерсонализированныеНастройки = ОтчетыКлиентСервер.ЭлементыНастроекОтобранные(ПользовательскиеНастройкиКД, Фильтр); + Если Объект.Персонализирована Тогда + Если РезультатВыбора = Неопределено Тогда + Возврат; + Иначе + Получатель = РезультатВыбора.Получатель; + КонецЕсли; + Для Каждого ПользовательскаяНастройкаКД Из ПерсонализированныеНастройки Цикл + Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда + ПользовательскаяНастройкаКД.ПравоеЗначение = Получатель; + ИначеЕсли ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда + ПользовательскаяНастройкаКД.Значение = Получатель; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройкиКД); + ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина); + + ВариантыОтчетовКлиент.ОткрытьФормуОтчета(ЭтотОбъект, ПараметрыОтчета.Отчет, ПараметрыФормы); + + Для Каждого ПользовательскаяНастройкаКД Из ПерсонализированныеНастройки Цикл + Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда + ПользовательскаяНастройкаКД.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки(); + ИначеЕсли ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда + ПользовательскаяНастройкаКД.Значение = ШаблонЗначенияПолучателяРассылки(); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура УказатьПолучателяРассылки(Команда) + ОчиститьСообщения(); + + // Проверка - включена ли возможность персонализации рассылки. + Если Не Объект.Персонализирована Тогда + ПредставлениеВида = Элементы.ВидРассылки.СписокВыбора.НайтиПоЗначению("Персонализирована").Представление; + СообщениеТекст = НСтр("ru = 'Использовать получателя в параметрах возможно только для вида рассылки ""%1""'"); + СообщениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеТекст, ПредставлениеВида); + ОбщегоНазначенияКлиент.СообщитьПользователю(СообщениеТекст, , "ВидРассылки"); + Возврат; + КонецЕсли; + + // Получение основного типа получателей. + КоличествоТипов = ТипПолучателейРассылки.Типы().Количество(); + Если КоличествоТипов <> 1 И КоличествоТипов <> 2 Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Получатели"" не заполнено'"), , "ТипПолучателейРассылки"); + Возврат; + КонецЕсли; + + НайденныеИдентификаторыОбъектовМетаданных = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); + Если НайденныеИдентификаторыОбъектовМетаданных.Количество() <> 1 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Некорректный тип получателей.'")); + Возврат; + КонецЕсли; + + МассивТипов = НайденныеИдентификаторыОбъектовМетаданных[0].ОсновнойТип.Типы(); + Если МассивТипов.Количество() <> 1 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Некорректный тип получателей.'")); + Возврат; + КонецЕсли; + + ОсновнойТипПолучателей = МассивТипов[0]; + + Настройка = ОпределитьНастройку(); + Если Настройка = Неопределено Тогда + Возврат; + КонецЕсли; + + // Проверка на содержание типа получателей. + Если Не Настройка.ОписаниеДоступныхТипов.СодержитТип(ОсновнойТипПолучателей) Тогда + ТекстПредупреждения = НСтр("ru = 'Тип ""%1"" не подходит по типу к выбранной настройке. + |Необходимо выбрать другой тип получателей рассылки или другую настройку.'"); + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, Строка(ОсновнойТипПолучателей)); + ПоказатьПредупреждение(, ТекстПредупреждения); + Возврат; + КонецЕсли; + + Настройка.Инициатор.ЗакончитьРедактированиеСтроки(Ложь); + Настройка.СтрокаНастроек.Использование = Истина; + Если Настройка.СКД Тогда + Если Настройка.ЭтоЭлементОтбора Тогда + Если Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке + Или Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии + Или Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии + Или Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке + Или Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии + Или Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда + Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + КонецЕсли; + Настройка.СтрокаНастроек.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки(); + Иначе + Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки(); + КонецЕсли; + Иначе + Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки(); + КонецЕсли; + + НайтиНастройкиПерсонализации(); + + РассылкаБылаПерсонализирована = Истина; + Элементы.Отчеты.ТекущиеДанные.ВнесеныИзменения = Истина; + Модифицированность = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьПолучателяРассылки(Команда) + ОчиститьСообщения(); + + Настройка = ОпределитьНастройку(); + Если Настройка = Неопределено Тогда + Возврат; + КонецЕсли; + + Настройка.Инициатор.ЗакончитьРедактированиеСтроки(Ложь); + ВнесеныИзменения = Ложь; + Если Настройка.СКД Тогда + Если Настройка.ЭтоЭлементОтбора Тогда + Если Настройка.СтрокаНастроек.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки() Тогда + Настройка.СтрокаНастроек.ПравоеЗначение = Неопределено; + ВнесеныИзменения = Истина; + КонецЕсли; + Иначе + Если Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки() Тогда + Настройка.СтрокаНастроек.Значение = Неопределено; + ВнесеныИзменения = Истина; + КонецЕсли; + КонецЕсли; + Иначе + Если Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки() Тогда + Настройка.СтрокаНастроек.Значение = Неопределено; + ВнесеныИзменения = Истина; + КонецЕсли; + КонецЕсли; + + Если ВнесеныИзменения Тогда + Элементы.Отчеты.ТекущиеДанные.ВнесеныИзменения = Истина; + Модифицированность = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ОпределитьНастройку() + + СКД = (Элементы.СтраницыНастроекОтчета.ТекущаяСтраница = Элементы.СтраницаКомпоновщик); + Если СКД Тогда + Инициатор = Элементы.ПользовательскиеНастройки; + Иначе + Инициатор = Элементы.НастройкиТекущегоОтчета; + КонецЕсли; + + // Получения описания типов, доступных для выбора. + Если СКД Тогда + + // Идентификатор пользовательской настройки. + ИдентификаторНастройки = Инициатор.ТекущаяСтрока; + Если ИдентификаторНастройки = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не выбрана настройка отчета.'")); + Возврат Неопределено; + КонецЕсли; + + ПользовательскиеНастройки = КомпоновщикНастроекКД.ПользовательскиеНастройки; + + // Получение строки из состава настроек компоновки данных. + СтрокаНастроек = ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(ИдентификаторНастройки); + Если СтрокаНастроек = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не выбрана настройка отчета.'")); + Возврат Неопределено; + КонецЕсли; + + // Проверка типа настройки. + Если ТипЗнч(СтрокаНастроек) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда + ЭтоЭлементОтбора = Истина; + ИначеЕсли ТипЗнч(СтрокаНастроек) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда + ЭтоЭлементОтбора = Ложь; + Иначе + ПоказатьПредупреждение(, НСтр("ru = 'Указывать получателя можно только для параметров и отборов отчетов.'")); + Возврат Неопределено; + КонецЕсли; + + // Поле компоновки данных. + Если ЭтоЭлементОтбора Тогда + НайденныеЭлементы = ПользовательскиеНастройки.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки( + СтрокаНастроек.ИдентификаторПользовательскойНастройки); + + Если НайденныеЭлементы.Количество() > 0 Тогда + ПолеКД = НайденныеЭлементы[0].ЛевоеЗначение; + Иначе + + ПолеКД = ОпределитьПолеИзКомпоновщика(ИдентификаторНастройки, КомпоновщикНастроекКД.Настройки.Отбор.Элементы); + Если ПолеКД = Неопределено Тогда + ПолеКД = ОпределитьПолеИзКомпоновщика(ИдентификаторНастройки, ПользовательскиеНастройки.Элементы); + КонецЕсли; + Если ПолеКД = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Для настройки отчета не существует описания доступного поля.'")); + Возврат Неопределено; + КонецЕсли; + + КонецЕсли; + ДоступноеПолеКД = КомпоновщикНастроекКД.Настройки.Отбор.ДоступныеПоляОтбора.НайтиПоле(ПолеКД); + + Иначе + ДоступноеПолеКД = КомпоновщикНастроекКД.Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(СтрокаНастроек.Параметр); + КонецЕсли; + + Если ДоступноеПолеКД = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + ОписаниеДоступныхТипов = ДоступноеПолеКД.ТипЗначения; + + Иначе + + // Массив типов для произвольных отчетов. + СтрокаНастроек = Инициатор.ТекущиеДанные; + Если СтрокаНастроек = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не выбрана настройка отчета.'")); + Возврат Неопределено; + КонецЕсли; + + ОписаниеДоступныхТипов = СтрокаНастроек.Тип; + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("СКД", СКД); + Результат.Вставить("Инициатор", Инициатор); + Результат.Вставить("ОписаниеДоступныхТипов", ОписаниеДоступныхТипов); + Результат.Вставить("СтрокаНастроек", СтрокаНастроек); + Результат.Вставить("ЭтоЭлементОтбора", ЭтоЭлементОтбора); + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ОпределитьПолеИзКомпоновщика(ИдентификаторНастройки, Коллекция) + Для Каждого Элемент Из Коллекция Цикл + Если Строка(Элемент.ИдентификаторПользовательскойНастройки) = Строка(ИдентификаторНастройки) + И ЗначениеЗаполнено(Строка(Элемент.ЛевоеЗначение)) Тогда + Возврат Элемент.ЛевоеЗначение; + КонецЕсли; + + Если ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") + Или ТипЗнч(Элемент) = Тип("ОтборКомпоновкиДанных") Тогда + Поле = ОпределитьПолеИзКомпоновщика(ИдентификаторНастройки, Элемент.Элементы); + Если Поле <> Неопределено Тогда + Возврат Поле; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Возврат Неопределено; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Страница "Расписание" + +&НаКлиенте +Процедура УстановитьПометки(Команда) + ВсеМесяцы = Новый Массив; + Для Каждого КлючИЗначение Из Кэш.Соответствия.Месяцы Цикл + ЭтотОбъект[КлючИЗначение.Ключ] = Истина; + ВсеМесяцы.Добавить(КлючИЗначение.Значение); + КонецЦикла; + Расписание.Месяцы = ВсеМесяцы; + ВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы"); +КонецПроцедуры + +&НаКлиенте +Процедура СнятьПометки(Команда) + ВсеМесяцы = Новый Массив; + Для Каждого КлючИЗначение Из Кэш.Соответствия.Месяцы Цикл + ЭтотОбъект[КлючИЗначение.Ключ] = Ложь; + КонецЦикла; + Расписание.Месяцы = ВсеМесяцы; + ВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьРасписаниеПоШаблону(Команда) + Обработчик = Новый ОписаниеОповещения("ЗаполнитьРасписаниеПоШаблонуЗавершение", ЭтотОбъект); + + СписокВариантов = РассылкаОтчетовКлиент.СписокВариантовЗаполненияРасписаний(); + СписокВариантов.ПоказатьВыборЭлемента(Обработчик, НСтр("ru = 'Выберите шаблон расписания'")); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Страница "Доставка" + +&НаКлиенте +Процедура ДобавитьИзменитьШаблонДатыРассылки(Команда) + ДобавитьШаблон(); + + Переменные = Новый Структура; + Переменные.Вставить("Элемент", ТекущийЭлемент); + Переменные.Вставить("СтарыйТекст", Переменные.Элемент.ВыделенныйТекст); + Переменные.Вставить("Префикс", "[ДатаВыполнения("); + Переменные.Вставить("Постфикс", ")]"); + Переменные.Вставить("ТекстФормата", ""); + + ДлинаПрефикса = СтрДлина(Переменные.Префикс); + ПозицияПрефикса = СтрНайти(Переменные.СтарыйТекст, Переменные.Префикс); + ПозицияПостфикса = СтрНайти(Переменные.СтарыйТекст, Переменные.Постфикс); + + Переменные.Вставить("СтарыйФрагментНайден", (ПозицияПрефикса > 0 И ПозицияПостфикса > ПозицияПрефикса)); + Если Переменные.СтарыйФрагментНайден Тогда + Переменные.ТекстФормата = Сред(Переменные.СтарыйТекст, ПозицияПрефикса + ДлинаПрефикса, ПозицияПостфикса - ПозицияПрефикса - ДлинаПрефикса); + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ДобавитьИзменитьШаблонДатыРассылкиЗавершение", ЭтотОбъект, Переменные); + + Диалог = Новый КонструкторФорматнойСтроки; + Диалог.ДоступныеТипы = Новый ОписаниеТипов("Дата"); + Диалог.Текст = Переменные.ТекстФормата; + Диалог.Показать(Обработчик); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблонПолучателя(Команда) + // Очистка окна сообщений + ОчиститьСообщения(); + + // + Если НЕ Объект.Персонализирована Тогда + СообщениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Использование получателя в тексте шаблона возможно только для вида рассылки ""%1""'"), + Элементы.ВидРассылки.СписокВыбора.НайтиПоЗначению("Персонализирована").Представление); + ОбщегоНазначенияКлиент.СообщитьПользователю(СообщениеТекст, , "ВидРассылки"); + Возврат; + КонецЕсли; + + ДобавитьШаблон(ШаблонЗначенияПолучателяРассылки()); + РассылкаБылаПерсонализирована = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблонСформированныхОтчетов(Команда) + ДобавитьШаблон("[СформированныеОтчеты]", Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблонАвтора(Команда) + ДобавитьШаблон("[Автор]"); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблонНаименованияРассылки(Команда) + ДобавитьШаблон("[НаименованиеРассылки]"); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблонСистемы(Команда) + ДобавитьШаблон("[ЗаголовокСистемы]"); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблонСпособаДоставки(Команда) + ДобавитьШаблон("[СпособДоставки]"); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблонПоУмолчанию(Команда) + ПерезаполняетсяТема = (ТекущийЭлемент = Элементы.ТемаПисьма); + + Если ПерезаполняетсяТема Тогда + ЗначениеПредмета = Объект.ТемаПисьма; + ШаблонПоУмолчанию = Кэш.Шаблоны.Тема; + Иначе + Если Объект.ПисьмоВФорматеHTML Тогда + ЗначениеПредмета = ТекстПисьмаФорматированныйДокумент.ПолучитьТекст(); + Иначе + ЗначениеПредмета = Объект.ТекстПисьма; + КонецЕсли; + ЗначениеПредмета = СокрЛП(ЗначениеПредмета); + ШаблонПоУмолчанию = Кэш.Шаблоны.Текст; + КонецЕсли; + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ПерезаполняетсяТема", ПерезаполняетсяТема); + ДополнительныеПараметры.Вставить("ШаблонПоУмолчанию", ШаблонПоУмолчанию); + + Если ЗначениеПредмета = "" Тогда + // Предмет пуст - надо заполнить без вопросов. + ДобавитьШаблонПоУмолчаниюЗавершение(1, ДополнительныеПараметры); + + ИначеЕсли ЗначениеПредмета = ШаблонПоУмолчанию Тогда + // Предмет соответствует шаблону - заполнять не требуется. + + Если ПерезаполняетсяТема Тогда + ТекстПредупреждения = НСтр("ru = 'Тема письма уже соответствует шаблону по умолчанию.'"); + Иначе + ТекстПредупреждения = НСтр("ru = 'Текст письма уже соответствует шаблону по умолчанию.'"); + КонецЕсли; + ПоказатьПредупреждение(, ТекстПредупреждения); + + Иначе + // Предмет не пуст - надо запросить замену на стандартный шаблон. + + Если ПерезаполняетсяТема Тогда + ЗаголовокВопроса = НСтр("ru = 'Добавить в тему письма шаблон по умолчанию'"); + ТекстВопроса = НСтр("ru = 'Заменить тему письма на шаблон по умолчанию?'"); + Иначе + ЗаголовокВопроса = НСтр("ru = 'Добавить в текст письма шаблон по умолчанию'"); + ТекстВопроса = НСтр("ru = 'Заменить текст письма на шаблон по умолчанию?'"); + КонецЕсли; + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить(1, НСтр("ru = 'Заменить'")); + Кнопки.Добавить(2, НСтр("ru = 'Добавить'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + + Обработчик = Новый ОписаниеОповещения("ДобавитьШаблонПоУмолчаниюЗавершение", ЭтотОбъект, ДополнительныеПараметры); + + ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки, 60, 1, ЗаголовокВопроса); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПредпросмотрШаблона(Команда) + ДобавитьШаблон(); + + Если ТекущийЭлемент = Элементы.ТекстПисьмаФорматированныйДокумент Тогда + Шаблон = ТекстПисьмаФорматированныйДокумент.ПолучитьТекст(); + ИначеЕсли ТекущийЭлемент = Элементы.ТекстПисьма Тогда + Шаблон = Объект.ТекстПисьма; + ИначеЕсли ТекущийЭлемент = Элементы.ТемаПисьма Тогда + Шаблон = Объект.ТемаПисьма; + КонецЕсли; + + СформированныеОтчеты = ""; + Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл + СформированныеОтчеты = СформированныеОтчеты + + Символы.ПС + + СтрокаОтчет.Представление + + " (" + + ?(СтрокаОтчет.Форматы = ПредставлениеФорматовПоУмолчанию(), ФорматыПоУмолчанию, СтрокаОтчет.Форматы) + + ")"; + КонецЦикла; + СформированныеОтчеты = СокрЛ(СформированныеОтчеты); + + ПараметрыДоставки = Новый Структура("ТолькоУведомить, ПисьмоВФорматеHTML, Папка, СетевойКаталогWindows, Сервер, Порт, Каталог"); + ЗаполнитьЗначенияСвойств(ПараметрыДоставки, Объект); + ПараметрыДоставки.Вставить("ВыполненаВПапку", Объект.ИспользоватьПапку); + ПараметрыДоставки.Вставить("ВыполненаВСетевойКаталог", Объект.ИспользоватьСетевойКаталог); + ПараметрыДоставки.Вставить("ВыполненаНаFTP", Объект.ИспользоватьFTPРесурс); + СпособДоставки = РассылкаОтчетовКлиентСервер.ПредставлениеСпособовДоставки(ПараметрыДоставки); + + ПараметрыШаблона = Новый Структура; + ПараметрыШаблона.Вставить("НаименованиеРассылки", Объект.Наименование); + ПараметрыШаблона.Вставить("Автор", Объект.Автор); + ПараметрыШаблона.Вставить("ЗаголовокСистемы", Кэш.ЗаголовокСистемы); + ПараметрыШаблона.Вставить("ДатаВыполнения", ОбщегоНазначенияКлиент.ДатаСеанса()); + ПараметрыШаблона.Вставить("СформированныеОтчеты", СформированныеОтчеты); + ПараметрыШаблона.Вставить("СпособДоставки", СпособДоставки); + +#Если НЕ МобильныйКлиент Тогда + ТекстовыйДокумент = Новый ТекстовыйДокумент; + ТекстовыйДокумент.УстановитьТекст(РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Шаблон, ПараметрыШаблона)); + ТекстовыйДокумент.Показать(); +#КонецЕсли +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьВозможностьРассылки(Команда) + + ПараметрыДоставки = Новый Структура; + ПараметрыДоставки.Вставить("ИспользоватьПапку", Объект.ИспользоватьПапку); + ПараметрыДоставки.Вставить("ИспользоватьСетевойКаталог", Объект.ИспользоватьСетевойКаталог); + ПараметрыДоставки.Вставить("ИспользоватьFTPРесурс", Объект.ИспользоватьFTPРесурс); + ПараметрыДоставки.Вставить("ИспользоватьЭлектроннуюПочту", Объект.ИспользоватьЭлектроннуюПочту); + + ПроверитьРассылку(ПараметрыДоставки); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьТипТекстаНаHTML(Команда) + Модифицированность = Истина; + Объект.ПисьмоВФорматеHTML = Истина; + ТекстПисьмаИзHTML = СокрЛП(ТекстПисьмаФорматированныйДокумент.ПолучитьТекст()); + Если ТекстПисьмаИзHTML <> Объект.ТекстПисьма Тогда + ТекстПисьмаФорматированныйДокумент.Удалить(); + ТекстПисьмаФорматированныйДокумент.Добавить(Объект.ТекстПисьма, ТипЭлементаФорматированногоДокумента.Текст); + КонецЕсли; + ТекущийЭлемент = Элементы.ТекстПисьмаФорматированныйДокумент; + ВидимостьДоступностьКорректность(ЭтотОбъект, "ПисьмоВФорматеHTML"); +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьТипТекстаНаОбычный(Команда) + Модифицированность = Истина; + Объект.ПисьмоВФорматеHTML = Ложь; + ТекстПисьмаИзHTML = СокрЛП(ТекстПисьмаФорматированныйДокумент.ПолучитьТекст()); + Если Объект.ТекстПисьма <> ТекстПисьмаИзHTML Тогда + Объект.ТекстПисьма = ТекстПисьмаИзHTML; + КонецЕсли; + ТекущийЭлемент = Элементы.ТекстПисьма; + ВидимостьДоступностьКорректность(ЭтотОбъект, "ПисьмоВФорматеHTML"); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Страница "Дополнительно" + +&НаКлиенте +Процедура СнятьПометкиОтправлятьЕслиПустой(Команда) + Если Объект.Отчеты.Количество() > 0 Тогда + Модифицированность = Истина; + Для Каждого СтрОтчет Из Объект.Отчеты Цикл + СтрОтчет.ОтправлятьЕслиПустой = Ложь; + СтрОтчет.НеОтправлятьПустой = Истина; + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПометкиОтправлятьЕслиПустой(Команда) + Если Объект.Отчеты.Количество() > 0 Тогда + Модифицированность = Истина; + Для Каждого СтрОтчет Из Объект.Отчеты Цикл + СтрОтчет.ОтправлятьЕслиПустой = Истина; + СтрОтчет.НеОтправлятьПустой = Ложь; + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Клиент. + +&НаКлиенте +Процедура НачалоВыбораПользовательскойНастройки(СтандартнаяОбработка) + Если Элементы.СтраницыНастроекОтчета.ТекущаяСтраница <> Элементы.СтраницаКомпоновщик Тогда + Возврат; + КонецЕсли; + Отчет = Элементы.Отчеты.ТекущиеДанные; + Если Отчет = Неопределено Или ТипЗнч(Отчет.Отчет) <> Тип("СправочникСсылка.ВариантыОтчетов") Тогда + Возврат; + КонецЕсли; + ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока; + Обработчик = Новый ОписаниеОповещения("ЗавершениеВыбораПользовательскойНастройки", ЭтотОбъект); + РассылкаОтчетовКлиентПереопределяемый.ПриНачалеВыбораНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка, Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершениеВыбораПользовательскойНастройки(Результат, ПараметрыВыполнения) Экспорт + Если ТипЗнч(Результат) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда + КомпоновщикНастроекКД.ЗагрузитьПользовательскиеНастройки(Результат); + Иначе + Возврат; + КонецЕсли; + Отчет = Элементы.Отчеты.ТекущиеДанные; + Если Отчет = Неопределено Или ТипЗнч(Отчет.Отчет) <> Тип("СправочникСсылка.ВариантыОтчетов") Тогда + Возврат; + КонецЕсли; + Отчет.ВнесеныИзменения = Истина; +КонецПроцедуры + +// Обработчик закрытия формы ПолучателиРассылки. +// +// Параметры: +// Результат - Структура: +// * Получатели - ТаблицаЗначений: +// * Получатель - СправочникСсылка.ГруппыПользователей, +// - СправочникСсылка._ДемоКонтрагенты, +// - СправочникСсылка._ДемоПартнеры, +// - СправочникСсылка.Пользователи +// * Исключен - Булево +// * Адрес - Строка +// * ИндексКартинки - Число +// * ВидПочтовогоАдресаПолучателей - СправочникСсылка.ВидыКонтактнойИнформации +// Параметр - Структура +// - Неопределено +// +&НаКлиенте +Процедура ПолучателиРассылкиНажатиеЗавершение(Результат, Параметр) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Объект.ВидПочтовогоАдресаПолучателей = Результат.ВидПочтовогоАдресаПолучателей; + Объект.Получатели.Очистить(); + Для Каждого Элемент Из Результат.Получатели Цикл + НоваяСтрока = Объект.Получатели.Добавить(); + НоваяСтрока.Получатель = Элемент.Получатель; + НоваяСтрока.Исключен = Элемент.Исключен; + КонецЦикла; + + ВидимостьДоступностьКорректность(ЭтотОбъект, "ПолучателиРассылки"); + Модифицированность = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ТипПолучателейРассылкиОбработкаВыбораЗавершение(Ответ, ДополнительныеПараметры) Экспорт + Если Ответ = КодВозвратаДиалога.Да Тогда + Объект.Получатели.Очистить(); + ТипПолучателейРассылки = ДополнительныеПараметры.ВыбранноеЗначение; + Модифицированность = Истина; + ТипПолучателейРассылкиПриИзменении(Неопределено); + ВидимостьДоступностьКорректность(ЭтотОбъект, "ПолучателиРассылки"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблонПоУмолчаниюЗавершение(Ответ, ДополнительныеПараметры) Экспорт + ШаблонПоУмолчанию = ДополнительныеПараметры.ШаблонПоУмолчанию; + Если Ответ = 1 Тогда + Если ДополнительныеПараметры.ПерезаполняетсяТема Тогда + Объект.ТемаПисьма = ШаблонПоУмолчанию; + Иначе + Если Объект.ПисьмоВФорматеHTML Тогда + ТекстПисьмаФорматированныйДокумент.Удалить(); + ТекстПисьмаФорматированныйДокумент.Добавить(ШаблонПоУмолчанию, ТипЭлементаФорматированногоДокумента.Текст); + Иначе + Объект.ТекстПисьма = ШаблонПоУмолчанию; + КонецЕсли; + КонецЕсли; + ИначеЕсли Ответ = 2 Тогда + ДобавитьШаблон(ШаблонПоУмолчанию); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьРассылкуПослеОтветаНаВопрос(Ответ, ПараметрыДоставки) Экспорт + Если Ответ = 1 Или Модифицированность Тогда + Если Ответ = 1 Тогда + Объект.Подготовлена = Истина; + КонецЕсли; + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("ИмяКоманды", "КомандаПроверитьРассылку"); + ПараметрыЗаписи.Вставить("ПараметрыДоставки", ПараметрыДоставки); + ЗаписатьНаКлиенте(Неопределено, ПараметрыЗаписи); + Возврат; + ИначеЕсли Ответ <> -1 Тогда + Возврат; + КонецЕсли; + + // Очистка окна сообщений. + ОчиститьСообщения(); + + // Формирование параметров доставки. + ПараметрыДоставки.Вставить("Рассылка", Объект.Наименование); + + // Папка. + Если ПараметрыДоставки.ИспользоватьПапку Тогда + ПараметрыДоставки.Вставить("Папка", Объект.Папка); + КонецЕсли; + + // Сетевой каталог. + Если ПараметрыДоставки.ИспользоватьСетевойКаталог Тогда + ПараметрыДоставки.Вставить("СетевойКаталогWindows", Объект.СетевойКаталогWindows); + ПараметрыДоставки.Вставить("СетевойКаталогLinux", Объект.СетевойКаталогLinux); + КонецЕсли; + + // FTP. + Если ПараметрыДоставки.ИспользоватьFTPРесурс Тогда + ПараметрыДоставки.Вставить("Владелец", Объект.Ссылка); + ПараметрыДоставки.Вставить("Сервер", Объект.FTPСервер); + ПараметрыДоставки.Вставить("Порт", Объект.FTPПорт); + ПараметрыДоставки.Вставить("Логин", Объект.FTPЛогин); + Если FTPПарольИзменен Тогда + ПараметрыДоставки.Вставить("Пароль", FTPПароль); + КонецЕсли; + ПараметрыДоставки.Вставить("Каталог", Объект.FTPКаталог); + ПараметрыДоставки.Вставить("ПассивноеСоединение", Объект.FTPПассивноеСоединение); + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ПроверитьРассылкуПослеВыбораПолучателей", ЭтотОбъект, ПараметрыДоставки); + + // Почта. + Если ПараметрыДоставки.ИспользоватьЭлектроннуюПочту Тогда + РассылкаОтчетовКлиент.ВыбратьПолучателя(Обработчик, Объект, Ложь, Истина); + Возврат; + КонецЕсли; + + ВыполнитьОбработкуОповещения(Обработчик, Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьРассылкуПослеВыбораПолучателей(РезультатВыбора, ПараметрыДоставки) Экспорт + // Обработчик результата работы процедуры ПроверитьРассылкуПослеОтветаНаВопрос. + Если ПараметрыДоставки.ИспользоватьЭлектроннуюПочту Тогда + Если РезультатВыбора = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыДоставки.Вставить("УчетнаяЗапись", Объект.УчетнаяЗапись); + ПараметрыДоставки.Вставить("СкрытыеКопии", Объект.СкрытыеКопии); + ПараметрыДоставки.Вставить("ШаблонТемы", НСтр("ru = 'Тестовое сообщение 1С:Предприятие'")); + ПараметрыДоставки.Вставить("ШаблонТекста", НСтр("ru = 'Это сообщение отправлено системой рассылок 1С:Предприятие.'") + Символы.ПС + Кэш.ЗаголовокСистемы); + ПараметрыДоставки.Вставить("Получатели", РезультатВыбора); + ПараметрыДоставки.Вставить("ТолькоУведомить", Ложь); + ПараметрыДоставки.Вставить("ЗаполнитьСпособДоставкиВШаблонеСообщения", Ложь); + ПараметрыДоставки.Вставить("ЗаполнитьСформированныеОтчетыВШаблонеСообщения", Ложь); + ПараметрыДоставки.Вставить("ЗаполнитьПолучателяВШаблонеТемы", Ложь); + ПараметрыДоставки.Вставить("ЗаполнитьПолучателяВШаблонеСообщения", Ложь); + ПараметрыДоставки.Вставить("ПараметрыПисьма", Новый Структура); + ПараметрыДоставки.Вставить("Соединение", Неопределено); + + КонецЕсли; + + ПараметрыДоставки.Вставить("ДобавлятьСсылки", ""); + + РезультатВыполнения = ПроверитьСпособДоставки(Объект.Ссылка, ПараметрыДоставки); + + ПараметрыПредупреждения = Новый Структура("Заголовок, Текст, Подробно, Ссылка, ИспользоватьЭлектроннуюПочту"); + ЗаполнитьЗначенияСвойств(ПараметрыПредупреждения, ПараметрыДоставки); + ЗаполнитьЗначенияСвойств(ПараметрыПредупреждения, РезультатВыполнения); + ПараметрыПредупреждения.Заголовок = НСтр("ru = 'Результат проверки'"); + ПараметрыПредупреждения.Ссылка = Объект.УчетнаяЗапись; + + ОткрытьФорму("Справочник.РассылкиОтчетов.Форма.Предупреждение", ПараметрыПредупреждения, ЭтотОбъект, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьРасписаниеПоШаблонуЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт + Если ВыбранныйЭлемент <> Неопределено Тогда + ЗаполнитьРасписаниеПоВарианту(ВыбранныйЭлемент.Значение, Истина); + КонецЕсли; +КонецПроцедуры + +// Обработчик закрытия диалога форматной строки. +// +// Параметры: +// СтрокаРезультат - Строка +// Переменные - Структура +// +&НаКлиенте +Процедура ДобавитьИзменитьШаблонДатыРассылкиЗавершение(СтрокаРезультат, Переменные) Экспорт + Если СтрокаРезультат = Неопределено Тогда + Возврат; + КонецЕсли; + + НовыйФрагмент = Переменные.Префикс + СтрокаРезультат + Переменные.Постфикс; + СтарыйФрагмент = Переменные.Префикс + Переменные.ТекстФормата + Переменные.Постфикс; + + Если Переменные.Элемент = Элементы.ТекстПисьмаФорматированныйДокумент Тогда + ЗаменаВыполнена = Ложь; + Если Переменные.СтарыйФрагментНайден Тогда + РезультатПоиска = ТекстПисьмаФорматированныйДокумент.НайтиТекст(СтарыйФрагмент); + Если РезультатПоиска <> Неопределено Тогда + Найденные = ТекстПисьмаФорматированныйДокумент.ПолучитьЭлементы(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца); + Для Каждого ТекстФД Из Найденные Цикл + Если СтрНайти(ТекстФД.Текст, СтарыйФрагмент) > 0 Тогда + ТекстФД.Текст = СтрЗаменить(ТекстФД.Текст, СтарыйФрагмент, НовыйФрагмент); + ЗаменаВыполнена = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; // Переменные.СтарыйФрагментНайден + Если Не ЗаменаВыполнена Тогда + Если СокрЛП(Переменные.СтарыйТекст) = СтарыйФрагмент Тогда + // Для форматированного документа свойство ВыделенныйТекст используется в тех редких случаях, + // когда это безопасно для редактируемого текста. + Переменные.Элемент.ВыделенныйТекст = НовыйФрагмент; + Иначе + ТекстПисьмаФорматированныйДокумент.Добавить(НовыйФрагмент, ТипЭлементаФорматированногоДокумента.Текст); + КонецЕсли; + КонецЕсли; + Иначе + Если Переменные.СтарыйФрагментНайден Тогда + Если СтрокаРезультат = Переменные.ТекстФормата Тогда + Возврат; + КонецЕсли; + Переменные.Элемент.ВыделенныйТекст = СтрЗаменить(Переменные.СтарыйТекст, СтарыйФрагмент, НовыйФрагмент); + Иначе + Переменные.Элемент.ВыделенныйТекст = Переменные.СтарыйТекст + НовыйФрагмент; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьФорматЗавершение(СписокФорматов, Переменные) Экспорт + Если СписокФорматов = Неопределено Тогда + Возврат; + КонецЕсли; + + // Проверка изменений + ФорматыСовпадают = Истина; + Для Индекс = 1 По СписокФорматов.Количество() Цикл + Если СписокФорматов[Индекс - 1].Пометка <> Переменные.СписокФорматовКопия[Индекс - 1].Пометка Тогда + ФорматыСовпадают = Ложь; + Прервать; + КонецЕсли; + КонецЦикла; + Если ФорматыСовпадают Тогда + Возврат; + КонецЕсли; + + ПредставлениеФормата = ""; + + // Очистка существующих записей. + ОчиститьФормат(Переменные.СсылкаНаОтчет); + + // Добавление отмеченных форматов. + Для Каждого ЭлементСписка Из СписокФорматов Цикл + Если ЭлементСписка.Пометка Тогда + СтрокаФормат = Объект.ФорматыОтчетов.Добавить(); + СтрокаФормат.Отчет = Переменные.СсылкаНаОтчет; + СтрокаФормат.Формат = ЭлементСписка.Значение; + ПредставлениеФормата = ПредставлениеФормата + ?(ПредставлениеФормата = "", "", ", ") + Строка(ЭлементСписка.Представление); + КонецЕсли; + КонецЦикла; + + Если Переменные.ЭтоФорматПоУмолчанию И ПредставлениеФормата = "" Тогда + ПредставлениеФормата = СписокФорматовПоУмолчаниюПредставление; + КонецЕсли; + + ВыполнитьОбработкуОповещения(Переменные.ОбработчикРезультата, ПредставлениеФормата); +КонецПроцедуры + +&НаКлиенте +Процедура ФорматыОтчетовФорматыЗавершениеВыбора(ПредставлениеФормата, Переменные) Экспорт + Если ПредставлениеФормата <> Неопределено Тогда + Переменные.СтрокаОтчеты.Форматы = ПредставлениеФормата; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ФорматыПоУмолчаниюЗавершениеВыбора(ПредставлениеФормата, Переменные) Экспорт + Если ПредставлениеФормата <> Неопределено Тогда + ФорматыПоУмолчанию = ПредставлениеФормата; + КонецЕсли; + ВидимостьДоступностьКорректность(ЭтотОбъект, "ФорматыПоУмолчанию"); +КонецПроцедуры + +&НаКлиенте +Процедура ПослеИзмененияРасписания(РасписаниеРезультат, ДополнительныеПараметры) Экспорт + Если РасписаниеРезультат <> Неопределено Тогда + Модифицированность = Истина; + Расписание = РасписаниеРезультат; + ВидимостьДоступностьКорректность(ЭтотОбъект, "Расписание"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ВыборПодборПеретаскиваниеЭлементаВТабличнуюЧасть(ЭлементПодбора, ТабличнаяЧасть, ИмяРеквизита, СтруктураЗаполнения, Уникальность = Истина) + + Если (ТипЗнч(ЭлементПодбора) = Тип("Структура")) Или ТипЗнч(ЭлементПодбора) = Тип("ДанныеФормыЭлементКоллекции") Тогда + Если ЭлементПодбора.Свойство(ИмяРеквизита) Тогда + ЗначениеРеквизита = ЭлементПодбора[ИмяРеквизита]; + Иначе + Возврат Неопределено; + КонецЕсли; + Иначе // (СправочникСсылка.*) перетаскивание из формы выбора или подбора. + ЗначениеРеквизита = ЭлементПодбора; + КонецЕсли; + + // Требуется уникальность реквизита в рамках таблицы. + Найденные = ТабличнаяЧасть.НайтиСтроки(Новый Структура(ИмяРеквизита, ЗначениеРеквизита)); + + Если Уникальность И Найденные.Количество() > 0 Тогда + Возврат Неопределено; + КонецЕсли; + + СтрокаТаблицы = ТабличнаяЧасть.Добавить(); + СтрокаТаблицы[ИмяРеквизита] = ЗначениеРеквизита; + ЗаполнитьЗначенияСвойств(СтрокаТаблицы, СтруктураЗаполнения); + Если (ТипЗнч(ЭлементПодбора) = Тип("Структура")) Тогда + Для Каждого КлючИЗначение Из ЭлементПодбора Цикл + Если СтруктураЗаполнения.Свойство(КлючИЗначение.Ключ) Тогда + ЭлементПодбора.Удалить(ЭлементПодбора.Ключ); + КонецЕсли; + КонецЦикла; + ЗаполнитьЗначенияСвойств(СтрокаТаблицы, ЭлементПодбора); + КонецЕсли; + + Возврат СтрокаТаблицы; +КонецФункции + +&НаКлиенте +Функция ВыборПодборПеретаскиваниеВТабличнуюЧасть(ВыбранноеЗначение, ТабличнаяЧасть, ИмяРеквизита, СтруктураЗаполнения, Идентификаторы = Ложь) + Модифицированность = Истина; + МассивНовыхСтрок = Новый Массив; + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда + Для Каждого ЭлементПодбора Из ВыбранноеЗначение Цикл + Результат = ВыборПодборПеретаскиваниеЭлементаВТабличнуюЧасть(ЭлементПодбора, ТабличнаяЧасть, ИмяРеквизита, СтруктураЗаполнения); + Если Результат <> Неопределено Тогда + МассивНовыхСтрок.Добавить(?(Идентификаторы, Результат.ПолучитьИдентификатор(), Результат)); + КонецЕсли; + КонецЦикла; + Иначе + Результат = ВыборПодборПеретаскиваниеЭлементаВТабличнуюЧасть(ВыбранноеЗначение, ТабличнаяЧасть, ИмяРеквизита, СтруктураЗаполнения); + Если Результат <> Неопределено Тогда + МассивНовыхСтрок.Добавить(?(Идентификаторы, Результат.ПолучитьИдентификатор(), Результат)); + КонецЕсли; + КонецЕсли; + Возврат МассивНовыхСтрок; +КонецФункции + +&НаКлиенте +Процедура ВыбратьФормат(СсылкаНаОтчет, ОбработчикРезультата) + // Для хранения всех форматов, выбранных пользователем, используется табличная часть ФорматыОтчетов. + // При этом, для форматов "по умолчанию" используется пустое значение реквизита Отчет. + // В зависимости от типа внедрения реквизит Отчет может принимать значение Неопределено или ПустаяСсылка. + ЭтоФорматПоУмолчанию = Не ЗначениеЗаполнено(СсылкаНаОтчет); + + Найденные = Объект.ФорматыОтчетов.НайтиСтроки(Новый Структура("Отчет", СсылкаНаОтчет)); + Если Найденные.Количество() > 0 Тогда + СписокФорматов.ЗаполнитьПометки(Ложь); + Для Каждого СтрокаФормат Из Найденные Цикл + СписокФорматов.НайтиПоЗначению(СтрокаФормат.Формат).Пометка = Истина; + КонецЦикла; + Иначе + СписокФорматов = СписокФорматовПоУмолчанию.Скопировать(); + Если Не ЭтоФорматПоУмолчанию Тогда + Найденные = Объект.ФорматыОтчетов.НайтиСтроки(Новый Структура("Отчет", Кэш.ПустоеЗначениеОтчета)); + Если Найденные.Количество() > 0 Тогда + СписокФорматов.ЗаполнитьПометки(Ложь); + Для Каждого СтрокаФормат Из Найденные Цикл + СписокФорматов.НайтиПоЗначению(СтрокаФормат.Формат).Пометка = Истина; + КонецЦикла; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ЭтоФорматПоУмолчанию Тогда + ЗаголовокДиалога = НСтр("ru = 'Выберите форматы по умолчанию'"); + Иначе + ЗаголовокДиалога = НСтр("ru = 'Выберите форматы для отчета ""%1""'"); + ЗаголовокДиалога = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ЗаголовокДиалога, Строка(СсылкаНаОтчет)); + КонецЕсли; + + Переменные = Новый Структура; + Переменные.Вставить("СсылкаНаОтчет", СсылкаНаОтчет); + Переменные.Вставить("СписокФорматовКопия", СписокФорматов.Скопировать()); + Переменные.Вставить("ЭтоФорматПоУмолчанию", ЭтоФорматПоУмолчанию); + Переменные.Вставить("ОбработчикРезультата", ОбработчикРезультата); + Обработчик = Новый ОписаниеОповещения("ВыбратьФорматЗавершение", ЭтотОбъект, Переменные); + + СписокФорматов.ПоказатьОтметкуЭлементов(Обработчик, ЗаголовокДиалога); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьФормат(СсылкаНаОтчет) + Модифицированность = Истина; + Найденные = Объект.ФорматыОтчетов.НайтиСтроки(Новый Структура("Отчет", СсылкаНаОтчет)); + Для Каждого СтрокаФормат Из Найденные Цикл + Объект.ФорматыОтчетов.Удалить(СтрокаФормат); + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьШаблон(ТекстовыйШаблон = Неопределено, ИсключитьТемуПисьма = Ложь) + // Проверяем и устанавливаем фокус в нужный элемент. + Если ИсключитьТемуПисьма Или Не (ТекущийЭлемент = Элементы.ТемаПисьма Или ТекущийЭлемент = Элементы.ИмяАрхива) Тогда + Если Объект.ПисьмоВФорматеHTML Тогда + Если ТекущийЭлемент <> Элементы.ТекстПисьмаФорматированныйДокумент Тогда + ТекущийЭлемент = Элементы.ТекстПисьмаФорматированныйДокумент; + КонецЕсли; + Иначе + Если ТекущийЭлемент <> Элементы.ТекстПисьма Тогда + ТекущийЭлемент = Элементы.ТекстПисьма; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ТекстовыйШаблон = Неопределено Тогда + // Ограничимся подготовкой к добавлению шаблона (переключением текущего элемента). + Возврат; + КонецЕсли; + + Если ТекущийЭлемент.ВыделенныйТекст = "" Тогда + // Форматированный документ некорректно отрабатывает изменения свойства. + // ВыделенныйТекст, в случае, если ничего не выделено, + // поэтому используется альтернативный метод добавления текста. + Если ТекущийЭлемент = Элементы.ТекстПисьмаФорматированныйДокумент Тогда + ТекстПисьмаФорматированныйДокумент.Добавить(ТекстовыйШаблон, ТипЭлементаФорматированногоДокумента.Текст); + Иначе + ТекущийЭлемент.ВыделенныйТекст = ТекстовыйШаблон; + КонецЕсли; + Иначе + ТекущийЭлемент.ВыделенныйТекст = ТекущийЭлемент.ВыделенныйТекст + ТекстовыйШаблон; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ИзменитьСоставМассива(Добавить, Элемент, Знач Массив) + Индекс = Массив.Найти(Элемент); + Если Добавить И Индекс = Неопределено Тогда + ВГраницаПлюс1 = ?(Массив.Количество() >= Элемент, Элемент, Массив.Количество()); + Для Индекс = 1 По ВГраницаПлюс1 Цикл + Если Массив[ВГраницаПлюс1 - Индекс] < Элемент Тогда + Массив.Вставить(ВГраницаПлюс1 - Индекс + 1, Элемент); + Возврат Массив; + КонецЕсли; + КонецЦикла; + Массив.Вставить(0, Элемент); + ИначеЕсли Не Добавить И Индекс <> Неопределено Тогда + Массив.Удалить(Индекс); + КонецЕсли; + Возврат Массив; +КонецФункции + +&НаКлиенте +Процедура ИзменитьРасписаниеВДиалоге() + Обработчик = Новый ОписаниеОповещения("ПослеИзмененияРасписания", ЭтотОбъект); + ДиалогРасписания = Новый ДиалогРасписанияРегламентногоЗадания(Расписание); + ДиалогРасписания.Показать(Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура ВычислитьФлажкиДополнительныхСпособовДоставки() + Объект.ИспользоватьПапку = Публиковать И (ДругойСпособДоставки = "ИспользоватьПапку"); + Объект.ИспользоватьСетевойКаталог = Публиковать И (ДругойСпособДоставки = "ИспользоватьСетевойКаталог"); + Объект.ИспользоватьFTPРесурс = Публиковать И (ДругойСпособДоставки = "ИспользоватьFTPРесурс"); +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьРассылку(ПараметрыДоставки) + // Очистка окна сообщений. + ОчиститьСообщения(); + + // Проверка подготовленности данных и необходимости записи. + Если Не Объект.Подготовлена Или Объект.Ссылка.Пустая() Тогда + ЗаголовокВопроса = НСтр("ru = 'Проверка способа доставки'"); + Если Не Объект.Подготовлена Тогда + ТекстВопроса = НСтр("ru = 'Перед проверкой рассылка должна быть подготовлена. + |Нажмите ""Продолжить"", чтобы включить флажок ""Подготовлена"" и записать рассылку.'"); + Иначе + ТекстВопроса = НСтр("ru = 'Перед проверкой рассылка должна быть записана. + |Нажмите ""Продолжить"", чтобы записать рассылку.'"); + КонецЕсли; + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить(1, НСтр("ru = 'Продолжить'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + + Обработчик = Новый ОписаниеОповещения("ПроверитьРассылкуПослеОтветаНаВопрос", ЭтотОбъект, ПараметрыДоставки); + ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки, 60, 1, ЗаголовокВопроса); + Иначе + ПроверитьРассылкуПослеОтветаНаВопрос(-1, ПараметрыДоставки); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Клиент, Сервер + +&НаКлиентеНаСервереБезКонтекста +Процедура ПереключитьСтраницу(Элементы, ИмяНабораСтраниц, СуффиксТекущейСтраницы) + Элементы[ИмяНабораСтраниц].ТекущаяСтраница = Элементы[ИмяНабораСтраниц + СуффиксТекущейСтраницы]; +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПарольСкрыт() + Возврат "********"; +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ВидимостьДоступностьКорректность(Форма, Изменения = "") + Объект = Форма.Объект; + Элементы = Форма.Элементы; + + Если Изменения = "" Или Изменения = "FTPСерверИКаталог" Тогда + Если ЗначениеЗаполнено(Объект.FTPСервер) Тогда + ПредставлениеАдреса = "ftp://"; + Если ЗначениеЗаполнено(Объект.FTPЛогин) Тогда + ПредставлениеАдреса = ПредставлениеАдреса + Объект.FTPЛогин + ?(ЗначениеЗаполнено(Форма.FTPПароль), ":" + ПарольСкрыт(), "") + "@"; + КонецЕсли; + Форма.FTPСерверИКаталог = ПредставлениеАдреса + Объект.FTPСервер + ":" + Формат(Объект.FTPПорт, "ЧН=0; ЧГ=0") + Объект.FTPКаталог; + Иначе + Форма.FTPСерверИКаталог = ""; + КонецЕсли; + КонецЕсли; + + Если Изменения = "" + Или Изменения = "Подготовлена" + Или Изменения = "ВыполнятьПоРасписанию" + Или Изменения = "ВидРассылки" + Или Изменения = "Публиковать" + Или Изменения = "ИспользоватьЭлектроннуюПочту" Тогда + + Элементы.Отчеты.АвтоОтметкаНезаполненного = Объект.Подготовлена; + Элементы.ФорматыОтчетов.АвтоОтметкаНезаполненного = Объект.Подготовлена; + + Элементы.ПериодичностьРасписания.АвтоОтметкаНезаполненного = Объект.Подготовлена И Объект.ВыполнятьПоРасписанию; + + Элементы.СетевойКаталогWindows.АвтоОтметкаНезаполненного = Объект.Подготовлена И Форма.Публиковать; + Элементы.СетевойКаталогLinux.АвтоОтметкаНезаполненного = Объект.Подготовлена И Форма.Публиковать; + Элементы.FTPСерверИКаталог.АвтоОтметкаНезаполненного = Объект.Подготовлена И Форма.Публиковать; + Элементы.Папка.АвтоОтметкаНезаполненного = Объект.Подготовлена И Форма.Публиковать; + + Элементы.ВидПочтовогоАдресаАвтора.АвтоОтметкаНезаполненного = Объект.Подготовлена И Объект.Личная; + Элементы.УчетнаяЗапись.АвтоОтметкаНезаполненного = Объект.Подготовлена И Объект.ИспользоватьЭлектроннуюПочту; + + КонецЕсли; + + Если Изменения = "" Или Изменения = "ВидРассылки" Тогда + // Корректность + Если Объект.Личная И Объект.Персонализирована Тогда + Объект.Личная = Ложь; + КонецЕсли; + + ИспользуетсяГруппаЛичныхРассылок = (Объект.Родитель = Форма.Кэш.ГруппаЛичныхРассылок); + Если Объект.Личная <> ИспользуетсяГруппаЛичныхРассылок Тогда + УстановитьМодифицированностьФормы(Форма, "Родитель", , + НСтр("ru = 'Группа установлена в соответствии с видом рассылки'")); + Объект.Родитель = ?(Объект.Личная, Форма.Кэш.ГруппаЛичныхРассылок, Неопределено); + КонецЕсли; + + Если Объект.Личная Тогда + РассылкаОбщая = Ложь; + Форма.ВидРассылки = "Личная"; + ИначеЕсли Объект.Персонализирована Тогда + РассылкаОбщая = Ложь; + Форма.ВидРассылки = "Персонализирована"; + Иначе + РассылкаОбщая = Истина; + Форма.ВидРассылки = "Общая"; + КонецЕсли; + + Если Не РассылкаОбщая Тогда + Объект.ИспользоватьПапку = Ложь; + Объект.ИспользоватьСетевойКаталог = Ложь; + Объект.ИспользоватьFTPРесурс = Ложь; + Объект.ИспользоватьЭлектроннуюПочту = Истина; + КонецЕсли; + + // Видимость & Доступность + Элементы.Родитель.Доступность = Не Объект.Личная; + ПереключитьСтраницу(Элементы, "ВидыРассылки", ?(Объект.Личная, "Личная", "ДляПолучателей")); + Элементы.ДругиеСпособыДоставки.Видимость = РассылкаОбщая; + Элементы.ИспользоватьЭлектроннуюПочту.Видимость = РассылкаОбщая; + + Если Объект.Личная Тогда + Элементы.ПолучателиРассылки.Видимость = Ложь; + Иначе + Элементы.ПолучателиРассылки.Видимость = Истина; + Если Не РассылкаОбщая Тогда + Элементы.ПолучателиРассылки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто; + Иначе + Элементы.ПолучателиРассылки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + КонецЕсли; + КонецЕсли; + + // Восстановление параметров + Если Объект.ИспользоватьПапку Тогда + Форма.ДругойСпособДоставки = "ИспользоватьПапку"; + Форма.Публиковать = Истина; + ИначеЕсли Объект.ИспользоватьСетевойКаталог Тогда + Форма.ДругойСпособДоставки = "ИспользоватьСетевойКаталог"; + Форма.Публиковать = Истина; + ИначеЕсли Объект.ИспользоватьFTPРесурс Тогда + Форма.ДругойСпособДоставки = "ИспользоватьFTPРесурс"; + Форма.Публиковать = Истина; + Иначе + Форма.ДругойСпособДоставки = Элементы.ДругойСпособДоставки.СписокВыбора[0].Значение; + Форма.Публиковать = Ложь; + КонецЕсли; + + Элементы.ИспользоватьПолучателяРассылкиВНастройкеОтчета1.Видимость = Объект.Персонализирована; + Элементы.ИспользоватьПолучателяРассылкиВНастройкеОтчета2.Видимость = Объект.Персонализирована; + Элементы.ИспользоватьПолучателяРассылкиВНастройкеОтчета3.Видимость = Объект.Персонализирована; + Элементы.ИспользоватьПолучателяРассылкиВНастройкеОтчета4.Видимость = Объект.Персонализирована; + КонецЕсли; + + Если Изменения = "" Или Изменения = "Отчеты" Тогда + КоличествоОтчетов = Форма.Объект.Отчеты.Количество(); + Если КоличествоОтчетов > 0 Тогда + Элементы.СтраницаОтчеты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Отчеты (%1)'"), + Формат(КоличествоОтчетов, "ЧН=0; ЧГ=")); + Иначе + Элементы.СтраницаОтчеты.Заголовок = НСтр("ru = 'Отчеты'") ; + КонецЕсли; + КонецЕсли; + + Если Изменения = "" Или Изменения = "ДругойСпособДоставки" Или Изменения = "Публиковать" Или Изменения = "ВидРассылки" Тогда + Элементы.ДругойСпособДоставки.Доступность = Форма.Публиковать; + Элементы.ПараметрыДоставки.Доступность = Форма.Публиковать; + Элементы.ВключатьДатуВИмяФайла.Доступность = Форма.Публиковать; + Элементы.ПараметрыДоставки.ТекущаяСтраница = Элементы[Форма.ДругойСпособДоставки]; + + Элементы.Папка.Видимость = (Элементы.ПараметрыДоставки.ТекущаяСтраница = Элементы.ИспользоватьПапку); + Элементы.СетевойКаталогWindows.Видимость = (Элементы.ПараметрыДоставки.ТекущаяСтраница = Элементы.ИспользоватьСетевойКаталог); + Элементы.СетевойКаталогLinux.Видимость = (Элементы.ПараметрыДоставки.ТекущаяСтраница = Элементы.ИспользоватьСетевойКаталог); + Элементы.FTPСерверИКаталог.Видимость = (Элементы.ПараметрыДоставки.ТекущаяСтраница = Элементы.ИспользоватьFTPРесурс); + КонецЕсли; + + Если Изменения = "" Или Изменения = "ИспользоватьЭлектроннуюПочту" Или Изменения = "ВидРассылки" Тогда + Элементы.ГруппаУчетнаяЗапись.Доступность = Объект.ИспользоватьЭлектроннуюПочту; + Элементы.ПараметрыПисьма.Доступность = Объект.ИспользоватьЭлектроннуюПочту; + Элементы.ДополнительныеПараметрыРассылкиПоЭлектроннойПочте.Доступность = Объект.ИспользоватьЭлектроннуюПочту; + Элементы.ПолучателиРассылки.Доступность = Объект.ИспользоватьЭлектроннуюПочту; + КонецЕсли; + + Если Изменения = "" Или Изменения = "ПолучателиРассылки" Тогда + ПредставлениеПолучателей = ПредставлениеПолучателей(Форма); + Форма.ПолучателиРассылки = ПредставлениеПолучателей.Краткое; + Элементы.ПолучателиРассылки.Подсказка = ПредставлениеПолучателей.Полное; + КонецЕсли; + + Если Изменения = "" + Или Изменения = "ТолькоУведомить" + Или Изменения = "ИспользоватьЭлектроннуюПочту" + Или Изменения = "ДругойСпособДоставки" + Или Изменения = "Публиковать" + Или Изменения = "ВидРассылки" Тогда + + Элементы.ТолькоУведомить.Видимость = (Объект.ИспользоватьЭлектроннуюПочту И Форма.Публиковать); + Если Не Элементы.ТолькоУведомить.Видимость Тогда + Объект.ТолькоУведомить = Ложь; + КонецЕсли; + + СпособыДоставки = ""; + Если Объект.ИспользоватьПапку Тогда + СпособыДоставки = НСтр("ru = 'папка'"); + КонецЕсли; + Если Объект.ИспользоватьСетевойКаталог Тогда + СпособыДоставки = НСтр("ru = 'сетевой каталог'"); + КонецЕсли; + Если Объект.ИспользоватьFTPРесурс Тогда + СпособыДоставки = НСтр("ru = 'FTP'"); + КонецЕсли; + Если Объект.ИспользоватьЭлектроннуюПочту И Не Объект.ТолькоУведомить Тогда + СпособыДоставки = СпособыДоставки + ?(СпособыДоставки = "", НСтр("ru = 'эл. почта'"), " "+ НСтр("ru = 'и эл. почта'")); + КонецЕсли; + + Элементы.СтраницаДоставка.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Доставка (%1)'"), СпособыДоставки); + КонецЕсли; + + Если Изменения = "" Или Изменения = "ПисьмоВФорматеHTML" Тогда + ПереключитьСтраницу(Элементы, "СтраницыТекстПисьма", ?(Объект.ПисьмоВФорматеHTML, "HTML", "ОбычныйТекст")); + КонецЕсли; + + Если Изменения = "" Или Изменения = "Архивировать" Тогда + Элементы.ИмяАрхива.Доступность = Объект.Архивировать; + Элементы.ПарольАрхива.Доступность = Объект.Архивировать; + КонецЕсли; + + Если Изменения = "" Или Изменения = "ВыполнятьПоРасписанию" Тогда + Если Объект.ВыполнятьПоРасписанию Тогда + Элементы.СтраницаРасписание.Заголовок = НСтр("ru = 'Расписание (активно)'"); + Иначе + Элементы.СтраницаРасписание.Заголовок = НСтр("ru = 'Расписание (не активно)'"); + КонецЕсли; + Элементы.ПараметрыВыполненияПоРасписанию.Доступность = Объект.ВыполнятьПоРасписанию; + Элементы.СтраницыПериодичности.Доступность = Объект.ВыполнятьПоРасписанию; + КонецЕсли; + + Если Изменения = "" Или Изменения = "ПериодичностьРасписания" Тогда + + Если Объект.ПериодичностьРасписания = ПредопределенноеЗначение("Перечисление.ПериодичностиРасписанийРассылокОтчетов.Ежедневно") Тогда + ИмяПеречисления = "Ежедневно"; + ИначеЕсли Объект.ПериодичностьРасписания = ПредопределенноеЗначение("Перечисление.ПериодичностиРасписанийРассылокОтчетов.Ежемесячно") Тогда + ИмяПеречисления = "Ежемесячно"; + ИначеЕсли Объект.ПериодичностьРасписания = ПредопределенноеЗначение("Перечисление.ПериодичностиРасписанийРассылокОтчетов.Еженедельно") Тогда + ИмяПеречисления = "Еженедельно"; + Иначе + ИмяПеречисления = "Произвольное"; + КонецЕсли; + + Страницы = Элементы.СтраницыПериодичности.ПодчиненныеЭлементы; + ИмяВидимойСтраницы = "Страница"+ИмяПеречисления; + Для Каждого Страница Из Страницы Цикл + Страница.Видимость = (Страница.Имя = ИмяВидимойСтраницы); + КонецЦикла; + Если ИмяПеречисления = "Произвольное" Тогда + Элементы.СтраницыВремяИлиИзменить.ТекущаяСтраница = Элементы.СтраницаИзменитьРасписание; + Иначе + Элементы.СтраницыВремяИлиИзменить.ТекущаяСтраница = Элементы.СтраницаВремяНачала; + КонецЕсли; + + // Сброс параметров, которые не соответствуют закладкам упрощенного редактирования. + Если Изменения = "ПериодичностьРасписания" + И (ИмяПеречисления = "Ежедневно" + Или ИмяПеречисления = "Еженедельно" + Или ИмяПеречисления = "Ежемесячно") Тогда + + // Общие параметры + Форма.Расписание.ДатаНачала = '00010101'; + Форма.Расписание.ДатаКонца = '00010101'; + Форма.Расписание.ВремяКонца = '00010101'; + Форма.Расписание.ВремяЗавершения = '00010101'; + Форма.Расписание.ДеньНеделиВМесяце = 0; + Форма.Расписание.ДетальныеРасписанияДня = Новый Массив; + Форма.Расписание.ИнтервалЗавершения = 0; + Форма.Расписание.ПаузаПовтора = 0; + Форма.Расписание.ПериодНедель = 0; + Форма.Расписание.ПериодПовтораВТечениеДня = 0; + + Если ИмяПеречисления <> "Ежедневно" Тогда + Форма.Расписание.ПериодПовтораДней = 1; + КонецЕсли; + + Если ИмяПеречисления <> "Еженедельно" Тогда + ВыбранныеДниНедели = Новый Массив; + Для Индекс = 1 По 7 Цикл + ВыбранныеДниНедели.Добавить(Индекс); + КонецЦикла; + Форма.Расписание.ДниНедели = ВыбранныеДниНедели; + КонецЕсли; + + Если ИмяПеречисления <> "Ежемесячно" Тогда + ВсеМесяцы = Новый Массив; + Для Индекс = 1 По 12 Цикл + ВсеМесяцы.Добавить(Индекс); + КонецЦикла; + Форма.Расписание.Месяцы = ВсеМесяцы; + Форма.Расписание.ДеньВМесяце = 0; + КонецЕсли; + КонецЕсли; + + // Восстанавливаем параметры на текущей закладке в соответствии с параметрами расписания. + Если ИмяПеречисления = "Ежедневно" Тогда + Форма.ВремяНачала = Форма.Расписание.ВремяНачала; + Форма.ПериодПовтораДней = Форма.Расписание.ПериодПовтораДней; + ИначеЕсли ИмяПеречисления = "Еженедельно" Тогда + Форма.ВремяНачала = Форма.Расписание.ВремяНачала; + Для Каждого КлючИЗначение Из Форма.Кэш.Соответствия.ДниНедели Цикл + Форма[КлючИЗначение.Ключ] = (Форма.Расписание.ДниНедели.Найти(КлючИЗначение.Значение) <> Неопределено); + КонецЦикла; + ИначеЕсли ИмяПеречисления = "Ежемесячно" Тогда + Форма.ВремяНачала = Форма.Расписание.ВремяНачала; + Если Форма.Расписание.ДеньВМесяце >= 0 Тогда + Форма.ДеньВМесяце = Форма.Расписание.ДеньВМесяце; + Элементы.ГиперссылкаНачалоКонецМесяца.Заголовок = НСтр("ru = 'начала'"); + Иначе + Форма.ДеньВМесяце = -Форма.Расписание.ДеньВМесяце; + Элементы.ГиперссылкаНачалоКонецМесяца.Заголовок = НСтр("ru = 'конца'"); + КонецЕсли; + Для Каждого КлючИЗначение Из Форма.Кэш.Соответствия.Месяцы Цикл + Форма[КлючИЗначение.Ключ] = (Форма.Расписание.Месяцы.Найти(КлючИЗначение.Значение) <> Неопределено); + КонецЦикла; + КонецЕсли; + + КонецЕсли; // Изменения = "" Или Изменения = "ПериодичностьРасписания" + + Если Изменения = "" Или Изменения = "НачалоКонецМесяца" Тогда + Элементы.ГиперссылкаНачалоКонецМесяца.Заголовок = ?(Форма.Расписание.ДеньВМесяце >= 0, "начала", "конца"); + КонецЕсли; + + Если Изменения = "" Или Изменения = "ФорматыПоУмолчанию" Тогда + Элементы.ФорматыПоУмолчанию.КнопкаОчистки = (Форма.ФорматыПоУмолчанию <> Форма.СписокФорматовПоУмолчаниюПредставление); + КонецЕсли; + + Если Изменения = "" Или Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаРасписание Тогда + Элементы.ПредставлениеРасписания.Видимость = Объект.ВыполнятьПоРасписанию; + Если Объект.ВыполнятьПоРасписанию Тогда + Элементы.ПредставлениеРасписания.Заголовок = ПредставлениеРасписания(Форма.Расписание); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +// Формирует представление расписания регламентного задания. +// +// Параметры: +// Расписание - РасписаниеРегламентногоЗадания - расписание. +// +// Возвращаемое значение: +// Строка - представление расписания. +// +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеРасписания(Расписание) + ПредставлениеРасписания = Строка(Расписание); + ПредставлениеРасписания = ВРег(Лев(ПредставлениеРасписания, 1)) + Сред(ПредставлениеРасписания, 2); + ПредставлениеРасписания = СтрЗаменить(СтрЗаменить(ПредставлениеРасписания, " ", " "), " ]", "]") + "."; + Возврат ПредставлениеРасписания; +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеПолучателей(Форма) + Получатели = Форма.Объект.Получатели; + Включенные = Получатели.НайтиСтроки(Новый Структура("Исключен", Ложь)); + Отключенные = Получатели.НайтиСтроки(Новый Структура("Исключен", Истина)); + + ПредставлениеОтключенных = РассылкаОтчетовКлиентСервер.ПредставлениеСписка(Отключенные, "Получатель", 0); + Остаток = 75 - ПредставлениеОтключенных.ДлинаКраткого; + Представление = РассылкаОтчетовКлиентСервер.ПредставлениеСписка(Включенные, "Получатель", Остаток); + Если Представление.Всего = 0 Тогда + Представление.Краткое = НСтр("ru = '<Укажите получателей>'"); + Возврат Представление; + КонецЕсли; + + Если ПредставлениеОтключенных.МаксимумПревышен Тогда + ПредставлениеОтключенных.Краткое = ПредставлениеОтключенных.Краткое + ", ..."; + КонецЕсли; + Если Представление.МаксимумПревышен Тогда + Представление.Краткое = Представление.Краткое + ", ..."; + КонецЕсли; + + Если ПредставлениеОтключенных.Всего > 0 Тогда + ШаблонРазделения = НСтр("ru = 'Кроме'")+ ": "; + Представление.Полное = Представление.Полное + ";" + Символы.ПС + ШаблонРазделения + ПредставлениеОтключенных.Полное; + Если Представление.ДлинаКраткого + ПредставлениеОтключенных.ДлинаКраткого <= 75 Тогда + Представление.Краткое = Представление.Краткое + "; " + ШаблонРазделения + ПредставлениеОтключенных.Краткое; + КонецЕсли; + КонецЕсли; + Если Представление.МаксимумПревышен + Или ПредставлениеОтключенных.МаксимумПревышен Тогда + Если ПредставлениеОтключенных.Всего > 0 Тогда + ШаблонОкончания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '(всего %1, исключая %2)'"), + Представление.Всего, + ПредставлениеОтключенных.Всего); + Иначе + ШаблонОкончания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '(всего %1)'"), + Представление.Всего); + КонецЕсли; + Представление.Краткое = Представление.Краткое + "; " + ШаблонОкончания; + КонецЕсли; + + Возврат Представление; +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьМодифицированностьФормы(Форма, Поле = "", ПутьКДанным = "", Текст = "") + Если Не Форма.Модифицированность Тогда + Форма.ФормаБылаМодифицированаНаСервере = Истина; + Если ЗначениеЗаполнено(Текст) Тогда + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = Текст; + Сообщение.Поле = Поле; + Сообщение.ПутьКДанным = ПутьКДанным; + Сообщение.Сообщить(); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеФорматовПоУмолчанию() + Возврат НСтр("ru = 'по умолчанию'"); +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПолучателиУказаны(Получатели) + + Для Каждого СтрокаТаблицы Из Получатели Цикл + Если Не СтрокаТаблицы.Исключен Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + ТекстСообщения = НСтр("ru = 'Не выбрано ни одного получателя'"); + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = ТекстСообщения; + Сообщение.Поле = "ПолучателиРассылки"; + Сообщение.Сообщить(); + + Возврат Ложь; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ШаблонЗначенияПолучателяРассылки() + + Возврат НСтр("ru = '[Получатель]'"); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вызов сервера, Сервер + +&НаСервереБезКонтекста +Функция ПочтовыеАдресаПолучателя(Получатель, СписокЗначений) + + Получатели = Новый Массив; + Получатели.Добавить(Получатель); + ТипыКонтактнойИнформации = Новый Массив; + ТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты); + Попытка + ПочтовыеАдреса = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(Получатели, ТипыКонтактнойИнформации,, ТекущаяДатаСеанса()); + Исключение + Возврат СписокЗначений; + КонецПопытки; + + Для Каждого ПочтовыйАдрес Из ПочтовыеАдреса Цикл + Если ЗначениеЗаполнено(ПочтовыйАдрес.Представление) Тогда + СписокЗначений.Добавить(ПочтовыйАдрес.Вид, ПочтовыйАдрес.Представление + " (" + Строка(ПочтовыйАдрес.Вид) + ")"); + КонецЕсли; + КонецЦикла; + + Возврат СписокЗначений; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПравоИзмененияПапкиИФайлов(Папка) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный"); + Результат = МодульРаботаСФайламиСлужебный.ПравоДобавленияФайловВПапку(Папка); + Иначе + Результат = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервере +Функция ОтчетыПриАктивизацииСтрокиНаСервере(ИдентификаторСтроки, ДобавитьДежурнуюФразу = Истина, Знач ПользовательскиеНастройки = Неопределено) + // Сохранение настроек предыдущего отчета. + Если ИдентификаторСтроки <> ИдентификаторТекущейСтрокиТаблицыОтчетов И ИдентификаторТекущейСтрокиТаблицыОтчетов <> -1 Тогда + ЗаписатьНастройкиСтрокиОтчеты(ИдентификаторТекущейСтрокиТаблицыОтчетов); + КонецЕсли; + ИдентификаторТекущейСтрокиТаблицыОтчетов = ИдентификаторСтроки; + + // Поиск строки + СтрокаОтчеты = Объект.Отчеты.НайтиПоИдентификатору(ИдентификаторСтроки); + Если СтрокаОтчеты = Неопределено Тогда + ИдентификаторТекущейСтрокиТаблицыОтчетов = -1; + Возврат ""; + КонецЕсли; + + Если ПользовательскиеНастройки = Неопределено Тогда + // Чтение настроек текущей строки из временного хранилища или из табличной части по ссылке. + Если ЭтоАдресВременногоХранилища(СтрокаОтчеты.АдресНастроек) Тогда + ПользовательскиеНастройки = ПолучитьИзВременногоХранилища(СтрокаОтчеты.АдресНастроек); + Иначе + ИндексСтроки = Объект.Отчеты.Индекс(СтрокаОтчеты); + ОбъектСтрокаОтчеты = РеквизитФормыВЗначение("Объект").Отчеты.Получить(ИндексСтроки); + ПользовательскиеНастройки = ?(ОбъектСтрокаОтчеты = Неопределено, Неопределено, ОбъектСтрокаОтчеты.Настройки.Получить()); + КонецЕсли; + КонецЕсли; + + Если Не СтрокаОтчеты.Доступность Тогда + Элементы.СтраницыНастроекОтчета.ТекущаяСтраница = Элементы.ПустаяСтраница; + Возврат ""; + КонецЕсли; + + // Инициализация + ПараметрыОтчета = ИнициализироватьОтчет(СтрокаОтчеты, ДобавитьДежурнуюФразу, ПользовательскиеНастройки); + + НайтиНастройкиПерсонализации(); + + Возврат ПараметрыОтчета.Ошибки; +КонецФункции + +&НаСервере +Процедура НайтиНастройкиПерсонализации() + + НастройкиПерсонализации.Очистить(); + + Настройки = КомпоновщикНастроекКД.ПользовательскиеНастройки.Элементы; + + Для Каждого ЭлементНастройки Из Настройки Цикл + + ЗначениеНастройки = Неопределено; + + Если ТипЗнч(ЭлементНастройки) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда + + ЗначениеНастройки = ЭлементНастройки.ПравоеЗначение; + + ИначеЕсли ТипЗнч(ЭлементНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда + + ЗначениеНастройки = ЭлементНастройки.Значение; + Иначе + Продолжить; + КонецЕсли; + + Если ЗначениеНастройки <> ШаблонЗначенияПолучателяРассылки() Тогда + Продолжить; + КонецЕсли; + + ЗаголовокНастройки = ЗаголовокНастройкиПерсонализации(ЭлементНастройки.ИдентификаторПользовательскойНастройки); + + Если ЗаголовокНастройки <> Неопределено Тогда + НастройкиПерсонализации.Добавить(ЗаголовокНастройки); + КонецЕсли; + + КонецЦикла; + + ОформитьНастройкиПерсонализации(); + +КонецПроцедуры + +&НаСервере +Функция ЗаголовокНастройкиПерсонализации(ИдентификаторНастройки) + + ЗаголовокНастройки = Неопределено; + ОписаниеНастройки = Неопределено; + + Настройки = КомпоновщикНастроекКД.Настройки; + ПользовательскиеНастройки = КомпоновщикНастроекКД.ПользовательскиеНастройки; + + НайденныеНастройки = ПользовательскиеНастройки.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки( + ИдентификаторНастройки); + + Если НайденныеНастройки.Количество() = 0 Тогда + Возврат ЗаголовокНастройки; + КонецЕсли; + + ЭлементНастройки = НайденныеНастройки[0]; + + Если ТипЗнч(ЭлементНастройки) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда + + ЗаголовокНастройки = Строка(ЭлементНастройки.ЛевоеЗначение); + + ОписаниеНастройки = Настройки.Отбор.ДоступныеПоляОтбора.НайтиПоле( + ЭлементНастройки.ЛевоеЗначение); + + ИначеЕсли ТипЗнч(ЭлементНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда + + ЗаголовокНастройки = Строка(ЭлементНастройки.Параметр); + + ОписаниеНастройки = Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр( + ЭлементНастройки.Параметр); + + КонецЕсли; + + Если ОписаниеНастройки <> Неопределено Тогда + ЗаголовокНастройки = ОписаниеНастройки.Заголовок; + КонецЕсли; + + Возврат ЗаголовокНастройки; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьРасписаниеПоВарианту(Вариант, ОбновитьВидимость = Ложь) + // Список вариантов - см. РассылкаОтчетовКлиентСервер.СписокВариантовЗаполненияРасписаний(). + + Расписание = Новый РасписаниеРегламентногоЗадания; + + // в 7:30 утра + Расписание.ВремяНачала = '00010101073000'; + + // каждый день + Расписание.ПериодПовтораДней = 1; + + // по дням недели + ДеньНеделиМин = 1; + ДеньНеделиМакс = 7; + + // по всем месяцам + ВсеМесяцы = Новый Массив; + Для Индекс = 1 По 12 Цикл + ВсеМесяцы.Добавить(Индекс); + КонецЦикла; + Расписание.Месяцы = ВсеМесяцы; + + Если Вариант = 1 Тогда // "Каждый день" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Ежедневно; + + ИначеЕсли Вариант = 2 Тогда // "Каждый второй день" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Ежедневно; + Расписание.ПериодПовтораДней = 2; + + ИначеЕсли Вариант = 3 Тогда // "Каждый четвертый день" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Ежедневно; + Расписание.ПериодПовтораДней = 4; + + ИначеЕсли Вариант = 4 Тогда // "По будням" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Еженедельно; + ДеньНеделиМин = 1; + ДеньНеделиМакс = 5; + + ИначеЕсли Вариант = 5 Тогда // "По выходным" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Еженедельно; + Расписание.ВремяНачала = '00010101220000'; // в 10:00 вечера + ДеньНеделиМин = 6; + ДеньНеделиМакс = 7; + + ИначеЕсли Вариант = 6 Тогда // "По понедельникам" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Еженедельно; + ДеньНеделиМин = 1; + ДеньНеделиМакс = 1; + + ИначеЕсли Вариант = 7 Тогда // "По пятницам" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Еженедельно; + ДеньНеделиМин = 5; + ДеньНеделиМакс = 5; + + ИначеЕсли Вариант = 8 Тогда // "По воскресеньям" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Еженедельно; + Расписание.ВремяНачала = '00010101220000'; // в 10:00 вечера + ДеньНеделиМин = 7; + ДеньНеделиМакс = 7; + + ИначеЕсли Вариант = 9 Тогда // "В первый день месяца" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Ежемесячно; + Расписание.ДеньВМесяце = 1; + + ИначеЕсли Вариант = 10 Тогда // "В последний день месяца" + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Ежемесячно; + Расписание.ДеньВМесяце = -1; + + ИначеЕсли Вариант = 11 Тогда // СКаждый квартал десятого числа". + ВсеМесяцы = Новый Массив; + ВсеМесяцы.Добавить(1); + ВсеМесяцы.Добавить(4); + ВсеМесяцы.Добавить(7); + ВсеМесяцы.Добавить(10); + Расписание.Месяцы = ВсеМесяцы; + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Ежемесячно; + Расписание.ДеньВМесяце = 10; + + ИначеЕсли Вариант = 12 Тогда // "Другое..." + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Произвольное; + + Иначе + Объект.ПериодичностьРасписания = Перечисления.ПериодичностиРасписанийРассылокОтчетов.Ежедневно; + + КонецЕсли; + + // по дням недели + ВыбранныеДниНедели = Новый Массив; + Для Индекс = ДеньНеделиМин По ДеньНеделиМакс Цикл + ВыбранныеДниНедели.Добавить(Индекс); + КонецЦикла; + Расписание.ДниНедели = ВыбранныеДниНедели; + + Если ОбновитьВидимость Тогда + ВидимостьДоступностьКорректность(ЭтотОбъект); + КонецЕсли; +КонецПроцедуры + +// Выполняет проверку выбранного отчета. +// +// Параметры: +// СтруктураВыбора - Структура: +// * Выбрано - Структура - строки, выбранные пользователем. +// * Успешно - Структура - строки, инициализированные и добавленные в список. +// * СОшибками - Структура - строки, не добавленные в список из-за ошибок, где: +// ** МассивСтрок - Массив - массив идентификаторов строк. +// ** Количество - Число - количество строк. +// ** ПредставлениеОтчетов - Строка - представление всех отчетов указанных строк. +// ** Текст - Строка - текст возникших ошибок. +// +&НаСервере +Процедура ПроверитьДобавленныеСтрокиОтчетов(СтруктураВыбора) + МассивОшибок = Новый Массив; + + СтруктураВыбора.Выбрано.Количество = СтруктураВыбора.Выбрано.МассивСтрок.Количество(); + Для ОбратныйИндекс = 1 По СтруктураВыбора.Выбрано.Количество Цикл + Индекс = СтруктураВыбора.Выбрано.Количество - ОбратныйИндекс; + ИдентификаторСтрокиОтчеты = СтруктураВыбора.Выбрано.МассивСтрок[Индекс]; + + СтрокаОтчеты = Объект.Отчеты.НайтиПоИдентификатору(ИдентификаторСтрокиОтчеты); + Если СтрокаОтчеты.Представление = "" Тогда + СтрокаОтчеты.Представление = Строка(СтрокаОтчеты.Отчет); + КонецЕсли; + + СтрокаПредупреждения = ОтчетыПриАктивизацииСтрокиНаСервере(ИдентификаторСтрокиОтчеты, Ложь); + Если СтрокаПредупреждения = "" Тогда + Ключ = "Успешно"; + Иначе + Ключ = "СОшибками"; + МассивОшибок.Добавить(СтрокаПредупреждения); + КонецЕсли; + + Строки = СтруктураВыбора[Ключ].МассивСтрок; // Массив + Строки.Добавить(ИдентификаторСтрокиОтчеты); + + СтруктураВыбора[Ключ].МассивСтрок = Строки; + СтруктураВыбора[Ключ].Количество = СтруктураВыбора[Ключ].Количество + 1; + СтруктураВыбора[Ключ].ПредставлениеОтчетов = СтруктураВыбора[Ключ].ПредставлениеОтчетов + + ?(СтруктураВыбора[Ключ].ПредставлениеОтчетов = "", "", ", ") + + СтрокаОтчеты.Представление; + КонецЦикла; + + // Установка курсора на первый из добавленных элементов. + Если СтруктураВыбора.Успешно.Количество > 0 Тогда + Элементы.Отчеты.ТекущаяСтрока = СтруктураВыбора.Успешно.МассивСтрок[0]; + ИдентификаторТекущейСтрокиТаблицыОтчетов = Элементы.Отчеты.ТекущаяСтрока; + ОтчетыПриАктивизацииСтрокиНаСервере(ИдентификаторСтрокиОтчеты, Ложь); + КонецЕсли; + + // Сборка текста ошибок. + Если СтруктураВыбора.СОшибками.Количество > 0 Тогда + СтруктураВыбора.СОшибками.Текст = РассылкаОтчетов.СтрокаСообщенийПользователю(МассивОшибок); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ПроверитьСпособДоставки(Рассылка, Знач ПараметрыДоставки) + ПараметрыДоставки.Вставить("ДатаВыполнения", ТекущаяДатаСеанса()); + + // Инициализация параметров записи в журнал регистрации. + УстановитьПривилегированныйРежим(Истина); + + ПараметрыЖурнала = Новый Структура; + ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Проверка способа доставки'", ОбщегоНазначения.КодОсновногоЯзыка())); + ПараметрыЖурнала.Вставить("Данные", Рассылка); + ПараметрыЖурнала.Вставить("Метаданные", Метаданные.Справочники.РассылкиОтчетов); + ПараметрыЖурнала.Вставить("МассивОшибок", Новый Массив); + + УстановитьПривилегированныйРежим(Ложь); + + // Добавление параметров доставки для записи результатов выполнения. + ПараметрыДоставки.Вставить("РежимТестирования", Истина); + ПараметрыДоставки.Вставить("БылиОшибки", Ложь); + ПараметрыДоставки.Вставить("БылиПредупреждения", Ложь); + ПараметрыДоставки.Вставить("ВыполненаВПапку", Ложь); + ПараметрыДоставки.Вставить("ВыполненаВСетевойКаталог", Ложь); + ПараметрыДоставки.Вставить("ВыполненаНаFTP", Ложь); + ПараметрыДоставки.Вставить("ВыполненаПоЭлектроннойПочте", Ложь); + + // Запись пустого табличного документа в html 4. + ПолноеИмяФайла = ПолучитьИмяВременногоФайла(".html"); + + ТабДок = Новый ТабличныйДокумент; + ТабДок.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.HTML4); + + // Формирование вложений + Файл = Новый Файл(ПолноеИмяФайла); + + Вложения = Новый Соответствие; + Вложения.Вставить(Файл.Имя, Файл.ПолноеИмя); + + // Доставка + НачатьТранзакцию(); + Попытка + РассылкаОтчетов.ВыполнитьДоставку(ПараметрыЖурнала, ПараметрыДоставки, Вложения); + ОтменитьТранзакцию(); // После окончания теста откатываются все изменения в базе. + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + // Очистка вложений + Для Каждого Вложение Из Вложения Цикл + УдалитьФайлы(Вложение.Значение); + КонецЦикла; + + РезультатВыполнения = Новый Структура("Текст, Подробно", "", ""); + + Если ПараметрыЖурнала.МассивОшибок.Количество() = 0 Тогда + РезультатВыполнения.Текст = НСтр("ru = 'Проверка возможности доставки успешно пройдена.'"); + Иначе + РезультатВыполнения.Текст = НСтр("ru = 'Проверка возможности доставки не пройдена.'"); + РезультатВыполнения.Подробно = РассылкаОтчетов.СтрокаСообщенийПользователю(ПараметрыЖурнала.МассивОшибок, Ложь); + КонецЕсли; + + Возврат РезультатВыполнения; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Сервер + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + ЦветТекстаЗапрещеннойЯчейки = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.НастройкиТекущегоОтчета.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НастройкиТекущегоОтчета.Обнаружен"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветТекстаЗапрещеннойЯчейки); + Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Отчеты.Имя); + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ФорматыОтчетов.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Отчеты.Доступность"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветТекстаЗапрещеннойЯчейки); + Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); + + // + + ОформитьНастройкиПерсонализации(); + +КонецПроцедуры + +&НаСервере +Процедура ОформитьНастройкиПерсонализации() + + Элемент = Неопределено; + ПараметрОформления = Новый ПараметрКомпоновкиДанных("Текст"); + + Для Каждого ЭлементОформления Из УсловноеОформление.Элементы Цикл + + ЗначениеПараметра = ЭлементОформления.Оформление.НайтиЗначениеПараметра(ПараметрОформления); + Если ЗначениеПараметра.Значение = ШаблонЗначенияПолучателяРассылки() Тогда + + Элемент = ЭлементОформления; + Прервать; + + КонецЕсли; + + КонецЦикла; + + Если Элемент <> Неопределено Тогда + + ОтборЭлемента = Элемент.Отбор.Элементы[0]; + ОтборЭлемента.ПравоеЗначение = НастройкиПерсонализации; + Возврат; + + КонецЕсли; + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПользовательскиеНастройкиЗначение.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КомпоновщикНастроекКД.ПользовательскиеНастройки.Настройка"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; + ОтборЭлемента.ПравоеЗначение = НастройкиПерсонализации; + + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ШаблонЗначенияПолучателяРассылки()); + Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); + +КонецПроцедуры + +&НаСервере +Функция ПолучитьКэш() + + // Преобразование наименований в значения. + ДниНедели = Новый Соответствие; + ДниНедели.Вставить(Элементы.Понедельник.Имя, 1); + ДниНедели.Вставить(Элементы.Вторник.Имя, 2); + ДниНедели.Вставить(Элементы.Среда.Имя, 3); + ДниНедели.Вставить(Элементы.Четверг.Имя, 4); + ДниНедели.Вставить(Элементы.Пятница.Имя, 5); + ДниНедели.Вставить(Элементы.Суббота.Имя, 6); + ДниНедели.Вставить(Элементы.Воскресенье.Имя, 7); + ДниНедели = Новый ФиксированноеСоответствие(ДниНедели); + + Месяцы = Новый Соответствие; + Месяцы.Вставить(Элементы.Январь.Имя, 1); + Месяцы.Вставить(Элементы.Февраль.Имя, 2); + Месяцы.Вставить(Элементы.Март.Имя, 3); + Месяцы.Вставить(Элементы.Апрель.Имя, 4); + Месяцы.Вставить(Элементы.Май.Имя, 5); + Месяцы.Вставить(Элементы.Июнь.Имя, 6); + Месяцы.Вставить(Элементы.Июль.Имя, 7); + Месяцы.Вставить(Элементы.Август.Имя, 8); + Месяцы.Вставить(Элементы.Сентябрь.Имя, 9); + Месяцы.Вставить(Элементы.Октябрь.Имя, 10); + Месяцы.Вставить(Элементы.Ноябрь.Имя, 11); + Месяцы.Вставить(Элементы.Декабрь.Имя, 12); + Месяцы = Новый ФиксированноеСоответствие(Месяцы); + + // Умолчания для полей, поддерживающих шаблоны заполнения. + Шаблоны = Новый ФиксированнаяСтруктура("Тема, Текст, ИмяАрхива", + РассылкаОтчетов.ШаблонТемы(), + РассылкаОтчетов.ШаблонТекста(), + РассылкаОтчетов.ШаблонИмениАрхива()); + + // Структура кэша. + Кэш = Новый Структура; + Кэш.Вставить("ПустоеЗначениеОтчета", РассылкаОтчетов.ПустоеЗначениеОтчета()); + Кэш.Вставить("ГруппаЛичныхРассылок", Справочники.РассылкиОтчетов.ЛичныеРассылки); + Кэш.Вставить("ЗаголовокСистемы", РассылкаОтчетов.ИмяЭтойИнформационнойБазы()); + Кэш.Вставить("Соответствия", Новый ФиксированнаяСтруктура("ДниНедели, Месяцы", ДниНедели, Месяцы)); + Кэш.Вставить("Шаблоны", Шаблоны); + Кэш.Вставить("ИсключаемыеОтчеты", РассылкаОтчетовПовтИсп.ИсключаемыеОтчеты()); + + Возврат Новый ФиксированнаяСтруктура(Кэш); +КонецФункции + +&НаСервере +Процедура ЗаполнитьСведенияТаблицыОтчеты() + ДоступностьОтчетов = ВариантыОтчетов.ДоступностьОтчетов(Объект.Отчеты.Выгрузить(, "Отчет").ВыгрузитьКолонку("Отчет")); + Для Каждого СтрокаОтчеты Из Объект.Отчеты Цикл + ИнформацияОбОтчете = ДоступностьОтчетов.Найти(СтрокаОтчеты.Отчет, "Ссылка"); + Если ИнформацияОбОтчете = Неопределено Тогда + СтрокаОтчеты.Доступность = Ложь; + СтрокаОтчеты.Представление = НСтр("ru = '<Недостаточно прав для работы с отчетом>'"); + Иначе + СтрокаОтчеты.Доступность = ИнформацияОбОтчете.Доступен; + СтрокаОтчеты.Представление = ИнформацияОбОтчете.Представление; + КонецЕсли; + СтрокаОтчеты.Форматы = ""; + Найденные = Объект.ФорматыОтчетов.НайтиСтроки(Новый Структура("Отчет", СтрокаОтчеты.Отчет)); + Для Каждого СтрокаФормат Из Найденные Цикл + СтрокаОтчеты.Форматы = СтрокаОтчеты.Форматы + ?(СтрокаОтчеты.Форматы = "", "", ", ") + Строка(СтрокаФормат.Формат); + КонецЦикла; + Если СтрокаОтчеты.Форматы = "" Тогда + СтрокаОтчеты.Форматы = ПредставлениеФорматовПоУмолчанию(); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьРасписаниеРегламентногоЗадания() + УстановитьПривилегированныйРежим(Истина); + ИдентификаторЗадания = ?(СозданКопированием, РассылкаОснование.РегламентноеЗадание, Объект.РегламентноеЗадание); + Если ТипЗнч(ИдентификаторЗадания) = Тип("УникальныйИдентификатор") Тогда + Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); + Если Задание <> Неопределено Тогда + Расписание = Задание.Расписание; + Если Объект.ПериодичностьРасписания <> Перечисления.ПериодичностиРасписанийРассылокОтчетов.Произвольное Тогда + Расписание.ВремяКонца = '00010101'; + КонецЕсли; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьНастройкиОтчетовОбъектаКопирования() + КоличествоСтрок = Объект.Отчеты.Количество(); + Для ОбратныйИндекс = 1 По КоличествоСтрок Цикл + Индекс = КоличествоСтрок - ОбратныйИндекс; + СтрокаОтчеты = Объект.Отчеты.Получить(Индекс); + СтрокаОтчетыОбъектаКопирования = РассылкаОснование.Отчеты.Получить(Индекс); + + ПользовательскиеНастройкиКД = СтрокаОтчетыОбъектаКопирования.Настройки.Получить(); + + СтрокаОтчеты.ВнесеныИзменения = Истина; + + ИдентификаторСтроки = СтрокаОтчеты.ПолучитьИдентификатор(); + СтрокаПредупреждения = ОтчетыПриАктивизацииСтрокиНаСервере(ИдентификаторСтроки, Истина, ПользовательскиеНастройкиКД); + Если СтрокаПредупреждения <> "" Тогда + ОбщегоНазначения.СообщитьПользователю(СтрокаПредупреждения, , "Объект.Отчеты["+ Индекс +"].Представление"); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ПодключитьКэшНастроекЭлектроннойПочты() + // Подключение кэша типов получателей. + ТаблицаТиповПолучателей.Загрузить(РассылкаОтчетовПовтИсп.ТаблицаТиповПолучателей()); + + // Заполнение списка выбора типов получателей. + Для Каждого СтрокаПолучатель Из ТаблицаТиповПолучателей Цикл + Элементы.ТипПолучателейРассылки.СписокВыбора.Добавить(СтрокаПолучатель.ТипПолучателей, СтрокаПолучатель.Представление); + Если СтрокаПолучатель.ИдентификаторОбъектаМетаданных = Объект.ТипПолучателейРассылки Тогда + ТипПолучателейРассылки = СтрокаПолучатель.ТипПолучателей; + Если Объект.ВидПочтовогоАдресаПолучателей.Пустая() И ЗначениеЗаполнено(СтрокаПолучатель.ОсновнойВидКИ) Тогда + Объект.ВидПочтовогоАдресаПолучателей = СтрокаПолучатель.ОсновнойВидКИ; + КонецЕсли; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПустыеШаблоныСтандартными(ТекущийОбъект) + // Данные объекта + Если ПустаяСтрока(ТекущийОбъект.ТемаПисьма) Тогда + ТекущийОбъект.ТемаПисьма = Кэш.Шаблоны.Тема; + КонецЕсли; + Если ПустаяСтрока(ТекущийОбъект.ТекстПисьма) Тогда + ТекущийОбъект.ТекстПисьма = Кэш.Шаблоны.Текст; + КонецЕсли; + Если ПустаяСтрока(ТекущийОбъект.ИмяАрхива) Тогда + ТекущийОбъект.ИмяАрхива = Кэш.Шаблоны.ИмяАрхива; + КонецЕсли; + // Данные формы + Если ПустаяСтрока(ТекстПисьмаФорматированныйДокумент.ПолучитьТекст()) Тогда + ТекстПисьмаФорматированныйДокумент.Добавить(Кэш.Шаблоны.Текст, ТипЭлементаФорматированногоДокумента.Текст); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНастройкиСтрокиОтчеты(ИдентификаторСтроки) + СтрокаОтчеты = Объект.Отчеты.НайтиПоИдентификатору(ИдентификаторСтроки); + Если СтрокаОтчеты = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Не СтрокаОтчеты.Инициализирован Тогда + СохраняемоеЗначение = Неопределено; + ИначеЕсли СтрокаОтчеты.СКД Тогда + СохраняемоеЗначение = КомпоновщикНастроекКД.ПользовательскиеНастройки; + Иначе + ИменаКолонок = "Реквизит, Представление, Значение, Использование"; + Отбор = Новый Структура("Обнаружен", Истина); + СохраняемоеЗначение = НастройкиТекущегоОтчета.Выгрузить().Скопировать(Отбор, ИменаКолонок); + КонецЕсли; + + Адрес = ?(ЭтоАдресВременногоХранилища(СтрокаОтчеты.АдресНастроек), СтрокаОтчеты.АдресНастроек, УникальныйИдентификатор); + + СтрокаОтчеты.АдресНастроек = ПоместитьВоВременноеХранилище(СохраняемоеЗначение, Адрес); +КонецПроцедуры + +&НаСервере +Функция ИнициализироватьОтчет(СтрокаОтчеты, ДобавитьДежурнуюФразу, ПользовательскиеНастройки, Интерактивно = Истина) + // Параметры журнала + ПараметрыЖурнала = Новый Структура; + ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Инициализация отчета'", ОбщегоНазначения.КодОсновногоЯзыка())); + ПараметрыЖурнала.Вставить("Данные", ?(ЗначениеЗаполнено(Объект.Ссылка), Объект.Ссылка, СтрокаОтчеты.Отчет)); + ПараметрыЖурнала.Вставить("Метаданные", Метаданные.Справочники.РассылкиОтчетов); + ПараметрыЖурнала.Вставить("МассивОшибок", Новый Массив); + + // Инициализация отчета + ПараметрыОтчета = Новый Структура("Отчет, Настройки", СтрокаОтчеты.Отчет, ПользовательскиеНастройки); + РассылкаОтчетов.ИнициализироватьОтчет( + ПараметрыЖурнала, + ПараметрыОтчета, + Объект.Персонализирована, + ЭтотОбъект.УникальныйИдентификатор); + + ПараметрыОтчета.Вставить("МассивОшибок", ПараметрыЖурнала.МассивОшибок); + ПараметрыОтчета.Ошибки = РассылкаОтчетов.СтрокаСообщенийПользователю(ПараметрыОтчета.МассивОшибок, ДобавитьДежурнуюФразу); + + Если ПараметрыОтчета.Инициализирован Тогда + СтрокаОтчеты.СКД = ПараметрыОтчета.СКД; + СтрокаОтчеты.Инициализирован = ПараметрыОтчета.Инициализирован; + СтрокаОтчеты.ПолноеИмя = ПараметрыОтчета.ПолноеИмя; + СтрокаОтчеты.КлючВарианта = ПараметрыОтчета.КлючВарианта; + // Поддержка возможности прямого выбора ссылок дополнительных отчетов в рассылках отчетов. + Если ЗначениеЗаполнено(ПараметрыОтчета.СсылкаВарианта) Тогда + СтрокаОтчеты.Отчет = ПараметрыОтчета.СсылкаВарианта; + СтрокаОтчеты.Представление = Строка(СтрокаОтчеты.Отчет); + КонецЕсли; + КонецЕсли; + + Если Не Интерактивно Тогда + Возврат ПараметрыОтчета; + КонецЕсли; + + // Проверка результата инициализации. + Если Не СтрокаОтчеты.Инициализирован Тогда + // Удаление строки. + Объект.Отчеты.Удалить(СтрокаОтчеты); + + // Пустая страница настроек. + Элементы.СтраницыНастроекОтчета.ТекущаяСтраница = Элементы.ПустаяСтраница; + + Возврат ПараметрыОтчета; + КонецЕсли; + + // Восстановление настроек + Если СтрокаОтчеты.СКД Тогда + + КомпоновщикНастроекКД = ПараметрыОтчета.КомпоновщикНастроекКД; + Элементы.СтраницыНастроекОтчета.ТекущаяСтраница = Элементы.СтраницаКомпоновщик; + + Иначе + + // Очищаем & Восстанавливаем + Если ТипЗнч(ПользовательскиеНастройки) = Тип("ТаблицаЗначений") Тогда + НастройкиТекущегоОтчета.Загрузить(ПользовательскиеНастройки); + Иначе + НастройкиТекущегоОтчета.Очистить(); + КонецЕсли; + + Для Каждого КлючИЗначение Из ПараметрыОтчета.ДоступныеРеквизиты Цикл + // Обновляем вычисляемые реквизиты. + Найденные = НастройкиТекущегоОтчета.НайтиСтроки(Новый Структура("Реквизит", КлючИЗначение.Ключ)); + Если Найденные.Количество() = 0 Тогда + СтрокаНастройка = НастройкиТекущегоОтчета.Добавить(); + СтрокаНастройка.Реквизит = КлючИЗначение.Ключ; + Иначе + СтрокаНастройка = Найденные[0]; + КонецЕсли; + СтрокаНастройка.Представление = КлючИЗначение.Значение.Представление; + СтрокаНастройка.Тип = КлючИЗначение.Значение.Тип; + СтрокаНастройка.Обнаружен = Истина; + СтрокаНастройка.ИндексКартинки = 3; + КонецЦикла; + + // Отключаем необнаруженные строки. + Найденные = НастройкиТекущегоОтчета.НайтиСтроки(Новый Структура("Обнаружен", Ложь)); + Для Каждого СтрокаНастройка Из Найденные Цикл + СтрокаНастройка.Использование = Ложь; + СтрокаНастройка.ИндексКартинки = 4; + КонецЦикла; + + Элементы.СтраницыНастроекОтчета.ТекущаяСтраница = Элементы.СтраницаНастройкиТекущегоОтчета; + + КонецЕсли; + + Возврат ПараметрыОтчета; +КонецФункции + +&НаСервере +Процедура ДобавитьНастройкиОтчетов(ПрисоединяемыеОтчеты) + + Для Каждого СтрокаОтчетыПараметры Из ПрисоединяемыеОтчеты Цикл + Если СтрокаОтчетыПараметры.Свойство("ВариантСсылка") + И ТипЗнч(СтрокаОтчетыПараметры.ВариантСсылка) = Тип("СправочникСсылка.ВариантыОтчетов") + И СтрокаОтчетыПараметры.ВариантСсылка <> Справочники.ВариантыОтчетов.ПустаяСсылка() Тогда + ВариантСсылка = СтрокаОтчетыПараметры.ВариантСсылка; + Иначе + ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(СтрокаОтчетыПараметры.ОтчетПолноеИмя); + Если Не ПустаяСтрока(ОтчетИнформация.ТекстОшибки) Тогда + Если Не ПустаяСтрока(ТекстВсплывающегоОповещенияПриОткрытии) Тогда + ТекстВсплывающегоОповещенияПриОткрытии = ТекстВсплывающегоОповещенияПриОткрытии + Символы.ПС; + КонецЕсли; + ТекстВсплывающегоОповещенияПриОткрытии = ТекстВсплывающегоОповещенияПриОткрытии + ОтчетИнформация.ТекстОшибки; + КонецЕсли; + ВариантСсылка = ВариантыОтчетов.ВариантОтчета(ОтчетИнформация.Отчет, СтрокаОтчетыПараметры.КлючВарианта); + КонецЕсли; + + Если ВариантСсылка.ПометкаУдаления Тогда + Продолжить; + КонецЕсли; + + Найденные = Объект.Отчеты.НайтиСтроки(Новый Структура("Отчет", ВариантСсылка)); + Если Найденные.Количество() > 0 Тогда + СтрокаОтчеты = Найденные[0]; + Иначе + СтрокаОтчеты = Объект.Отчеты.Добавить(); + СтрокаОтчеты.Отчет = ВариантСсылка; + СтрокаОтчеты.ОтправлятьЕслиПустой = Ложь; + СтрокаОтчеты.НеОтправлятьПустой = Истина; + СтрокаОтчеты.Доступность = Истина; + КонецЕсли; + + СтрокаОтчеты.ВнесеныИзменения = Истина; + + Если Не ЭтоНовый Тогда + Если Найденные.Количество() > 0 Тогда + ШаблонСтрокиСообщения = НСтр("ru = 'Для отчета ""%1"" загружены новые пользовательские настройки.'"); + Иначе + ШаблонСтрокиСообщения = НСтр("ru = 'Добавлен отчет ""%1"".'"); + КонецЕсли; + ШаблонСтрокиСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтрокиСообщения, Строка(ВариантСсылка)); + Если Не ПустаяСтрока(ТекстВсплывающегоОповещенияПриОткрытии) Тогда + ТекстВсплывающегоОповещенияПриОткрытии = ТекстВсплывающегоОповещенияПриОткрытии + Символы.ПС; + КонецЕсли; + ТекстВсплывающегоОповещенияПриОткрытии = ТекстВсплывающегоОповещенияПриОткрытии + ШаблонСтрокиСообщения; + ИндексСтроки = Объект.Отчеты.Индекс(СтрокаОтчеты); + КонецЕсли; + + ПользовательскиеНастройкиКД = СтрокаОтчетыПараметры.Настройки; + + ИдентификаторСтроки = СтрокаОтчеты.ПолучитьИдентификатор(); + Элементы.Отчеты.ТекущаяСтрока = ИдентификаторСтроки; + СтрокаПредупреждения = ОтчетыПриАктивизацииСтрокиНаСервере(ИдентификаторСтроки, Истина, ПользовательскиеНастройкиКД); + Если СтрокаПредупреждения <> "" Тогда + ОбщегоНазначения.СообщитьПользователю(СтрокаПредупреждения, , "Объект.Отчеты["+ ИндексСтроки +"].Представление"); + Иначе + ЗаписатьНастройкиСтрокиОтчеты(ИдентификаторСтроки); + КонецЕсли; + КонецЦикла; + + ИдентификаторТекущейСтрокиТаблицыОтчетов = -1; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Запись объекта + +&НаКлиенте +Процедура ЗаписатьНаКлиенте(Результат, ПараметрыЗаписи) Экспорт + // Инициализация параметров. + Если Не ПараметрыЗаписи.Свойство("Шаг") Тогда + ОчиститьСообщения(); // Очистка окна сообщений. + ПараметрыЗаписи.Вставить("Шаг", 1); + КонецЕсли; + + // Разрешения на ресурсы. + Если ПараметрыЗаписи.Шаг = 1 И ТребуютсяРазрешенияНаРесурсыСервера() Тогда + ПараметрыЗаписи.Шаг = 2; + // Вопрос. + Обработчик = Новый ОписаниеОповещения("ЗаписатьНаКлиенте", ЭтотОбъект, ПараметрыЗаписи); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + Разрешения = РазрешенияНаРесурсыСервера(); + МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); + МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Разрешения, ЭтотОбъект, Обработчик); + Иначе + ВыполнитьОбработкуОповещения(Обработчик, КодВозвратаДиалога.ОК); + КонецЕсли; + ИначеЕсли ПараметрыЗаписи.Шаг = 1 Тогда + // Вопрос не нужен. + ПараметрыЗаписи.Шаг = 3; + ИначеЕсли ПараметрыЗаписи.Шаг = 2 Тогда + // Обработка ответа. + Если Результат = КодВозвратаДиалога.ОК Тогда + ПараметрыЗаписи.Шаг = 3; // Внешние ресурсы разрешены. Продолжить запись. + Иначе + Возврат; // Отменить запись. + КонецЕсли; + КонецЕсли; + + // Отключение архивации. + Если ПараметрыЗаписи.Шаг = 3 И ЖелательноОтключитьАрхивацию() Тогда + ПараметрыЗаписи.Шаг = 4; + // Вопрос. + ЗаголовокВопроса = НСтр("ru = 'Отключить архивацию'"); + ТекстВопроса = НСтр("ru = 'При публикации отчетов в папку рекомендуется отключать архивацию в ZIP.'"); + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Отключить архивацию в ZIP'")); + Кнопки.Добавить(КодВозвратаДиалога.Пропустить, НСтр("ru = 'Продолжить'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + + Обработчик = Новый ОписаниеОповещения("ЗаписатьНаКлиенте", ЭтотОбъект, ПараметрыЗаписи); + ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки, 60, КодВозвратаДиалога.Да, ЗаголовокВопроса); + ИначеЕсли ПараметрыЗаписи.Шаг = 3 Тогда + // Вопрос не нужен. + ПараметрыЗаписи.Шаг = 5; + ИначеЕсли ПараметрыЗаписи.Шаг = 4 Тогда + // Обработка ответа. + Если Результат = КодВозвратаДиалога.Да Тогда + Объект.Архивировать = Ложь; // Отключить архивацию. + ПараметрыЗаписи.Шаг = 5; // Продолжить запись. + ИначеЕсли Результат = КодВозвратаДиалога.Пропустить Тогда + ПараметрыЗаписи.Шаг = 5; // Продолжить запись без отключения архивации. + Иначе + Возврат; // Отменить запись. + КонецЕсли; + КонецЕсли; + + // Запись. + Если ПараметрыЗаписи.Шаг = 5 Тогда + ПараметрыЗаписи.Шаг = 6; + Успешно = Записать(ПараметрыЗаписи); + Если Не Успешно Тогда + Возврат; // Отменить запись. + КонецЕсли; + ИмяКоманды = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыЗаписи, "ИмяКоманды"); + Если ИмяКоманды = "КомандаВыполнитьСейчас" Тогда + ВыполнитьСейчас(); + ИначеЕсли ИмяКоманды = "КомандаЗаписатьИЗакрыть" Тогда + Закрыть(); + ИначеЕсли ИмяКоманды = "КомандаСобытияРассылки" Тогда + СобытияРассылки(); + ИначеЕсли ИмяКоманды = "КомандаПроверитьРассылку" Тогда + ПроверитьРассылку(ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыЗаписи, "ПараметрыДоставки")); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ТребуютсяРазрешенияНаРесурсыСервера() + Если Объект.ИспользоватьСетевойКаталог + И (ЗначениеЗаполнено(Объект.СетевойКаталогWindows) Или ЗначениеЗаполнено(Объект.СетевойКаталогLinux)) Тогда + // Публикация в сетевой каталог. Требуются разрешения. + Если ИзменилисьЗначенияРеквизитов("ИспользоватьСетевойКаталог, СетевойКаталогWindows, СетевойКаталогLinux") Тогда + // Пользователь менял значения проверяемых реквизитов. + Возврат Истина; + КонецЕсли; + КонецЕсли; + Если Объект.ИспользоватьFTPРесурс И ЗначениеЗаполнено(Объект.FTPСервер) Тогда + // Публикация в сетевой каталог. Требуются разрешения. + Если ИзменилисьЗначенияРеквизитов("ИспользоватьFTPРесурс, FTPСервер, FTPКаталог") Тогда + // Пользователь менял значения проверяемых реквизитов. + Возврат Истина; + КонецЕсли; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +&НаКлиенте +Функция ЖелательноОтключитьАрхивацию() + Если Объект.ИспользоватьПапку + И Объект.Архивировать + И (Объект.ТолькоУведомить Или Не Объект.ИспользоватьЭлектроннуюПочту) Тогда + // Публикация в папку с рассылкой уведомлений. Желательно отключить архивацию. + Если ИзменилисьЗначенияРеквизитов("ИспользоватьПапку, ИспользоватьЭлектроннуюПочту, ТолькоУведомить, Архивировать") Тогда + // Пользователь менял значения проверяемых реквизитов. + Возврат Истина; + КонецЕсли; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +&НаСервере +Функция РазрешенияНаРесурсыСервера() + РазрешенияНабор = РассылкаОтчетов.РазрешенияНаРесурсыСервера(Объект); + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + РазрешенияСсылка = МодульРаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(РазрешенияНабор, Объект.Ссылка); + РазрешенияМассивСсылок = Новый Массив; + РазрешенияМассивСсылок.Добавить(РазрешенияСсылка); + Возврат РазрешенияМассивСсылок; +КонецФункции + +&НаКлиенте +Функция ИзменилисьЗначенияРеквизитов(ИменаРеквизитов) + ИменаРеквизитов = СтрРазделить(ИменаРеквизитов, ",", Ложь); + Для Каждого ИмяРеквизита Из ИменаРеквизитов Цикл + ИмяРеквизита = СокрЛП(ИмяРеквизита); + Если Объект[ИмяРеквизита] <> ЗначенияРеквизитовДоИзменения[ИмяРеквизита] Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + Возврат Ложь; +КонецФункции + +&НаСервере +Процедура ЗафиксироватьЗначенияРеквизитовДоИзменения() + + ИменаРеквизитов = "ИспользоватьПапку, ИспользоватьЭлектроннуюПочту, ТолькоУведомить, Архивировать"; + ИменаРеквизитов = ИменаРеквизитов + ", ИспользоватьСетевойКаталог, СетевойКаталогWindows, СетевойКаталогLinux"; + ИменаРеквизитов = ИменаРеквизитов + ", ИспользоватьFTPРесурс, FTPСервер, FTPКаталог"; + ЗначенияРеквизитовДоИзменения = Новый Структура(ИменаРеквизитов); + ЗаполнитьЗначенияСвойств(ЗначенияРеквизитовДоИзменения, Объект); + ЗначенияРеквизитовДоИзменения = Новый ФиксированнаяСтруктура(ЗначенияРеквизитовДоИзменения); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Копия команды "Выполнить сейчас" для поддержки асинхронности. + +&НаКлиенте +Процедура ВыполнитьСейчас() + МассивРассылок = Новый Массив; + МассивРассылок.Добавить(Объект.Ссылка); + + ПараметрыЗапуска = Новый Структура("МассивРассылок, Форма, ЭтоФормаЭлемента"); + ПараметрыЗапуска.МассивРассылок = МассивРассылок; + ПараметрыЗапуска.Форма = ЭтотОбъект; + ПараметрыЗапуска.ЭтоФормаЭлемента = Истина; + + РассылкаОтчетовКлиент.ВыполнитьСейчас(ПараметрыЗапуска); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Копия команды "События рассылки..." для поддержки асинхронности. + +&НаКлиенте +Процедура СобытияРассылки() + ПараметрыФормыЖурналаРегистрации = ПараметрыЖурналаРегистрации(Объект.Ссылка); + Если ПараметрыФормыЖурналаРегистрации = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Рассылка еще не выполнялась.'")); + Возврат; + КонецЕсли; + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", ПараметрыФормыЖурналаРегистрации, ЭтотОбъект); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПараметрыЖурналаРегистрации(Рассылка) + Возврат РассылкаОтчетов.ПараметрыЖурналаРегистрации(Рассылка); +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..5d310403 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" @@ -0,0 +1,38 @@ + +

Предназначен для подготовки рассылок с целью автоматического формирования отчетов и доставки сформированных отчетов получателям.

+

Открывается по команде Рассылки отчетов из раздела Сервисные подсистемы.

+

Программа содержит большое количество отчетов. Зачастую пользователям нужно периодически получать один и тот же отчет. Например, в начале каждого рабочего дня менеджеру нужно видеть текущее состояние взаиморасчетов со своими клиентами. Или в конце каждой недели директор хочет видеть состояние основных финансовых показателей фирмы.

+

Рассылка отчетов позволяет автоматизировать этот процесс так, что, не открывая программу, можно получить в нужное время готовый отчет на свою электронную почту или в определенный каталог в виде файла.

+

Возможность создать несколько рассылок упрощает работу. Каждая отдельная рассылка, как правило, объединяет несколько отчетов, или несколько получателей, или имеет особенную периодичность доставки.

+

Например, одна рассылка может быть предназначена исключительно для директора и руководства фирмы. Другая рассылка может содержать отчеты, которые ежедневно отправляются некоторым сотрудникам. Третья рассылка может содержать отчеты, формируемые для контрагентов по их требованию.

+

Подготовленные рассылки отчетов могут выполняться автоматически по расписанию с помощью регламентного задания "Рассылка отчетов" или запускаться вручную.

+

В списке выводится:

+
  • Наименование - полное наименование рассылки или группы рассылок; +
  • +
  • Подготовлена - флажок готовности рассылки к выполнению. Неподготовленные рассылки не будут выполнены; +
  • +
  • Последний запуск - дата и время последнего запуска рассылки, в этом же поле выводится значок , если рассылка прошла неудачно. +
  • +
  • Расписание - расписание рассылки, представленное в виде текста; +
  • +
  • С помощью команды Еще - Изменить форму можно вывести дополнительную информацию о рассылках: +
    • Автор - автор рассылки, от имени которого рассылка будет выполняться по расписанию; +
    • +
    • Состояние - результат последнего запуска рассылки (принимает значение Выполнена или Не выполнена); +
    • +
    • Архивировать - в поле проставляется флажок, если в рассылке установлен флажок Архивировать в ZIP; +
    • +
    • Кому - указывается справочник, из которого выбирались получатели рассылки; +
    • +
    • Почтовый адрес - если отправлялось по электронной почте, в поле проставляется значение Электронная почта.

Ввод рассылки

+
  • +
    Нажмите Создать, введите необходимые поля.

Группировка рассылок

+
  • +
    Нажмите Создать группу, заполните необходимые поля.
    +
  • +
  • +
    С помощью мыши перетащите рассылки в нужные группы.

Запуск рассылок

+
  • Нажмите Выполнить сейчас, для того чтобы запустить выбранные рассылки и группы рассылок от имени текущего пользователя в любой момент времени.

Просмотр событий рассылки

+
  • +
    Для расследования ошибок, возникших при выполнении рассылки, предусмотрена кнопка События рассылки, которая показывает события журнала регистрации с отбором по этой рассылке.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..0c7497f1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,89 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Отчеты.*"); + Результат.Добавить("ФорматыОтчетов.*"); + Результат.Добавить("Получатели.*"); + + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЭтоАвторизованныйПользователь(Автор) + | ИЛИ Личная = ЛОЖЬ + | ИЛИ ЭтоГруппа = ИСТИНА"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ЛичныеРассылки"; + Элемент.Наименование = НСтр("ru = 'Личные рассылки'", ОбщегоНазначения.КодОсновногоЯзыка()); + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" new file mode 100644 index 00000000..79e228d5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/ObjectModule.bsl" @@ -0,0 +1,150 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + // Вызывается непосредственно до записи объекта в базу данных. + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + // Создание регламентного задания - пустышки (для хранения его идентификатора в данных). + УстановитьПривилегированныйРежим(Истина); + Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(РегламентноеЗадание); + + Если Задание = Неопределено Тогда + // Из-за выполнения индивидуального регламентного задания непосредственно в необходимой области модели сервиса. + // Создание регламентного задания осуществляется платформенным способом, + // а не через программный интерфейс общего модуля РегламентныеЗадания. + + Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов); + Задание.ИмяПользователя = РассылкаОтчетов.ИмяПользователяИБ(Автор); + Задание.Использование = Ложь; + Задание.Наименование = ПредставлениеЗаданияПоРассылке(Наименование); + Задание.Записать(); + + РегламентноеЗадание = Задание.УникальныйИдентификатор; + КонецЕсли; + + УстановитьПривилегированныйРежим(Ложь); + + // Соответствие флага подготовленности рассылки и задания пометке удаления рассылки. + Если ПометкаУдаления И Подготовлена Тогда + Подготовлена = Ложь; + КонецЕсли; + + // Соответствие группы признаку личной рассылки по электронной почте. + // Пользовательские проверки расположены в форме элемента. + // Эти проверки обеспечивают жесткие привязки. + ВыбранаГруппаЛичныхРассылок = (Родитель = Справочники.РассылкиОтчетов.ЛичныеРассылки); + Если Личная <> ВыбранаГруппаЛичныхРассылок Тогда + Родитель = ?(Личная, Справочники.РассылкиОтчетов.ЛичныеРассылки, Справочники.РассылкиОтчетов.ПустаяСсылка()); + КонецЕсли; +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(РегламентноеЗадание); + Если Задание <> Неопределено Тогда + Задание.Удалить(); + КонецЕсли; + + ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища(Ссылка); +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + РегламентноеЗадание = Неопределено; +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + // Вызывается непосредственно после записи объекта в базу данных. + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(РегламентноеЗадание); + Если Задание <> Неопределено Тогда + ЗаданиеИзменено = Ложь; + + ВключитьЗадание = ВыполнятьПоРасписанию И Подготовлена; + Если Задание.Использование <> ВключитьЗадание Тогда + Задание.Использование = ВключитьЗадание; + ЗаданиеИзменено = Истина; + КонецЕсли; + + // Расписание устанавливается в форме элемента. + Если ДополнительныеСвойства.Свойство("Расписание") + И ТипЗнч(ДополнительныеСвойства.Расписание) = Тип("РасписаниеРегламентногоЗадания") + И Строка(ДополнительныеСвойства.Расписание) <> Строка(Задание.Расписание) Тогда + Задание.Расписание = ДополнительныеСвойства.Расписание; + ЗаданиеИзменено = Истина; + КонецЕсли; + + ИмяПользователя = РассылкаОтчетов.ИмяПользователяИБ(Автор); + Если Задание.ИмяПользователя <> ИмяПользователя Тогда + Задание.ИмяПользователя = ИмяПользователя; + ЗаданиеИзменено = Истина; + КонецЕсли; + + НаименованиеЗадания = ПредставлениеЗаданияПоРассылке(Наименование); + Если Задание.Наименование <> НаименованиеЗадания Тогда + Задание.Наименование = НаименованиеЗадания; + ЗаданиеИзменено = Истина; + КонецЕсли; + + Если Задание.Параметры.Количество() <> 1 ИЛИ Задание.Параметры[0] <> Ссылка Тогда + ПараметрыЗадания = Новый Массив; + ПараметрыЗадания.Добавить(Ссылка); + Задание.Параметры = ПараметрыЗадания; + ЗаданиеИзменено = Истина; + КонецЕсли; + + Если ЗаданиеИзменено Тогда + Задание.Записать(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ПредставлениеЗаданияПоРассылке(НаименованиеРассылки) + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Рассылка отчетов: %1'"), СокрЛП(НаименованиеРассылки)); +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..6b3ca5c2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\240\320\260\321\201\321\201\321\213\320\273\320\272\320\270\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" @@ -0,0 +1,1184 @@ + + + + + + + + + + РассылкиОтчетов + + ru + Рассылки отчетов + + true + Catalog.РассылкиОтчетов.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа + + + ru + Родитель рассылки отчетов или группы рассылок отчетов + + + Catalog.РассылкиОтчетов.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование + + + ru + Краткое представление рассылки отчетов. +Может использоваться в теме или тексте письма при доставке по почте. + + + Use + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Рассылка отчетов + + true + 2 + true + 100 + String + Variable + AsDescription + + + ЛичныеРассылки + Личные рассылки + + + + true + + + AutoUpdate + InDialog + BothWays + Catalog.РассылкиОтчетов.Form.ФормаЭлемента + Catalog.РассылкиОтчетов.Form.ФормаГруппы + Catalog.РассылкиОтчетов.Form.ФормаСписка + Catalog.РассылкиОтчетов.Form.ФормаСписка + Catalog.РассылкиОтчетов.Form.ФормаВыбораГруппы + + FTPКаталог + + ru + Каталог + + + String + + 200 + + + + ru + Каталог на FTP сервере, в который публикуются отчеты. + + + + + + + Use + Use + + + FTPЛогин + + ru + Логин + + + String + + 50 + + + + ru + Имя пользователя FTP сервера. + + + + + + + Use + + + FTPПассивноеСоединение + + ru + Пассивное соединение + + + Boolean + + + ru + Если флажок установлен то при соединении по FTP сервер открывает порт и ожидает подключения клиента. Рекомендуется включать если клиент не может принять входящее TCP-соединение (например, если входящие соединения блокируются сетевым экраном). + + + + + Use + Use + + + FTPПорт + + ru + Порт + + + Number + + 5 + true + + + + ru + Порт FTP сервера может быть задан в диапазоне от 0 до 65535. + + + 0 + + + 65535 + + true + + 21 + + Use + + + FTPСервер + + ru + Сервер + + + String + + 100 + + + + ru + FTP Сервер. + + + + + + + Use + Use + + + Автор + + ru + Ответственный + + + CatalogRef.Пользователи + + + ru + При выполнении по расписанию отчеты формируются с правами ответственного за рассылку + + + + ShowError + + Index + Use + Use + + + АдресОтвета + + ru + Адрес ответа + + + String + + 100 + + + + ru + E-mail адрес, на который будут приходить ответы на рассылку + + + + + + + Use + Use + + + Архивировать + + ru + Архивировать + + + Boolean + + + ru + Архивировать файлы в ZIP при доставке + + + + true + + true + + Use + + + ВидПочтовогоАдресаПолучателей + + ru + Почтовый адрес + + + CatalogRef.ВидыКонтактнойИнформации + + + ru + Вид почтового адреса получателей рассылки + + + + Use + DontUse + + Use + Use + + + ВыполнятьПоРасписанию + + ru + Выполнять по расписанию + + + Boolean + + + ru + Рассылка будет выполняться автоматически по заданному расписанию + + + + + Index + Use + + + ИмяАрхива + + ru + Имя архива + + + String + + 75 + + + + ru + Имя ZIP архива + + + + + + + Use + Use + + + ИспользоватьFTPРесурс + + ru + Использовать FTP ресурс + + + Boolean + + + ru + Флажок доставки на FTP ресурс + + + + + Use + Use + + + ИспользоватьПапку + + ru + Использовать папку + + + Boolean + + + ru + Флажок доставки в папку программы + + + + + Use + Use + + + ИспользоватьСетевойКаталог + + ru + Использовать сетевой каталог + + + Boolean + + + ru + Флажок доставки в сетевой каталог + + + + + Use + Use + + + ИспользоватьЭлектроннуюПочту + + ru + Отправлять по электронной почте: + + + Boolean + + + ru + Флажок доставки по электронной почте + + + + true + + true + + Use + Use + + + КартинкиПисьмаВФорматеHTML + + ru + Картинки письма в формате HTML + + + ValueStorage + + + ru + Структура картинок, которые выводятся в теле письма. + + + + + Use + + + Личная + + ru + Личная + + + Boolean + + + ru + Если флажок установлен, то рассылка отчетов доступна только автору и администратору программы. + + + + + Index + Use + + + Папка + + ru + Папка + + + CatalogRef.ПапкиФайлов + + + ru + Папка программы для доставки отчетов + + + + + Use + + + ПериодичностьРасписания + + ru + Периодичность расписания + + + EnumRef.ПериодичностиРасписанийРассылокОтчетов + + + ru + Периодичность, с которой требуется выполнять рассылку по расписанию + + + + + Enum.ПериодичностиРасписанийРассылокОтчетов.EmptyRef + + Use + Use + + + Персонализирована + + ru + Персонализирована + + + Boolean + + + ru + Если флажок установлен, то рассылка работает в режиме "Свой отчет для каждого получателя". + + + + + Use + Use + + + ПисьмоВФорматеHTML + + ru + Письмо в формате HTML + + + Boolean + + + ru + Если флажок установлен, то в теле письма можно использовать оформление текста и картинки. + + + + true + + true + + Use + + + Подготовлена + + ru + Подготовлена + + + Boolean + + + ru + Готовность рассылки к выполнению + + + + true + + true + + Index + Use + + + РегламентноеЗадание + + ru + Регламентное задание + + + UUID + + + ru + Идентификатор регламентного задания, которое будет запускать эту рассылку отчетов. + + + + + Use + + + СетевойКаталогLinux + + ru + Сетевой каталог linux + + + String + + 200 + + + + ru + Сетевой каталог для доставки отчетов (используется серверами кластера под управлением ОС Linux). + + + + + + + Use + + + СетевойКаталогWindows + + ru + Сетевой каталог windows + + + String + + 200 + + + + ru + Сетевой каталог для доставки отчетов (используется серверами кластера под управлением ОС Windows). + + + + + + + Use + + + СкрытыеКопии + + ru + Отправлять письма через скрытые копии + + + Boolean + + + ru + Если флажок установлен, то получатели не увидят других получателей письма (увидят только себя). + + + + + Use + + + ТекстПисьма + + ru + Текст письма + + + String + + + + ru + Текст письма рассылки отчетов. + + + + + + + Use + Use + + + ТекстПисьмаВФорматеHTML + + ru + Текст письма в формате HTML + + + String + + + + ru + Тело письма рассылки отчетов с возможностью форматирования текста и вставки картинок. + + + + + + + Use + + + ТемаПисьма + + ru + Тема + + + String + + + + ru + Тема письма рассылки отчетов. + + + + + + + Use + Use + + + ТипПолучателейРассылки + + ru + Кому + + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + Тип получателей рассылки отчетов. + + + + + Use + + + ТолькоУведомить + + ru + Отправлять только уведомления + + + Boolean + + + ru + Если флажок установлен, то отчеты будут опубликованы, а в письмах будет указан только адрес их публикации. +Если флажок снят, то отчеты будут присоединены к письмам как вложения. + + + + + Use + Use + + + ТранслитерироватьИменаФайлов + + ru + Транслитерировать имена файлов + + + Boolean + + + ru + Сохраненные файлы будут иметь имена, содержащие только латинские буквы и цифры, для возможности переноса между различными операционными системами. Например, файл "Отчет.mxl" будет сохранен с именем "Otchet.mxl". + + + + + Use + Use + + + УчетнаяЗапись + + ru + От + + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + ru + Учетная запись отправителя + + + + + Отбор.ИспользоватьДляОтправки + + true + + + + Use + + + ВключатьДатуВИмяФайла + + ru + Включать дату в имя файла + + + Boolean + + + ru + Признак добавления к имени файла отчета даты рассылки + + + + + Use + Use + + + + + + + Отчеты + + ru + Отчеты + + + Use + LineNumber + + Use + + + + + Отчет + + ru + Отчет + + + CatalogRef.ДополнительныеОтчетыИОбработки + CatalogRef.ВариантыОтчетов + + + ru + Отчет, который будет сформирован при рассылке + + + + Use + Index + Use + + + ОтправлятьЕслиПустой + + ru + Отправлять пустой + + + Boolean + + + ru + Отправлять отчет даже если он не содержит данных. + + + + Use + Index + Use + + + Настройки + + ru + Настройки + + ПользовательскиеНастройкиКомпоновкиДанных или ТаблицаЗначений + + ValueStorage + + + ru + Пользовательские настройки, с которыми будет сформирован отчет + + + + Use + Use + + + + + + + + ФорматыОтчетов + + ru + Форматы отчетов + + + Use + LineNumber + + Use + + + + + Отчет + + ru + Отчет + + + CatalogRef.ДополнительныеОтчетыИОбработки + CatalogRef.ВариантыОтчетов + + + ru + Отчет, который будет сформирован при рассылке + + + + Use + Index + Use + + + Формат + + ru + Формат + + + EnumRef.ФорматыСохраненияОтчетов + + + ru + Формат, в котором будет сохранен отчет при рассылке + + + + ShowError + Use + Index + Use + + + + + + + + Получатели + + ru + Получатели + + + Use + LineNumber + + Use + + + + + Получатель + + ru + Получатель + + + DefinedType.ПолучательРассылки + + + ru + В зависимости от значения флажка "Исключен": +Когда Исключен = "Да" выбранный пользователь включается в список получателей рассылки. +Когда Исключен = "Нет" выбранный пользователь исключается из списка получателей рассылки даже если он включен. + + + + FoldersAndItems + Use + Index + Use + + + Исключен + + ru + Исключен + + + Boolean + + + ru + Исключенные получатели не участвуют в рассылке. + + + + Use + Index + Use + + + + ПараметрыFTP + + ru + Параметры FTP + + + + ru + + + PersonalComputer + MobileDevice + + + ПолучателиРассылки + + ru + Получатели рассылки + + + + ru + + + PersonalComputer + MobileDevice + + + Предупреждение + + ru + Предупреждение + + PersonalComputer + MobileDevice + + + ФормаВыбораГруппы + + ru + Форма выбора группы + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаГруппы + + ru + Форма группы + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ВыполнитьСейчас + + ru + Выполнить сейчас + + FormCommandBarImportant + + CatalogRef.РассылкиОтчетов + + Multiple + PictureAndText + + StdPicture.BusinessProcessStart + + + + + СобытияРассылки + + ru + События рассылки... + + FormCommandBarImportant + + CatalogRef.РассылкиОтчетов + + PictureAndText + + ru + Перейти в журнал регистрации с отбором по рассылке + + + StdPicture.EventLog + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..d59eeb69 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,533 @@ + + + + КоманднаяПанель + 26 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + ГруппаПользовательскихНастроек + 28 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 23 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 24 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + BeforeRowChange + СписокПередНачаломИзменения + + + true + true + + true + + СписокСтрокаПоиска + 30 + + СписокСтрокаПоискаРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 31 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 33 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 34 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 36 + + СписокУправлениеПоискомРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 37 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ + Комментарий + 8 + true + true + + true + + + + Items.Список.CurrentData.Комментарий + + + Left + + КомментарийExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ РАЗЛИЧНЫЕ + ИсполнителиЗадачПереопределяемый.РольИсполнителя КАК РольИсполнителя +ПОМЕСТИТЬ Исполнители +ИЗ + РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадачПереопределяемый + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый + ПО (ИсполнителиЗадачПереопределяемый.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка) +; + +ВЫБРАТЬ + СправочникРолиИсполнителейПереопределяемый.Ссылка, + СправочникРолиИсполнителейПереопределяемый.ПометкаУдаления, + СправочникРолиИсполнителейПереопределяемый.Предопределенный, + СправочникРолиИсполнителейПереопределяемый.Код, + СправочникРолиИсполнителейПереопределяемый.Наименование, + СправочникРолиИсполнителейПереопределяемый.ИспользуетсяБезОбъектовАдресации, + СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации, + СправочникРолиИсполнителейПереопределяемый.ТипыОсновногоОбъектаАдресации, + СправочникРолиИсполнителейПереопределяемый.ТипыДополнительногоОбъектаАдресации, + СправочникРолиИсполнителейПереопределяемый.Комментарий, + ВЫБОР + КОГДА СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации + ТОГДА ИСТИНА + КОГДА СправочникРолиИсполнителейПереопределяемый.Ссылка В + (ВЫБРАТЬ + Исполнители.РольИсполнителя + ИЗ + Исполнители + ГДЕ + Исполнители.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ЕстьИсполнители, + СправочникРолиИсполнителейПереопределяемый.ВнешняяРоль, + СправочникРолиИсполнителейПереопределяемый.КраткоеПредставление + ИЗ + Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначениеПереопределяемый + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый + ПО РолиИсполнителейНазначениеПереопределяемый.Ссылка = СправочникРолиИсполнителейПереопределяемый.Ссылка + Catalog.РолиИсполнителей + true + true + true + true + true + +
+ + ЭтоВнешнийПользователь + 2 + + Boolean + + + true + + + true + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..e1b12496 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,20 @@ + +

Предназначен для выбора роли исполнителя.

+

Открывается по кнопке Выбрать из поля Роль исполнителя бизнес-процессов и окон подбора ролей исполнителей.

+

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

+

Соответствие исполнителей ролям и объектам адресации задается перед началом работы с бизнес-процессами и задачами, используется программой для доставки поручений конкретным исполнителям.

+

Список ролей поставляется в составе программы, но может быть расширен при необходимости.

+

Роли, на которые не назначено ни одного исполнителя, выделяются красным. Не следует допускать таких ситуаций, так как это может привести к возникновению задач, не исполненных в срок. Для контроля таких задач предназначен отчет Зависшие задачи.

+

В списке выводится:

+
  • Наименование - полное наименование роли; +
  • +
  • Краткое представление - сокращенное наименование роли для удобства использования. По умолчанию в это поле автоматически копируется Код; +
  • +
  • Код - проставляется автоматически. +
  • +
  • Комментарий - описание роли, выводится в нижней части списка.

Выбор роли исполнителя

+
  • Выделите нужную роль, нажмите Выбрать. +
  • +
  • Также для выбора роли можно воспользоваться двойным щелчком мыши.

Ввод новой роли

+
  • Нажмите Создать, заполните необходимые поля.

См. также: 

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..e7646121 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,102 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + ТолькоПростыеРоли = Ложь; + + Если Параметры.Свойство("ТолькоПростыеРоли", ТолькоПростыеРоли) И ТолькоПростыеРоли = Истина Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ВнешняяРоль", Истина, , , Истина); + КонецЕсли; + + ЭтоВнешнийПользователь = Пользователи.ЭтоСеансВнешнегоПользователя(); + + Если ЭтоВнешнийПользователь Тогда + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы.КоманднаяПанель.ПодчиненныеЭлементы, "ФормаИзменить", + "Видимость", Ложь); + СтрокаОтбораВТекстеЗапроса = ОпределитьОтборДляВнешнегоПользователя(); + + Иначе + + СтрокаОтбораВТекстеЗапроса = " ГДЕ РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)"; + + КонецЕсли; + + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + СвойстваСписка.ОсновнаяТаблица = "Справочник.РолиИсполнителей"; + СвойстваСписка.ДинамическоеСчитываниеДанных = Истина; + СвойстваСписка.ТекстЗапроса = Список.ТекстЗапроса + СтрокаОтбораВТекстеЗапроса; + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ИзменениеТекстаЗапросаСпискаДляТекущегоЯзыка(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СписокПередНачаломИзменения(Элемент, Отказ) + + Если ЭтоВнешнийПользователь Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ОпределитьОтборДляВнешнегоПользователя() + + ТекущийВнешнийПользователь = ВнешниеПользователи.ТекущийВнешнийПользователь(); + + СтрокаОтбораВТекстеЗапроса = СтрЗаменить(" ГДЕ РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = ЗНАЧЕНИЕ(Справочник.%Имя%.ПустаяСсылка)", + "%Имя%", ТекущийВнешнийПользователь.ОбъектАвторизации.Метаданные().Имя); + + Возврат СтрокаОтбораВТекстеЗапроса; + +КонецФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ГруппаЭлементовОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаЭлементовОтбора .ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + + ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЕстьИсполнители"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВнешняяРоль"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.РольБезИсполнителей); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..21110642 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,780 @@ + + + + ГруппаПользовательскихНастроек + 30 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 32 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Основное + 17 + + Группа + 16 + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + КраткоеПредставление + 14 + true + true + + true + + + + Список.КраткоеПредставление + + + + КраткоеПредставлениеExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + КраткоеПредставлениеКонтекстноеМеню + 15 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Код + 6 + true + true + + true + + + + Список.Code + + + + КодExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ВнешняяРоль + 10 + + <key>ru</key> + <value>Внешняя</value> + + true + true + + + + Список.ВнешняяРоль + + + None + + ru + Внешняя роль, исполнители которой определены в другой информационной базе + + + ВнешняяРольExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + + ВнешняяРольКонтекстноеМеню + 11 + true + true + + true + + true + + CheckBoxField + Enter + true + + StdPicture.ExchangePlan + + Left + true + + + + ИспользуетсяБезОбъектовАдресации + 12 + + <key>ru</key> + <value>Без объектов</value> + + true + true + + + + Список.ИспользуетсяБезОбъектовАдресации + + + + ru + Используется с объектами адресации + + + ИспользуетсяБезОбъектовАдресацииExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + + ИспользуетсяБезОбъектовАдресацииКонтекстноеМеню + 13 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Ссылка + 27 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 28 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Информация о роли</value> + + + ГруппаExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + Комментарий + 8 + true + true + + + + Список.Комментарий + + + + КомментарийExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + 1 + true + + + true + true + + true + + + <key>ru</key> + <value>Основное</value> + + + ОсновноеExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокСтрокаПоиска + 34 + + СписокСтрокаПоискаРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 35 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 37 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 38 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 40 + + СписокУправлениеПоискомРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 41 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
+ None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
true
+ + ВЫБРАТЬ РАЗЛИЧНЫЕ + ИсполнителиЗадачПереопределяемый.РольИсполнителя КАК РольИсполнителя +ПОМЕСТИТЬ Исполнители +ИЗ + РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадачПереопределяемый + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый + ПО (ИсполнителиЗадачПереопределяемый.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка) +; + +ВЫБРАТЬ + СправочникРолиИсполнителейПереопределяемый.Ссылка, + СправочникРолиИсполнителейПереопределяемый.ПометкаУдаления, + СправочникРолиИсполнителейПереопределяемый.Предопределенный, + СправочникРолиИсполнителейПереопределяемый.Код, + СправочникРолиИсполнителейПереопределяемый.Наименование, + СправочникРолиИсполнителейПереопределяемый.ИспользуетсяБезОбъектовАдресации, + СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации, + СправочникРолиИсполнителейПереопределяемый.ТипыОсновногоОбъектаАдресации, + СправочникРолиИсполнителейПереопределяемый.ТипыДополнительногоОбъектаАдресации, + СправочникРолиИсполнителейПереопределяемый.Комментарий, + ВЫБОР + КОГДА СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации + ТОГДА ИСТИНА + КОГДА СправочникРолиИсполнителейПереопределяемый.Ссылка В + (ВЫБРАТЬ + Исполнители.РольИсполнителя + ИЗ + Исполнители + ГДЕ + Исполнители.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ЕстьИсполнители, + СправочникРолиИсполнителейПереопределяемый.ВнешняяРоль, + СправочникРолиИсполнителейПереопределяемый.КраткоеПредставление +ИЗ + Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначениеПереопределяемый + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый + ПО РолиИсполнителейНазначениеПереопределяемый.Ссылка = СправочникРолиИсполнителейПереопределяемый.Ссылка +ГДЕ + РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = Значение(Справочник.Пользователи.ПустаяСсылка) + Catalog.РолиИсполнителей + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..859188f9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,146 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + НастроитьОтображениеСпискаРолей(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "Запись_НаборКонстант" И Источник = "ИспользоватьВнешнихПользователей" Тогда + НастроитьОтображениеСпискаРолей(); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура НастроитьОтображениеСпискаРолей() + + ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ + | ИсполнителиЗадач.РольИсполнителя КАК РольИсполнителя + |ПОМЕСТИТЬ Исполнители + |ИЗ + | РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадач + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей + | ПО ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка + |;"; + + Если ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда + + ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ + | СправочникРолиИсполнителей.Ссылка, + | СправочникРолиИсполнителей.ПометкаУдаления, + | СправочникРолиИсполнителей.Предопределенный, + | СправочникРолиИсполнителей.Код, + | СправочникРолиИсполнителей.Наименование, + | СправочникРолиИсполнителей.ИспользуетсяБезОбъектовАдресации, + | СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации, + | СправочникРолиИсполнителей.ТипыОсновногоОбъектаАдресации, + | СправочникРолиИсполнителей.ТипыДополнительногоОбъектаАдресации, + | СправочникРолиИсполнителей.Комментарий, + | ВЫБОР + | КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации + | ТОГДА ИСТИНА + | КОГДА СправочникРолиИсполнителей.Ссылка В + | (ВЫБРАТЬ + | Исполнители.РольИсполнителя + | ИЗ + | Исполнители КАК Исполнители + | ГДЕ + | Исполнители.РольИсполнителя = СправочникРолиИсполнителей.Ссылка) + | ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ЕстьИсполнители, + | СправочникРолиИсполнителей.ВнешняяРоль, + | СправочникРолиИсполнителей.КраткоеПредставление + |ИЗ + | Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей"; + + Иначе + + ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ + | СправочникРолиИсполнителей.Ссылка, + | СправочникРолиИсполнителей.ПометкаУдаления, + | СправочникРолиИсполнителей.Предопределенный, + | СправочникРолиИсполнителей.Код, + | СправочникРолиИсполнителей.Наименование, + | СправочникРолиИсполнителей.ИспользуетсяБезОбъектовАдресации, + | СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации, + | СправочникРолиИсполнителей.ТипыОсновногоОбъектаАдресации, + | СправочникРолиИсполнителей.ТипыДополнительногоОбъектаАдресации, + | СправочникРолиИсполнителей.Комментарий, + | ВЫБОР + | КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации + | ТОГДА ИСТИНА + | КОГДА СправочникРолиИсполнителей.Ссылка В + | (ВЫБРАТЬ + | Исполнители.РольИсполнителя + | ИЗ + | Исполнители КАК Исполнители + | ГДЕ + | Исполнители.РольИсполнителя = СправочникРолиИсполнителей.Ссылка) + | ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ЕстьИсполнители, + | СправочникРолиИсполнителей.ВнешняяРоль, + | СправочникРолиИсполнителей.КраткоеПредставление + |ИЗ + | Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей + | ПО РолиИсполнителейНазначение.Ссылка = СправочникРолиИсполнителей.Ссылка + |ГДЕ + | РолиИсполнителейНазначение.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)"; + КонецЕсли; + + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + СвойстваСписка.ОсновнаяТаблица = "Справочник.РолиИсполнителей"; + СвойстваСписка.ДинамическоеСчитываниеДанных = Истина; + СвойстваСписка.ТекстЗапроса = ТекстЗапроса; + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ГруппаЭлементовОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаЭлементовОтбора .ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + + ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЕстьИсполнители"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВнешняяРоль"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.РольБезИсполнителей); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..b7500c68 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,914 @@ + + + + ГруппаШапка + 24 + + НаименованиеИСокращение + 35 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + КраткоеПредставление + 33 + true + true + + true + + + + Объект.КраткоеПредставление + + + 2 + + КраткоеПредставлениеExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + КраткоеПредставлениеКонтекстноеМеню + 34 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование и сокращение</value> + + + НаименованиеИСокращениеExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ГруппаНазначение + 57 + + ДекорацияНазначение + 59 + + <key>ru</key> + <value>Назначение:</value> + + true + true + + true + + + ДекорацияНазначениеРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияНазначениеКонтекстноеМеню + 60 + true + true + + true + + true + + Label + true + + Left + + + + ВыбратьНазначение + 62 + true + true + + true + + + ВыбратьНазначениеРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ВыбратьНазначение + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Назначение</value> + + + ГруппаНазначениеРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаАдресации + 23 + + ИспользуетсяБезКонтекстаДругихИзмеренийАдресации + 5 + + <key>ru</key> + <value>Роль может назначаться исполнителям без указания уточняющих объектов</value> + + true + true + + true + + + + Объект.ИспользуетсяБезОбъектовАдресации + + + Right + + ru + Роль может назначаться исполнителям без указания других объектов адресации (основного или дополнительного). + + + ИспользуетсяБезКонтекстаДругихИзмеренийАдресацииExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + + ИспользуетсяБезКонтекстаДругихИзмеренийАдресацииКонтекстноеМеню + 6 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ИспользуетсяВКонтекстеДругихИзмеренийАдресации + 7 + + <key>ru</key> + <value>Роль назначается исполнителям с обязательным уточнением</value> + + true + true + + true + + + + Объект.ИспользуетсяСОбъектамиАдресации + + + Right + + ru + Роль может назначаться исполнителям с указанием определенных объектов адресации. + + Button + + OnChange + ИспользуетсяВКонтекстеДругихИзмеренийАдресацииПриИзменении + + + ИспользуетсяВКонтекстеДругихИзмеренийАдресацииExtendedTooltip + 50 + + <key>ru</key> + <value>В ряде случаев, роли исполнителя бывает недостаточно, чтобы точно определить круг исполнителей задач. +Для этого можно указать уточняющие основные и дополнительные объекты адресации.</value> + + true + true + + true + + Label + true + true + + Left + + + + ИспользуетсяВКонтекстеДругихИзмеренийАдресацииКонтекстноеМеню + 8 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаАдресацииДополнительно + 38 + + Пояснение + 36 + true + true + + true + + + ПояснениеExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеКонтекстноеМеню + 37 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + + ГруппаТипыОбъектовАдресации + 22 + + ТипыОсновногоОбъектаАдресации + 18 + true + true + + true + + + + Объект.ТипыОсновногоОбъектаАдресации + + + + ТипыОсновногоОбъектаАдресацииExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + + ТипыОсновногоОбъектаАдресацииКонтекстноеМеню + 19 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + + + + ТипыДополнительногоОбъектаАдресации + 20 + true + true + + true + + + + Объект.ТипыДополнительногоОбъектаАдресации + + + + ТипыДополнительногоОбъектаАдресацииExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + + ТипыДополнительногоОбъектаАдресацииКонтекстноеМеню + 21 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Типы объектов адресации</value> + + + ГруппаТипыОбъектовАдресацииExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Адресация задач исполнителям (дополнительно)</value> + + + ГруппаАдресацииДополнительноExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Адресация задач исполнителям</value> + + + ГруппаАдресацииExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + + + + ГруппаКомментарий + 27 + + Комментарий + 25 + true + true + + true + + + + Объект.Комментарий + + + Left + + КомментарийExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 26 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + КомментарийНачалоВыбора + + true + 2 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ГруппаКомментарийExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + ChoiceProcessing + ОбработкаВыбора + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.РолиИсполнителей + + + true + + + true + +
true
+ true +
+ + ПараметрыМультиязычныхРеквизитов + 2 + + + true + + + true + + + + ВыбратьНазначение + + <key>ru</key> + <value>Выбрать назначение</value> + + 1 + + ru + Выбрать назначение + + + true + + + + ВыбратьНазначение + + + DontUse + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..fd4b4137 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,26 @@ + +

Описание свойств роли исполнителя.

+

Роли исполнителей могут использоваться бизнес-процессами для ролевой маршрутизации задач. В этом случае поручение выдается не персонально исполнителю, а некоторой роли (например, Старший по залу), а соответствие пользователей ролям задается в списке Роли и исполнители задач и используется программой для доставки поручений конкретным пользователям.

+

В определенных случаях роли исполнителя бывает недостаточно, чтобы точно определить исполнителей. Тогда необходимо указывать основной и дополнительный объекты адресации. Например, у роли Руководитель проектов могут присутствовать основной объект адресации Подразделение и дополнительный объект Проект. Таким образом, с помощью объектов адресации происходит уточнение, руководителям какого проекта и в каком подразделении адресуется задача.

+

Список ролей поставляется в составе программы, но может быть расширен при необходимости.

+

Сведения о роли исполнителя

+
  • В поле Наименование напишите полное наименование роли; +
  • Код - проставляется автоматически. +
  • В поле Краткое представление напишите сокращенное наименование роли для удобства использования. По умолчанию в это поле автоматически копируется Код. +
  • В поле Назначение перейдите по ссылке, с помощью флажков выберите тип исполнителей, для которых предназначена данная роль (из перечисленных списков программы). Нажмите Выбрать. После этого ссылка перечисляет выбранные значения.

Адресация задач исполнителям

+
  • Включите соответствующий флажок, если Роль может назначаться исполнителям без указания уточняющих объектов; +
  • Для того чтобы выбрать объекты адресации, включите флажок Роль назначается исполнителям с обязательным уточнением. +
    • В поле Основные объекты адресации выберите из списка значение Все объекты адресации или конкретный объект адресации задач. +
    • Поле Дополнительные объекты адресации заполняется аналогично.
  • В поле Комментарий напишите дополнительные сведения о роли исполнителя.

Особенности взаимодействия с внешними пользователями

+
  • +
    Исполнителями некоторых бизнес-процессов могут и быть внешние пользователи (например, партнеры или контактные лица партнеров).
    +
  • +
    Как правило, внешним пользователям недоступны имена конкретных сотрудников компании, поэтому в качестве исполнителя они могут указывать только предназначенные для них роли исполнителей.
    +
  • +
    Для этого нужно настроить список таких ролей, указав, что они предназначены для определенных категорий внешних пользователей.

Исполнители роли

+
  • +
    Выполните соответствующую команду в панели навигации, для того чтобы просмотреть список Исполнители роли, а также назначить исполнителей на эту роль.
    +
  • +
    Также можно воспользоваться двойным щелчком левой кнопки мыши по роли. На роль может быть назначено несколько исполнителей.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..117d90fd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,156 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.ГруппаАдресации.Доступность = НЕ Объект.Предопределенный; + Если НЕ Объект.Предопределенный Тогда + Элементы.ГруппаТипыОбъектовАдресации.Доступность = Объект.ИспользуетсяСОбъектамиАдресации; + КонецЕсли; + + ОбновитьДоступность(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Запись_РолеваяАдресация", ПараметрыЗаписи, Объект.Ссылка); +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборУзловПлановОбмена") Тогда + Если ЗначениеЗаполнено(ВыбранноеЗначение) Тогда + Объект.УзелОбмена = ВыбранноеЗначение; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + Если Объект.ИспользуетсяСОбъектамиАдресации И НЕ Объект.ИспользуетсяБезОбъектовАдресации Тогда + Для каждого СтрокаТаблицы Из Объект.Назначение Цикл + Если ТипЗнч(СтрокаТаблицы.ТипПользователей) <> ТипЗнч(Справочники.Пользователи.ПустаяСсылка()) Тогда + НаименованиеНазначения = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТаблицы.ТипПользователей)).Представление(); + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль не может использоваться с обязательным уточнением для назначения: %1.'"), НаименованиеНазначения ),,, + "ИспользуетсяСОбъектамиАдресации", Отказ); + КонецЕсли; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ИспользуетсяВКонтекстеДругихИзмеренийАдресацииПриИзменении(Элемент) + Элементы.ГруппаТипыОбъектовАдресации.Доступность = Объект.ИспользуетсяСОбъектамиАдресации; +КонецПроцедуры + +&НаКлиенте +Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыбратьНазначение(Команда) + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораНазначения", ЭтотОбъект); + ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, НСтр("ru = 'Выбор назначения роли'"),,, ОписаниеОповещения); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбновитьДоступность() + + Элементы.ИспользуетсяБезКонтекстаДругихИзмеренийАдресации.Доступность = Истина; + Элементы.ИспользуетсяВКонтекстеДругихИзмеренийАдресации.Доступность = Истина; + Элементы.ТипыОсновногоОбъектаАдресации.Доступность = Истина; + Элементы.ТипыДополнительногоОбъектаАдресации.Доступность = Истина; + + Если ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда + Если Объект.Назначение.Количество() > 0 Тогда + МассивСинонимов = Новый Массив; + Для каждого СтрокаТаблицы Из Объект.Назначение Цикл + МассивСинонимов.Добавить(СтрокаТаблицы.ТипПользователей.Метаданные().Синоним); + КонецЦикла; + Элементы.ВыбратьНазначение.Заголовок = СтрСоединить(МассивСинонимов, ", "); + КонецЕсли; + Иначе + Элементы.ГруппаНазначение.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораНазначения(Результат, ДополнительныеПараметры) Экспорт + Если Результат <> Неопределено Тогда + Модифицированность = Истина; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Help/ru.html" new file mode 100644 index 00000000..7705ccad --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/Help/ru.html" @@ -0,0 +1,39 @@ + +

Предназначен для управления ролями исполнителей.

+

Открывается по команде Роли исполнителей в разделе Бизнес-процессы и задачи.

+

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

+

Соответствие исполнителей ролям и объектам адресации задается перед началом работы с бизнес-процессами и задачами, используется программой для доставки поручений конкретным исполнителям.

+

Список ролей поставляется в составе программы, но может быть расширен при необходимости.

+

Не следует допускать, чтобы в списке существовали роли, на которые не назначено ни одного исполнителя (выделяются красным), так как это может привести к возникновению задач, не исполненных в срок. Для контроля таких задач предназначен отчет Зависшие задачи.

+

Признак Внешняя роль указывает на то, что учет исполнителей этой роли ведется в другой информационной базе. Роли с установленным признаком Внешняя роль используются для интеграции различных информационных баз между собой.

+

Предопределенная роль Координатор выполнения задач может использоваться для получения уведомлений о просроченных и зависших задачах по всем или выбранным объектам адресации. По умолчанию, пользователи, назначенные на роль Координатор выполнения задач, получают уведомления по всем таким задачам, адресованным любым исполнителям. Если же требуется отслеживать просроченные и зависшие задачи только по определенным объектам адресации, то необходимо назначить себя на роль Координатор выполнения задач только по выбранным объектам адресации.

+

Программа отправляет уведомления Координаторам выполнения задач по электронной почте по адресу, указанному в контактной информации пользователя.

+

В списке выводится:

+
  • Наименование - полное наименование роли; +
  • Краткое представление - сокращенное наименование роли для удобства использования. По умолчанию в это поле автоматически копируется Код; +
  • Код - проставляется автоматически.

Пример использования ролей

+ + + + + + + + + + + + + + + + +
Роль исполнителяОсновной объект адресации
(тип, значение)
Дополнительный объект адресации
(тип, значение)
ПользовательПояснение
Координатор выполнения задач--Федоров К.Федоров К. получает уведомления по всем просроченным и зависшим задачам, кроме тех, которые поступают Иванову И. и Петрову А.
Координатор выполнения задачСтруктурное подразделение,
Отдел бухгалтерии
-Иванов И.Федоров К. получает уведомления по всем просроченным и зависшим задачам по структурному подразделению "Отдел бухгалтерии", кроме тех, которые поступают Петрову А.*
Координатор выполнения задачСтруктурное подразделение,
Отдел бухгалтерии
Проект,
Проект по внедрению системы бухучета
Петров А.Петров А. получает уведомления по всем просроченным и зависшим задачам по структурному подразделению "Отдел бухгалтерии" и проекту "Проект по внедрению системы бухучета".*

 

+

* если исключить Иванова И. и Петрова А. из роли Координатор выполнения задач, то Федоров К. будет получать уведомления также и по их объектам адресации.

+

Особенности взаимодействия с внешними пользователями

+
    +
  • Исполнителями некоторых бизнес-процессов могут быть и внешние пользователи (например, партнеры или контактные лица партнеров).
  • +
  • Как правило, внешним пользователям недоступны имена конкретных сотрудников компании, поэтому в качестве исполнителя они могут указывать только предназначенные для них роли исполнителей. +
  • Для этого нужно настроить список таких ролей, указав, что они предназначены для определенных категорий внешних пользователей.

Ввод новой роли

+
  • Нажмите Создать, заполните необходимые поля.

См. также: 

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..9820caf6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/ManagerModule.bsl" @@ -0,0 +1,226 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + + Результат.Добавить("КраткоеПредставление"); + Результат.Добавить("Комментарий"); + Результат.Добавить("ВнешняяРоль"); + Результат.Добавить("УзелОбмена"); + + Возврат Результат +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Заполнение предопределенных элементов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Пользователи.ЭтоСеансВнешнегоПользователя() Тогда + ТекущийПользователь = ВнешниеПользователи.ТекущийВнешнийПользователь(); + ОбъектАвторизации = Справочники[ТекущийПользователь.ОбъектАвторизации.Метаданные().Имя].ПустаяСсылка(); + Иначе + ОбъектАвторизации = Справочники.Пользователи.ПустаяСсылка(); + КонецЕсли; + + ТекстПоискаДляДополнительныхЯзыков = ""; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + + Если МодульМультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда + ТекстПоискаДляДополнительныхЯзыков = "РолиИсполнителей.НаименованиеЯзык1 ПОДОБНО &СтрокаПоиска"; + КонецЕсли; + + Если МодульМультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда + Если Не ПустаяСтрока(ТекстПоискаДляДополнительныхЯзыков) Тогда + ТекстПоискаДляДополнительныхЯзыков = ТекстПоискаДляДополнительныхЯзыков + " " + "ИЛИ" + " "; + КонецЕсли; + ТекстПоискаДляДополнительныхЯзыков = ТекстПоискаДляДополнительныхЯзыков + + " ИЛИ РолиИсполнителей.НаименованиеЯзык2 ПОДОБНО &СтрокаПоиска"; + КонецЕсли; + КонецЕсли; + + ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 20 + | РолиИсполнителей.Ссылка КАК Ссылка + |ИЗ + | Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК РолиИсполнителей + | ПО РолиИсполнителейНазначение.Ссылка = РолиИсполнителей.Ссылка + |ГДЕ + | РолиИсполнителейНазначение.ТипПользователей = &Тип + | И (РолиИсполнителей.Наименование ПОДОБНО &СтрокаПоиска + | ИЛИ &ПоискДляДополнительныхЯзыков + | ИЛИ РолиИсполнителей.Код ПОДОБНО &СтрокаПоиска) + | И НЕ РолиИсполнителей.Ссылка ЕСТЬ NULL"; + + Если ПустаяСтрока(ТекстПоискаДляДополнительныхЯзыков) Тогда + ТекстПоискаДляДополнительныхЯзыков = "ЛОЖЬ"; + КонецЕсли; + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоискДляДополнительныхЯзыков", ТекстПоискаДляДополнительныхЯзыков); + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Тип", ОбъектАвторизации); + Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%"); + РезультатЗапроса = Запрос.Выполнить().Выбрать(); + + ДанныеВыбора = Новый СписокЗначений; + Пока РезультатЗапроса.Следующий() Цикл + ДанныеВыбора.Добавить(РезультатЗапроса.Ссылка, РезультатЗапроса.Ссылка); + КонецЦикла; + +КонецПроцедуры + +#КонецЕсли + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка); + КонецЕсли; + #Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Истина; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ОтветственныйЗаКонтрольИсполнения"; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", + "ru='Координатор выполнения задач'", КодыЯзыков); // @НСтр-2 + КонецЕсли; + + Элемент.ИспользуетсяБезОбъектовАдресации = Истина; + Элемент.ИспользуетсяСОбъектамиАдресации = Истина; + Элемент.ВнешняяРоль = Ложь; + Элемент.Код = "000000001"; + Элемент.КраткоеПредставление = НСтр("ru = '000000001'", ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.ТипыОсновногоОбъектаАдресации = ПланыВидовХарактеристик.ОбъектыАдресацииЗадач.ВсеОбъектыАдресации; + + Элемент.Назначение = ТабличныеЧасти.Назначение.Скопировать(); + ЭлементТЧ = Элемент.Назначение.Добавить(); + ЭлементТЧ.ТипПользователей = Справочники.Пользователи.ПустаяСсылка(); + + БизнесПроцессыИЗадачиПереопределяемый.ПриНачальномЗаполненииРолейИсполнителей(КодыЯзыков, Элементы, ТабличныеЧасти); + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлемента +// +// Параметры: +// Объект - заполняемый объект. +// Данные - СтрокаТаблицыЗначений - данные заполнения объекта. +// ДополнительныеПараметры - Структура: +// * ПредопределенныеДанные - ТаблицаЗначений - данные заполненные в процедуре ПриНачальномЗаполненииЭлементов. +// +Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт + + БизнесПроцессыИЗадачиПереопределяемый.ПриНачальномЗаполненииРолиИсполнителя(Объект, Данные, ДополнительныеПараметры); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Регистрирует к обработке в обработчике обновления +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ОбновлениеИнформационнойБазы.ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры, Метаданные.Справочники.РолиИсполнителей); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ОбновлениеИнформационнойБазы.ЗаполнитьЭлементыНачальнымиДанными(Параметры, Метаданные.Справочники.РолиИсполнителей, Истина); + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..0d1346b0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/ObjectModule.bsl" @@ -0,0 +1,74 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если НЕ ИспользуетсяСОбъектамиАдресации И НЕ ИспользуетсяБезОбъектовАдресации Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Не указаны допустимые способы назначения исполнителей на роль: совместно с объектами адресации, без них или обоими способами.'"), + ЭтотОбъект, "ИспользуетсяБезОбъектовАдресации",,Отказ); + Возврат; + КонецЕсли; + + Если НЕ ИспользуетсяСОбъектамиАдресации Тогда + Возврат; + КонецЕсли; + + ЗаданыТипыОсновногоОбъектаАдресации = ТипыОсновногоОбъектаАдресации <> Неопределено И НЕ ТипыОсновногоОбъектаАдресации.Пустая(); + Если НЕ ЗаданыТипыОсновногоОбъектаАдресации Тогда + ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не указаны типы основного объекта адресации.'"), + ЭтотОбъект, "ТипыОсновногоОбъектаАдресации",,Отказ); + КонецЕсли; + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ТипыОсновногоОбъектаАдресации <> Неопределено И ТипыОсновногоОбъектаАдресации.Пустая() Тогда + ТипыОсновногоОбъектаАдресации = Неопределено; + КонецЕсли; + + Если ТипыДополнительногоОбъектаАдресации <> Неопределено И ТипыДополнительногоОбъектаАдресации.Пустая() Тогда + ТипыДополнительногоОбъектаАдресации = Неопределено; + КонецЕсли; + + Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда + Если Назначение.Найти(Справочники.Пользователи.ПустаяСсылка(), "ТипПользователей") = Неопределено Тогда + // При отключенных внешних пользователях, роль всегда должна быть назначена пользователям. + Назначение.Добавить().ТипПользователей = Справочники.Пользователи.ПустаяСсылка(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПриЧтенииПредставленийНаСервере() Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271.mdo" new file mode 100644 index 00000000..d2dcb744 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271/\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\265\320\271.mdo" @@ -0,0 +1,396 @@ + + + + + + + + + + РолиИсполнителей + + ru + Роли исполнителей + + true + Catalog.РолиИсполнителей.StandardAttribute.Description + Catalog.РолиИсполнителей.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Полное наименование роли (например, "Руководитель проекта") + + + ShowError + Use + + + + + Use + Code + + ru + Уникальный идентификатор объекта + + + + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Роль исполнителя + + + ru + Полное название роли исполнителей задач + + 2 + true + 9 + 150 + String + Variable + true + true + AsDescription + + + ОтветственныйЗаКонтрольИсполнения + Координатор выполнения задач + + 000000001 + + + + InDialog + BothWays + Catalog.РолиИсполнителей.Form.ФормаЭлемента + Catalog.РолиИсполнителей.Form.ФормаСписка + Catalog.РолиИсполнителей.Form.ФормаВыбора + DontUse + + ИспользуетсяБезОбъектовАдресации + + ru + Используется без объектов адресации + + + Boolean + + + ru + Роль может назначаться исполнителям задач без указания других объектов адресации (основного или дополнительного) + + + + true + + true + + Use + Use + + + КраткоеПредставление + + ru + Краткое представление + + + String + + 9 + + + + ru + Краткое представление роли (например, "РП" для "Руководителя проекта") + + + + + + + Use + Use + + + ИспользуетсяСОбъектамиАдресации + + ru + Используется с объектами адресации + + + Boolean + + + ru + Роль может назначаться исполнителям задач с указанием определенных объектов адресации + + + + true + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Служебный комментарий к роли исполнителей задач + + true + + + + + + Use + Use + + + ТипыДополнительногоОбъектаАдресации + + ru + Дополнительные объекты адресации + + + ChartOfCharacteristicTypesRef.ОбъектыАдресацииЗадач + + + ru + Возможные типы дополнительного объекта адресации для данной роли + + + + true + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.ВсеОбъектыАдресации + + Index + Use + Use + + + ТипыОсновногоОбъектаАдресации + + ru + Основные объекты адресации + + + ChartOfCharacteristicTypesRef.ОбъектыАдресацииЗадач + + + ru + Возможные типы основного объекта адресации для данной роли + + + + true + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.ВсеОбъектыАдресации + + Index + Use + Use + + + ВнешняяРоль + + ru + Внешняя роль + + + Boolean + + + ru + Внешняя роль, исполнители которой определены в другой информационной базе + + + + + Use + Use + + + УзелОбмена + + ru + Узел обмена + + + String + + 10 + + + + ru + Информационная база, в которой определены исполнители внешней роли + + + + + Use + Use + + + + + + + Назначение + + ru + Назначение + + + Use + LineNumber + + Use + + + + + ТипПользователей + + ru + Тип пользователей + + + DefinedType.Пользователь + + + ru + Тип объектов информационной базы, которые могут быть в составе участников ролей. + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + + + ru + + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\230\320\273\320\270\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\230\320\273\320\270\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270/Form.form" new file mode 100644 index 00000000..444958f9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\230\320\273\320\270\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270/Form.form" @@ -0,0 +1,3163 @@ + + + + <key>ru</key> + <value>Выбор сертификата для подписания данных</value> + + + ГлавныеСтраницы + 237 + + СтраницаВыборСертификата + 239 + + ГруппаСертификаты + 543 + + ГруппаПредупрежденияНедоступностиСертификатов + 785 + + ГруппаСертификатыНедоступныНаКлиенте + 793 + + СертификатыНедоступныНаКлиентеЗначок + 790 + + <key>ru</key> + <value>Сертификаты недоступны на клиенте значок</value> + + true + true + + true + + + СертификатыНедоступныНаКлиентеЗначокРасширеннаяПодсказка + 792 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНедоступныНаКлиентеЗначокКонтекстноеМеню + 791 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + СертификатыНедоступныНаКлиентеНадпись + 787 + + <key>ru</key> + <value>Сертификаты недоступны на компьютере</value> + + true + true + + true + + + СертификатыНедоступныНаКлиентеНадписьРасширеннаяПодсказка + 789 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНедоступныНаКлиентеНадписьКонтекстноеМеню + 788 + true + true + + true + + true + + Label + true + + + Click + СертификатыНедоступныНаКлиентеНадписьНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты недоступны на клиенте</value> + + + ГруппаСертификатыНедоступныНаКлиентеРасширеннаяПодсказка + 794 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаСертификатыНедоступныНаСервере + 795 + + СертификатыНедоступныНаСервереЗначок + 797 + true + true + + true + + + СертификатыНедоступныНаСервереЗначокРасширеннаяПодсказка + 799 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНедоступныНаСервереЗначокКонтекстноеМеню + 798 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + СертификатыНедоступныНаСервереНадпись + 800 + + <key>ru</key> + <value>Сертификаты недоступны на сервере</value> + + true + true + + true + + + СертификатыНедоступныНаСервереНадписьРасширеннаяПодсказка + 802 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНедоступныНаСервереНадписьКонтекстноеМеню + 801 + true + true + + true + + true + + Label + true + + + Click + СертификатыНедоступныНаСервереНадписьНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты недоступны на сервере</value> + + + ГруппаСертификатыНедоступныНаСервереРасширеннаяПодсказка + 796 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Предупреждения недоступности сертификатов</value> + + + ГруппаПредупрежденияНедоступностиСертификатовРасширеннаяПодсказка + 786 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Сертификаты + 217 + + <key>ru</key> + <value>Сертификаты</value> + + true + true + + true + + + Сертификаты + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + СертификатыПредставление + 221 + true + true + + true + + + + Сертификаты.Представление + + + + СертификатыПредставлениеРасширеннаяПодсказка + 223 + true + true + + true + + Label + true + true + + Left + + + + СертификатыПредставлениеКонтекстноеМеню + 222 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 35 + true + true + true + true + true + true + + + + СертификатыКемВыдан + 224 + true + true + + true + + + + Сертификаты.КемВыдан + + + + СертификатыКемВыданРасширеннаяПодсказка + 226 + true + true + + true + + Label + true + true + + Left + + + + СертификатыКемВыданКонтекстноеМеню + 225 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 13 + true + true + true + true + true + true + + + + СертификатыКоманднаяПанель + 219 + + Найти + 810 + true + true + + true + + + НайтиРасширеннаяПодсказка + 811 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ОтменитьПоиск + 812 + true + true + + true + + + ОтменитьПоискРасширеннаяПодсказка + 813 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + Обновить + 847 + true + true + + true + + + ОбновитьРасширеннаяПодсказка + 848 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПоказатьДанныеТекущегоСертификата + 845 + true + true + + true + + + ПоказатьДанныеТекущегоСертификатаРасширеннаяПодсказка + 846 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьДанныеТекущегоСертификата + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВывестиСписок + 814 + true + true + + true + + + ВывестиСписокРасширеннаяПодсказка + 815 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + Selection + СертификатыВыбор + + + OnActivateRow + СертификатыПриАктивизацииСтроки + + + true + true + + true + + СертификатыСтрокаПоиска + 761 + + СертификатыСтрокаПоискаРасширеннаяПодсказка + 763 + true + true + + true + + Label + true + true + + Left + + + + СертификатыСтрокаПоискаКонтекстноеМеню + 762 + true + true + + true + + true + + + true + + + + true + true + + true + + СертификатыСостояниеПросмотра + 764 + + СертификатыСостояниеПросмотраРасширеннаяПодсказка + 766 + true + true + + true + + Label + true + true + + Left + + + + СертификатыСостояниеПросмотраКонтекстноеМеню + 765 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СертификатыУправлениеПоиском + 767 + + СертификатыУправлениеПоискомРасширеннаяПодсказка + 769 + true + true + + true + + Label + true + true + + Left + + + + СертификатыУправлениеПоискомКонтекстноеМеню + 768 + true + true + + true + + true + + SearchControlAddition + + true + + + + СертификатыРасширеннаяПодсказка + 220 + true + true + + true + + Label + true + true + + Left + + + + СертификатыКонтекстноеМеню + 218 + + СертификатыКонтекстноеМенюОбновить + 737 + true + true + + true + + + СертификатыКонтекстноеМенюОбновитьРасширеннаяПодсказка + 738 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + + + СертификатыКонтекстноеМенюПоказатьДанныеТекущегоСертификата + 746 + true + true + + true + + + СертификатыКонтекстноеМенюПоказатьДанныеТекущегоСертификатаРасширеннаяПодсказка + 747 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьДанныеТекущегоСертификата + Auto + true + true + UserCmds + Auto + + + СертификатыКонтекстноеМенюСтандартныеКоманды + 739 + true + true + + true + + + <key>ru</key> + <value>Сертификаты контекстное меню стандартные команды</value> + + + СертификатыКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 740 + true + true + + true + + Label + true + true + + Left + + + + Item.Сертификаты + + + true + true + + true + + + true + true + true + true + true + true +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ + ПоказыватьВсе + 805 + true + true + + true + + + + ПоказыватьВсе + + + Right + + ru + Показывать все сертификаты без отбора (например, включая просроченные) + + + OnChange + ПоказыватьВсеПриИзменении + + + ПоказыватьВсеРасширеннаяПодсказка + 807 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьВсеКонтекстноеМеню + 806 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Инструкция + 748 + + <key>ru</key> + <value>Инструкции по работе с программами электронной подписи и шифрования</value> + + true + true + + true + + + ИнструкцияРасширеннаяПодсказка + 750 + true + true + + true + + Label + true + true + + Left + + + + ИнструкцияКонтекстноеМеню + 749 + true + true + + true + + true + + Label + true + + + Click + ИнструкцияНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Личные сертификаты на компьютере</value> + + + ГруппаСертификатыРасширеннаяПодсказка + 544 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + +
+ + КомандыДалееОтмена + 374 + + Далее + 370 + true + true + + true + + + ДалееРасширеннаяПодсказка + 371 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Далее + Auto + true + true + true + UserCmds + Auto + + + Отмена1 + 372 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + Отмена1РасширеннаяПодсказка + 373 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды далее отмена</value> + + + КомандыДалееОтменаРасширеннаяПодсказка + 375 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница выбор сертификата</value> + + + СтраницаВыборСертификатаРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + СтраницаУточнениеСвойствСертификата + 241 + + ГруппаУточнениеСвойствСертификата + 545 + + ГруппаОписаниеСертификата + 523 + + СертификатОписаниеДанных + 751 + + <key>ru</key> + <value>Сертификат описание данных</value> + + true + true + + true + + + СертификатОписаниеДанных + + true + None + + СертификатОписаниеДанныхСвойство + 755 + true + true + + true + + + + СертификатОписаниеДанных.Свойство + + + true + + СертификатОписаниеДанныхСвойствоРасширеннаяПодсказка + 757 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхСвойствоКонтекстноеМеню + 756 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 13 + true + true + false + true + true + true + true + + + + СертификатОписаниеДанныхЗначение + 758 + true + true + + true + + + + СертификатОписаниеДанных.Значение + + + true + + СертификатОписаниеДанныхЗначениеРасширеннаяПодсказка + 760 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхЗначениеКонтекстноеМеню + 759 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СертификатОписаниеДанныхКоманднаяПанель + 753 + true + true + + true + + Left + + + true + true + + true + + СертификатОписаниеДанныхСтрокаПоиска + 770 + + СертификатОписаниеДанныхСтрокаПоискаРасширеннаяПодсказка + 772 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхСтрокаПоискаКонтекстноеМеню + 771 + true + true + + true + + true + + + true + + + + true + true + + true + + СертификатОписаниеДанныхСостояниеПросмотра + 773 + + СертификатОписаниеДанныхСостояниеПросмотраРасширеннаяПодсказка + 775 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхСостояниеПросмотраКонтекстноеМеню + 774 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СертификатОписаниеДанныхУправлениеПоиском + 776 + + СертификатОписаниеДанныхУправлениеПоискомРасширеннаяПодсказка + 778 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхУправлениеПоискомКонтекстноеМеню + 777 + true + true + + true + + true + + SearchControlAddition + + true + + + + СертификатОписаниеДанныхРасширеннаяПодсказка + 754 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхКонтекстноеМеню + 752 + true + true + + true + + true + + true + true + true + 51 + 51 + 4 + true + true + MultiRow + Row + 1 + 1 + AutoUse + true + Auto + Auto + true + true + true + + + + ПоказатьДанныеСертификата + 744 + true + true + + true + + true + + ПоказатьДанныеСертификатаРасширеннаяПодсказка + 745 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПоказатьДанныеСертификата + Picture + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Описание сертификата</value> + + + ГруппаОписаниеСертификатаРасширеннаяПодсказка + 524 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + СертификатНаименование + 247 + true + true + + true + + + + СертификатНаименование + + + Button + + СертификатНаименованиеРасширеннаяПодсказка + 249 + + <key>ru</key> + <value>Уникальное представление сертификата используется в полях выбора при подписании и +шифровании. Оно формируется из фамилии, имени, организации, должности и срока действия. +Например: "Иванов Иван, ООО 1С, Программист, до 03.2017". + +Когда у пользователя два сертификата от разных удостоверяющих центров (УЦ), +тогда представление нужно дополнить именем УЦ. +Например: "Иванов Иван, ООО 1С, Программист, до 03.2017, УЦ 1С". + +Когда сертификат используется для специальной цели разными пользователями, +тогда представление нужно заменить на описание этой цели, например: +"Для подписания счетов-фактур, до 05.2019", +"Для подписания налоговой отчетности, до 12.2015".</value> + + true + true + + true + + Label + true + true + + Left + + + + СертификатНаименованиеКонтекстноеМеню + 248 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СертификатПользователь + 779 + true + true + + true + + + + СертификатПользователь + + + + ru + Текст подсказки устанавливается из реквизита справочника. + + + СертификатПользовательРасширеннаяПодсказка + 781 + true + true + + true + + Label + true + true + + Left + + + + СертификатПользовательКонтекстноеМеню + 780 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + СертификатОрганизация + 253 + true + true + + true + + + + СертификатОрганизация + + + + ru + Текст подсказки устанавливается из реквизита справочника. + + + СертификатОрганизацияРасширеннаяПодсказка + 255 + true + true + + true + + Label + true + true + + Left + + + + СертификатОрганизацияКонтекстноеМеню + 254 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + DontUse + + + + ГруппаУсиленнаяЗащитаЗакрытогоКлюча + 856 + + СертификатУсиленнаяЗащитаЗакрытогоКлюча + 528 + true + true + + true + + + + СертификатУсиленнаяЗащитаЗакрытогоКлюча + + + Right + + ru + Уточняет, что пароль к закрытому ключу сертификата будет вводиться в отдельном окне +программой электронной подписи и шифрования, а не программой 1С:Предприятие. + +Только для сертификатов, которые выпущены с усиленной защитой закрытого ключа. + + Button + + OnChange + СертификатУсиленнаяЗащитаЗакрытогоКлючаПриИзменении + + + СертификатУсиленнаяЗащитаЗакрытогоКлючаРасширеннаяПодсказка + 530 + true + true + + true + + Label + true + true + + Left + + + + СертификатУсиленнаяЗащитаЗакрытогоКлючаКонтекстноеМеню + 529 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГоризонтальнаяГруппа2 + 835 + + Пароль + 355 + true + true + + true + + + + Пароль + + + + ru + Введите пароль к закрытому ключу сертификата +для проверки ключа перед выбором сертификата. + + + OnChange + ПарольПриИзменении + + + ПарольРасширеннаяПодсказка + 357 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 356 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + ЗапомнитьПароль + 820 + + <key>ru</key> + <value>Запомнить на время сеанса</value> + + true + true + + true + + + + ЗапомнитьПароль + + + Right + + ru + Запомнить пароль сертификата до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее. + + Button + + OnChange + ЗапомнитьПарольПриИзменении + + + ЗапомнитьПарольРасширеннаяПодсказка + 822 + true + true + + true + + Label + true + true + + Left + + + + ЗапомнитьПарольКонтекстноеМеню + 821 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Горизонтальная группа 2</value> + + + ГоризонтальнаяГруппа2РасширеннаяПодсказка + 836 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ВертикальнаяГруппа3 + 852 + + ВертикальнаяГруппа2 + 843 + + Страницы + 816 + + СтраницаПояснениеУсиленногоПароля + 823 + + ПояснениеУсиленногоПароля + 825 + + <key>ru</key> + <value>Нажмите Выбрать, чтобы перейти к вводу пароля. +</value> + + true + true + + true + + + ru + Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, +так как для выбранного сертификата указана усиленная защита закрытого ключа. + + Button + + ПояснениеУсиленногоПароляРасширеннаяПодсказка + 827 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеУсиленногоПароляКонтекстноеМеню + 826 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница пояснение усиленного пароля</value> + + + СтраницаПояснениеУсиленногоПароляРасширеннаяПодсказка + 824 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаПояснениеУстановленногоПароля + 828 + + ПояснениеУстановленногоПароля + 830 + true + true + + true + + Button + + ПояснениеУстановленногоПароляРасширеннаяПодсказка + 832 + true + true + + true + + Label + true + true + + + URLProcessing + ПояснениеУстановленногоПароляРасширеннаяПодсказкаОбработкаНавигационнойСсылки + + Left + + + + ПояснениеУстановленногоПароляКонтекстноеМеню + 831 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + + Click + ПояснениеУстановленногоПароляНажатие + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница пояснение установленного пароля</value> + + + СтраницаПояснениеУстановленногоПароляРасширеннаяПодсказка + 829 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 817 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 2</value> + + + ВертикальнаяГруппа2РасширеннаяПодсказка + 844 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 3</value> + + + ВертикальнаяГруппа3РасширеннаяПодсказка + 853 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Усиленная защита закрытого ключа</value> + + + ГруппаУсиленнаяЗащитаЗакрытогоКлючаРасширеннаяПодсказка + 857 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Введите дополнительные сведения о сертификате</value> + + false + true + + ГруппаУточнениеСвойствСертификатаРасширеннаяПодсказка + 546 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + + + + КомандыНазадВыбратьОтмена + 535 + + Назад + 537 + true + true + + true + + + НазадРасширеннаяПодсказка + 538 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Назад + Auto + true + true + UserCmds + Auto + + + Выбрать + 539 + + <key>ru</key> + <value>Выбрать</value> + + true + true + + true + + + ВыбратьРасширеннаяПодсказка + 540 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + UserCmds + Auto + + + Отмена2 + 541 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + Отмена2РасширеннаяПодсказка + 542 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды назад выбрать отмена</value> + + + КомандыНазадВыбратьОтменаРасширеннаяПодсказка + 536 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница уточнение свойств сертификата</value> + + + СтраницаУточнениеСвойствСертификатаРасширеннаяПодсказка + 242 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Главные страницы</value> + + + ГлавныеСтраницыРасширеннаяПодсказка + 238 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Сертификаты + + <key>ru</key> + <value>Сертификаты</value> + + 8 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Представление</value> + + 1 + + String + + + + true + + + true + + + + КемВыдан + + <key>ru</key> + <value>Кем выдан</value> + + 2 + + String + + + + true + + + true + + + + Отпечаток + 4 + + String + + + + true + + + true + + + + НаКлиенте + 3 + + Boolean + + + true + + + true + + + + НаСервере + 5 + + Boolean + + + true + + + true + + + + ЭтоЗаявление + 6 + + Boolean + + + true + + + true + + + + ВОблачномСервисе + 7 + + Boolean + + + true + + + true + + + + + СертификатНаименование + + <key>ru</key> + <value>Представление</value> + + 9 + + String + + + + true + + + true + + ShowError + + + СертификатОрганизация + + <key>ru</key> + <value>Организация</value> + + 10 + + DefinedType.Организация + + + true + + + true + + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 13 + + String + + + + true + + + true + + + + СертификатУсиленнаяЗащитаЗакрытогоКлюча + + <key>ru</key> + <value>Усиленная защита закрытого ключа</value> + + 16 + + Boolean + + + true + + + true + + + + ОтпечатокВыбранногоСертификата + 4 + + String + + + + true + + + true + + + + Сертификат + 5 + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + + + + СертификатАдрес + 6 + + String + + + + true + + + true + + + + СертификатОтпечаток + 7 + + String + + + + true + + + true + + + + ДляШифрованияИРасшифровки + 11 + + + true + + + true + + + + СертификатПараметрыРеквизитов + 12 + + + true + + + true + + + + ДобавлениеВСписок + 14 + + Boolean + + + true + + + true + + + + ЛичныйСписокПриДобавлении + 17 + + Boolean + + + true + + + true + + + + СертификатОписаниеДанных + + <key>ru</key> + <value>Сертификат описание данных</value> + + 18 + + ValueTable + + + true + + + true + + + Свойство + + <key>ru</key> + <value>Свойство</value> + + 1 + + String + + + + true + + + true + + + + Значение + + <key>ru</key> + <value>Значение</value> + + 2 + + String + + + + true + + + true + + + + + СертификатПользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + CatalogRef.Пользователи + + + true + + + true + + + + СертификатНаКлиенте + 2 + + Boolean + + + true + + + true + + + + СертификатНаСервере + 3 + + Boolean + + + true + + + true + + + + ОшибкаПолученияСертификатовНаКлиенте + 15 + + + true + + + true + + + + ОшибкаПолученияСертификатовНаСервере + 19 + + + true + + + true + + + + ОтпечатокВыбранногоСертификатаНеНайден + 20 + + + true + + + true + + + + ЗапомнитьПароль + + <key>ru</key> + <value>Запомнить пароль</value> + + 21 + + Boolean + + + true + + + true + + + + ВыполнятьНаСервере + 22 + + + true + + + true + + + + ВернутьПароль + 23 + + Boolean + + + true + + + true + + + + ПоказыватьВсе + + <key>ru</key> + <value>Показывать все сертификаты</value> + + 24 + + Boolean + + + true + + + true + + + + ЕстьОрганизации + 25 + + Boolean + + + true + + + true + + + + СертификатВОблачномСервисе + 26 + + Boolean + + + true + + + true + + + + ОтборПоОрганизации + 27 + + + true + + + true + + + + Далее + + <key>ru</key> + <value>Далее ></value> + + 1 + + ru + Далее + + + true + + + + Далее + + + DontUse + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 5 + + true + + + + Выбрать + + + DontUse + + + Назад + + <key>ru</key> + <value>< Назад</value> + + 4 + + ru + Назад + + + true + + + + Назад + + + DontUse + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 3 + + ru + Обновить список сертификатов + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + DontUse + + + ПоказатьДанныеСертификата + + <key>ru</key> + <value>Показать данные сертификата</value> + + 6 + + ru + Показать данные сертификата, которые сохраняются в файле + + + true + + + CommonPicture.СертификатКлюча + + + + ПоказатьДанныеСертификата + + + DontUse + + + ПоказатьДанныеТекущегоСертификата + + <key>ru</key> + <value>Показать данные сертификата</value> + + 7 + + ru + Показать данные сертификата, которые сохраняются в файле + + + true + + + CommonPicture.СертификатКлюча + + + + ПоказатьДанныеТекущегоСертификата + + + DontUse + + + ДляШифрованияИРасшифровки + + + + ВыбранныйСертификат + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + + ДобавлениеВСписок + + Boolean + + + + ЛичныйСписокПриДобавлении + + Boolean + + + + СвойстваСертификатовНаКлиенте + + + + ОшибкаПолученияСертификатовНаКлиенте + + + + ОтпечатокВыбранногоСертификата + + String + + + + + ВыполнятьНаСервере + + + + ВернутьПароль + + Boolean + + + + ОтборПоОрганизации + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\230\320\273\320\270\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\230\320\273\320\270\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270/Module.bsl" new file mode 100644 index 00000000..826f352f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\230\320\273\320\270\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270/Module.bsl" @@ -0,0 +1,799 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ВнутренниеДанные, СвойстваПароля; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебный.НастроитьПояснениеВводаПароля(ЭтотОбъект, + Элементы.СертификатУсиленнаяЗащитаЗакрытогоКлюча.Имя, + Элементы.ПояснениеУсиленногоПароля.Имя); + + СертификатПараметрыРеквизитов = + ЭлектроннаяПодписьСлужебный.НовыеПараметрыРеквизитовСертификата(); + + Если Параметры.Свойство("Организация") Тогда + СертификатПараметрыРеквизитов.Вставить("Организация", Параметры.Организация); + КонецЕсли; + + ОтборПоОрганизации = Параметры.ОтборПоОрганизации; + + Если Параметры.ДобавлениеВСписок Тогда + ДобавлениеВСписок = Истина; + Элементы.Выбрать.Заголовок = НСтр("ru = 'Добавить'"); + + Элементы.ПояснениеУсиленногоПароля.Заголовок = + НСтр("ru = 'Нажмите Добавить, чтобы перейти к вводу пароля.'"); + + ЛичныйСписокПриДобавлении = Параметры.ЛичныйСписокПриДобавлении; + Элементы.ПоказыватьВсе.Подсказка = + НСтр("ru = 'Показать все сертификаты без отбора (например, включая добавленные и просроченные)'"); + КонецЕсли; + + ДляШифрованияИРасшифровки = Параметры.ДляШифрованияИРасшифровки; + ВернутьПароль = Параметры.ВернутьПароль; + + Если ДляШифрованияИРасшифровки = Истина Тогда + Если Параметры.ДобавлениеВСписок Тогда + Заголовок = НСтр("ru = 'Добавление сертификата для шифрования и расшифровки данных'"); + Иначе + Заголовок = НСтр("ru = 'Выбор сертификата для шифрования и расшифровки данных'"); + КонецЕсли; + ИначеЕсли ДляШифрованияИРасшифровки = Ложь Тогда + Если Параметры.ДобавлениеВСписок Тогда + Заголовок = НСтр("ru = 'Добавление сертификата для подписания данных'"); + КонецЕсли; + ИначеЕсли ЭлектроннаяПодпись.ИспользоватьШифрование() Тогда + Заголовок = НСтр("ru = 'Добавление сертификата для подписания и шифрования данных'"); + Иначе + Заголовок = НСтр("ru = 'Добавление сертификата для подписания данных'"); + КонецЕсли; + + Если ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда + Элементы.ГруппаСертификаты.Заголовок = + НСтр("ru = 'Личные сертификаты на компьютере и сервере'"); + КонецЕсли; + + ЕстьОрганизации = Не Метаданные.ОпределяемыеТипы.Организация.Тип.СодержитТип(Тип("Строка")); + Элементы.СертификатОрганизация.Видимость = ЕстьОрганизации; + + Элементы.СертификатПользователь.Подсказка = + Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Реквизиты.Пользователь.Подсказка; + + Элементы.СертификатОрганизация.Подсказка = + Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Реквизиты.Организация.Подсказка; + + Если ЗначениеЗаполнено(Параметры.ОтпечатокВыбранногоСертификата) Тогда + ОтпечатокВыбранногоСертификатаНеНайден = Ложь; + ОтпечатокВыбранногоСертификата = Параметры.ОтпечатокВыбранногоСертификата; + Иначе + ОтпечатокВыбранногоСертификата = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Параметры.ВыбранныйСертификат, "Отпечаток"); + КонецЕсли; + + ОшибкаПолученияСертификатовНаКлиенте = Параметры.ОшибкаПолученияСертификатовНаКлиенте; + ОбновитьСписокСертификатовНаСервере(Параметры.СвойстваСертификатовНаКлиенте); + + Если ЗначениеЗаполнено(Параметры.ОтпечатокВыбранногоСертификата) + И Параметры.ОтпечатокВыбранногоСертификата <> ОтпечатокВыбранногоСертификата Тогда + + ОтпечатокВыбранногоСертификатаНеНайден = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ВнутренниеДанные = Неопределено Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования") + Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux") Тогда + + ОбновитьПовторноИспользуемыеЗначения(); + ОбновитьСписокСертификатов(); + Возврат; + КонецЕсли; + + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + ОбновитьСписокСертификатов(); + Возврат; + КонецЕсли; + + Если ВРег(ИмяСобытия) = ВРег("Установка_РасширениеРаботыСКриптографией") Тогда + ОбновитьСписокСертификатов(); + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + // Проверка уникальности наименования. + ЭлектроннаяПодписьСлужебный.ПроверитьУникальностьПредставления( + СертификатНаименование, Сертификат, "СертификатНаименование", Отказ); + + // Проверка заполнения организации. + Если Элементы.СертификатОрганизация.Видимость + И Не Элементы.СертификатОрганизация.ТолькоПросмотр + И Элементы.СертификатОрганизация.АвтоОтметкаНезаполненного = Истина + И Не ЗначениеЗаполнено(СертификатОрганизация) Тогда + + ТекстСообщения = НСтр("ru = 'Поле Организация не заполнено.'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "СертификатОрганизация",, Отказ); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + ВозвращаемоеЗначение = Новый Структура; + ВозвращаемоеЗначение.Вставить("Ссылка", Сертификат); + ВозвращаемоеЗначение.Вставить("Добавлен", ЗначениеЗаполнено(Сертификат)); + Закрыть(ВозвращаемоеЗначение); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СертификатыНедоступныНаКлиентеНадписьНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Сертификаты недоступны на компьютере'"), + "", + ОшибкаПолученияСертификатовНаКлиенте, + Новый Структура); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатыНедоступныНаСервереНадписьНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Сертификаты недоступны на сервере'"), + "", + ОшибкаПолученияСертификатовНаСервере, + Новый Структура); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьВсеПриИзменении(Элемент) + + ОбновитьСписокСертификатов(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИнструкцияНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьИнструкциюПоРаботеСПрограммами(); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатУсиленнаяЗащитаЗакрытогоКлючаПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииСвойствСертификата", Истина)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПарольПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииРеквизитаПароль", Истина)); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗапомнитьПарольПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииРеквизитаЗапомнитьПароль", Истина)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПояснениеУстановленногоПароляНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПояснениеУстановленногоПароляНажатие(ЭтотОбъект, Элемент, СвойстваПароля); + +КонецПроцедуры + +&НаКлиенте +Процедура ПояснениеУстановленногоПароляРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.ПояснениеУстановленногоПароляОбработкаНавигационнойСсылки( + ЭтотОбъект, Элемент, НавигационнаяСсылка, СтандартнаяОбработка, СвойстваПароля); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСертификаты + +&НаКлиенте +Процедура СертификатыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Далее(Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатыПриАктивизацииСтроки(Элемент) + + Если Элементы.Сертификаты.ТекущиеДанные = Неопределено Тогда + ОтпечатокВыбранногоСертификата = ""; + Иначе + ОтпечатокВыбранногоСертификата = Элементы.Сертификаты.ТекущиеДанные.Отпечаток; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Обновить(Команда) + + ОбновитьСписокСертификатов(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьДанныеТекущегоСертификата(Команда) + + ТекущиеДанные = Элементы.Сертификаты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.Отпечаток, Не ТекущиеДанные.ЭтоЗаявление); + +КонецПроцедуры + +&НаКлиенте +Процедура Далее(Команда) + + Элементы.Далее.Доступность = Ложь; + + ПерейтиКВыборуТекущегоСертификата(Новый ОписаниеОповещения( + "ДалееПослеПереходаКВыборуТекущегоСертификата", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры Далее. +&НаКлиенте +Процедура ДалееПослеПереходаКВыборуТекущегоСертификата(Результат, Контекст) Экспорт + + Если Результат = Истина Тогда + Элементы.Далее.Доступность = Истина; + Возврат; + КонецЕсли; + + Контекст = Результат; + + Если Контекст.ОбновитьСписокСертификатов Тогда + ОбновитьСписокСертификатов(Новый ОписаниеОповещения( + "ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст)); + Иначе + ДалееПослеОбновленияСпискаСертификатов(Неопределено, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры Далее. +&НаКлиенте +Процедура ДалееПослеОбновленияСпискаСертификатов(Результат, Контекст) Экспорт + + ПоказатьПредупреждение(, Контекст.ОписаниеОшибки); + Элементы.Далее.Доступность = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура Назад(Команда) + + Элементы.ГлавныеСтраницы.ТекущаяСтраница = Элементы.СтраницаВыборСертификата; + Элементы.Далее.КнопкаПоУмолчанию = Истина; + + ОбновитьСписокСертификатов(); + +КонецПроцедуры + +&НаКлиенте +Процедура Выбрать(Команда) + + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + Если СертификатВОблачномСервисе Тогда + + МодульСервисКриптографииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииКлиент"); + МодульСервисКриптографииКлиент.ПроверитьСертификат( + Новый ОписаниеОповещения("ВыбратьПослеПроверкиСертификатаВМоделиСервиса", ЭтотОбъект, Неопределено), + ПолучитьИзВременногоХранилища(СертификатАдрес)); + + Иначе + + ПараметрыСертификата = ЭлектроннаяПодписьКлиент.ПараметрыЗаписиСертификата(); + ПараметрыСертификата.Наименование = СертификатНаименование; + ПараметрыСертификата.Пользователь = СертификатПользователь; + ПараметрыСертификата.Организация = СертификатОрганизация; + ПараметрыСертификата.УсиленнаяЗащитаЗакрытогоКлюча = СертификатУсиленнаяЗащитаЗакрытогоКлюча; + + ЭлектроннаяПодписьКлиент.ЗаписатьСертификатВСправочник( + Новый ОписаниеОповещения("ВыбратьПослеПроверкиСертификата", ЭтотОбъект, Неопределено), + СертификатАдрес, СвойстваПароля.Значение, ДляШифрованияИРасшифровки, ПараметрыСертификата); + + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры Выбрать. +&НаКлиенте +Процедура ВыбратьПослеПроверкиСертификата(Результат, Контекст) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + ДополнительныеПараметры = Новый Структура; + Если Не ЗначениеЗаполнено(Сертификат) Тогда + ДополнительныеПараметры.Вставить("ЭтоНовый"); + КонецЕсли; + + Сертификат = Результат; + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриУспешномВыполненииОперации", Истина)); + + ОповеститьОбИзменении(Сертификат); + Оповестить("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования", + ДополнительныеПараметры, Сертификат); + + Если ВернутьПароль Тогда + + ВнутренниеДанные.Вставить("ВыбранныйСертификат", Сертификат); + Если Не ЗапомнитьПароль Тогда + ВнутренниеДанные.Вставить("ВыбранныйСертификатПароль", СвойстваПароля.Значение); + КонецЕсли; + + ОповеститьОВыборе(Истина); + + Иначе + ОповеститьОВыборе(Сертификат); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьПослеПроверкиСертификатаВМоделиСервиса(Результат, Контекст) Экспорт + + ДополнительныеПараметры = Новый Структура; + Если Не Результат.Выполнено Тогда + ОписаниеОшибки = КраткоеПредставлениеОшибки(Результат.ИнформацияОбОшибке); + ИначеЕсли Не Результат.Действителен Тогда + ОписаниеОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОшибкиСервисаСертификатНедействителен(); + КонецЕсли; + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + Если ДляШифрованияИРасшифровки = Истина Тогда + ЗаголовокФормы = НСтр("ru = 'Проверка шифрования и расшифровки'"); + Иначе + ЗаголовокФормы = НСтр("ru = 'Проверка установки электронной подписи'"); + КонецЕсли; + ДополнительныеПараметры = Новый Структура("Сертификат", СертификатАдрес); + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(ЗаголовокФормы, + "", Новый Структура("ОписаниеОшибки", ОписаниеОшибки), Новый Структура, ДополнительныеПараметры); + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(Сертификат) Тогда + ДополнительныеПараметры.Вставить("ЭтоНовый"); + КонецЕсли; + + ЗаписатьСертификатВСправочникВМоделиСервиса(); + + ОповеститьОбИзменении(Сертификат); + Оповестить("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования", + ДополнительныеПараметры, Сертификат); + + ОповеститьОВыборе(Сертификат); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьДанныеСертификата(Команда) + + Если ЗначениеЗаполнено(СертификатАдрес) Тогда + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(СертификатАдрес, Истина); + Иначе + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(СертификатОтпечаток, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. +&НаКлиенте +Процедура ПродолжитьОткрытие(Оповещение, ОбщиеВнутренниеДанные) Экспорт +// АПК:78-вкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. + + ВнутренниеДанные = ОбщиеВнутренниеДанные; + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, СвойстваПароля); + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + + Если ОтпечатокВыбранногоСертификатаНеНайден = Неопределено + Или ОтпечатокВыбранногоСертификатаНеНайден = Истина Тогда + + ПродолжитьОткрытиеПослеПереходаКВыборуТекущегоСертификата(Неопределено, Контекст); + Иначе + ПерейтиКВыборуТекущегоСертификата(Новый ОписаниеОповещения( + "ПродолжитьОткрытиеПослеПереходаКВыборуТекущегоСертификата", ЭтотОбъект, Контекст)); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеПереходаКВыборуТекущегоСертификата(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("Структура") Тогда + ОповеститьОВыборе(Ложь); + Иначе + Открыть(); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + +КонецПроцедуры + +&НаСервере +Функция ЗаполнитьСвойстваТекущегоСертификатаНаСервере(Знач Отпечаток, СохраненныеСвойства); + + СертификатКриптографии = ЭлектроннаяПодписьСлужебный.ПолучитьСертификатПоОтпечатку(Отпечаток, Ложь); + Если СертификатКриптографии = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + СертификатАдрес = ПоместитьВоВременноеХранилище(СертификатКриптографии.Выгрузить(), + УникальныйИдентификатор); + + СертификатОтпечаток = Отпечаток; + + ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата(СертификатОписаниеДанных, + ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии)); + + СохраненныеСвойства = СохраненныеСвойстваСертификата(Отпечаток, + СертификатАдрес, СертификатПараметрыРеквизитов); + + Возврат Истина; + +КонецФункции + +&НаСервереБезКонтекста +Функция СохраненныеСвойстваСертификата(Знач Отпечаток, Знач Адрес, ПараметрыРеквизитов) + + Возврат ЭлектроннаяПодписьСлужебный.СохраненныеСвойстваСертификата(Отпечаток, Адрес, ПараметрыРеквизитов); + +КонецФункции + +&НаКлиенте +Процедура ОбновитьСписокСертификатов(Оповещение = Неопределено) + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте(Новый ОписаниеОповещения( + "ОбновитьСписокСертификатовПродолжение", ЭтотОбъект, Контекст), Истина, ПоказыватьВсе); + +КонецПроцедуры + +// Продолжение процедуры ОбновитьСписокСертификатов. +&НаКлиенте +Процедура ОбновитьСписокСертификатовПродолжение(Результат, Контекст) Экспорт + + ОшибкаПолученияСертификатовНаКлиенте = Результат.ОшибкаПолученияСертификатовНаКлиенте; + + ОбновитьСписокСертификатовНаСервере(Результат.СвойстваСертификатовНаКлиенте); + + Если Контекст.Оповещение <> Неопределено Тогда + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокСертификатовНаСервере(Знач СвойстваСертификатовНаКлиенте) + + ОшибкаПолученияСертификатовНаСервере = Новый Структура; + + ЭлектроннаяПодписьСлужебный.ОбновитьСписокСертификатов(Сертификаты, СвойстваСертификатовНаКлиенте, + ДобавлениеВСписок, Истина, ОшибкаПолученияСертификатовНаСервере, ПоказыватьВсе, ОтборПоОрганизации); + + Если ЗначениеЗаполнено(ОтпечатокВыбранногоСертификата) + И ( Элементы.Сертификаты.ТекущаяСтрока = Неопределено + Или Сертификаты.НайтиПоИдентификатору(Элементы.Сертификаты.ТекущаяСтрока) = Неопределено + Или Сертификаты.НайтиПоИдентификатору(Элементы.Сертификаты.ТекущаяСтрока).Отпечаток + <> ОтпечатокВыбранногоСертификата) Тогда + + Отбор = Новый Структура("Отпечаток", ОтпечатокВыбранногоСертификата); + Строки = Сертификаты.НайтиСтроки(Отбор); + Если Строки.Количество() > 0 Тогда + Элементы.Сертификаты.ТекущаяСтрока = Строки[0].ПолучитьИдентификатор(); + КонецЕсли; + КонецЕсли; + + Элементы.ГруппаСертификатыНедоступныНаКлиенте.Видимость = + ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаКлиенте); + + Элементы.ГруппаСертификатыНедоступныНаСервере.Видимость = + ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаСервере); + + Если Элементы.Сертификаты.ТекущаяСтрока = Неопределено Тогда + ОтпечатокВыбранногоСертификата = ""; + Иначе + Строка = Сертификаты.НайтиПоИдентификатору(Элементы.Сертификаты.ТекущаяСтрока); + ОтпечатокВыбранногоСертификата = ?(Строка = Неопределено, "", Строка.Отпечаток); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиКВыборуТекущегоСертификата(Оповещение) + + Результат = Новый Структура; + Результат.Вставить("ОписаниеОшибки", ""); + Результат.Вставить("ОбновитьСписокСертификатов", Ложь); + + Если Элементы.Сертификаты.ТекущиеДанные = Неопределено Тогда + Результат.ОписаниеОшибки = НСтр("ru = 'Выделите сертификат, который будет использоваться.'"); + ВыполнитьОбработкуОповещения(Оповещение, Результат); + Возврат; + КонецЕсли; + + ТекущиеДанные = Элементы.Сертификаты.ТекущиеДанные; + + Если ТекущиеДанные.ЭтоЗаявление Тогда + Результат.ОбновитьСписокСертификатов = Истина; + Результат.ОписаниеОшибки = + НСтр("ru = 'Для этого сертификата заявление на выпуск еще не исполнено. + |Откройте заявление на выпуск сертификата и выполните требуемые шаги.'"); + ВыполнитьОбработкуОповещения(Оповещение, Результат); + Возврат; + КонецЕсли; + + СертификатНаКлиенте = ТекущиеДанные.НаКлиенте; + СертификатНаСервере = ТекущиеДанные.НаСервере; + СертификатВОблачномСервисе = ТекущиеДанные.ВОблачномСервисе; + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + Контекст.Вставить("Результат", Результат); + Контекст.Вставить("ТекущиеДанные", ТекущиеДанные); + Контекст.Вставить("СохраненныеСвойства", Неопределено); + + Если СертификатНаСервере Тогда + Если ЗаполнитьСвойстваТекущегоСертификатаНаСервере(ТекущиеДанные.Отпечаток, Контекст.СохраненныеСвойства) Тогда + ПерейтиКВыборуТекущегоСертификатаПослеЗаполненияСвойствСертификата(Контекст); + Иначе + Результат.ОписаниеОшибки = НСтр("ru = 'Сертификат отсутствует на сервере (возможно удален).'"); + Результат.ОбновитьСписокСертификатов = Истина; + ВыполнитьОбработкуОповещения(Оповещение, Результат); + КонецЕсли; + Возврат; + КонецЕсли; + + Если ТекущиеДанные.ВОблачномСервисе Тогда + СтруктураПоиска = Новый Структура; + СтруктураПоиска.Вставить("Отпечаток", Base64Значение(ТекущиеДанные.Отпечаток)); + МодульХранилищеСертификатовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХранилищеСертификатовКлиент"); + МодульХранилищеСертификатовКлиент.НайтиСертификат(Новый ОписаниеОповещения( + "ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачномСервисе", ЭтотОбъект, Контекст), СтруктураПоиска); + Иначе + // СертификатНаКлиенте. + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСертификатПоОтпечатку( + Новый ОписаниеОповещения("ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификата", ЭтотОбъект, Контекст), + ТекущиеДанные.Отпечаток, Ложь, Неопределено); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПерейтиКВыборуТекущегоСертификата. +// +// Параметры: +// РезультатПоиска - СертификатКриптографии +// Контекст - Структура +// +&НаКлиенте +Процедура ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификата(РезультатПоиска, Контекст) Экспорт + + Если ТипЗнч(РезультатПоиска) <> Тип("СертификатКриптографии") Тогда + Если РезультатПоиска.Свойство("СертификатНеНайден") Тогда + Контекст.Результат.ОписаниеОшибки = НСтр("ru = 'Сертификат не установлен на компьютере (возможно удален).'"); + Иначе + Контекст.Результат.ОписаниеОшибки = РезультатПоиска.ОписаниеОшибки; + КонецЕсли; + Контекст.Результат.ОбновитьСписокСертификатов = Истина; + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Контекст.Результат); + Возврат; + КонецЕсли; + + Контекст.Вставить("СертификатКриптографии", РезультатПоиска); + + РезультатПоиска.НачатьВыгрузку(Новый ОписаниеОповещения( + "ПерейтиКВыборуТекущегоСертификатаПослеВыгрузкиСертификата", ЭтотОбъект, Контекст)); + +КонецПроцедуры + +// Продолжение процедуры ПерейтиКВыборуТекущегоСертификата. +// +// Параметры: +// РезультатПоиска - Структура: +// * Выполнено - Булево +// * ОписаниеОшибки - Структура: +// ** Описание - Строка +// Контекст - Структура +// +&НаКлиенте +Процедура ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачномСервисе(РезультатПоиска, Контекст) Экспорт + + Если Не РезультатПоиска.Выполнено Тогда + Контекст.Результат.ОписаниеОшибки = РезультатПоиска.ОписаниеОшибки.Описание; + Контекст.Результат.ОбновитьСписокСертификатов = Истина; + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Контекст.Результат); + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(РезультатПоиска.Сертификат) Тогда + Контекст.Результат.ОписаниеОшибки = НСтр("ru = 'Сертификат отсутствует в облачном сервисе (возможно удален).'"); + Контекст.Результат.ОбновитьСписокСертификатов = Истина; + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Контекст.Результат); + Возврат; + КонецЕсли; + + Контекст.Вставить("СертификатКриптографии", РезультатПоиска.Сертификат); + ПерейтиКВыборуТекущегоСертификатаПослеВыгрузкиСертификата(РезультатПоиска.Сертификат.Сертификат, Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПерейтиКВыборуТекущегоСертификата. +&НаКлиенте +Процедура ПерейтиКВыборуТекущегоСертификатаПослеВыгрузкиСертификата(ВыгруженныеДанные, Контекст) Экспорт + + СертификатАдрес = ПоместитьВоВременноеХранилище(ВыгруженныеДанные, УникальныйИдентификатор); + + СертификатОтпечаток = Контекст.ТекущиеДанные.Отпечаток; + + ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата(СертификатОписаниеДанных, + ЭлектроннаяПодписьКлиент.СвойстваСертификата(Контекст.СертификатКриптографии)); + + Контекст.СохраненныеСвойства = СохраненныеСвойстваСертификата(Контекст.ТекущиеДанные.Отпечаток, + СертификатАдрес, СертификатПараметрыРеквизитов); + + Если ЗначениеЗаполнено(ОтборПоОрганизации) Тогда + Контекст.СохраненныеСвойства.Вставить("Организация", ОтборПоОрганизации); + КонецЕсли; + + ПерейтиКВыборуТекущегоСертификатаПослеЗаполненияСвойствСертификата(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПерейтиКВыборуТекущегоСертификата. +&НаКлиенте +Процедура ПерейтиКВыборуТекущегоСертификатаПослеЗаполненияСвойствСертификата(Контекст) + + Если СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда + ПараметрыРеквизитов = СертификатПараметрыРеквизитов; // см. ЭлектроннаяПодписьСлужебный.НовыеПараметрыРеквизитовСертификата + Если ПараметрыРеквизитов.Наименование.ТолькоПросмотр Тогда + Элементы.СертификатНаименование.ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + + Если ЕстьОрганизации Тогда + Если СертификатПараметрыРеквизитов.Свойство("Организация") Тогда + Если Не СертификатПараметрыРеквизитов.Организация.Видимость Тогда + Элементы.СертификатОрганизация.Видимость = Ложь; + ИначеЕсли СертификатПараметрыРеквизитов.Организация.ТолькоПросмотр Тогда + Элементы.СертификатОрганизация.ТолькоПросмотр = Истина; + ИначеЕсли СертификатПараметрыРеквизитов.Организация.ПроверкаЗаполнения Тогда + Элементы.СертификатОрганизация.АвтоОтметкаНезаполненного = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если СертификатПараметрыРеквизитов.Свойство("УсиленнаяЗащитаЗакрытогоКлюча") Тогда + Если Не СертификатПараметрыРеквизитов.УсиленнаяЗащитаЗакрытогоКлюча.Видимость Тогда + Элементы.СертификатУсиленнаяЗащитаЗакрытогоКлюча.Видимость = Ложь; + ИначеЕсли СертификатПараметрыРеквизитов.УсиленнаяЗащитаЗакрытогоКлюча.ТолькоПросмотр Тогда + Элементы.СертификатУсиленнаяЗащитаЗакрытогоКлюча.ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + + Сертификат = Контекст.СохраненныеСвойства.Ссылка; + СертификатПользователь = Контекст.СохраненныеСвойства.Пользователь; + СертификатОрганизация = Контекст.СохраненныеСвойства.Организация; + СертификатНаименование = Контекст.СохраненныеСвойства.Наименование; + СертификатУсиленнаяЗащитаЗакрытогоКлюча = Контекст.СохраненныеСвойства.УсиленнаяЗащитаЗакрытогоКлюча; + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, СвойстваПароля); + + Элементы.ГлавныеСтраницы.ТекущаяСтраница = Элементы.СтраницаУточнениеСвойствСертификата; + Элементы.Выбрать.КнопкаПоУмолчанию = Истина; + + Если ДобавлениеВСписок Тогда + Строка = ?(ЗначениеЗаполнено(Сертификат), НСтр("ru = 'Обновить'"), НСтр("ru = 'Добавить'")); + Если Элементы.Выбрать.Заголовок <> Строка Тогда + Элементы.Выбрать.Заголовок = Строка; + КонецЕсли; + КонецЕсли; + + Если СертификатВОблачномСервисе Тогда + Элементы.ГруппаУсиленнаяЗащитаЗакрытогоКлюча.Видимость = Ложь; + Иначе + Элементы.ГруппаУсиленнаяЗащитаЗакрытогоКлюча.Видимость = Истина; + ПодключитьОбработчикОжидания("ОбработчикОжиданияАктивизироватьЭлементПароль", 0.1, Истина); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияАктивизироватьЭлементПароль() + + ТекущийЭлемент = Элементы.Пароль; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьСертификатВСправочникВМоделиСервиса() + + ПрограммаОблачногоСервиса = ЭлектроннаяПодписьСлужебный.ПрограммаОблачногоСервиса(); + СертификатУсиленнаяЗащитаЗакрытогоКлюча = Ложь; + + ЭлектроннаяПодписьСлужебный.ЗаписатьСертификатВСправочник(ЭтотОбъект, ПрограммаОблачногоСервиса, Ложь); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Form.form" new file mode 100644 index 00000000..52a11ef2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Form.form" @@ -0,0 +1,945 @@ + + + + Страницы + 13 + + СтраницаСпособДобавленияСертификата + 21 + + СпособДобавленияСертификата1 + 23 + true + true + + true + + + + СпособДобавленияСертификата + + + None + + OnChange + СпособДобавленияСертификатаПриИзменении + + + СпособДобавленияСертификата1РасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + СпособДобавленияСертификата1КонтекстноеМеню + 24 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Заявление на выпуск сертификата + + + ЗаявлениеНаВыпускСертификата + + + + + ru + Из установленных на компьютере + + + ИзУстановленныхНаКомпьютере + + + + + true + true + + true + + + <key>ru</key> + <value>Страница способ добавления сертификата</value> + + + СтраницаСпособДобавленияСертификатаРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаСпособДобавленияСертификатаБезШифрования + 42 + + СпособДобавленияСертификата2 + 44 + true + true + + true + + + + СпособДобавленияСертификата + + + None + + СпособДобавленияСертификата2РасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + СпособДобавленияСертификата2КонтекстноеМеню + 45 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Заявление на выпуск сертификата + + + ЗаявлениеНаВыпускСертификата + + + + + ru + Из установленных на компьютере + + + ДляПодписанияШифрованияИРасшифровки + + + + + true + true + + true + + + <key>ru</key> + <value>Страница способ добавления сертификата без шифрования</value> + + + СтраницаСпособДобавленияСертификатаБезШифрованияРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаНазначение + 15 + + Назначение + 1 + + <key>ru</key> + <value>Добавить новый сертификат</value> + + true + true + + true + + + + Назначение + + + None + + OnChange + НазначениеПриИзменении + + + НазначениеРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + НазначениеКонтекстноеМеню + 2 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Для подписания и шифрования + + + ДляПодписанияШифрованияИРасшифровки + + + + + ru + Только для шифрования + + + ТолькоДляШифрования + + + + + + ВертикальнаяГруппа1 + 35 + + ДобавитьИзФайла1 + 40 + true + true + + true + + + ДобавитьИзФайла1РасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ДобавитьИзФайла + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 1</value> + + Bottom + + ВертикальнаяГруппа1РасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница назначение</value> + + + СтраницаНазначениеРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + СтраницаНазначениеБезЭлектроннойПодписи + 17 + + НазначениеБезЭлектроннойПодписи + 10 + + <key>ru</key> + <value>Добавить новый сертификат</value> + + true + true + + true + + + + Назначение + + + None + + OnChange + НазначениеПриИзменении + + + НазначениеБезЭлектроннойПодписиРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + НазначениеБезЭлектроннойПодписиКонтекстноеМеню + 11 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Для шифрования и расшифровки + + + ДляШифрованияИРасшифровки + + + + + ru + Только для шифрования + + + ТолькоДляШифрования + + + + + + ВертикальнаяГруппа2 + 33 + + ДобавитьИзФайла2 + 19 + true + true + + true + + + ДобавитьИзФайла2РасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ДобавитьИзФайла + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 2</value> + + Bottom + + ВертикальнаяГруппа2РасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница назначение без электронной подписи</value> + + + СтраницаНазначениеБезЭлектроннойПодписиРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + Команды + 47 + + КомандаНазад + 49 + + ФормаНазад + 28 + true + + true + + + ФормаНазадРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Назад + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команда назад</value> + + + КомандаНазадРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ОсновныеКоманды + 51 + + ФормаДобавить + 4 + true + true + + true + + + ФормаДобавитьРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Добавить + Auto + true + true + true + UserCmds + Auto + + + ФормаДалее + 26 + true + + true + + + ФормаДалееРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Далее + Auto + true + true + UserCmds + Auto + + + ФормаОтмена + 6 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Основные команды</value> + + + ОсновныеКомандыРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Команды</value> + + + КомандыРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Назначение + + <key>ru</key> + <value>Назначение</value> + + 1 + + String + + + + true + + + true + + + + СпособДобавленияСертификата + + <key>ru</key> + <value>Способ добавления сертификата</value> + + 2 + + String + + + + true + + + true + + + + Добавить + + <key>ru</key> + <value>Добавить</value> + + 1 + + true + + + + Добавить + + + DontUse + + + ДобавитьИзФайла + + <key>ru</key> + <value>Добавить из файла</value> + + 2 + + true + + + + ДобавитьИзФайла + + + DontUse + + + Назад + + <key>ru</key> + <value>< Назад</value> + + 3 + + true + + + + Назад + + + DontUse + + + Далее + + <key>ru</key> + <value>Далее ></value> + + 4 + + true + + + + Далее + + + DontUse + + + СкрытьЗаявление + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..f6f1db77 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Module.bsl" @@ -0,0 +1,146 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно + И Не Параметры.СкрытьЗаявление Тогда + + СпособДобавленияСертификата = "ЗаявлениеНаВыпускСертификата"; + Если Не ЭлектроннаяПодпись.ИспользоватьШифрование() Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСпособДобавленияСертификатаБезШифрования; + КонецЕсли; + Иначе + Элементы.СтраницаСпособДобавленияСертификата.Видимость = Ложь; + Элементы.СтраницаСпособДобавленияСертификатаБезШифрования.Видимость = Ложь; + КонецЕсли; + + Назначение = "ДляПодписанияШифрованияИРасшифровки"; + Если Не ЗначениеЗаполнено(СпособДобавленияСертификата) Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаНазначение; + КонецЕсли; + + Если Не ЭлектроннаяПодпись.ИспользоватьЭлектронныеПодписи() Тогда + Назначение = "ДляШифрованияИРасшифровки"; + Если Не ЗначениеЗаполнено(СпособДобавленияСертификата) Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаНазначениеБезЭлектроннойПодписи; + КонецЕсли; + + ИначеЕсли Не ЭлектроннаяПодпись.ИспользоватьШифрование() + И Не ЗначениеЗаполнено(СпособДобавленияСертификата) Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + УстановитьСоставКомандТолькоДляШифрования(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СпособДобавленияСертификатаПриИзменении(Элемент) + + УстановитьСоставКомандПриИзмененииСпособаДобавленияСертификата(); + +КонецПроцедуры + +&НаКлиенте +Процедура НазначениеПриИзменении(Элемент) + + УстановитьСоставКомандТолькоДляШифрования(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Добавить(Команда) + + Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСпособДобавленияСертификата + Или Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСпособДобавленияСертификатаБезШифрования Тогда + + Закрыть(СпособДобавленияСертификата); + Иначе + Закрыть(Назначение); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Далее(Команда) + + Если ЭлектроннаяПодписьКлиент.ИспользоватьЭлектронныеПодписи() Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаНазначение; + Назначение = "ДляПодписанияШифрованияИРасшифровки"; + Иначе + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаНазначениеБезЭлектроннойПодписи; + Назначение = "ДляШифрованияИРасшифровки"; + КонецЕсли; + + Элементы.ФормаДобавить.Видимость = Истина; + Элементы.ФормаДалее.Видимость = Ложь; + Элементы.ФормаНазад.Видимость = Истина; + Элементы.ФормаДобавить.КнопкаПоУмолчанию = Истина; + + УстановитьСоставКомандТолькоДляШифрования(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура Назад(Команда) + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСпособДобавленияСертификата; + Элементы.ФормаНазад.Видимость = Ложь; + + УстановитьСоставКомандПриИзмененииСпособаДобавленияСертификата(); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьИзФайла(Команда) + + Закрыть("ТолькоДляШифрованияИзФайла"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура УстановитьСоставКомандПриИзмененииСпособаДобавленияСертификата() + + ДобавитьЗаявку = СпособДобавленияСертификата = "ЗаявлениеНаВыпускСертификата"; + + Элементы.ФормаДобавить.Видимость = ДобавитьЗаявку; + Элементы.ФормаДалее.Видимость = Не ДобавитьЗаявку; + Элементы.ФормаДобавить.КнопкаПоУмолчанию = ДобавитьЗаявку; + Элементы.ФормаДалее.КнопкаПоУмолчанию = Не ДобавитьЗаявку; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСоставКомандТолькоДляШифрования(Форма) + + Элементы = Форма.Элементы; + ИзФайла = Форма.Назначение = "ТолькоДляШифрования"; + + Элементы.ДобавитьИзФайла1.Видимость = ИзФайла; + Элементы.ДобавитьИзФайла2.Видимость = ИзФайла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" new file mode 100644 index 00000000..15b6abc3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" @@ -0,0 +1,2449 @@ + + + + <key>ru</key> + <value>Добавление сертификата для шифрования данных</value> + + + Страницы + 237 + + СтраницаВыборСертификата + 239 + + ГруппаСертификаты + 543 + + ГруппаПредупрежденияНедоступностиСертификатов + 788 + + ГруппаСертификатыНедоступныНаКлиенте + 790 + + СертификатыНедоступныНаКлиентеЗначок + 792 + + <key>ru</key> + <value>Сертификаты недоступны на клиенте значок</value> + + true + true + + true + + + СертификатыНедоступныНаКлиентеЗначокРасширеннаяПодсказка + 794 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНедоступныНаКлиентеЗначокКонтекстноеМеню + 793 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + СертификатыНедоступныНаКлиентеНадпись + 795 + + <key>ru</key> + <value>Сертификаты недоступны на компьютере</value> + + true + true + + true + + + СертификатыНедоступныНаКлиентеНадписьРасширеннаяПодсказка + 797 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНедоступныНаКлиентеНадписьКонтекстноеМеню + 796 + true + true + + true + + true + + Label + true + + + Click + СертификатыНедоступныНаКлиентеНадписьНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты недоступны на клиенте</value> + + + ГруппаСертификатыНедоступныНаКлиентеРасширеннаяПодсказка + 791 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаСертификатыНедоступныНаСервере + 798 + + СертификатыНедоступныНаСервереЗначок + 800 + true + true + + true + + + СертификатыНедоступныНаСервереЗначокРасширеннаяПодсказка + 802 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНедоступныНаСервереЗначокКонтекстноеМеню + 801 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + СертификатыНедоступныНаСервереНадпись + 803 + + <key>ru</key> + <value>Сертификаты недоступны на сервере</value> + + true + true + + true + + + СертификатыНедоступныНаСервереНадписьРасширеннаяПодсказка + 805 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНедоступныНаСервереНадписьКонтекстноеМеню + 804 + true + true + + true + + true + + Label + true + + + Click + СертификатыНедоступныНаСервереНадписьНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты недоступны на сервере</value> + + + ГруппаСертификатыНедоступныНаСервереРасширеннаяПодсказка + 799 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Предупреждения недоступности сертификатов</value> + + + ГруппаПредупрежденияНедоступностиСертификатовРасширеннаяПодсказка + 789 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Сертификаты + 217 + + <key>ru</key> + <value>Сертификаты</value> + + true + true + + true + + + Сертификаты + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + СертификатыПредставление + 221 + true + true + + true + + + + Сертификаты.Представление + + + + СертификатыПредставлениеРасширеннаяПодсказка + 223 + true + true + + true + + Label + true + true + + Left + + + + СертификатыПредставлениеКонтекстноеМеню + 222 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 35 + true + true + true + true + true + true + + + + СертификатыКемВыдан + 224 + true + true + + true + + + + Сертификаты.КемВыдан + + + + СертификатыКемВыданРасширеннаяПодсказка + 226 + true + true + + true + + Label + true + true + + Left + + + + СертификатыКемВыданКонтекстноеМеню + 225 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 13 + true + true + true + true + true + true + + + + СертификатыКоманднаяПанель + 219 + + Найти + 808 + true + true + + true + + + НайтиРасширеннаяПодсказка + 809 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ОтменитьПоиск + 810 + true + true + + true + + + ОтменитьПоискРасширеннаяПодсказка + 811 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + Обновить + 821 + true + true + + true + + + ОбновитьРасширеннаяПодсказка + 822 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПоказатьДанныеТекущегоСертификата + 819 + true + true + + true + + + ПоказатьДанныеТекущегоСертификатаРасширеннаяПодсказка + 820 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьДанныеТекущегоСертификата + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВывестиСписок + 812 + true + true + + true + + + ВывестиСписокРасширеннаяПодсказка + 813 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + Selection + СертификатыВыбор + + + OnActivateRow + СертификатыПриАктивизацииСтроки + + + true + true + + true + + СертификатыСтрокаПоиска + 761 + + СертификатыСтрокаПоискаРасширеннаяПодсказка + 763 + true + true + + true + + Label + true + true + + Left + + + + СертификатыСтрокаПоискаКонтекстноеМеню + 762 + true + true + + true + + true + + + true + + + + true + true + + true + + СертификатыСостояниеПросмотра + 764 + + СертификатыСостояниеПросмотраРасширеннаяПодсказка + 766 + true + true + + true + + Label + true + true + + Left + + + + СертификатыСостояниеПросмотраКонтекстноеМеню + 765 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СертификатыУправлениеПоиском + 767 + + СертификатыУправлениеПоискомРасширеннаяПодсказка + 769 + true + true + + true + + Label + true + true + + Left + + + + СертификатыУправлениеПоискомКонтекстноеМеню + 768 + true + true + + true + + true + + SearchControlAddition + + true + + + + СертификатыРасширеннаяПодсказка + 220 + true + true + + true + + Label + true + true + + Left + + + + СертификатыКонтекстноеМеню + 218 + + СертификатыКонтекстноеМенюОбновить + 737 + true + true + + true + + + СертификатыКонтекстноеМенюОбновитьРасширеннаяПодсказка + 738 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + + + СертификатыКонтекстноеМенюПоказатьДанныеТекущегоСертификата + 746 + true + true + + true + + + СертификатыКонтекстноеМенюПоказатьДанныеТекущегоСертификатаРасширеннаяПодсказка + 747 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьДанныеТекущегоСертификата + Auto + true + true + UserCmds + Auto + + + СертификатыКонтекстноеМенюСтандартныеКоманды + 739 + true + true + + true + + + <key>ru</key> + <value>Сертификаты контекстное меню стандартные команды</value> + + + СертификатыКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 740 + true + true + + true + + Label + true + true + + Left + + + + Item.Сертификаты + + + true + true + + true + + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
+ + ПоказыватьВсе + 816 + true + true + + true + + + + ПоказыватьВсе + + + Right + + ru + Показать все сертификаты без отбора (например, включая добавленные и просроченные) + + + OnChange + ПоказыватьВсеПриИзменении + + + ПоказыватьВсеРасширеннаяПодсказка + 818 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьВсеКонтекстноеМеню + 817 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Инструкция + 748 + + <key>ru</key> + <value>Инструкции по работе с программами электронной подписи и шифрования</value> + + true + true + + true + + + ИнструкцияРасширеннаяПодсказка + 750 + true + true + + true + + Label + true + true + + Left + + + + ИнструкцияКонтекстноеМеню + 749 + true + true + + true + + true + + Label + true + + + Click + ИнструкцияНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты на компьютере</value> + + + ГруппаСертификатыРасширеннаяПодсказка + 544 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + +
+ + КомандыДалееОтмена + 374 + + Далее + 370 + true + true + + true + + + ДалееРасширеннаяПодсказка + 371 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Далее + Auto + true + true + true + UserCmds + Auto + + + Отмена1 + 372 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + Отмена1РасширеннаяПодсказка + 373 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды далее отмена</value> + + + КомандыДалееОтменаРасширеннаяПодсказка + 375 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница выбор сертификата</value> + + + СтраницаВыборСертификатаРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
+ + СтраницаУточнениеСвойствСертификата + 241 + + ГруппаУточнениеСвойствСертификата + 545 + + ГруппаОписаниеСертификата + 523 + + СертификатОписаниеДанных + 751 + + <key>ru</key> + <value>Сертификат описание данных</value> + + true + true + + true + + + СертификатОписаниеДанных + + true + None + + СертификатОписаниеДанныхСвойство + 755 + true + true + + true + + + + СертификатОписаниеДанных.Свойство + + + true + + СертификатОписаниеДанныхСвойствоРасширеннаяПодсказка + 757 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхСвойствоКонтекстноеМеню + 756 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 13 + true + true + false + true + true + true + true + + + + СертификатОписаниеДанныхЗначение + 758 + true + true + + true + + + + СертификатОписаниеДанных.Значение + + + true + + СертификатОписаниеДанныхЗначениеРасширеннаяПодсказка + 760 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхЗначениеКонтекстноеМеню + 759 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СертификатОписаниеДанныхКоманднаяПанель + 753 + true + true + + true + + Left + + + true + true + + true + + СертификатОписаниеДанныхСтрокаПоиска + 770 + + СертификатОписаниеДанныхСтрокаПоискаРасширеннаяПодсказка + 772 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхСтрокаПоискаКонтекстноеМеню + 771 + true + true + + true + + true + + + true + + + + true + true + + true + + СертификатОписаниеДанныхСостояниеПросмотра + 773 + + СертификатОписаниеДанныхСостояниеПросмотраРасширеннаяПодсказка + 775 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхСостояниеПросмотраКонтекстноеМеню + 774 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СертификатОписаниеДанныхУправлениеПоиском + 776 + + СертификатОписаниеДанныхУправлениеПоискомРасширеннаяПодсказка + 778 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхУправлениеПоискомКонтекстноеМеню + 777 + true + true + + true + + true + + SearchControlAddition + + true + + + + СертификатОписаниеДанныхРасширеннаяПодсказка + 754 + true + true + + true + + Label + true + true + + Left + + + + СертификатОписаниеДанныхКонтекстноеМеню + 752 + true + true + + true + + true + + true + true + true + 51 + 51 + 4 + true + true + MultiRow + Row + 1 + 1 + AutoUse + true + Auto + Auto + true + true + true + + + + ПоказатьДанныеСертификата + 744 + true + true + + true + + true + + ПоказатьДанныеСертификатаРасширеннаяПодсказка + 745 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПоказатьДанныеСертификата + Picture + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Описание сертификата</value> + + Left + + ГруппаОписаниеСертификатаРасширеннаяПодсказка + 524 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Left + true + true + Auto + Auto + + + + СертификатНаименование + 247 + true + true + + true + + + + СертификатНаименование + + + Button + + СертификатНаименованиеРасширеннаяПодсказка + 249 + + <key>ru</key> + <value>Уникальное представление сертификата используется в полях выбора при шифровании. +Оно формируется из фамилии, имени, организации, должности и срока действия. +Например: "Иванов Иван, ООО 1С, Программист, до 03.2017". + +Когда у пользователя два сертификата от разных удостоверяющих центров (УЦ), +тогда представление нужно дополнить именем УЦ. +Например: "Иванов Иван, ООО 1С, Программист, до 03.2017, УЦ 1С". + +Когда сертификат используется для специальной цели разными пользователями, +тогда представление нужно заменить на описание этой цели, например: +"Для шифрования счетов-фактур, до 05.2019", +"Для шифрования налоговой отчетности, до 12.2015".</value> + + true + true + + true + + Label + true + true + + Left + + + + СертификатНаименованиеКонтекстноеМеню + 248 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СертификатПользователь + 779 + true + true + + true + + + + СертификатПользователь + + + + ru + Текст подсказки устанавливается из реквизита справочника. + + + СертификатПользовательРасширеннаяПодсказка + 781 + true + true + + true + + Label + true + true + + Left + + + + СертификатПользовательКонтекстноеМеню + 780 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + СертификатОрганизация + 782 + true + true + + true + + + + СертификатОрганизация + + + + ru + Текст подсказки устанавливается из реквизита справочника. + + + СертификатОрганизацияРасширеннаяПодсказка + 784 + true + true + + true + + Label + true + true + + Left + + + + СертификатОрганизацияКонтекстноеМеню + 783 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Введите дополнительные сведения о сертификате</value> + + false + true + + ГруппаУточнениеСвойствСертификатаРасширеннаяПодсказка + 546 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + + + + КомандыНазадДобавитьОтмена + 535 + + Назад + 537 + true + true + + true + + + НазадРасширеннаяПодсказка + 538 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Назад + Auto + true + true + UserCmds + Auto + + + Добавить + 539 + + <key>ru</key> + <value>Добавить</value> + + true + true + + true + + + ДобавитьРасширеннаяПодсказка + 540 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Добавить + Auto + true + true + UserCmds + Auto + + + Отмена2 + 541 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + Отмена2РасширеннаяПодсказка + 542 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды назад добавить отмена</value> + + + КомандыНазадДобавитьОтменаРасширеннаяПодсказка + 536 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница уточнение свойств сертификата</value> + + + СтраницаУточнениеСвойствСертификатаРасширеннаяПодсказка + 242 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 238 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Сертификаты + + <key>ru</key> + <value>Сертификаты</value> + + 8 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Представление</value> + + 1 + + String + + + + true + + + true + + + + КемВыдан + + <key>ru</key> + <value>Кем выдан</value> + + 2 + + String + + + + true + + + true + + + + Отпечаток + 4 + + String + + + + true + + + true + + + + НаКлиенте + 3 + + Boolean + + + true + + + true + + + + НаСервере + 5 + + Boolean + + + true + + + true + + + + ЭтоЗаявление + 6 + + Boolean + + + true + + + true + + + + ВОблачномСервисе + 7 + + Boolean + + + true + + + true + + + + + СертификатНаименование + + <key>ru</key> + <value>Представление</value> + + 9 + + String + + + + true + + + true + + ShowError + + + ОтпечатокВыбранногоСертификата + 4 + + String + + + + true + + + true + + + + Сертификат + 5 + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + + + + СертификатАдрес + 6 + + String + + + + true + + + true + + + + СертификатОтпечаток + 7 + + String + + + + true + + + true + + + + СертификатПараметрыРеквизитов + 12 + + + true + + + true + + + + СертификатОписаниеДанных + + <key>ru</key> + <value>Сертификат описание данных</value> + + 18 + + ValueTable + + + true + + + true + + + Свойство + + <key>ru</key> + <value>Свойство</value> + + 1 + + String + + + + true + + + true + + + + Значение + + <key>ru</key> + <value>Значение</value> + + 2 + + String + + + + true + + + true + + + + + СертификатПользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + CatalogRef.Пользователи + + + true + + + true + + + + СертификатОрганизация + + <key>ru</key> + <value>Организация</value> + + 2 + + DefinedType.Организация + + + true + + + true + + + + ОшибкаПолученияСертификатовНаКлиенте + 3 + + + true + + + true + + + + ОшибкаПолученияСертификатовНаСервере + 10 + + + true + + + true + + + + ВыполнятьНаСервере + 11 + + + true + + + true + + + + ПоказыватьВсе + + <key>ru</key> + <value>Показывать все сертификаты</value> + + 13 + + Boolean + + + true + + + true + + + + ОпределяемыйТипОрганизацияНастроен + 19 + + Boolean + + + true + + + true + + + + Далее + + <key>ru</key> + <value>Далее ></value> + + 1 + + ru + Далее + + + true + + + + Далее + + + DontUse + + + Добавить + + <key>ru</key> + <value>Добавить</value> + + 5 + + true + + + + Добавить + + + DontUse + + + Назад + + <key>ru</key> + <value>< Назад</value> + + 4 + + ru + Назад + + + true + + + + Назад + + + DontUse + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 3 + + ru + Обновить список сертификатов + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + DontUse + + + ПоказатьДанныеСертификата + + <key>ru</key> + <value>Показать данные сертификата</value> + + 6 + + ru + Показать данные сертификата, которые сохраняются в файле + + + true + + + CommonPicture.СертификатКлюча + + + + ПоказатьДанныеСертификата + + + DontUse + + + ПоказатьДанныеТекущегоСертификата + + <key>ru</key> + <value>Показать данные сертификата</value> + + 7 + + ru + Показать данные сертификата, которые сохраняются в файле + + + true + + + CommonPicture.СертификатКлюча + + + + ПоказатьДанныеТекущегоСертификата + + + DontUse + + + ЛичныйСписокПриДобавлении + + Boolean + + + + АдресДанныхСертификата + + String + + + + + СвойстваСертификатовНаКлиенте + + + + ОшибкаПолученияСертификатовНаКлиенте + + + + ВыполнятьНаСервере + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..46a94bdc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,483 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + СертификатПараметрыРеквизитов = + ЭлектроннаяПодписьСлужебный.НовыеПараметрыРеквизитовСертификата(); + + Если Параметры.Свойство("Организация") Тогда + СертификатПараметрыРеквизитов.Вставить("Организация", Параметры.Организация); + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.АдресДанныхСертификата) Тогда + ДанныеСертификата = ПолучитьИзВременногоХранилища(Параметры.АдресДанныхСертификата); + + СертификатКриптографии = ЭлектроннаяПодписьСлужебный.СертификатИзДвоичныхДанных(ДанныеСертификата); + Если СертификатКриптографии = Неопределено Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + ПоказатьСтраницуУточнениеСвойствСертификата(ЭтотОбъект, + СертификатКриптографии, + СертификатКриптографии.Выгрузить(), + ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии)); + + Элементы.Назад.Видимость = Ложь; + Иначе + Если ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда + Элементы.ГруппаСертификаты.Заголовок = + НСтр("ru = 'Личные сертификаты на компьютере и сервере'"); + КонецЕсли; + + ОшибкаПолученияСертификатовНаКлиенте = Параметры.ОшибкаПолученияСертификатовНаКлиенте; + ОбновитьСписокСертификатовНаСервере(Параметры.СвойстваСертификатовНаКлиенте); + КонецЕсли; + + Если Метаданные.ОпределяемыеТипы.Организация.Тип.СодержитТип(Тип("Строка")) Тогда + Элементы.СертификатОрганизация.Видимость = Ложь; + Иначе + ОпределяемыйТипОрганизацияНастроен = Истина; + КонецЕсли; + + Элементы.СертификатПользователь.Подсказка = + Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Реквизиты.Пользователь.Подсказка; + + Элементы.СертификатОрганизация.Подсказка = + Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Реквизиты.Организация.Подсказка; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ЗначениеЗаполнено(Сертификат) Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(СертификатАдрес) Тогда + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования") + Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux") Тогда + + ОбновитьПовторноИспользуемыеЗначения(); + Если Элементы.Назад.Видимость Тогда + ОбновитьСписокСертификатов(); + КонецЕсли; + Возврат; + КонецЕсли; + + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + ОбновитьСписокСертификатов(); + Возврат; + КонецЕсли; + + Если ВРег(ИмяСобытия) = ВРег("Установка_РасширениеРаботыСКриптографией") Тогда + ОбновитьСписокСертификатов(); + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + // Проверка уникальности наименования. + ЭлектроннаяПодписьСлужебный.ПроверитьУникальностьПредставления( + СертификатНаименование, Сертификат, "СертификатНаименование", Отказ); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + ВозвращаемоеЗначение = Новый Структура; + ВозвращаемоеЗначение.Вставить("Ссылка", Сертификат); + ВозвращаемоеЗначение.Вставить("Добавлен", ЗначениеЗаполнено(Сертификат)); + Закрыть(ВозвращаемоеЗначение); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СертификатыНедоступныНаКлиентеНадписьНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Сертификаты недоступны на компьютере'"), + "", + ОшибкаПолученияСертификатовНаКлиенте, + Новый Структура); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатыНедоступныНаСервереНадписьНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Сертификаты недоступны на сервере'"), + "", + ОшибкаПолученияСертификатовНаСервере, + Новый Структура); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьВсеПриИзменении(Элемент) + + ОбновитьСписокСертификатов(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИнструкцияНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьИнструкциюПоРаботеСПрограммами(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСертификаты + +&НаКлиенте +Процедура СертификатыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Далее(Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатыПриАктивизацииСтроки(Элемент) + + Если Элементы.Сертификаты.ТекущиеДанные = Неопределено Тогда + ОтпечатокВыбранногоСертификата = ""; + Иначе + ОтпечатокВыбранногоСертификата = Элементы.Сертификаты.ТекущиеДанные.Отпечаток; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Обновить(Команда) + + ОбновитьСписокСертификатов(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьДанныеТекущегоСертификата(Команда) + + ТекущиеДанные = Элементы.Сертификаты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.Отпечаток, Не ТекущиеДанные.ЭтоЗаявление); + +КонецПроцедуры + +&НаКлиенте +Процедура Далее(Команда) + + Если Элементы.Сертификаты.ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выделите сертификаты, которые требуется добавить.'")); + Возврат; + КонецЕсли; + + ТекущиеДанные = Элементы.Сертификаты.ТекущиеДанные; + + Если ТекущиеДанные.ЭтоЗаявление Тогда + ПоказатьПредупреждение(, + НСтр("ru = 'Для этого сертификата заявление на выпуск еще не исполнено. + |Откройте заявление на выпуск сертификата и выполните требуемые шаги.'")); + ОбновитьСписокСертификатов(); + Возврат; + КонецЕсли; + + Элементы.Далее.Доступность = Ложь; + + Если ЭлектроннаяПодписьСлужебныйКлиент.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() И ТекущиеДанные.ВОблачномСервисе Тогда + СтруктураПоиска = Новый Структура; + СтруктураПоиска.Вставить("Отпечаток", Base64Значение(ТекущиеДанные.Отпечаток)); + МодульХранилищеСертификатовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХранилищеСертификатовКлиент"); + МодульХранилищеСертификатовКлиент.НайтиСертификат(Новый ОписаниеОповещения( + "ДалееПослеПоискаСертификатаВОблачномСервисе", ЭтотОбъект), СтруктураПоиска); + Иначе + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСертификатПоОтпечатку(Новый ОписаниеОповещения( + "ДалееПослеПоискаСертификата", ЭтотОбъект), ТекущиеДанные.Отпечаток, Ложь, Неопределено); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры Далее. +&НаКлиенте +Процедура ДалееПослеПоискаСертификата(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("СертификатКриптографии") Тогда + Результат.НачатьВыгрузку(Новый ОписаниеОповещения( + "ДалееПослеВыгрузкиСертификата", ЭтотОбъект, Результат)); + Возврат; + КонецЕсли; + + Контекст = Новый Структура; + + Если Результат.Свойство("СертификатНеНайден") Тогда + Контекст.Вставить("ОписаниеОшибки", НСтр("ru = 'Сертификат не установлен на компьютере (возможно удален).'")); + Иначе + Контекст.Вставить("ОписаниеОшибки", Результат.ОписаниеОшибки); + КонецЕсли; + + ОбновитьСписокСертификатов(Новый ОписаниеОповещения( + "ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст)); + +КонецПроцедуры + +// Продолжение процедуры Далее. +&НаКлиенте +Процедура ДалееПослеВыгрузкиСертификата(ВыгруженныеДанные, СертификатКриптографии) Экспорт + + ПоказатьСтраницуУточнениеСвойствСертификата(ЭтотОбъект, + СертификатКриптографии, + ВыгруженныеДанные, + ЭлектроннаяПодписьКлиент.СвойстваСертификата(СертификатКриптографии)); + +КонецПроцедуры + +// Продолжение процедуры Далее. +&НаКлиенте +Процедура ДалееПослеОбновленияСпискаСертификатов(Результат, Контекст) Экспорт + + ПоказатьПредупреждение(, Контекст.ОписаниеОшибки); + Элементы.Далее.Доступность = Истина; + +КонецПроцедуры + +// Продолжение процедуры Далее. +// +// Параметры: +// Результат - Структура: +// * ОписаниеОшибки - Структура: +// ** Описание - Строка +// Контекст - Структура +// +&НаКлиенте +Процедура ДалееПослеПоискаСертификатаВОблачномСервисе(Результат, Контекст) Экспорт + + Если Не Результат.Выполнено Тогда + Контекст = Новый Структура; + Контекст.Вставить("ОписаниеОшибки", Результат.ОписаниеОшибки.Описание); + ОбновитьСписокСертификатов(Новый ОписаниеОповещения( + "ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст)); + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(Результат.Сертификат) Тогда + Контекст = Новый Структура; + Контекст.Вставить("ОписаниеОшибки", НСтр("ru = 'Сертификат отсутствует в облачном сервисе (возможно удален).'")); + ОбновитьСписокСертификатов(Новый ОписаниеОповещения( + "ДалееПослеОбновленияСпискаСертификатов", ЭтотОбъект, Контекст)); + Возврат; + КонецЕсли; + + ДалееПослеВыгрузкиСертификата(Результат.Сертификат.Сертификат, Результат.Сертификат); + +КонецПроцедуры + +&НаКлиенте +Процедура Назад(Команда) + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыборСертификата; + Элементы.Далее.КнопкаПоУмолчанию = Истина; + + ОбновитьСписокСертификатов(); + +КонецПроцедуры + +&НаКлиенте +Процедура Добавить(Команда) + + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + ДополнительныеПараметры = Новый Структура; + Если Не ЗначениеЗаполнено(Сертификат) Тогда + ДополнительныеПараметры.Вставить("ЭтоНовый"); + КонецЕсли; + + ЗаписатьСертификатВСправочник(); + + ОповеститьОбИзменении(Сертификат); + Оповестить("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования", + ДополнительныеПараметры, Сертификат); + + ОповеститьОВыборе(Сертификат); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьДанныеСертификата(Команда) + + Если ЗначениеЗаполнено(СертификатАдрес) Тогда + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(СертификатАдрес, Истина); + Иначе + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(СертификатОтпечаток, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ПоказатьСтраницуУточнениеСвойствСертификата(Форма, СертификатКриптографии, ДанныеСертификата, СвойстваСертификата) + + Элементы = Форма.Элементы; + + Форма.СертификатАдрес = ПоместитьВоВременноеХранилище(ДанныеСертификата, Форма.УникальныйИдентификатор); + + Форма.СертификатОтпечаток = Base64Строка(СертификатКриптографии.Отпечаток); + + ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата( + Форма.СертификатОписаниеДанных, СвойстваСертификата); + + СертификатПараметрыРеквизитов = Форма.СертификатПараметрыРеквизитов; // см. ЭлектроннаяПодписьСлужебный.НовыеПараметрыРеквизитовСертификата + СохраненныеСвойства = СохраненныеСвойстваСертификата( + Форма.СертификатОтпечаток, + Форма.СертификатАдрес, + СертификатПараметрыРеквизитов); + + Если СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда + НаименованиеСертификата = СертификатПараметрыРеквизитов.Наименование; + Если НаименованиеСертификата.ТолькоПросмотр Тогда + Элементы.СертификатНаименование.ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + + Если Форма.ОпределяемыйТипОрганизацияНастроен Тогда + Если СертификатПараметрыРеквизитов.Свойство("Организация") Тогда + Если Не СертификатПараметрыРеквизитов.Организация.Видимость Тогда + Элементы.СертификатОрганизация.Видимость = Ложь; + ИначеЕсли СертификатПараметрыРеквизитов.Организация.ТолькоПросмотр Тогда + Элементы.СертификатОрганизация.ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Форма.Сертификат = СохраненныеСвойства.Ссылка; + Форма.СертификатНаименование = СохраненныеСвойства.Наименование; + Форма.СертификатПользователь = СохраненныеСвойства.Пользователь; + Форма.СертификатОрганизация = СохраненныеСвойства.Организация; + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаУточнениеСвойствСертификата; + Элементы.Добавить.КнопкаПоУмолчанию = Истина; + Элементы.Далее.Доступность = Истина; + + Строка = ?(ЗначениеЗаполнено(Форма.Сертификат), НСтр("ru = 'Обновить'"), НСтр("ru = 'Добавить'")); + Если Элементы.Добавить.Заголовок <> Строка Тогда + Элементы.Добавить.Заголовок = Строка; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СохраненныеСвойстваСертификата(Знач Отпечаток, Адрес, ПараметрыРеквизитов) + + Возврат ЭлектроннаяПодписьСлужебный.СохраненныеСвойстваСертификата(Отпечаток, Адрес, ПараметрыРеквизитов, Истина); + +КонецФункции + +&НаКлиенте +Процедура ОбновитьСписокСертификатов(Оповещение = Неопределено) + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте(Новый ОписаниеОповещения( + "ОбновитьСписокСертификатовПродолжение", ЭтотОбъект, Контекст), Ложь, ПоказыватьВсе); + +КонецПроцедуры + +// Продолжение процедуры ОбновитьСписокСертификатов. +&НаКлиенте +Процедура ОбновитьСписокСертификатовПродолжение(Результат, Контекст) Экспорт + + ОшибкаПолученияСертификатовНаКлиенте = Результат.ОшибкаПолученияСертификатовНаКлиенте; + + ОбновитьСписокСертификатовНаСервере(Результат.СвойстваСертификатовНаКлиенте); + + Если Контекст.Оповещение <> Неопределено Тогда + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокСертификатовНаСервере(Знач СвойстваСертификатовНаКлиенте) + + ОшибкаПолученияСертификатовНаСервере = Новый Структура; + + ЭлектроннаяПодписьСлужебный.ОбновитьСписокСертификатов(Сертификаты, СвойстваСертификатовНаКлиенте, + Истина, Ложь, ОшибкаПолученияСертификатовНаСервере, ПоказыватьВсе); + + Если ЗначениеЗаполнено(ОтпечатокВыбранногоСертификата) + И ( Элементы.Сертификаты.ТекущаяСтрока = Неопределено + Или Сертификаты.НайтиПоИдентификатору(Элементы.Сертификаты.ТекущаяСтрока) = Неопределено + Или Сертификаты.НайтиПоИдентификатору(Элементы.Сертификаты.ТекущаяСтрока).Отпечаток + <> ОтпечатокВыбранногоСертификата) Тогда + + Отбор = Новый Структура("Отпечаток", ОтпечатокВыбранногоСертификата); + Строки = Сертификаты.НайтиСтроки(Отбор); + Если Строки.Количество() > 0 Тогда + Элементы.Сертификаты.ТекущаяСтрока = Строки[0].ПолучитьИдентификатор(); + КонецЕсли; + КонецЕсли; + + Элементы.ГруппаСертификатыНедоступныНаКлиенте.Видимость = + ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаКлиенте) + И ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаКлиенте.ОписаниеОшибки); + + Элементы.ГруппаСертификатыНедоступныНаСервере.Видимость = + ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаСервере) + И ЗначениеЗаполнено(ОшибкаПолученияСертификатовНаСервере.ОписаниеОшибки); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьСертификатВСправочник() + + ЭлектроннаяПодписьСлужебный.ЗаписатьСертификатВСправочник(ЭтотОбъект, , Истина); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\265\320\236\320\261\320\236\320\272\320\276\320\275\321\207\320\260\320\275\320\270\320\270\320\241\321\200\320\276\320\272\320\260\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\265\320\236\320\261\320\236\320\272\320\276\320\275\321\207\320\260\320\275\320\270\320\270\320\241\321\200\320\276\320\272\320\260\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217/Form.form" new file mode 100644 index 00000000..7ce4ddc4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\265\320\236\320\261\320\236\320\272\320\276\320\275\321\207\320\260\320\275\320\270\320\270\320\241\321\200\320\276\320\272\320\260\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217/Form.form" @@ -0,0 +1,346 @@ + + + + <key>ru</key> + <value>Необходима замена сертификата</value> + + + Сертификат + 1 + + <key>ru</key> + <value>Заканчивается срок действия для сертификата</value> + + true + true + + true + + + + Сертификат + + + Top + + СертификатExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + СертификатКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 50 + true + true + false + true + false + true + ShowInInputField + true + true + true + + + + СертификатДействителенДо + 5 + + <key>ru</key> + <value>Дата окончания действия</value> + + true + true + + true + + + + Сертификат.ДействителенДо + + + + СертификатДействителенДоРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + СертификатДействителенДоКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + Совет + 10 + + <key>ru</key> + <value>Необходимо получить новый сертификат</value> + + true + true + + true + + + СоветРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + СоветКонтекстноеМеню + 11 + true + true + + true + + true + + Label + true + + Left + + + + БольшеНеНапоминать + 7 + true + true + + true + + + + БольшеНеНапоминать + + + Right + + БольшеНеНапоминатьExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + + БольшеНеНапоминатьКонтекстноеМеню + 8 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ФормаКоманднаяПанель + -1 + + Закрыть + 9 + true + true + + true + + true + + ЗакрытьExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + true + Vertical + true + true + true + true + + Сертификат + + <key>ru</key> + <value>Сертификат</value> + + 1 + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + + + + БольшеНеНапоминать + + <key>ru</key> + <value>Больше не напоминать</value> + + 2 + + Boolean + + + true + + + true + + + + ОписаниеСертификата + 3 + + String + + + + true + + + true + + + + ОткрытьСертификат + + <key>ru</key> + <value>Открыть сертификат</value> + + 1 + + ru + Открыть сертификат + + + true + + DontUse + + + Сертификат + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + true + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\265\320\236\320\261\320\236\320\272\320\276\320\275\321\207\320\260\320\275\320\270\320\270\320\241\321\200\320\276\320\272\320\260\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\265\320\236\320\261\320\236\320\272\320\276\320\275\321\207\320\260\320\275\320\270\320\270\320\241\321\200\320\276\320\272\320\260\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..21fd514f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\320\265\320\236\320\261\320\236\320\272\320\276\320\275\321\207\320\260\320\275\320\270\320\270\320\241\321\200\320\276\320\272\320\260\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217/Module.bsl" @@ -0,0 +1,61 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Сертификат = Параметры.Сертификат; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + Если БольшеНеНапоминать Тогда + УстановитьПометкуНаСервере(Сертификат, УникальныйИдентификатор); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Процедура УстановитьПометкуНаСервере(Сертификат, Идентификатор) + + ЗаблокироватьДанныеДляРедактирования(Сертификат, , Идентификатор); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Сертификат); + + НачатьТранзакцию(); + Попытка + + Блокировка.Заблокировать(); + + СертификатОбъект = Сертификат.ПолучитьОбъект(); + СертификатОбъект.ПользовательОповещенОСрокеДействия = Истина; + СертификатОбъект.Записать(); + + ЗафиксироватьТранзакцию(); + + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262/Form.form" new file mode 100644 index 00000000..8e358c96 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262/Form.form" @@ -0,0 +1,25 @@ + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + LockOwnerWindow + Vertical + true + true + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..b28dde97 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\265\321\200\320\265\320\264\320\260\321\207\320\260\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262/Module.bsl" @@ -0,0 +1,192 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ОбщиеВнутренниеДанные; + +&НаКлиенте +Перем ВременноеХранилищеКонтекстовОпераций; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ОбщиеВнутренниеДанные = Новый Соответствие; + Отказ = Истина; + + ВременноеХранилищеКонтекстовОпераций = Новый Соответствие; + ПодключитьОбработчикОжидания("УдалитьУстаревшиеКонтекстыОпераций", 300); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. +&НаКлиенте +Процедура ОткрытьНовуюФорму(ВидФормы, СерверныеПараметры, КлиентскиеПараметры = Неопределено, + ОбработкаЗавершения = Неопределено, Знач ВладелецНовойФормы = Неопределено) Экспорт +// АПК:78-вкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. + + ВидыФорм = + ",ПодписаниеДанных,ШифрованиеДанных,РасшифровкаДанных, + |,ВыборСертификатаДляПодписанияИлиРасшифровки,ПроверкаСертификата,"; + + Если СтрНайти(ВидыФорм, "," + ВидФормы + ",") = 0 Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка в процедуре ОткрытьНовуюФорму. ВидФормы ""%1"" не поддерживается.'"), + ВидФормы); + КонецЕсли; + + Если ВладелецНовойФормы = Неопределено Тогда + ВладелецНовойФормы = Новый УникальныйИдентификатор; + КонецЕсли; + + ИмяНовойФормы = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма." + ВидФормы; + + Контекст = Новый Структура; + Форма = ОткрытьФорму(ИмяНовойФормы, СерверныеПараметры, ВладелецНовойФормы,,,, + Новый ОписаниеОповещения("ОткрытьНовуюФормуОповещениеОЗакрытии", ЭтотОбъект, Контекст)); + + Если Форма = Неопределено Тогда + Если ТипЗнч(ОбработкаЗавершения) = Тип("ОписаниеОповещения") Тогда + ВыполнитьОбработкуОповещения(ОбработкаЗавершения, Неопределено); + КонецЕсли; + Возврат; + КонецЕсли; + + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(Форма, Истина); + + Контекст.Вставить("Форма", Форма); + Контекст.Вставить("ОбработкаЗавершения", ОбработкаЗавершения); + Контекст.Вставить("КлиентскиеПараметры", КлиентскиеПараметры); + Контекст.Вставить("Оповещение", Новый ОписаниеОповещения("ПродлитьХранениеКонтекстаОперации", ЭтотОбъект)); + + Оповещение = Новый ОписаниеОповещения("ОткрытьНовуюФормуПродолжение", ЭтотОбъект, Контекст); + + Если КлиентскиеПараметры = Неопределено Тогда + Форма.ПродолжитьОткрытие(Оповещение, ОбщиеВнутренниеДанные); + Иначе + Форма.ПродолжитьОткрытие(Оповещение, ОбщиеВнутренниеДанные, КлиентскиеПараметры); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ОткрытьНовуюФорму. +&НаКлиенте +Процедура ОткрытьНовуюФормуПродолжение(Результат, Контекст) Экспорт + + Если Контекст.Форма.Открыта() Тогда + Возврат; + КонецЕсли; + + ОбновитьХранениеФормы(Контекст); + + Если ТипЗнч(Контекст.ОбработкаЗавершения) = Тип("ОписаниеОповещения") Тогда + ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Результат); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ОткрытьНовуюФорму. +&НаКлиенте +Процедура ОткрытьНовуюФормуОповещениеОЗакрытии(Результат, Контекст) Экспорт + + ОбновитьХранениеФормы(Контекст); + + Если ТипЗнч(Контекст.ОбработкаЗавершения) = Тип("ОписаниеОповещения") Тогда + ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Результат); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьХранениеФормы(Контекст) + + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(Контекст.Форма, Ложь); + Контекст.Форма.ОписаниеОповещенияОЗакрытии = Неопределено; + + Если ТипЗнч(Контекст.КлиентскиеПараметры) = Тип("Структура") + И Контекст.КлиентскиеПараметры.Свойство("ОписаниеДанных") + И ТипЗнч(Контекст.КлиентскиеПараметры.ОписаниеДанных) = Тип("Структура") + И Контекст.КлиентскиеПараметры.ОписаниеДанных.Свойство("КонтекстОперации") + И ТипЗнч(Контекст.КлиентскиеПараметры.ОписаниеДанных.КонтекстОперации) = Тип("ФормаКлиентскогоПриложения") Тогда + + #Если ВебКлиент Тогда + ПродлитьХранениеКонтекстаОперации(Контекст.КлиентскиеПараметры.ОписаниеДанных.КонтекстОперации); + #КонецЕсли + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПродлитьХранениеКонтекстаОперации(Форма) Экспорт + + Если ТипЗнч(Форма) = Тип("ФормаКлиентскогоПриложения") Тогда + ВременноеХранилищеКонтекстовОпераций.Вставить(Форма, + Новый Структура("Форма, Время", Форма, ОбщегоНазначенияКлиент.ДатаСеанса())); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьУстаревшиеКонтекстыОпераций() + + УдаляемыеСсылкиНаФормы = Новый Массив; + Для Каждого КлючИЗначение Из ВременноеХранилищеКонтекстовОпераций Цикл + + Если КлючИЗначение.Значение.Форма.Открыта() Тогда + ВременноеХранилищеКонтекстовОпераций[КлючИЗначение.Ключ].Время = ОбщегоНазначенияКлиент.ДатаСеанса(); + + ИначеЕсли КлючИЗначение.Значение.Время + 15*60 < ОбщегоНазначенияКлиент.ДатаСеанса() Тогда + УдаляемыеСсылкиНаФормы.Добавить(КлючИЗначение.Ключ); + КонецЕсли; + КонецЦикла; + + Для Каждого Форма Из УдаляемыеСсылкиНаФормы Цикл + ВременноеХранилищеКонтекстовОпераций.Удалить(Форма); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПарольСертификата(СертификатСсылка, Пароль, ПояснениеПароля) Экспорт // АПК:78 - исключение для безопасного хранения паролей. + + УстановленныеПароли = ОбщиеВнутренниеДанные.Получить("УстановленныеПароли"); + ПоясненияУстановленныхПаролей = ОбщиеВнутренниеДанные.Получить("ПоясненияУстановленныхПаролей"); + + Если УстановленныеПароли = Неопределено Тогда + УстановленныеПароли = Новый Соответствие; + ОбщиеВнутренниеДанные.Вставить("УстановленныеПароли", УстановленныеПароли); + ПоясненияУстановленныхПаролей = Новый Соответствие; + ОбщиеВнутренниеДанные.Вставить("ПоясненияУстановленныхПаролей", ПоясненияУстановленныхПаролей); + КонецЕсли; + + УстановленныеПароли.Вставить(СертификатСсылка, ?(Пароль = Неопределено, Пароль, Строка(Пароль))); + + НовоеПояснениеПароля = Новый Структура; + НовоеПояснениеПароля.Вставить("ТекстПояснения", ""); + НовоеПояснениеПароля.Вставить("ПояснениеГиперссылка", Ложь); + НовоеПояснениеПароля.Вставить("ТекстПодсказки", ""); + НовоеПояснениеПароля.Вставить("ОбработкаДействия", Неопределено); + + Если ТипЗнч(ПояснениеПароля) = Тип("Структура") Тогда + ЗаполнитьЗначенияСвойств(НовоеПояснениеПароля, ПояснениеПароля); + КонецЕсли; + + ПоясненияУстановленныхПаролей.Вставить(СертификатСсылка, НовоеПояснениеПароля); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..8a8f5cb4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,23 @@ + + + + + ПометкаУдаления + Equal + false + Normal + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" new file mode 100644 index 00000000..08631c93 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" @@ -0,0 +1,1605 @@ + + + + <key>ru</key> + <value>Подбор сертификатов для шифрования данных</value> + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + ГоризонтальнаяГруппа + 80 + + ГруппаПользователейИспользование + 77 + true + true + + true + + + + ГруппаПользователейИспользование + + + Right + + OnChange + ГруппаПользователейИспользованиеПриИзменении + + + ГруппаПользователейИспользованиеРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + + ГруппаПользователейИспользованиеКонтекстноеМеню + 78 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаПользователей + 74 + true + true + + true + + + + ГруппаПользователей + + + None + + OnChange + ГруппаПользователейПриИзменении + + + ГруппаПользователейРасширеннаяПодсказка + 76 + true + true + + true + + Label + true + true + + Left + + + + ГруппаПользователейКонтекстноеМеню + 75 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Горизонтальная группа</value> + + + ГоризонтальнаяГруппаРасширеннаяПодсказка + 81 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + КоманднаяПанель + 40 + + ФормаВыбрать + 42 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + true + true + true + UserCmds + Auto + + + ФормаПодменюДобавить + 46 + + ФормаСоздать + 82 + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 83 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаДобавить + 48 + true + true + + true + + + ФормаДобавитьРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Добавить + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ФормаДобавитьИзФайла + 50 + true + true + + true + + + ФормаДобавитьИзФайлаРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзФайла + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Добавить</value> + + + ФормаПодменюДобавитьРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.CreateListItem + + + + + ФормаИзменить + 44 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаОбновить + 52 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Refresh + Auto + true + true + UserCmds + Auto + + + ФормаПоискПоТекущемуЗначению + 54 + true + true + + true + + + ФормаПоискПоТекущемуЗначениюРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.FindByCurrentValue + Auto + true + true + UserCmds + Auto + + + ФормаНайти + 56 + true + true + + true + + + ФормаНайтиРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ФормаОтменитьПоиск + 58 + true + true + + true + + + ФормаОтменитьПоискРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ФормаНастройкаСписка + 60 + true + true + + true + + + ФормаНастройкаСпискаРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ListSettings + Auto + true + true + UserCmds + Auto + + + ФормаЗагрузитьНастройкиДинамическогоСписка + 62 + true + true + + true + + + ФормаЗагрузитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.LoadDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьНастройкиДинамическогоСписка + 64 + true + true + + true + + + ФормаСохранитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SaveDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСтандартныеНастройкиДинамическогоСписка + 66 + true + true + + true + + + ФормаСтандартныеНастройкиДинамическогоСпискаРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.DynamicListStandardSettings + Auto + true + true + UserCmds + Auto + + + ФормаВывестиСписок + 68 + true + true + + true + + + ФормаВывестиСписокРасширеннаяПодсказка + 69 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + + ФормаИзменитьФорму + 70 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 72 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Copy + Delete + + Наименование + 25 + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 26 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 25 + true + true + + + + Фирма + 28 + true + true + + true + + + + Список.Фирма + + + + ФирмаРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + + ФирмаКонтекстноеМеню + 29 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 15 + true + true + + + + Пользователь + 37 + true + true + + true + + + + Список.Пользователь + + + + ПользовательРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + ПользовательКонтекстноеМеню + 38 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 15 + true + true + + + + Организация + 34 + true + true + + + + Список.Организация + + + + ОрганизацияРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + ОрганизацияКонтекстноеМеню + 35 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 15 + true + true + + + + КемВыдан + 31 + true + true + + true + + + + Список.КемВыдан + + + + КемВыданРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + + КемВыданКонтекстноеМеню + 32 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 15 + true + true + + + + Ссылка + 22 + true + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 23 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + BeforeAddRow + СписокПередНачаломДобавления + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 10 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 12 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 15 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 17 + + СписокУправлениеПоискомРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 20 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + + СписокКонтекстноеМенюВыбрать + 84 + true + true + + true + + + СписокКонтекстноеМенюВыбратьРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Choose + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюПодменюДобавить + 86 + + СписокКонтекстноеМенюСоздать + 94 + true + + true + + + СписокКонтекстноеМенюСоздатьРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюДобавить + 88 + true + true + + true + + + СписокКонтекстноеМенюДобавитьРасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Добавить + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюДобавитьИзФайла + 90 + true + true + + true + + + СписокКонтекстноеМенюДобавитьИзФайлаРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзФайла + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавить</value> + + + СписокКонтекстноеМенюПодменюДобавитьРасширеннаяПодсказка + 87 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.CreateListItem + + Auto + + + + СписокКонтекстноеМенюСтандартныеКоманды + 92 + true + true + + true + + + <key>ru</key> + <value>Контекстное меню стандартные команды</value> + + + СписокКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + true + true + + true + + + true + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Delete + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + СертификатыПереопределяемый.Ссылка КАК Ссылка, + СертификатыПереопределяемый.ПометкаУдаления КАК ПометкаУдаления, + СертификатыПереопределяемый.Наименование КАК Наименование, + СертификатыПереопределяемый.КомуВыдан КАК КомуВыдан, + СертификатыПереопределяемый.Фирма КАК Фирма, + СертификатыПереопределяемый.Фамилия КАК Фамилия, + СертификатыПереопределяемый.Имя КАК Имя, + СертификатыПереопределяемый.Отчество КАК Отчество, + СертификатыПереопределяемый.Должность КАК Должность, + СертификатыПереопределяемый.КемВыдан КАК КемВыдан, + СертификатыПереопределяемый.ДействителенДо КАК ДействителенДо, + СертификатыПереопределяемый.Подписание КАК Подписание, + СертификатыПереопределяемый.Шифрование КАК Шифрование, + СертификатыПереопределяемый.Отпечаток КАК Отпечаток, + СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата, + СертификатыПереопределяемый.Программа КАК Программа, + СертификатыПереопределяемый.Отозван КАК Отозван, + СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча, + СертификатыПереопределяемый.Организация КАК Организация, + СертификатыПереопределяемый.Пользователь КАК Пользователь, + СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия, + СертификатыПереопределяемый.Предопределенный КАК Предопределенный, + СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных +ИЗ + Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый +ГДЕ + &ДополнительноеУсловие +{ГДЕ + (ИСТИНА В + (ВЫБРАТЬ ПЕРВЫЕ 1 + ИСТИНА + ИЗ + РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователейПереопределяемый + ГДЕ + СоставыГруппПользователейПереопределяемый.Пользователь = СертификатыПереопределяемый.Пользователь + И СоставыГруппПользователейПереопределяемый.ГруппаПользователей В (&ГруппаПользователей)))} + Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования + true + true + true + true + true + +
+ + ГруппаПользователей + + <key>ru</key> + <value>Группа пользователей</value> + + 2 + + CatalogRef.ГруппыПользователей + + + true + + + true + + + + ГруппаПользователейИспользование + + <key>ru</key> + <value>Группа пользователей</value> + + 3 + + Boolean + + + true + + + true + + + + ВыполнятьНаСервере + 4 + + + true + + + true + + + + Организация + 5 + + + true + + + true + + + + ДобавитьИзФайла + + <key>ru</key> + <value>Добавить из файла ...</value> + + 2 + + true + + + + ДобавитьИзФайла + + + DontUse + + + Добавить + + <key>ru</key> + <value>Добавить из установленных на компьютере</value> + + 1 + + true + + + + Добавить + + + DontUse + + + ВыполнятьНаСервере + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..f34ac092 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,19 @@ + +

Предназначен для подбора сертификата электронной подписи.

+

Открывается по кнопке Подобрать из окна Шифрование данных.

+

В списке выводится:

+
  • Представление - полное наименование сертификата; +
  • Фирма - организация, которой выдан сертификат; +
  • Пользователь - пользователь, который является владельцем подписи; +
  • Кем выдан - организация, которая выдала сертификат.

Отборы

+
  • Если сертификатов много, то можно отобрать нужные: +
    • по полю Фирма - напишите наименование фирмы или скопируйте его из списка; +
    • по полю Группа пользователей - выберите группу из списка.
  • Включите флажок для того чтобы отобрать сертификаты по нужному значению.

Выбор сертификата

+
  • Выделите нужный сертификат, нажмите Выбрать. Также можно воспользоваться двойным щелчком мыши.

Добавление сертификата

+
  • Нажмите Добавить, выберите источник добавления: +
    • из установленных на компьютере - выберите из списка; +
    • из файла - укажите путь к файлу. В открывшемся окне заполните необходимые поля.

Просмотр данных о сертификате

+
  • +
    С помощью команды Изменить контекстного меню по правой кнопке мыши или меню Еще можно открыть данные о сертификате.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..0882d01c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\320\262\320\224\320\273\321\217\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,124 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебный.УстановитьУсловноеОформлениеСпискаСертификатов(Список); + + Параметры.Отбор.Свойство("Организация", Организация); + + ЗакрыватьПриВыборе = Ложь; + + Если Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + + ТекстЗапроса = Список.ТекстЗапроса; + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСпискаСертификатов( + ТекстЗапроса); + Иначе + ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА"); + КонецЕсли; + + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + СвойстваСписка.ТекстЗапроса = ТекстЗапроса; + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка); + + ГруппаПользователейПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") + И Параметр.Свойство("ЭтоНовый") Тогда + + Элементы.Список.Обновить(); + Элементы.Список.ТекущаяСтрока = Источник; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ГруппаПользователейИспользованиеПриИзменении(Элемент) + + ГруппаПользователейПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппаПользователейПриИзменении(Элемент) + + ГруппаПользователейПриИзмененииНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + + Если Не Копирование Тогда + ПараметрыСоздания = Новый Структура; + ПараметрыСоздания.Вставить("ВЛичныйСписок", Истина); + ПараметрыСоздания.Вставить("Организация", Организация); + + ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификатПослеВыбораНазначения( + "ТолькоДляШифрования", ПараметрыСоздания); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Добавить(Команда) + + Элементы.Список.ДобавитьСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьИзФайла(Команда) + + ПараметрыСоздания = Новый Структура; + ПараметрыСоздания.Вставить("ВЛичныйСписок", Истина); + ПараметрыСоздания.Вставить("Организация", Организация); + + ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификатТолькоДляШифрованияИзФайла(ПараметрыСоздания); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ГруппаПользователейПриИзмененииНаСервере() + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, "ГруппаПользователей", ГруппаПользователей, ГруппаПользователейИспользование); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" new file mode 100644 index 00000000..08b65d45 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" @@ -0,0 +1,1231 @@ + + + + <key>ru</key> + <value>Подписание данных</value> + + + ГруппаПредставлениеДанных + 450 + + ПредставлениеДанных + 18 + + <key>ru</key> + <value>Данные</value> + + true + true + + true + + + + ПредставлениеДанных + + + + ПредставлениеДанныхРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеДанныхКонтекстноеМеню + 19 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ПредставлениеДанныхНажатие + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Представление данных</value> + + + ГруппаПредставлениеДанныхРасширеннаяПодсказка + 451 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ГруппаПодписаниеИКомментарий + 452 + + ГруппаПодписание + 378 + + ГруппаПоля + 433 + + Сертификат + 313 + true + true + + true + + + + Сертификат + + + + OnChange + СертификатПриИзменении + + + СертификатРасширеннаяПодсказка + 315 + true + true + + true + + Label + true + true + + Left + + + + СертификатКонтекстноеМеню + 314 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + AutoComplete + СертификатАвтоПодбор + + + StartChoice + СертификатНачалоВыбора + + + Opening + СертификатОткрытие + + + TextEditEnd + СертификатОкончаниеВводаТекста + + + ChoiceProcessing + СертификатОбработкаВыбора + + true + true + true + false + true + ShowInInputField + true + false + false + true + true + true + DontUse + + + + ГруппаПароль + 454 + + Пароль + 316 + true + true + + true + + + + Пароль + + + + OnChange + ПарольПриИзменении + + + ПарольРасширеннаяПодсказка + 318 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 317 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + ЗапомнитьПароль + 324 + + <key>ru</key> + <value>Запомнить на время сеанса</value> + + true + true + + true + + + + ЗапомнитьПароль + + + Right + + ru + Запомнить пароль сертификата до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее. + + Button + + OnChange + ЗапомнитьПарольПриИзменении + + + ЗапомнитьПарольРасширеннаяПодсказка + 326 + true + true + + true + + Label + true + true + + Left + + + + ЗапомнитьПарольКонтекстноеМеню + 325 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Пароль</value> + + + ГруппаПарольРасширеннаяПодсказка + 455 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + Страницы + 416 + + СтраницаПояснениеУсиленногоПароля + 438 + + ПояснениеУсиленногоПароля + 440 + + <key>ru</key> + <value>Нажмите Подписать, чтобы перейти к вводу пароля. +</value> + + true + true + + true + + + ru + Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, +так как для выбранного сертификата указана усиленная защита закрытого ключа. + + Button + + ПояснениеУсиленногоПароляРасширеннаяПодсказка + 442 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеУсиленногоПароляКонтекстноеМеню + 441 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница пояснение усиленного пароля</value> + + + СтраницаПояснениеУсиленногоПароляРасширеннаяПодсказка + 439 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаПояснениеУстановленногоПароля + 443 + + ПояснениеУстановленногоПароля + 445 + true + true + + true + + Button + + ПояснениеУстановленногоПароляРасширеннаяПодсказка + 447 + true + true + + true + + Label + true + true + + + URLProcessing + ПояснениеУстановленногоПароляРасширеннаяПодсказкаОбработкаНавигационнойСсылки + + Left + + + + ПояснениеУстановленногоПароляКонтекстноеМеню + 446 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + + Click + ПояснениеУстановленногоПароляНажатие + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница пояснение установленного пароля</value> + + + СтраницаПояснениеУстановленногоПароляРасширеннаяПодсказка + 444 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 417 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Поля</value> + + + ГруппаПоляРасширеннаяПодсказка + 434 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Введите пароль закрытого ключа сертификата</value> + + + ГруппаПодписаниеРасширеннаяПодсказка + 379 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + + Комментарий + 408 + + <key>ru</key> + <value>Комментарий к подписи</value> + + true + true + + true + + + + Комментарий + + + 2 + + КомментарийРасширеннаяПодсказка + 410 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 409 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + 1 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Подписание и комментарий</value> + + + ГруппаПодписаниеИКомментарийРасширеннаяПодсказка + 453 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + Подписать + 307 + true + true + + true + + + ПодписатьРасширеннаяПодсказка + 308 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подписать + Auto + true + true + true + UserCmds + Auto + + + Отмена + 303 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + ОтменаРасширеннаяПодсказка + 304 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + Auto + + + ФормаСправка + 448 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 449 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + 45 + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ПредставлениеДанных + + <key>ru</key> + <value>Представление данных</value> + + 2 + + String + + + + true + + + true + + + + Сертификат + + <key>ru</key> + <value>Сертификат</value> + + 12 + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + + ShowError + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 13 + + String + + + + true + + + true + + + + ЗапомнитьПароль + + <key>ru</key> + <value>Запомнить пароль</value> + + 14 + + Boolean + + + true + + + true + + + + Комментарий + + <key>ru</key> + <value>Комментарий</value> + + 4 + + String + + + + true + + + true + + + + СертификатОтпечаток + 5 + + String + + + + true + + + true + + + + СертификатСписокВыбора + 7 + + ValueList + + + true + + + true + + + + + + + ОтборСертификатов + 1 + + + true + + + true + + + + ВыходныеПараметрыДополнительныхДействий + 8 + + + true + + + true + + + + СертификатПрограмма + 9 + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + БезПодтверждения + 10 + + Boolean + + + true + + + true + + + + ОповеститьОбОкончанииСрокаДействия + 11 + + Boolean + + + true + + + true + + + + СертификатДействителенДо + 15 + + Date + + + + true + + + true + + + + СертификатНаСервереОписаниеОшибки + 6 + + + true + + + true + + + + МенеджерКриптографииНаСервереОписаниеОшибки + 16 + + + true + + + true + + + + ОтборОтпечатков + 17 + + + true + + + true + + + + СертификатУсиленнаяЗащитаЗакрытогоКлюча + 18 + + Boolean + + + true + + + true + + + + ВыполнятьНаСервере + 19 + + Boolean + + + true + + + true + + + + СертификатАдрес + 3 + + String + + + + true + + + true + + + + ВыполнятьВМоделиСервиса + 20 + + Boolean + + + true + + + true + + + + СертификатОрганизация + 21 + + DefinedType.Организация + + + true + + + true + + + + ИмяПоляАктивизироватьПоУмолчанию + 22 + + String + + + + true + + + true + + + + ОблачныйПарольПодтвержден + 23 + + Boolean + + + true + + + true + + + + Подписать + + <key>ru</key> + <value>Подписать</value> + + 5 + + true + + + + Подписать + + + DontUse + + + Операция + + String + + + + + ЗаголовокДанных + + String + + + + + ПредставлениеДанных + + String + + + + + ПоказатьКомментарий + + Boolean + + + + ОткрытиеСпискаДанных + + Boolean + + + + ОтборСертификатов + + + + ПараметрыДополнительныхДействий + + + + БезПодтверждения + + Boolean + + + + ОтпечаткиСертификатовНаКлиенте + + + + ВыполнятьНаСервере + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" new file mode 100644 index 00000000..42f80996 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" @@ -0,0 +1,16 @@ + +

Предназначена для подписания файлов, электронных документов и других данных.

+

Электронная подпись - реквизит электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Контроль неизменности электронного документа осуществляется в результате проверки соответствия электронной подписи и документа, а также проверки действительности сертификата. Контроль неизменности электронного документа можно выполнить в любой момент времени.

+

Подписание данных

+
  • С помощью ссылки в верхней части окна можно просмотреть объект, который будет подписан. Ссылка принимает значение наименования объекта. +
  • Подписывать данные могут разные пользователи, при этом для каждого будет создана своя подпись. +
  • Если Сертификат не выбран - выберите его из списка. Если при следующем открытии сертификат будет среди установленных на компьютере, повторный выбор не потребуется. +
  • При выборе из выпадающего списка будут показаны только сертификаты, у которых поле Пользователь не заполнено или совпадает с текущим пользователем сеанса, а поле Программа заполнено. Если при открытии окна Подписание был указан отбор по организации, то в выпадающем списке не будет сертификатов, у которых поле Организация не совпадает с организацией, указанной в отборе. Если при открытии окна Подписание был указан конкретный список сертификатов, то будет показан только этот список. +
  • При выборе из списка личных сертификатов (установленных на компьютере и на сервере) путем нажатия Показать все, показываются все сертификаты без учета полей Пользователь и Программа. Если при открытии окна Подписание был указан отбор по организации, то в списке не будет сертификатов, у которых поле Организация не совпадает с организацией, указанной в отборе. Но будут показаны все сертификаты, которых еще нет в списке (то есть те, которые есть только в хранилище сертификатов операционный системы компьютера или сервера). +
  • Введите Пароль к закрытому ключу (указанный при установке или создании сертификата). +
  • Включите флажок Запомнить пароль, для того чтобы не вводить пароль в следующий раз. +
  • В некоторых случаях можно ввести Комментарий к подписи - дополнительную информацию о подписи. +
  • Для выполнения подписи нажмите Подписать. +
  • Данные будут подписаны с использованием указанного сертификата. +
  • Созданная электронная подпись хранится в программе. Подписанный объект становится недоступным для редактирования и отображается в списках со значком .

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" new file mode 100644 index 00000000..f1e74884 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\320\276\320\264\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" @@ -0,0 +1,638 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ВнутренниеДанные, СвойстваПароля, ОписаниеДанных, ФормаОбъекта, ОбработкаПослеПредупреждения, ТекущийСписокПредставлений; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебный.НастроитьПояснениеВводаПароля(ЭтотОбъект, , + Элементы.ПояснениеУсиленногоПароля.Имя); + + ЭлектроннаяПодписьСлужебный.НастроитьФормуПодписанияШифрованияРасшифровки(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ВнутренниеДанные = Неопределено Тогда + Отказ = Истина; + КонецЕсли; + + Если ЗначениеЗаполнено(ИмяПоляАктивизироватьПоУмолчанию) Тогда + ТекущийЭлемент = Элементы[ИмяПоляАктивизироватьПоУмолчанию]; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + ОчиститьПеременныеФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + ПодключитьОбработчикОжидания("ПриИзмененииСпискаСертификатов", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПредставлениеДанныхНажатие(Элемент, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.ПредставлениеДанныхНажатие(ЭтотОбъект, + Элемент, СтандартнаяОбработка, ТекущийСписокПредставлений); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("СертификатПриИзмененииЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры СертификатПриИзменении. +&НаКлиенте +Процедура СертификатПриИзмененииЗавершение(ОтпечаткиСертификатовНаКлиенте, Контекст) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте); + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, СвойстваПароля); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если ТипЗнч(ОтборСертификатов) = Тип("СписокЗначений") И ОтборСертификатов.Количество() > 0 Тогда + ЭлектроннаяПодписьСлужебныйКлиент.НачалоВыбораСертификатаПриУстановленномОтборе(ЭтотОбъект); + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ВыбранныйСертификат", Сертификат); + ПараметрыФормы.Вставить("ДляШифрованияИРасшифровки", Ложь); + ПараметрыФормы.Вставить("ВернутьПароль", Истина); + Если ТипЗнч(ОтборСертификатов) <> Тип("СписокЗначений") Тогда + ПараметрыФормы.Вставить("ОтборПоОрганизации", ОтборСертификатов); + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ВыборСертификатаДляПодписанияИлиРасшифровки(ПараметрыФормы, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОткрытие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Если ЗначениеЗаполнено(Сертификат) Тогда + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(Сертификат); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если ВыбранноеЗначение = Истина Тогда + Сертификат = ВнутренниеДанные["ВыбранныйСертификат"]; + ВнутренниеДанные.Удалить("ВыбранныйСертификат"); + Иначе + Сертификат = ВыбранноеЗначение; + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("СертификатОбработкаВыбораЗавершение", ЭтотОбъект, ВыбранноеЗначение)); + +КонецПроцедуры + +// Продолжение процедуры СертификатОбработкаВыбора. +&НаКлиенте +Процедура СертификатОбработкаВыбораЗавершение(ОтпечаткиСертификатовНаКлиенте, ВыбранноеЗначение) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте); + + Если ВыбранноеЗначение = Истина + И ВнутренниеДанные["ВыбранныйСертификатПароль"] <> Неопределено Тогда + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля,, ВнутренниеДанные["ВыбранныйСертификатПароль"]); + ВнутренниеДанные.Удалить("ВыбранныйСертификатПароль"); + Иначе + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, СвойстваПароля); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.СертификатПодборИзСпискаВыбора(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.СертификатПодборИзСпискаВыбора(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ПарольПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииРеквизитаПароль", Истина)); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗапомнитьПарольПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииРеквизитаЗапомнитьПароль", Истина)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПояснениеУстановленногоПароляНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПояснениеУстановленногоПароляНажатие(ЭтотОбъект, Элемент, СвойстваПароля); + +КонецПроцедуры + +&НаКлиенте +Процедура ПояснениеУстановленногоПароляРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.ПояснениеУстановленногоПароляОбработкаНавигационнойСсылки( + ЭтотОбъект, Элемент, НавигационнаяСсылка, СтандартнаяОбработка, СвойстваПароля); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подписать(Команда) + + Если Не Элементы.Подписать.Доступность Тогда + Возврат; + КонецЕсли; + + ОписаниеДанных.Вставить("ПользовательНажалКнопкуПодписать", Истина); + + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + Элементы.Подписать.Доступность = Ложь; + + ПодписатьДанные(Новый ОписаниеОповещения("ПодписатьЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры Подписать. +&НаКлиенте +Процедура ПодписатьЗавершение(Результат, Контекст) Экспорт + + Элементы.Подписать.Доступность = Истина; + + Если Результат = Истина Тогда + Закрыть(Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПродолжитьОткрытие(Оповещение, ОбщиеВнутренниеДанные, КлиентскиеПараметры) Экспорт + + Если КлиентскиеПараметры = ВнутренниеДанные Тогда + КлиентскиеПараметры = Новый Структура("Сертификат, СвойстваПароля", Сертификат, СвойстваПароля); + Возврат; + КонецЕсли; + + Если КлиентскиеПараметры.Свойство("УказанКонтекстДругойОперации") Тогда + СвойстваСертификата = ОбщиеВнутренниеДанные; + КлиентскиеПараметры.ОписаниеДанных.КонтекстОперации.ПродолжитьОткрытие(Неопределено, Неопределено, СвойстваСертификата); + Если СвойстваСертификата.Сертификат = Сертификат Тогда + СвойстваПароля = СвойстваСертификата.СвойстваПароля; + КонецЕсли; + КонецЕсли; + + ОписаниеДанных = КлиентскиеПараметры.ОписаниеДанных; + ФормаОбъекта = КлиентскиеПараметры.Форма; + ТекущийСписокПредставлений = КлиентскиеПараметры.ТекущийСписокПредставлений; + + ВнутренниеДанные = ОбщиеВнутренниеДанные; + Контекст = Новый Структура("Оповещение", Оповещение); + Оповещение = Новый ОписаниеОповещения("ПродолжитьОткрытие", ЭтотОбъект); + + ЭлектроннаяПодписьСлужебныйКлиент.ПродолжитьОткрытиеНачало(Новый ОписаниеОповещения( + "ПродолжитьОткрытиеПослеНачала", ЭтотОбъект, Контекст), ЭтотОбъект, КлиентскиеПараметры); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеНачала(Результат, Контекст) Экспорт + + Если Результат <> Истина Тогда + ПродолжитьОткрытиеЗавершение(Контекст); + Возврат; + КонецЕсли; + + ДополнительныеПараметры = Новый Структура; + Если СвойстваПароля <> Неопределено Тогда + ДополнительныеПараметры.Вставить("ПриУстановкеПароляИзДругойОперации", Истина); + КонецЕсли; + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, ДополнительныеПараметры); + + Если БезПодтверждения + И ( ДополнительныеПараметры.ПарольУказан + Или ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча + Или ОблачныйПарольПодтвержден) Тогда + + ОбработкаПослеПредупреждения = Неопределено; + ПодписатьДанные(Новый ОписаниеОповещения("ПродолжитьОткрытиеПослеПодписанияДанных", ЭтотОбъект, Контекст)); + Возврат; + КонецЕсли; + + Открыть(); + + ПродолжитьОткрытиеЗавершение(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеПодписанияДанных(Результат, Контекст) Экспорт + + ПродолжитьОткрытиеЗавершение(Контекст, Результат = Истина); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеЗавершение(Контекст, Результат = Неопределено) + + Если Не Открыта() Тогда + ОчиститьПеременныеФормы(); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Результат); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьПеременныеФормы() + + ОписаниеДанных = Неопределено; + ФормаОбъекта = Неопределено; + ТекущийСписокПредставлений = Неопределено; + +КонецПроцедуры + +&НаКлиенте +Функция ПеременныеОчищены() + + Возврат ОписаниеДанных = Неопределено + И ФормаОбъекта = Неопределено + И ТекущийСписокПредставлений = Неопределено; + +КонецФункции + +// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. +&НаКлиенте +Процедура ВыполнитьПодписание(КлиентскиеПараметры, ОбработкаЗавершения) Экспорт +// АПК:78-вкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. + + ЭлектроннаяПодписьСлужебныйКлиент.ОбновитьФормуПередПовторнымИспользованием(ЭтотОбъект, КлиентскиеПараметры); + + ОписаниеДанных = КлиентскиеПараметры.ОписаниеДанных; + ФормаОбъекта = КлиентскиеПараметры.Форма; + ТекущийСписокПредставлений = КлиентскиеПараметры.ТекущийСписокПредставлений; + + ОбработкаПослеПредупреждения = ОбработкаЗавершения; + + Контекст = Новый Структура("ОбработкаЗавершения", ОбработкаЗавершения); + ПодписатьДанные(Новый ОписаниеОповещения("ВыполнитьПодписаниеЗавершение", ЭтотОбъект, Контекст)); + +КонецПроцедуры + +// Продолжение процедуры ВыполнитьПодписание. +&НаКлиенте +Процедура ВыполнитьПодписаниеЗавершение(Результат, Контекст) Экспорт + + Если Результат = Истина Тогда + ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииСпискаСертификатов() + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("ПриИзмененииСпискаСертификатовЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры ПриИзмененииСпискаСертификатов. +&НаКлиенте +Процедура ПриИзмененииСпискаСертификатовЗавершение(ОтпечаткиСертификатовНаКлиенте, Контекст) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте, Истина); + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииСвойствСертификата", Истина)); + +КонецПроцедуры + +&НаСервере +Процедура СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте, ПроверитьСсылку = Ложь) + + Если ПроверитьСсылку + И ЗначениеЗаполнено(Сертификат) + И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сертификат, "Ссылка") <> Сертификат Тогда + + Сертификат = Неопределено; + КонецЕсли; + + ЭлектроннаяПодписьСлужебный.СертификатПриИзмененииНаСервере(ЭтотОбъект, ОтпечаткиСертификатовНаКлиенте); + +КонецПроцедуры + +&НаКлиенте +Процедура ПодписатьДанные(Оповещение) + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + Контекст.Вставить("ОшибкаНаКлиенте", Новый Структура); + Контекст.Вставить("ОшибкаНаСервере", Новый Структура); + + Если СертификатДействителенДо < ОбщегоНазначенияКлиент.ДатаСеанса() Тогда + Контекст.ОшибкаНаКлиенте.Вставить("ОписаниеОшибки", + НСтр("ru = 'У выбранного сертификата истек срок действия. + |Выберите другой сертификат.'")); + ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(СертификатПрограмма) Тогда + Контекст.ОшибкаНаКлиенте.Вставить("ОписаниеОшибки", + НСтр("ru = 'У выбранного сертификата не указана программа для закрытого ключа. + |Выберите другой сертификат.'")); + ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + ВыбранныйСертификат = Новый Структура; + ВыбранныйСертификат.Вставить("Ссылка", Сертификат); + ВыбранныйСертификат.Вставить("Отпечаток", СертификатОтпечаток); + ВыбранныйСертификат.Вставить("Данные", СертификатАдрес); + ОписаниеДанных.Вставить("ВыбранныйСертификат", ВыбранныйСертификат); + + Если ОписаниеДанных.Свойство("ПередВыполнением") + И ТипЗнч(ОписаниеДанных.ПередВыполнением) = Тип("ОписаниеОповещения") Тогда + + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("ОписаниеДанных", ОписаниеДанных); + ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения( + "ПодписатьДанныеПослеОбработкиПередВыполнением", ЭтотОбъект, Контекст)); + + ВыполнитьОбработкуОповещения(ОписаниеДанных.ПередВыполнением, ПараметрыВыполнения); + Иначе + ПодписатьДанныеПослеОбработкиПередВыполнением(Новый Структура, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПодписатьДанные. +&НаКлиенте +Процедура ПодписатьДанныеПослеОбработкиПередВыполнением(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + Если Результат.Свойство("ОписаниеОшибки") Тогда + ОбработатьОшибку(Контекст.Оповещение, Новый Структура("ОписаниеОшибки", Результат.ОписаниеОшибки), Новый Структура); + Возврат; + КонецЕсли; + + Контекст.Вставить("ИдентификаторФормы", УникальныйИдентификатор); + Если ТипЗнч(ФормаОбъекта) = Тип("ФормаКлиентскогоПриложения") Тогда + Контекст.ИдентификаторФормы = ФормаОбъекта.УникальныйИдентификатор; + ИначеЕсли ТипЗнч(ФормаОбъекта) = Тип("УникальныйИдентификатор") Тогда + Контекст.ИдентификаторФормы = ФормаОбъекта; + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ПроверитьСертификат(Новый ОписаниеОповещения( + "ПодписатьДанныеПослеПроверкиСертификата", ЭтотОбъект, Контекст), + СертификатАдрес,,, Ложь); + +КонецПроцедуры + +// Продолжение процедуры ПодписатьДанные. +&НаКлиенте +Процедура ПодписатьДанныеПослеПроверкиСертификата(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("ОписаниеДанных", ОписаниеДанных); + ПараметрыВыполнения.Вставить("Форма", ЭтотОбъект); + ПараметрыВыполнения.Вставить("ИдентификаторФормы", Контекст.ИдентификаторФормы); + ПараметрыВыполнения.Вставить("ЗначениеПароля", СвойстваПароля.Значение); + ПараметрыВыполнения.Вставить("СертификатВерен", ?(Результат = Неопределено, Результат, Результат = Истина)); + ПараметрыВыполнения.Вставить("СертификатАдрес", СертификатАдрес); + + ПараметрыВыполнения.Вставить("ПолноеПредставлениеДанных", + ЭлектроннаяПодписьСлужебныйКлиент.ПолноеПредставлениеДанных(ЭтотОбъект)); + + ПараметрыВыполнения.Вставить("ТекущийСписокПредставлений", ТекущийСписокПредставлений); + + Контекст.Вставить("ПараметрыВыполнения", ПараметрыВыполнения); + + Если ЭлектроннаяПодписьКлиент.СоздаватьЭлектронныеПодписиНаСервере() Тогда + Если ЗначениеЗаполнено(СертификатНаСервереОписаниеОшибки) Тогда + Результат = Новый Структура("Ошибка", СертификатНаСервереОписаниеОшибки); + СертификатНаСервереОписаниеОшибки = Новый Структура; + ПодписатьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст); + Иначе + // Попытка подписания на сервере. + ЭлектроннаяПодписьСлужебныйКлиент.ВыполнитьНаСтороне(Новый ОписаниеОповещения( + "ПодписатьДанныеПослеВыполненияНаСторонеСервера", ЭтотОбъект, Контекст), + "Подписание", "НаСторонеСервера", Контекст.ПараметрыВыполнения); + КонецЕсли; + Иначе + ПодписатьДанныеПослеВыполненияНаСторонеСервера(Неопределено, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПодписатьДанные. +&НаКлиенте +Процедура ПодписатьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + Если Результат <> Неопределено Тогда + ПодписатьДанныеПослеВыполнения(Результат); + КонецЕсли; + + Если Результат <> Неопределено И Не Результат.Свойство("Ошибка") Тогда + ПодписатьДанныеПослеВыполненияНаСторонеКлиента(Новый Структура, Контекст); + Иначе + Если Результат <> Неопределено Тогда + Контекст.ОшибкаНаСервере = Результат.Ошибка; + КонецЕсли; + + // Попытка подписания на клиенте. + ЭлектроннаяПодписьСлужебныйКлиент.ВыполнитьНаСтороне(Новый ОписаниеОповещения( + "ПодписатьДанныеПослеВыполненияНаСторонеКлиента", ЭтотОбъект, Контекст), + "Подписание", "НаСторонеКлиента", Контекст.ПараметрыВыполнения); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПодписатьДанные. +&НаКлиенте +Процедура ПодписатьДанныеПослеВыполненияНаСторонеКлиента(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + ПодписатьДанныеПослеВыполнения(Результат); + + Если Результат.Свойство("Ошибка") Тогда + + Контекст.ОшибкаНаКлиенте = Результат.Ошибка; + НеподписанныеДанные = ЭлектроннаяПодписьСлужебныйКлиент.СвойстваТекущегоЭлементаДанных( + Контекст.ПараметрыВыполнения); + + ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере, НеподписанныеДанные); + Возврат; + + КонецЕсли; + + Если ЗначениеЗаполнено(ПредставлениеДанных) + И (Не ОписаниеДанных.Свойство("СообщитьОЗавершении") + Или ОписаниеДанных.СообщитьОЗавершении <> Ложь) Тогда + + ЭлектроннаяПодписьКлиент.ИнформироватьОПодписанииОбъекта( + ЭлектроннаяПодписьСлужебныйКлиент.ПолноеПредставлениеДанных(ЭтотОбъект), + ТекущийСписокПредставлений.Количество() > 1); + КонецЕсли; + + Если ОписаниеДанных.Свойство("КонтекстОперации") Тогда + ОписаниеДанных.КонтекстОперации = ЭтотОбъект; + КонецЕсли; + + Если ОповеститьОбОкончанииСрокаДействия Тогда + ПараметрыФормы = Новый Структура("Сертификат", Сертификат); + ОткрытьФорму("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма.ОповещениеОбОкончанииСрокаДействия", + ПараметрыФормы); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Истина); + +КонецПроцедуры + +// Продолжение процедуры ПодписатьДанные. +&НаКлиенте +Процедура ПодписатьДанныеПослеВыполнения(Результат) + + Если Результат.Свойство("ОперацияНачалась") Тогда + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, + СвойстваПароля, Новый Структура("ПриУспешномВыполненииОперации", Истина)); + КонецЕсли; + + Если Результат.Свойство("ЕстьОбработанныеЭлементыДанных") Тогда + // После начала подписания изменять сертификат более недопустимо, + // иначе набор данных будет обработан по-разному. + Элементы.Сертификат.ТолькоПросмотр = Истина; + Элементы.Комментарий.ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьОшибку(Оповещение, ОшибкаНаКлиенте, ОшибкаНаСервере, НеподписанныеДанные = Неопределено) + + Если ОписаниеДанных.Свойство("ПрекратитьВыполнение") Тогда + + Если Не ОписаниеДанных.Свойство("ОписаниеОшибки") Тогда + ОписаниеДанных.Вставить("ОписаниеОшибки"); + КонецЕсли; + + ОписаниеДанных.ОписаниеОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОбщееОписаниеОшибки( + ОшибкаНаКлиенте, ОшибкаНаСервере, НСтр("ru = 'Не удалось подписать данные по причине:'")); + + Если Открыта() Тогда + Закрыть(Ложь); + Иначе + ВыполнитьОбработкуОповещения(Оповещение, Ложь); + КонецЕсли; + + Иначе + + Если Не Открыта() И ОбработкаПослеПредупреждения = Неопределено Тогда + Открыть(); + КонецЕсли; + + ДополнительныеПараметры = Новый Структура; + Если НеподписанныеДанные <> Неопределено Тогда + ДополнительныеПараметры.Вставить("НеподписанныеДанные", НеподписанныеДанные); + КонецЕсли; + ДополнительныеПараметры.Вставить("Сертификат", Сертификат); + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Не удалось подписать данные'"), "", + ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры, ОбработкаПослеПредупреждения); + + ВыполнитьОбработкуОповещения(Оповещение, Ложь); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Form.form" new file mode 100644 index 00000000..adbf2cd9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Form.form" @@ -0,0 +1,5494 @@ + + + + ГруппаОбщиеПроверки + 149 + + ГруппаЗаконныйСертификат + 1 + + ЗаконныйСертификатНаКлиентеКартинка + 32 + + <key>ru</key> + <value>Законный сертификат на клиенте картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ЗаконныйСертификатНаКлиентеКартинкаРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + + ЗаконныйСертификатНаКлиентеКартинкаКонтекстноеМеню + 33 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ЗаконныйСертификатНаСервереКартинка + 3 + + <key>ru</key> + <value>Законный сертификат на сервере картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ЗаконныйСертификатНаСервереКартинкаРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + + ЗаконныйСертификатНаСервереКартинкаКонтекстноеМеню + 4 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ЗаконныйСертификатРезультатИРешение + 206 + + ЗаконныйСертификатНадпись + 6 + + <key>ru</key> + <value>Соответствие законодательству Российской Федерации</value> + + true + true + + true + + + ЗаконныйСертификатНадписьРасширеннаяПодсказка + 8 + + <key>ru</key> + <value>Показывает соответствие федеральному закону Российской Федерации от 6 апреля 2011 г. N 63-ФЗ "Об электронной подписи". +Рекомендуется использовать квалифицированные сертификаты ключа подписи (КСКП) по 63-ФЗ.</value> + + true + true + + true + + Label + true + true + + Left + + + + ЗаконныйСертификатНадписьКонтекстноеМеню + 7 + true + true + + true + + true + + Label + true + 1 + true + + Left + + + + ЗаконныйСертификатРешения + 314 + + ЗаконныйСертификатРешениеКлиент + 208 + + ЗаконныйСертификатРешениеКлиентКартинка + 210 + + <key>ru</key> + <value>Законный сертификат решение клиент картинка</value> + + true + true + + true + + + ЗаконныйСертификатРешениеКлиентКартинкаРасширеннаяПодсказка + 212 + true + true + + true + + Label + true + true + + Left + + + + ЗаконныйСертификатРешениеКлиентКартинкаКонтекстноеМеню + 211 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерКлиент + + AsFileRef + + + + ЗаконныйСертификатРешениеКлиентНадпись + 213 + + <key>ru</key> + <value>Законный сертификат решение клиент надпись</value> + + true + true + + true + + + ЗаконныйСертификатРешениеКлиентНадписьРасширеннаяПодсказка + 215 + true + true + + true + + Label + true + true + + Left + + + + ЗаконныйСертификатРешениеКлиентНадписьКонтекстноеМеню + 214 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Законный сертификат решение клиент</value> + + + ЗаконныйСертификатРешениеКлиентРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ЗаконныйСертификатРешениеСервер + 216 + + ЗаконныйСертификатРешениеСерверКартинка + 218 + + <key>ru</key> + <value>Законный сертификат решение сервер картинка</value> + + true + true + + true + + + ЗаконныйСертификатРешениеСерверКартинкаРасширеннаяПодсказка + 220 + true + true + + true + + Label + true + true + + Left + + + + ЗаконныйСертификатРешениеСерверКартинкаКонтекстноеМеню + 219 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерСервер + + AsFileRef + + + + ЗаконныйСертификатРешениеСерверНадпись + 221 + + <key>ru</key> + <value>Законный сертификат решение сервер надпись</value> + + true + true + + true + + + ЗаконныйСертификатРешениеСерверНадписьРасширеннаяПодсказка + 223 + true + true + + true + + Label + true + true + + Left + + + + ЗаконныйСертификатРешениеСерверНадписьКонтекстноеМеню + 222 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Законный сертификат решение сервер</value> + + + ЗаконныйСертификатРешениеСерверРасширеннаяПодсказка + 217 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Законный сертификат решения</value> + + + ЗаконныйСертификатРешенияРасширеннаяПодсказка + 315 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Законный сертификат результат и решение</value> + + + ЗаконныйСертификатРезультатИРешениеРасширеннаяПодсказка + 207 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + + true + + + <key>ru</key> + <value>Законный сертификат</value> + + + ГруппаЗаконныйСертификатРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаНаличиеСертификата + 38 + + НаличиеСертификатаНаКлиентеКартинка + 40 + + <key>ru</key> + <value>Наличие сертификата на клиенте картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + НаличиеСертификатаНаКлиентеКартинкаРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + + НаличиеСертификатаНаКлиентеКартинкаКонтекстноеМеню + 41 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + НаличиеСертификатаНаСервереКартинка + 43 + + <key>ru</key> + <value>Наличие сертификата на сервере картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + НаличиеСертификатаНаСервереКартинкаРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + + НаличиеСертификатаНаСервереКартинкаКонтекстноеМеню + 44 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + НаличиеСертификатаРезультатИРешение + 170 + + НаличиеСертификатаНадпись + 46 + + <key>ru</key> + <value>Наличие сертификата в личном списке</value> + + true + true + + true + + + НаличиеСертификатаНадписьРасширеннаяПодсказка + 48 + + <key>ru</key> + <value>Показывает установлен ли сертификат в личный список (личное хранилище) на компьютере. Для подписания и расшифровки требуется, чтобы сертификат был установлен в личный список на компьютере и был связан с закрытым ключом.</value> + + true + true + + true + + Label + true + true + + Left + + + + НаличиеСертификатаНадписьКонтекстноеМеню + 47 + true + true + + true + + true + + Label + true + 1 + true + + + Click + Подключаемый_НадписьНажатие + + Left + + + + НаличиеСертификатаРешения + 316 + + НаличиеСертификатаРешениеКлиент + 172 + + НаличиеСертификатаРешениеКлиентКартинка + 176 + + <key>ru</key> + <value>Наличие сертификата решение клиент картинка</value> + + true + true + + true + + + НаличиеСертификатаРешениеКлиентКартинкаРасширеннаяПодсказка + 178 + true + true + + true + + Label + true + true + + Left + + + + НаличиеСертификатаРешениеКлиентКартинкаКонтекстноеМеню + 177 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерКлиент + + AsFileRef + + + + НаличиеСертификатаРешениеКлиентНадпись + 179 + + <key>ru</key> + <value>Наличие сертификата (клиент)</value> + + true + true + + true + + + НаличиеСертификатаРешениеКлиентНадписьРасширеннаяПодсказка + 181 + true + true + + true + + Label + true + true + + Left + + + + НаличиеСертификатаРешениеКлиентНадписьКонтекстноеМеню + 180 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Наличие сертификата решение клиент</value> + + + НаличиеСертификатаРешениеКлиентРасширеннаяПодсказка + 173 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + НаличиеСертификатаРешениеСервер + 174 + + НаличиеСертификатаРешениеСерверКартинка + 182 + + <key>ru</key> + <value>Наличие сертификата решение сервер картинка</value> + + true + true + + true + + + НаличиеСертификатаРешениеСерверКартинкаРасширеннаяПодсказка + 184 + true + true + + true + + Label + true + true + + Left + + + + НаличиеСертификатаРешениеСерверКартинкаКонтекстноеМеню + 183 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерСервер + + AsFileRef + + + + НаличиеСертификатаРешениеСерверНадпись + 185 + + <key>ru</key> + <value>Наличие сертификата (сервер)</value> + + true + true + + true + + + НаличиеСертификатаРешениеСерверНадписьРасширеннаяПодсказка + 187 + true + true + + true + + Label + true + true + + Left + + + + НаличиеСертификатаРешениеСерверНадписьКонтекстноеМеню + 186 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Наличие сертификата решение (сервер)</value> + + + НаличиеСертификатаРешениеСерверРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наличие сертификата решения</value> + + + НаличиеСертификатаРешенияРасширеннаяПодсказка + 317 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наличие сертификата результат и решение</value> + + + НаличиеСертификатаРезультатИРешениеРасширеннаяПодсказка + 171 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наличие сертификата</value> + + + ГруппаНаличиеСертификатаРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаДанныеСертификата + 49 + + ДанныеСертификатаНаКлиентеКартинка + 51 + + <key>ru</key> + <value>Данные сертификата на клиенте картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ДанныеСертификатаНаКлиентеКартинкаРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + ДанныеСертификатаНаКлиентеКартинкаКонтекстноеМеню + 52 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ДанныеСертификатаНаСервереКартинка + 54 + + <key>ru</key> + <value>Данные сертификата на сервере картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ДанныеСертификатаНаСервереКартинкаРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + + ДанныеСертификатаНаСервереКартинкаКонтекстноеМеню + 55 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ДанныеСертификатаРезультатИРешение + 188 + + ДанныеСертификатаНадпись + 57 + + <key>ru</key> + <value>Корректность данных сертификата</value> + + true + true + + true + + + ДанныеСертификатаНадписьРасширеннаяПодсказка + 59 + + <key>ru</key> + <value>Показывает результат проверки данных сертификата с помощью программы электронной подписи и шифрования. + +Данные сертификата, загруженные из файла сертификата или другим путем, +могут быть некорректны по разным причинам, но самые частые следующие: +- закончился срок действия сертификата; +- сертификат в списке отозванных. +</value> + + true + true + + true + + Label + true + true + + Left + + + + ДанныеСертификатаНадписьКонтекстноеМеню + 58 + true + true + + true + + true + + Label + true + 1 + true + + + Click + Подключаемый_НадписьНажатие + + Left + + + + ДанныеСертификатаРешения + 318 + + ДанныеСертификатаРешениеКлиент + 190 + + ДанныеСертификатаРешениеКлиентКартинка + 194 + + <key>ru</key> + <value>Данные сертификата решение клиент картинка</value> + + true + true + + true + + + ДанныеСертификатаРешениеКлиентКартинкаРасширеннаяПодсказка + 196 + true + true + + true + + Label + true + true + + Left + + + + ДанныеСертификатаРешениеКлиентКартинкаКонтекстноеМеню + 195 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерКлиент + + AsFileRef + + + + ДанныеСертификатаРешениеКлиентНадпись + 197 + + <key>ru</key> + <value>Корректность данных сертификата (клиент)</value> + + true + true + + true + + + ДанныеСертификатаРешениеКлиентНадписьРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + + ДанныеСертификатаРешениеКлиентНадписьКонтекстноеМеню + 198 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Данные сертификата решение клиент</value> + + + ДанныеСертификатаРешениеКлиентРасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ДанныеСертификатаРешениеСервер + 192 + + ДанныеСертификатаРешениеСерверКартинка + 200 + + <key>ru</key> + <value>Данные сертификата решение сервер картинка</value> + + true + true + + true + + + ДанныеСертификатаРешениеСерверКартинкаРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + + ДанныеСертификатаРешениеСерверКартинкаКонтекстноеМеню + 201 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерСервер + + AsFileRef + + + + ДанныеСертификатаРешениеСерверНадпись + 203 + + <key>ru</key> + <value>Корректность данных сертификата (сервер)</value> + + true + true + + true + + + ДанныеСертификатаРешениеСерверНадписьРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + + ДанныеСертификатаРешениеСерверНадписьКонтекстноеМеню + 204 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Данные сертификата решение сервер</value> + + + ДанныеСертификатаРешениеСерверРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Данные сертификата решения</value> + + + ДанныеСертификатаРешенияРасширеннаяПодсказка + 319 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Данные сертификата результат и решение</value> + + + ДанныеСертификатаРезультатИРешениеРасширеннаяПодсказка + 189 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Данные сертификата</value> + + + ГруппаДанныеСертификатаРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаНаличиеПрограммыСертификата + 16 + + НаличиеПрограммыНаКлиентеКартинка + 18 + + <key>ru</key> + <value>Наличие программы на клиенте картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + НаличиеПрограммыНаКлиентеКартинкаРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + НаличиеПрограммыНаКлиентеКартинкаКонтекстноеМеню + 19 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + НаличиеПрограммыНаСервереКартинка + 35 + + <key>ru</key> + <value>Наличие программы на сервере картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + НаличиеПрограммыНаСервереКартинкаРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + + НаличиеПрограммыНаСервереКартинкаКонтекстноеМеню + 36 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + НаличиеПрограммыРезультатИРешение + 224 + + НаличиеПрограммыНадпись + 21 + + <key>ru</key> + <value>Наличие программы для подписания и расшифровки</value> + + true + true + + true + + + НаличиеПрограммыНадписьРасширеннаяПодсказка + 23 + + <key>ru</key> + <value>Показывает имеется ли на компьютере программа, указанная в сертификате для закрытого ключа, которая позволяет подписывать и расшифровывать данные.</value> + + true + true + + true + + Label + true + true + + Left + + + + НаличиеПрограммыНадписьКонтекстноеМеню + 22 + true + true + + true + + true + + Label + true + 1 + true + + + Click + Подключаемый_НадписьНажатие + + Left + + + + НаличиеПрограммыРешения + 320 + + НаличиеПрограммыРешениеКлиент + 226 + + НаличиеПрограммыРешениеКлиентКартинка + 228 + + <key>ru</key> + <value>Наличие программы решение клиент картинка</value> + + true + true + + true + + + НаличиеПрограммыРешениеКлиентКартинкаРасширеннаяПодсказка + 230 + true + true + + true + + Label + true + true + + Left + + + + НаличиеПрограммыРешениеКлиентКартинкаКонтекстноеМеню + 229 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерКлиент + + AsFileRef + + + + НаличиеПрограммыРешениеКлиентНадпись + 231 + + <key>ru</key> + <value>Наличие программы (клиент)</value> + + true + true + + true + + + НаличиеПрограммыРешениеКлиентНадписьРасширеннаяПодсказка + 233 + true + true + + true + + Label + true + true + + Left + + + + НаличиеПрограммыРешениеКлиентНадписьКонтекстноеМеню + 232 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Наличие программы решение клиент</value> + + + НаличиеПрограммыРешениеКлиентРасширеннаяПодсказка + 227 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + НаличиеПрограммыРешениеСервер + 234 + + НаличиеПрограммыРешениеСерверКартинка + 239 + + <key>ru</key> + <value>Наличие программы решение сервер картинка</value> + + true + true + + true + + + НаличиеПрограммыРешениеСерверКартинкаРасширеннаяПодсказка + 241 + true + true + + true + + Label + true + true + + Left + + + + НаличиеПрограммыРешениеСерверКартинкаКонтекстноеМеню + 240 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерСервер + + AsFileRef + + + + НаличиеПрограммыРешениеСерверНадпись + 236 + + <key>ru</key> + <value>Наличие программы (сервер)</value> + + true + true + + true + + + НаличиеПрограммыРешениеСерверНадписьРасширеннаяПодсказка + 238 + true + true + + true + + Label + true + true + + Left + + + + НаличиеПрограммыРешениеСерверНадписьКонтекстноеМеню + 237 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Наличие программы решение сервер</value> + + + НаличиеПрограммыРешениеСерверРасширеннаяПодсказка + 235 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наличие программы решения</value> + + + НаличиеПрограммыРешенияРасширеннаяПодсказка + 321 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наличие программы результат и решение</value> + + + НаличиеПрограммыРезультатИРешениеРасширеннаяПодсказка + 225 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наличие программы сертификата</value> + + + ГруппаНаличиеПрограммыСертификатаРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Общие проверки</value> + + + ГруппаОбщиеПроверкиРасширеннаяПодсказка + 150 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаПроверкиОпераций + 127 + + ГруппаПодписаниеДанных + 85 + + ПодписаниеНаКлиентеКартинка + 87 + + <key>ru</key> + <value>Подписание на клиенте картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ПодписаниеНаКлиентеКартинкаРасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + + ПодписаниеНаКлиентеКартинкаКонтекстноеМеню + 88 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ПодписаниеНаСервереКартинка + 90 + + <key>ru</key> + <value>Подписание на сервере картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ПодписаниеНаСервереКартинкаРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + + ПодписаниеНаСервереКартинкаКонтекстноеМеню + 91 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ПодписаниеДанныхРезультатИРешение + 242 + + ПодписаниеНадпись + 93 + + <key>ru</key> + <value>Подписание данных</value> + + true + true + + true + + + ПодписаниеНадписьРасширеннаяПодсказка + 95 + + <key>ru</key> + <value>Показывает возможность подписания данных закрытым ключом сертификата с помощью программы электронной подписи и шифрования. Требуется пароль.</value> + + true + true + + true + + Label + true + true + + Left + + + + ПодписаниеНадписьКонтекстноеМеню + 94 + true + true + + true + + true + + Label + true + 1 + true + + + Click + Подключаемый_НадписьНажатие + + Left + + + + ПодписаниеРешения + 322 + + ПодписаниеРешениеКлиент + 244 + + ПодписаниеРешениеКлиентКартинка + 246 + + <key>ru</key> + <value>Подписание решение клиент картинка</value> + + true + true + + true + + + ПодписаниеРешениеКлиентКартинкаРасширеннаяПодсказка + 248 + true + true + + true + + Label + true + true + + Left + + + + ПодписаниеРешениеКлиентКартинкаКонтекстноеМеню + 247 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерКлиент + + AsFileRef + + + + ПодписаниеРешениеКлиентНадпись + 249 + + <key>ru</key> + <value>Подписание данных (клиент)</value> + + true + true + + true + + + ПодписаниеРешениеКлиентНадписьРасширеннаяПодсказка + 251 + true + true + + true + + Label + true + true + + Left + + + + ПодписаниеРешениеКлиентНадписьКонтекстноеМеню + 250 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Подписание решение клиент</value> + + + ПодписаниеРешениеКлиентРасширеннаяПодсказка + 245 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ПодписаниеРешениеСервер + 252 + + ПодписаниеРешениеСерверКартинка + 257 + + <key>ru</key> + <value>Подписание решение сервер картинка</value> + + true + true + + true + + + ПодписаниеРешениеСерверКартинкаРасширеннаяПодсказка + 259 + true + true + + true + + Label + true + true + + Left + + + + ПодписаниеРешениеСерверКартинкаКонтекстноеМеню + 258 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерСервер + + AsFileRef + + + + ПодписаниеРешениеСерверНадпись + 254 + + <key>ru</key> + <value>Подписание данных (сервер)</value> + + true + true + + true + + + ПодписаниеРешениеСерверНадписьРасширеннаяПодсказка + 256 + true + true + + true + + Label + true + true + + Left + + + + ПодписаниеРешениеСерверНадписьКонтекстноеМеню + 255 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Подписание решение сервер</value> + + + ПодписаниеРешениеСерверРасширеннаяПодсказка + 253 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Подписание решения</value> + + + ПодписаниеРешенияРасширеннаяПодсказка + 323 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Подписание данных результат и решение</value> + + + ПодписаниеДанныхРезультатИРешениеРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Подписание данных</value> + + + ГруппаПодписаниеДанныхРасширеннаяПодсказка + 86 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаПроверкаПодписиДанных + 96 + + ПроверкаПодписиНаКлиентеКартинка + 98 + + <key>ru</key> + <value>Проверка подписи на клиенте картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ПроверкаПодписиНаКлиентеКартинкаРасширеннаяПодсказка + 100 + true + true + + true + + Label + true + true + + Left + + + + ПроверкаПодписиНаКлиентеКартинкаКонтекстноеМеню + 99 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ПроверкаПодписиНаСервереКартинка + 101 + + <key>ru</key> + <value>Проверка подписи на сервере картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ПроверкаПодписиНаСервереКартинкаРасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + + ПроверкаПодписиНаСервереКартинкаКонтекстноеМеню + 102 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ПроверкаПодписиРезультатИРешение + 260 + + ПроверкаПодписиНадпись + 104 + + <key>ru</key> + <value>Проверка созданной подписи</value> + + true + true + + true + + + ПроверкаПодписиНадписьРасширеннаяПодсказка + 106 + + <key>ru</key> + <value>Показывает возможность проверки имеющейся подписи открытым ключом сертификата с помощью программы электронной подписи и шифрования. +</value> + + true + true + + true + + Label + true + true + + Left + + + + ПроверкаПодписиНадписьКонтекстноеМеню + 105 + true + true + + true + + true + + Label + true + 1 + true + + + Click + Подключаемый_НадписьНажатие + + Left + + + + ПроверкаПодписиРешения + 324 + + ПроверкаПодписиРешениеКлиент + 262 + + ПроверкаПодписиРешениеКлиентКартинка + 264 + + <key>ru</key> + <value>Проверка подписи решение клиент картинка</value> + + true + true + + true + + + ПроверкаПодписиРешениеКлиентКартинкаРасширеннаяПодсказка + 266 + true + true + + true + + Label + true + true + + Left + + + + ПроверкаПодписиРешениеКлиентКартинкаКонтекстноеМеню + 265 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерКлиент + + AsFileRef + + + + ПроверкаПодписиРешениеКлиентНадпись + 267 + + <key>ru</key> + <value>Проверка подписи (клиент)</value> + + true + true + + true + + + ПроверкаПодписиРешениеКлиентНадписьРасширеннаяПодсказка + 269 + true + true + + true + + Label + true + true + + Left + + + + ПроверкаПодписиРешениеКлиентНадписьКонтекстноеМеню + 268 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>решение клиент</value> + + + ПроверкаПодписиРешениеКлиентРасширеннаяПодсказка + 263 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ПроверкаПодписиРешениеСервер + 270 + + ПроверкаПодписиРешениеСерверКартинка + 275 + + <key>ru</key> + <value>Проверка подписи решение сервер картинка</value> + + true + true + + true + + + ПроверкаПодписиРешениеСерверКартинкаРасширеннаяПодсказка + 277 + true + true + + true + + Label + true + true + + Left + + + + ПроверкаПодписиРешениеСерверКартинкаКонтекстноеМеню + 276 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерСервер + + AsFileRef + + + + ПроверкаПодписиРешениеСерверНадпись + 272 + + <key>ru</key> + <value>Проверка подписи (сервер)</value> + + true + true + + true + + + ПроверкаПодписиРешениеСерверНадписьРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + + ПроверкаПодписиРешениеСерверНадписьКонтекстноеМеню + 273 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Проверка подписи решение сервер</value> + + + ПроверкаПодписиРешениеСерверРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Проверка подписи решения</value> + + + ПроверкаПодписиРешенияРасширеннаяПодсказка + 325 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Проверка подписи результат и решение</value> + + + ПроверкаПодписиРезультатИРешениеРасширеннаяПодсказка + 261 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Проверка подписи данных</value> + + + ГруппаПроверкаПодписиДанныхРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаШифрованиеДанных + 60 + + ШифрованиеНаКлиентеКартинка + 62 + + <key>ru</key> + <value>Шифрование на клиенте картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ШифрованиеНаКлиентеКартинкаРасширеннаяПодсказка + 64 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеНаКлиентеКартинкаКонтекстноеМеню + 63 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ШифрованиеНаСервереКартинка + 65 + + <key>ru</key> + <value>Шифрование на сервере картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + ШифрованиеНаСервереКартинкаРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеНаСервереКартинкаКонтекстноеМеню + 66 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + ШифрованиеРезультатИРешение + 278 + + ШифрованиеНадпись + 68 + + <key>ru</key> + <value>Шифрование данных</value> + + true + true + + true + + + ШифрованиеНадписьРасширеннаяПодсказка + 70 + + <key>ru</key> + <value>Показывает возможность шифрования данных открытым ключом сертификата с помощью программы электронной подписи и шифрования. +</value> + + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеНадписьКонтекстноеМеню + 69 + true + true + + true + + true + + Label + true + 1 + true + + + Click + Подключаемый_НадписьНажатие + + Left + + + + ШифрованиеРешения + 326 + + ШифрованиеРешениеКлиент + 280 + + ШифрованиеРешениеКлиентКартинка + 282 + + <key>ru</key> + <value>Шифрование решение клиент картинка</value> + + true + true + + true + + + ШифрованиеРешениеКлиентКартинкаРасширеннаяПодсказка + 284 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеРешениеКлиентКартинкаКонтекстноеМеню + 283 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерКлиент + + AsFileRef + + + + ШифрованиеРешениеКлиентНадпись + 285 + + <key>ru</key> + <value>Шифрование (клиент)</value> + + true + true + + true + + + ШифрованиеРешениеКлиентНадписьРасширеннаяПодсказка + 287 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеРешениеКлиентНадписьКонтекстноеМеню + 286 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Шифрование решение клиент</value> + + + ШифрованиеРешениеКлиентРасширеннаяПодсказка + 281 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ШифрованиеРешениеСервер + 288 + + ШифрованиеРешениеСерверКартинка + 293 + + <key>ru</key> + <value>Шифрование решение сервер картинка</value> + + true + true + + true + + + ШифрованиеРешениеСерверКартинкаРасширеннаяПодсказка + 295 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеРешениеСерверКартинкаКонтекстноеМеню + 294 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерСервер + + AsFileRef + + + + ШифрованиеРешениеСерверНадпись + 290 + + <key>ru</key> + <value>Шифрование (сервер)</value> + + true + true + + true + + + ШифрованиеРешениеСерверНадписьРасширеннаяПодсказка + 292 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеРешениеСерверНадписьКонтекстноеМеню + 291 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Шифрование решение сервер</value> + + + ШифрованиеРешениеСерверРасширеннаяПодсказка + 289 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шифрование решения</value> + + + ШифрованиеРешенияРасширеннаяПодсказка + 327 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шифрование результат и решение</value> + + + ШифрованиеРезультатИРешениеРасширеннаяПодсказка + 279 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шифрование данных</value> + + + ГруппаШифрованиеДанныхРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаРасшифровкаДанных + 71 + + РасшифровкаНаКлиентеКартинка + 73 + + <key>ru</key> + <value>Расшифровка на клиенте картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + РасшифровкаНаКлиентеКартинкаРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + + РасшифровкаНаКлиентеКартинкаКонтекстноеМеню + 74 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + РасшифровкаНаСервереКартинка + 76 + + <key>ru</key> + <value>Расшифровка на сервере картинка</value> + + true + true + + true + + + ru + Проверка не выполнялась. + + + РасшифровкаНаСервереКартинкаРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + + РасшифровкаНаСервереКартинкаКонтекстноеМеню + 77 + true + true + + true + + true + + 2 + true + 1 + true + + true + AutoSize + + + + РасшифровкаРезультатИРешение + 296 + + РасшифровкаНадпись + 79 + + <key>ru</key> + <value>Расшифровка данных</value> + + true + true + + true + + + РасшифровкаНадписьРасширеннаяПодсказка + 81 + + <key>ru</key> + <value>Показывает возможность расшифровки данных закрытым ключом сертификата с помощью программы электронной подписи и шифрования. Требуется пароль.</value> + + true + true + + true + + Label + true + true + + Left + + + + РасшифровкаНадписьКонтекстноеМеню + 80 + true + true + + true + + true + + Label + true + 1 + true + + + Click + Подключаемый_НадписьНажатие + + Left + + + + РасшифровкаРешения + 328 + + РасшифровкаРешениеКлиент + 298 + + РасшифровкаРешениеКлиентКартинка + 300 + + <key>ru</key> + <value>Расшифровка решение клиент картинка</value> + + true + true + + true + + + РасшифровкаРешениеКлиентКартинкаРасширеннаяПодсказка + 302 + true + true + + true + + Label + true + true + + Left + + + + РасшифровкаРешениеКлиентКартинкаКонтекстноеМеню + 301 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерКлиент + + AsFileRef + + + + РасшифровкаРешениеКлиентНадпись + 303 + + <key>ru</key> + <value>Расшифровка (клиент)</value> + + true + true + + true + + + РасшифровкаРешениеКлиентНадписьРасширеннаяПодсказка + 305 + true + true + + true + + Label + true + true + + Left + + + + РасшифровкаРешениеКлиентНадписьКонтекстноеМеню + 304 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Расшифровка решение клиент</value> + + + РасшифровкаРешениеКлиентРасширеннаяПодсказка + 299 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + РасшифровкаРешениеСервер + 306 + + РасшифровкаРешениеСерверКартинка + 311 + + <key>ru</key> + <value>Расшифровка решение сервер картинка</value> + + true + true + + true + + + РасшифровкаРешениеСерверКартинкаРасширеннаяПодсказка + 313 + true + true + + true + + Label + true + true + + Left + + + + РасшифровкаРешениеСерверКартинкаКонтекстноеМеню + 312 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.КомпьютерСервер + + AsFileRef + + + + РасшифровкаРешениеСерверНадпись + 308 + + <key>ru</key> + <value>Расшифровка (сервер)</value> + + true + true + + true + + + РасшифровкаРешениеСерверНадписьРасширеннаяПодсказка + 310 + true + true + + true + + Label + true + true + + Left + + + + РасшифровкаРешениеСерверНадписьКонтекстноеМеню + 309 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Расшифровка решение сервер</value> + + + ru + Решение сервер + + + РасшифровкаРешениеСерверРасширеннаяПодсказка + 307 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Расшифровка решения</value> + + + РасшифровкаРешенияРасширеннаяПодсказка + 329 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Расшифровка результат и решение</value> + + + РасшифровкаРезультатИРешениеРасширеннаяПодсказка + 297 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Расшифровка данных</value> + + + ГруппаРасшифровкаДанныхРасширеннаяПодсказка + 72 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Проверки операций</value> + + + ГруппаПроверкиОперацийРасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаДополнительныеПроверки + 147 + true + true + + true + + + <key>ru</key> + <value>Дополнительные проверки</value> + + + ГруппаДополнительныеПроверкиРасширеннаяПодсказка + 148 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ДекорацияРазделитель + 330 + true + true + + true + + + ДекорацияРазделительРасширеннаяПодсказка + 332 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияРазделительКонтекстноеМеню + 331 + true + true + + true + + true + + Label + true + true + + Left + + + + ГруппаВводаПароля + 142 + + ГруппаПоля + 140 + + ГруппаПароль + 154 + + Пароль + 107 + true + true + + true + + + + Пароль + + + true + + OnChange + ПарольПриИзменении + + + ПарольРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 108 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + ЗапомнитьПароль + 114 + + <key>ru</key> + <value>Запомнить на время сеанса</value> + + true + true + + true + + + + ЗапомнитьПароль + + + Right + + ru + Запомнить пароль сертификата до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее. + + None + + OnChange + ЗапомнитьПарольПриИзменении + + + ЗапомнитьПарольРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + + ЗапомнитьПарольКонтекстноеМеню + 115 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Пароль</value> + + + ГруппаПарольРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Страницы + 110 + + СтраницаПояснениеУсиленногоПароля + 117 + + ПояснениеУсиленногоПароля + 119 + + <key>ru</key> + <value>Нажмите Проверить, чтобы перейти к вводу пароля. +</value> + + true + true + + true + + + ru + Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, +так как для выбранного сертификата указана усиленная защита закрытого ключа. + + None + + ПояснениеУсиленногоПароляРасширеннаяПодсказка + 121 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеУсиленногоПароляКонтекстноеМеню + 120 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница пояснение усиленного пароля</value> + + + СтраницаПояснениеУсиленногоПароляРасширеннаяПодсказка + 118 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаПояснениеУстановленногоПароля + 122 + + ПояснениеУстановленногоПароля + 124 + true + true + + true + + Button + + ПояснениеУстановленногоПароляРасширеннаяПодсказка + 126 + true + true + + true + + Label + true + true + + + URLProcessing + ПояснениеУстановленногоПароляРасширеннаяПодсказкаОбработкаНавигационнойСсылки + + Left + + + + ПояснениеУстановленногоПароляКонтекстноеМеню + 125 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + + Click + ПояснениеУстановленногоПароляНажатие + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница пояснение установленного пароля</value> + + + СтраницаПояснениеУстановленногоПароляРасширеннаяПодсказка + 123 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Поля</value> + + + ГруппаПоляРасширеннаяПодсказка + 141 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Для выполнения проверок введите пароль</value> + + + Style.ПоясняющийТекст + + true + + ГруппаВводаПароляРасширеннаяПодсказка + 143 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + true + Auto + Auto + + + + ГруппаПодвал + 156 + + ГруппаТребуетсяПомощь + 158 + Low + + ТипичныеПроблемы + 160 + + <key>ru</key> + <value>При возникновении затруднений ознакомьтесь со списком <link ТипичныеПроблемы>типичных проблем при работе с программой электронной подписи и их решений</>.</value> + + true + true + + true + + + ТипичныеПроблемыРасширеннаяПодсказка + 162 + true + true + + true + + Label + true + true + + Left + + + + ТипичныеПроблемыКонтекстноеМеню + 161 + true + true + + true + + true + + true + Label + true + true + + + URLProcessing + ТипичныеПроблемыОбработкаНавигационнойСсылки + + Left + + + + ИнформацияДляПоддержки + 163 + + <key>ru</key> + <value>В иных случаях обратитесь в службу поддержки фирмы "1С", предоставив <link Ссылка>техническую информацию о возникшей проблеме</>.</value> + + true + true + + true + + + ИнформацияДляПоддержкиРасширеннаяПодсказка + 165 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияДляПоддержкиКонтекстноеМеню + 164 + true + true + + true + + true + + true + Label + true + true + + + URLProcessing + ИнформацияДляПоддержкиОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Требуется помощь?</value> + + + ГруппаТребуетсяПомощьРасширеннаяПодсказка + 159 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + PopUp + WeakSeparation + true + true + true + Auto + Auto + + + + ГруппаКоманды + 166 + + ФормаПроверить + 9 + true + true + + true + + + ФормаПроверитьРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Проверить + Auto + true + true + true + UserCmds + None + Auto + + + ФормаЗакрыть + 11 + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + None + Auto + + + Справка + 168 + true + true + + true + + + СправкаРасширеннаяПодсказка + 169 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды</value> + + + ГруппаКомандыРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Подвал</value> + + false + + ГруппаПодвалРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Right + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + + ГруппаКоманды + + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 1 + + String + + + + true + + + true + + + + Сертификат + 2 + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + + + + АдресСертификата + 3 + + String + + + + true + + + true + + + + Программа + 4 + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + ЗапомнитьПароль + + <key>ru</key> + <value>Запомнить пароль</value> + + 6 + + Boolean + + + true + + + true + + + + Отпечаток + 5 + + String + + + + true + + + true + + + + СертификатУсиленнаяЗащитаЗакрытогоКлюча + 7 + + Boolean + + + true + + + true + + + + ДополнительныеПроверки + 8 + + ValueTable + + + true + + + true + + + Имя + 1 + + String + + + + true + + + true + + + + Представление + 2 + + String + + + + true + + + true + + + + Подсказка + 3 + + String + + + + true + + + true + + + + + ОперацииНаСервере + 9 + + Boolean + + + true + + + true + + + + ПроверкаПриВыборе + 10 + + Boolean + + + true + + + true + + + + ПроверкиНаКлиенте + 11 + + + true + + + true + + + + ПроверкиНаСервере + 12 + + + true + + + true + + + + ПарольПринят + 13 + + Boolean + + + true + + + true + + + + ИмяПервойПроверки + 14 + + String + + + + true + + + true + + + + СтандартныеПроверки + 15 + + Boolean + + + true + + + true + + + + ЭтоПрограммаОблачногоСервиса + 16 + + Boolean + + + true + + + true + + + + ВводитьПароль + 17 + + Boolean + + + true + + + true + + + + ЗаголовкиЭлементов + 18 + + String + + + + true + + + true + + + + ОбъединятьРезультаты + 19 + + String + + + + true + + + true + + + + ПроверкаВыполнена + 20 + + Boolean + + + true + + + true + + + + ИмяСервера + 21 + + String + + + + true + + + true + + + + Проверить + + <key>ru</key> + <value>Проверить</value> + + 1 + + true + + + + Проверить + + + DontUse + + + Сертификат + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + true + + + ЗаголовокФормы + + String + + + + + ПроверкаПриВыборе + + Boolean + + + + ПараметрыДополнительныхПроверок + + + + РезультатПроверки + + + + ОбъединятьРезультаты + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..a9f75ab2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Help/ru.html" @@ -0,0 +1,20 @@ + +

Проверка сертификата электронной подписи. Проверка занимает некоторое время и проводится по нескольким параметрам:

+
  • Соответствие законодательству Российской Федерации - показывает соответствие федеральному закону Российской Федерации от 6 апреля 2011 г. N 63-ФЗ "Об электронной подписи". Рекомендуется использовать квалифицированные сертификаты ключа подписи (КСКП) по 63-ФЗ.
  • +
  • Наличие сертификата в личном списке - показывает установлен ли сертификат в личный список (личное хранилище)на компьютере. Для подписания и расшифровки требуется, чтобы сертификат был установлен в личный список на компьютере и был связан с закрытым ключом.
  • +
  • Корректность данных сертификата - показывает результат проверки данных сертификата с помощью программы электронной подписи и шифрования. +

    Данные сертификата, загруженные из файла сертификата или другим путем, могут быть некорректны по разным причинам, но самые частые следующие:

    +

    +

    +
    • закончился срок действия сертификата;
    • +
    • сертификат в списке отозванных.

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

Запомнить пароль на время сеанса

+

При включении флажка пароль сертификата запоминается до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее.

+

Запрос усиленного пароля

+

Если отображается надпись „Нажмите Проверить, чтобы перейти к вводу пароля.“ - значит пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, так как для выбранного сертификата указана усиленная защита закрытого ключа.

+

Проверка сертификата

+

Нажмите Проверить, для того чтобы проверить действительность сертификата.

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..50b8a9b4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\260/Module.bsl" @@ -0,0 +1,1643 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ВнутренниеДанные, КлиентскиеПараметры, СвойстваПароля, ПараметрыВыполненияКонтекста; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебный.НастроитьПояснениеВводаПароля( + ЭтотОбъект, , Элементы.ПояснениеУсиленногоПароля.Имя); + + Сертификат = Параметры.Сертификат; + ПроверкаПриВыборе = Параметры.ПроверкаПриВыборе; + + Если ЗначениеЗаполнено(Параметры.ЗаголовокФормы) Тогда + АвтоЗаголовок = Ложь; + Заголовок = Параметры.ЗаголовокФормы; + КонецЕсли; + + Если ПроверкаПриВыборе Тогда + Элементы.ФормаЗакрыть.Заголовок = НСтр("ru = 'Отмена'"); + Элементы.ФормаПроверить.Заголовок = НСтр("ru = 'Проверить и продолжить'"); + КонецЕсли; + + ВводитьПароль = Истина; + СтандартныеПроверки = Истина; + ОбъединятьРезультаты = ?(Параметры.ОбъединятьРезультаты = "ОбъединятьПоИ" + Или Параметры.ОбъединятьРезультаты = "ОбъединятьПоИли", + Параметры.ОбъединятьРезультаты, "НеОбъединять"); + + Если Параметры.РезультатПроверки <> Неопределено Тогда + ПроверкаВыполнена = Истина; + ПроверкиНаКлиенте = Параметры.РезультатПроверки.ПроверкиНаКлиенте; + ПроверкиНаСервере = Параметры.РезультатПроверки.ПроверкиНаСервере; + КонецЕсли; + + Проверки = Новый ТаблицаЗначений; + Проверки.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка")); + Проверки.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); + Проверки.Колонки.Добавить("Подсказка", Новый ОписаниеТипов("Строка")); + + ЭлектроннаяПодписьПереопределяемый.ПриСозданииФормыПроверкаСертификата( + Параметры.Сертификат, Проверки, Параметры.ПараметрыДополнительныхПроверок, + СтандартныеПроверки, ВводитьПароль); + + Для каждого Проверка Из Проверки Цикл + + Группа = ГруппаФормыБезОтображения( + "Группа" + Проверка.Имя, Элементы.ГруппаДополнительныеПроверки); + + ДобавитьКартинку(Проверка.Имя + "НаКлиентеКартинка", Группа); + ДобавитьКартинку(Проверка.Имя + "НаСервереКартинка", Группа); + + ГруппаРезультатИРешение = ГруппаФормыБезОтображения( + Проверка.Имя + "РезультатИРешение", Группа, + ГруппировкаПодчиненныхЭлементовФормы.Вертикальная); + + Надпись = Элементы.Добавить(Проверка.Имя + "Надпись", + Тип("ДекорацияФормы"), ГруппаРезультатИРешение); + Надпись.Заголовок = Проверка.Представление; + Надпись.РасширеннаяПодсказка.Заголовок = Проверка.Подсказка; + Надпись.УстановитьДействие("Нажатие", "Подключаемый_НадписьНажатие"); + + ГруппаРешения = ГруппаФормыБезОтображения( + Проверка.Имя + "Решения", ГруппаРезультатИРешение, + ГруппировкаПодчиненныхЭлементовФормы.Вертикальная); + + ГруппаРешения.Видимость = Ложь; + + ДобавитьГруппуОписанияРешения(Проверка.Имя, ГруппаРешения); + ДобавитьГруппуОписанияРешения(Проверка.Имя, ГруппаРешения, Истина); + + ЗаполнитьЗначенияСвойств(ДополнительныеПроверки.Добавить(), Проверка); + + Если ПроверкиНаКлиенте <> Неопределено Тогда + ВывестиРезультатПроверки(Проверка.Имя); + КонецЕсли; + + Если ПроверкиНаСервере <> Неопределено Тогда + ВывестиРезультатПроверки(Проверка.Имя, Истина); + КонецЕсли; + + КонецЦикла; + + Если Не СтандартныеПроверки Тогда + + Если ДополнительныеПроверки.Количество() = 0 Тогда + ВызватьИсключение + НСтр("ru = 'Для проверки сертификата отключены стандартные проверки, + |при этом дополнительных проверок не указано.'"); + КонецЕсли; + + Элементы.ГруппаОбщиеПроверки.Видимость = Ложь; + Элементы.ГруппаПроверкиОпераций.Видимость = Ложь; + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "НестандартныеПроверки"); + + Иначе + + Для Каждого Проверка Из СтандартныеПроверки() Цикл + + Элементы[Проверка + "РешениеКлиент"].Видимость = Ложь; + Элементы[Проверка + "РешениеСервер"].Видимость = Ложь; + Элементы[Проверка + "Надпись"].Заголовок = + СтандартныйЗаголовокЭлемента(Проверка + "Надпись"); + + Если ПроверкиНаКлиенте <> Неопределено Тогда + ВывестиРезультатПроверки(Проверка); + КонецЕсли; + + Если ПроверкиНаСервере <> Неопределено Тогда + ВывестиРезультатПроверки(Проверка, Истина); + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + СвойстваСертификата = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Сертификат, + "ДанныеСертификата, Программа, УсиленнаяЗащитаЗакрытогоКлюча"); + + Программа = СвойстваСертификата.Программа; + АдресСертификата = ПоместитьВоВременноеХранилище( + СвойстваСертификата.ДанныеСертификата.Получить(), УникальныйИдентификатор); + СертификатУсиленнаяЗащитаЗакрытогоКлюча = СвойстваСертификата.УсиленнаяЗащитаЗакрытогоКлюча; + + Если Программа.ЭтоПрограммаОблачногоСервиса Тогда + ЭтоПрограммаОблачногоСервиса = Истина; + Элементы.ГруппаВводаПароля.Видимость = Ложь; + ИначеЕсли Не СтандартныеПроверки + И Не ВводитьПароль Тогда + + Элементы.ГруппаВводаПароля.Видимость = Ложь; + КонецЕсли; + + ОбновитьВидимостьНаСервере(); + + Если СтандартныеПроверки Тогда + ИмяПервойПроверки = ?(Элементы.ГруппаЗаконныйСертификат.Видимость, + "ЗаконныйСертификат", "НаличиеСертификата"); + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ГруппаТребуетсяПомощь.Поведение = ПоведениеОбычнойГруппы.Свертываемая; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ВнутренниеДанные = Неопределено Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + // При изменении настроек использования. + Если ВРег(ИмяСобытия) <> ВРег("Запись_НаборКонстант") Тогда + Возврат; + КонецЕсли; + + Если ВРег(Источник) = ВРег("ПроверятьЭлектронныеПодписиНаСервере") + Или ВРег(Источник) = ВРег("СоздаватьЭлектронныеПодписиНаСервере") Тогда + + ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура Подключаемый_НадписьНажатие(Элемент) + + ИмяОшибки = Лев(Элемент.Имя, СтрДлина(Элемент.Имя) - СтрДлина("Надпись")) + "Ошибка"; + + ПараметрыПредупреждения = Новый Структура; + ПараметрыПредупреждения.Вставить("ЗаголовокПредупреждения", + СтандартныйЗаголовокЭлемента(Элемент.Имя)); + ПараметрыПредупреждения.Вставить("ТекстОшибкиКлиент", + ПроверкиНаКлиенте[ИмяОшибки]); + ПараметрыПредупреждения.Вставить("ТекстОшибкиСервер", + ?(Не ОперацииНаСервере, "", ПроверкиНаСервере[ИмяОшибки])); + + ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", + ПараметрыПредупреждения, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПарольПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииРеквизитаПароль", Истина)); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗапомнитьПарольПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииРеквизитаЗапомнитьПароль", Истина)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПояснениеУстановленногоПароляНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПояснениеУстановленногоПароляНажатие(ЭтотОбъект, Элемент, СвойстваПароля); + +КонецПроцедуры + +&НаКлиенте +Процедура ПояснениеУстановленногоПароляРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.ПояснениеУстановленногоПароляОбработкаНавигационнойСсылки( + ЭтотОбъект, Элемент, НавигационнаяСсылка, СтандартнаяОбработка, СвойстваПароля); + +КонецПроцедуры + +&НаКлиенте +Процедура ТипичныеПроблемыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ЭлектроннаяПодписьКлиент.ОткрытьИнструкциюПоТипичнымПроблемамПриРаботеСПрограммами(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИнформацияДляПоддержкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Не ПроверкаВыполнена Тогда + ПоказатьПредупреждение(, + НСтр("ru = 'Для сбора технической информации о возникшей проблеме необходимо выполнить проверку сертификата.'")); + Возврат; + КонецЕсли; + + СоставПроверок = СтандартныеПроверки(); + Для Каждого Проверка Из ДополнительныеПроверки Цикл + СоставПроверок.Добавить(Проверка.Имя); + КонецЦикла; + + ТекстОшибок = ""; + ОписаниеФайлов = Новый Массив; + ЭлектроннаяПодписьСлужебныйВызовСервера.ДобавитьОписаниеДополнительныхДанных( + Новый Структура("Сертификат", Сертификат), ОписаниеФайлов, ТекстОшибок); + + ТекстОшибок = ТекстОшибок + НСтр("ru = 'Результат поверки на клиенте'") + ":" + Символы.ПС; + ДополнитьТекстОшибками(ТекстОшибок, СоставПроверок); + + ТекстОшибок = ТекстОшибок + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Результат поверки на сервере ""%1"":'"), ИмяСервера) + Символы.ПС; + ДополнитьТекстОшибками(ТекстОшибок, СоставПроверок, Истина); + + ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию( + ТекстОшибок, Неопределено, ОписаниеФайлов); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Проверить(Команда) + + Элементы.ФормаПроверить.Доступность = Ложь; + ПроверитьСертификат(Новый ОписаниеОповещения("ПроверитьЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Продолжение процедуры Проверить. +&НаКлиенте +Процедура ПроверитьЗавершение(Неопределен, Контекст) Экспорт + + Элементы.ФормаПроверить.Доступность = Истина; + Если Не ПроверкаПриВыборе Тогда + Возврат; + КонецЕсли; + + Если КлиентскиеПараметры.Результат.ПроверкиПройдены Тогда + Закрыть(Истина); + Иначе + ПоказатьПредупреждениеОНевозможностиПродолжения(); + КонецЕсли; + +КонецПроцедуры + +// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. +&НаКлиенте +Процедура ПродолжитьОткрытие(Оповещение, ОбщиеВнутренниеДанные, ВходящиеКлиентскиеПараметры) Экспорт +// АПК:78-вкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. + + ВнутренниеДанные = ОбщиеВнутренниеДанные; + КлиентскиеПараметры = ВходящиеКлиентскиеПараметры; + КлиентскиеПараметры.Вставить("Результат"); + + ДополнительныеПараметры = Новый Структура; + Если КлиентскиеПараметры.Свойство("УказанКонтекстДругойОперации") Тогда + + СвойстваСертификата = ОбщиеВнутренниеДанные; + КлиентскиеПараметры.КонтекстОперации.ПродолжитьОткрытие( + Неопределено, Неопределено, СвойстваСертификата); + + Если СвойстваСертификата.Сертификат = Сертификат Тогда + СвойстваПароля = СвойстваСертификата.СвойстваПароля; + КонецЕсли; + + ДополнительныеПараметры.Вставить("ПарольУказан"); + ДополнительныеПараметры.Вставить("ПриУстановкеПароляИзДругойОперации", Истина); + + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, ДополнительныеПараметры); + + Элементы.ЗапомнитьПароль.Доступность = Элементы.Пароль.Доступность; + Если Не Элементы.Пароль.Доступность Тогда + ТекущийЭлемент = Элементы.ФормаПроверить; + КонецЕсли; + + Если КлиентскиеПараметры.Свойство("БезПодтверждения") + И КлиентскиеПараметры.БезПодтверждения + И (ДополнительныеПараметры.ПарольУказан + Или ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча) Тогда + + Если Не КлиентскиеПараметры.Свойство("ОбработкаРезультата") + Или ТипЗнч(КлиентскиеПараметры.ОбработкаРезультата) <> Тип("ОписаниеОповещения") Тогда + + Открыть(); + КонецЕсли; + + Контекст = Новый Структура("Оповещение", Оповещение); + ПроверитьСертификат(Новый ОписаниеОповещения( + "ПродолжитьОткрытиеПослеПроверкиСертификата", ЭтотОбъект, Контекст)); + + Возврат; + + КонецЕсли; + + Открыть(); + + ВыполнитьОбработкуОповещения(Оповещение); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеПроверкиСертификата(Результат, Контекст) Экспорт + + Если КлиентскиеПараметры.Результат.ПроверкиПройдены Тогда + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Истина); + Возврат; + КонецЕсли; + + Если Не Открыта() + И Не (КлиентскиеПараметры.Свойство("НеПоказыватьРезультаты") + И КлиентскиеПараметры.НеПоказыватьРезультаты) Тогда + + Открыть(); + КонецЕсли; + + Если ПроверкаПриВыборе Тогда + ПоказатьПредупреждениеОНевозможностиПродолжения(); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененияИспользованияПодписанияИлиШифрования() + + ОбновитьВидимостьНаСервере() + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьПредупреждениеОНевозможностиПродолжения() + + ПоказатьПредупреждение(, + НСтр("ru = 'Не удалось продолжить, т.к. пройдены не все требуемые проверки.'")); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьСертификат(Оповещение) + + ПарольПринят = Ложь; + ПроверкиНаКлиенте = Новый Структура; + ПроверкиНаСервере = Новый Структура; + + // Очистка предыдущих результатов проверки. + Если СтандартныеПроверки Тогда + + ОсновныеПроверки = СтандартныеПроверки(); + Если Не ЭтоПрограммаОблачногоСервиса Тогда + ОсновныеПроверки.Добавить("НаличиеПрограммы"); + КонецЕсли; + + Для каждого Проверка Из ОсновныеПроверки Цикл + УстановитьЭлемент(ЭтотОбъект, Проверка, Ложь, , , ОбъединятьРезультаты); + УстановитьЭлемент(ЭтотОбъект, Проверка, Истина, , , ОбъединятьРезультаты); + КонецЦикла; + + КонецЕсли; + + Для каждого Проверка Из ДополнительныеПроверки Цикл + УстановитьЭлемент(ЭтотОбъект, Проверка.Имя, Ложь, , , ОбъединятьРезультаты); + УстановитьЭлемент(ЭтотОбъект, Проверка.Имя, Истина, , , ОбъединятьРезультаты); + КонецЦикла; + + Контекст = Новый Структура("Оповещение", Оповещение); + + ПроверитьНаСторонеКлиента(Новый ОписаниеОповещения( + "ПроверитьСертификатПослеПроверкиНаКлиенте", ЭтотОбъект, Контекст)); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьСертификат. +&НаКлиенте +Процедура ПроверитьСертификатПослеПроверкиНаКлиенте(Результат, Контекст) Экспорт + + Если ОперацииНаСервере Тогда + Если СтандартныеПроверки Тогда + ПроверитьНаСторонеСервера(СвойстваПароля.Значение); + Иначе + ПроверитьНаСторонеСервераДополнительныеПроверки(СвойстваПароля.Значение); + КонецЕсли; + Иначе + ПроверкиНаСервере = Неопределено; + КонецЕсли; + + Если ПарольПринят Тогда + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриУспешномВыполненииОперации", Истина)); + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("ПроверкиПройдены", Ложь); + Результат.Вставить("ПроверкиНаКлиенте", ПроверкиНаКлиенте); + Результат.Вставить("ПроверкиНаСервере", ПроверкиНаСервере); + + КлиентскиеПараметры.Вставить("Результат", Результат); + + Если КлиентскиеПараметры.Свойство("ОбработкаРезультата") + И ТипЗнч(КлиентскиеПараметры.ОбработкаРезультата) = Тип("ОписаниеОповещения") Тогда + + ВыполнитьОбработкуОповещения(КлиентскиеПараметры.ОбработкаРезультата, Результат.ПроверкиПройдены); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + +КонецПроцедуры + +#Область ПроверкаНаКлиенте + +&НаКлиенте +Процедура ПроверитьНаСторонеКлиента(Оповещение) + + ПроверкаВыполнена = Истина; + Контекст = Новый Структура("Оповещение", Оповещение); + + Если СтандартныеПроверки Тогда + ЭлектроннаяПодписьКлиент.УстановитьРасширение(Ложь, Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПодключенияРасширенияРаботыСКриптографией", ЭтотОбъект, Контекст), + НСтр("ru = 'Для продолжения необходимо установить расширение для работы с криптографией.'")); + Иначе + Контекст.Вставить("МенеджерКриптографии", Неопределено); + ПроверитьНаСторонеКлиентаДополнительныеПроверки(Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПодключенияРасширенияРаботыСКриптографией(Подключено, Контекст) Экспорт + + ДанныеСертификата = ПолучитьИзВременногоХранилища(АдресСертификата); + Контекст.Вставить("АлгоритмПодписи", + ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДанныеСертификата)); + + Если Подключено <> Истина Тогда + + ПараметрыСоздания = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.ПоказатьОшибку = Ложь; + ПараметрыСоздания.АлгоритмПодписи = Контекст.АлгоритмПодписи; + + ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПопыткиСозданияМенеджераКриптографии", ЭтотОбъект, Контекст), + "ПроверкаСертификата", ПараметрыСоздания); + + Возврат; + + КонецЕсли; + + // Проверка данных сертификата. + Контекст.Вставить("ДанныеСертификата", ДанныеСертификата); + + СертификатКриптографии = Новый СертификатКриптографии; + СертификатКриптографии.НачатьИнициализацию(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеИнициализацииСертификата", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиИнициализацииСертификата", ЭтотОбъект), + Контекст.ДанныеСертификата); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПопыткиСозданияМенеджераКриптографии(Результат, Контекст) Экспорт + + УстановитьЭлемент(ЭтотОбъект, ИмяПервойПроверки, Ложь, Результат, Ложь, ОбъединятьРезультаты); + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеОшибкиИнициализацииСертификата(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + + ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + УстановитьЭлемент(ЭтотОбъект, ИмяПервойПроверки, Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеИнициализацииСертификата(СертификатКриптографии, Контекст) Экспорт + + Контекст.Вставить("СертификатКриптографии", СертификатКриптографии); + + // Законный сертификат. + ПроверитьЗаконныйСертификатНаКлиенте(Контекст); + + // Наличие сертификата в личном списке. + Если ЭтоПрограммаОблачногоСервиса Тогда + СтруктураПоиска = Новый Структура; + СтруктураПоиска.Вставить("Отпечаток", Контекст.СертификатКриптографии.Отпечаток); + МодульХранилищеСертификатовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХранилищеСертификатовКлиент"); + МодульХранилищеСертификатовКлиент.НайтиСертификат(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПоискаСертификатаВМоделиСервиса", ЭтотОбъект, Контекст), СтруктураПоиска); + Иначе + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСертификатПоОтпечатку(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПоискаСертификата", ЭтотОбъект, Контекст), + Base64Строка(Контекст.СертификатКриптографии.Отпечаток), Истина, Неопределено); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьЗаконныйСертификатНаКлиенте(Контекст) + + Если Не Элементы.ГруппаЗаконныйСертификат.Видимость + Или Контекст.СертификатКриптографии.Субъект.Свойство("SN") Тогда + + ОписаниеОшибки = ""; + Иначе + ОписаниеОшибки = НСтр("ru = 'В описании субъекта сертификата не найдено поле ""SN"".'"); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "ЗаконныйСертификат", Ложь, ОписаниеОшибки, , ОбъединятьРезультаты); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПоискаСертификата(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("СертификатКриптографии") Тогда + УстановитьЭлемент(ЭтотОбъект, "НаличиеСертификата", Ложь, "", , ОбъединятьРезультаты); + Иначе + УстановитьЭлемент(ЭтотОбъект, "НаличиеСертификата", Ложь, + ?(ТипЗнч(Результат) = Тип("Строка"), Результат, Результат.ОписаниеОшибки) + Символы.ПС + Символы.ПС + + НСтр("ru = 'Проверка подписания, созданной подписи и расшифровки не могут быть выполнены.'"), + Истина, ОбъединятьРезультаты); + КонецЕсли; + + ПараметрыСоздания = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.АлгоритмПодписи = Контекст.АлгоритмПодписи; + ПараметрыСоздания.ПоказатьОшибку = Ложь; + + // Проверка данных сертификата. + ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеСозданияЛюбогоМенеджераКриптографии", ЭтотОбъект, Контекст), + "ПроверкаСертификата", ПараметрыСоздания); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ОписаниеОшибки - Структура: +// ** Описание - Строка +// +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПоискаСертификатаВМоделиСервиса(Результат, Контекст) Экспорт + + ОписаниеОшибки = ""; + Если Не Результат.Выполнено Тогда + ОписаниеОшибки = Результат.ОписаниеОшибки.Описание; + ИначеЕсли Не ЗначениеЗаполнено(Результат.Сертификат) Тогда + ОписаниеОшибки = НСтр("ru = 'Сертификат отсутствует в облачном сервисе (возможно удален).'"); + КонецЕсли; + Если Не ПустаяСтрока(ОписаниеОшибки) Тогда + ОписаниеОшибки = ОписаниеОшибки + Символы.ПС + + НСтр("ru = 'Проверка подписания, созданной подписи и расшифровки не могут быть выполнены.'"); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "НаличиеСертификата", Ложь, ОписаниеОшибки, , ОбъединятьРезультаты); + + // Если не нашли сертификат в хранилище сертификатов, проверки прекращаются. + Если Не ПустаяСтрока(ОписаниеОшибки) Тогда + Возврат; + КонецЕсли; + + // Проверка данных сертификата. + МодульСервисКриптографииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииКлиент"); + МодульСервисКриптографииКлиент.ПроверитьСертификат(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПроверкиСертификатаВМоделиСервиса", ЭтотОбъект, Контекст), + Результат.Сертификат.Сертификат); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеСозданияЛюбогоМенеджераКриптографии(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("МенеджерКриптографии") Тогда + ЭлектроннаяПодписьКлиент.ПроверитьСертификат(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПроверкиСертификата", ЭтотОбъект, Контекст), + Контекст.СертификатКриптографии, Результат); + Иначе + ПроверитьНаСторонеКлиентаПослеПроверкиСертификата(Результат, Контекст) + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПроверкиСертификата(Результат, Контекст) Экспорт + + Если Результат = Истина Тогда + ОписаниеОшибки = ""; + Иначе + ОписаниеОшибки = Результат; + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "ДанныеСертификата", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + // Наличие программы + Если ЗначениеЗаполнено(Программа) Тогда + + ПараметрыСоздания = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.Программа = Программа; + ПараметрыСоздания.ПоказатьОшибку = Ложь; + ПараметрыСоздания.ИнтерактивныйРежим = СертификатУсиленнаяЗащитаЗакрытогоКлюча; + + ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст), + "ПроверкаСертификата", ПараметрыСоздания); + + Иначе + ОписаниеОшибки = НСтр("ru = 'Программа для использования закрытого ключа не указана в сертификате.'"); + ПроверитьНаСторонеКлиентаПослеСозданияМенеджераКриптографии(ОписаниеОшибки, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПроверкиСертификатаВМоделиСервиса(Результат, Контекст) Экспорт + + Если Результат.Выполнено И Результат.Действителен Тогда + ОписаниеОшибки = ""; + Иначе + ОписаниеОшибки = Результат.ИнформацияОбОшибке.Описание; + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "ДанныеСертификата", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + // Наличие программы + Если ЗначениеЗаполнено(Программа) Тогда + ПроверитьНаСторонеКлиентаВМоделиСервиса("СервисКриптографии", Контекст); + Иначе + ОписаниеОшибки = НСтр("ru = 'Программа для использования закрытого ключа не указана в сертификате.'"); + ПроверитьНаСторонеКлиентаПослеСозданияМенеджераКриптографии(ОписаниеОшибки, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеСозданияМенеджераКриптографии(Результат, Контекст) Экспорт + + Контекст.Вставить("МенеджерКриптографии", Неопределено); + + Если ТипЗнч(Результат) = Тип("МенеджерКриптографии") Тогда + Контекст.МенеджерКриптографии = Результат; + ОписаниеОшибки = ""; + Иначе + ОписаниеОшибки = Результат + Символы.ПС + Символы.ПС + + НСтр("ru = 'Проверка подписания, созданной подписи, шифрования и + |расшифровки не могут быть выполнены.'"); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "НаличиеПрограммы", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + Если Контекст.МенеджерКриптографии = Неопределено Тогда + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + Возврат; + КонецЕсли; + + Если Не ЭлектроннаяПодписьСлужебныйКлиент.ИспользуетсяИнтерактивныйРежимКриптографии(Контекст.МенеджерКриптографии) Тогда + Контекст.МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = СвойстваПароля.Значение; + КонецЕсли; + + // Подписание. + Если ПроверкиНаКлиенте.НаличиеСертификата Тогда + Контекст.МенеджерКриптографии.НачатьПодписывание(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПодписания", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиПодписания", ЭтотОбъект), + Контекст.ДанныеСертификата, Контекст.СертификатКриптографии); + Иначе + ПроверитьНаСторонеКлиентаПослеПодписания(Null, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаВМоделиСервиса(Результат, Контекст) + + Контекст.Вставить("МенеджерКриптографии", Неопределено); + + Если ТипЗнч(Результат) = Тип("Строка") И Результат = "СервисКриптографии" Тогда + Контекст.МенеджерКриптографии = Результат; + ОписаниеОшибки = ""; + Иначе + ОписаниеОшибки = Результат + Символы.ПС + Символы.ПС + + НСтр("ru = 'Проверка подписания, созданной подписи, шифрования и + |расшифровки не могут быть выполнены.'"); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "НаличиеПрограммы", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + Если Контекст.МенеджерКриптографии = Неопределено Тогда + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + Возврат; + КонецЕсли; + + // Подписание. + Если ПроверкиНаКлиенте.НаличиеСертификата Тогда + МодульСервисКриптографииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииКлиент"); + МодульСервисКриптографииКлиент.Подписать(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПодписанияВМоделиСервиса", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиПодписания", ЭтотОбъект), + Контекст.ДанныеСертификата, Контекст.ДанныеСертификата); + Иначе + ПроверитьНаСторонеКлиентаПослеПодписания(Null, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеОшибкиПодписания(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + ПроверитьНаСторонеКлиентаПослеПодписания(КраткоеПредставлениеОшибки(ИнформацияОбОшибке), Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПодписания(ДанныеПодписи, Контекст) Экспорт + + Если ДанныеПодписи <> Null Тогда + Если ТипЗнч(ДанныеПодписи) = Тип("Строка") Тогда + ОписаниеОшибки = ДанныеПодписи; + Иначе + ОписаниеОшибки = ""; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДанныеПодписи, ОписаниеОшибки); + КонецЕсли; + Если Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ПарольПринят = Истина; + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "Подписание", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + КонецЕсли; + + // Проверка подписи. + Если ПроверкиНаКлиенте.НаличиеСертификата И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + Контекст.МенеджерКриптографии.НачатьПроверкуПодписи(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПроверкиПодписи", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиПроверкиПодписи", ЭтотОбъект), + Контекст.ДанныеСертификата, ДанныеПодписи); + Иначе + ПроверитьНаСторонеКлиентаПослеПроверкиПодписи(Null, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// ДанныеПодписи - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПодписанияВМоделиСервиса(ДанныеПодписи, Контекст) Экспорт + + Если ТипЗнч(ДанныеПодписи) = Тип("Структура") Тогда + Если Не ДанныеПодписи.Выполнено Тогда + ОписаниеОшибки = ДанныеПодписи.ИнформацияОбОшибке.Описание; + Иначе + ОписаниеОшибки = ""; + ДанныеПодписи = ДанныеПодписи.Подпись; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДанныеПодписи, ОписаниеОшибки); + КонецЕсли; + Если Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ПарольПринят = Истина; + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "Подписание", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + КонецЕсли; + + // Проверка подписи. + Если ПроверкиНаКлиенте.НаличиеСертификата И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + МодульСервисКриптографииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииКлиент"); + МодульСервисКриптографииКлиент.ПроверитьПодпись(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеПроверкиПодписиВМоделиСервиса", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиПроверкиПодписи", ЭтотОбъект), + ДанныеПодписи, Контекст.ДанныеСертификата); + Иначе + ПроверитьНаСторонеКлиентаПослеПроверкиПодписиВМоделиСервиса(Null, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеОшибкиПроверкиПодписи(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + ПроверитьНаСторонеКлиентаПослеПроверкиПодписи(КраткоеПредставлениеОшибки(ИнформацияОбОшибке), Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПроверкиПодписи(Сертификат, Контекст) Экспорт + + Если Сертификат <> Null Тогда + Если ТипЗнч(Сертификат) = Тип("Строка") Тогда + ОписаниеОшибки = Сертификат; + Иначе + ОписаниеОшибки = ""; + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "ПроверкаПодписи", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + КонецЕсли; + + // Шифрование. + Контекст.МенеджерКриптографии.НачатьШифрование(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеШифрования", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиШифрования", ЭтотОбъект), + Контекст.ДанныеСертификата, Контекст.СертификатКриптографии); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеПроверкиПодписиВМоделиСервиса(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("Структура") Тогда + Если Не Результат.Выполнено Тогда + ОписаниеОшибки = Результат.ИнформацияОбОшибке.Описание; + Иначе + ОписаниеОшибки = ""; + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "ПроверкаПодписи", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + КонецЕсли; + + // Шифрование. + МодульСервисКриптографииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииКлиент"); + МодульСервисКриптографииКлиент.Зашифровать(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеШифрованияВМоделиСервиса", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиШифрования", ЭтотОбъект), + Контекст.ДанныеСертификата, Контекст.ДанныеСертификата); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеОшибкиШифрования(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + ПроверитьНаСторонеКлиентаПослеШифрования(КраткоеПредставлениеОшибки(ИнформацияОбОшибке), Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеШифрования(ЗашифрованныеДанные, Контекст) Экспорт + + Если ТипЗнч(ЗашифрованныеДанные) = Тип("Строка") Тогда + ОписаниеОшибки = ЗашифрованныеДанные; + Иначе + ОписаниеОшибки = ""; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеЗашифрованныеДанные(ЗашифрованныеДанные, ОписаниеОшибки); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "Шифрование", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + // Расшифровка. + Если ПроверкиНаКлиенте.НаличиеСертификата И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + Контекст.МенеджерКриптографии.НачатьРасшифровку(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеРасшифровки", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиРасшифровки", ЭтотОбъект), + ЗашифрованныеДанные); + Иначе + ПроверитьНаСторонеКлиентаПослеРасшифровки(Null, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеШифрованияВМоделиСервиса(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("Структура") Тогда + Если Не Результат.Выполнено Тогда + ОписаниеОшибки = Результат.ИнформацияОбОшибке.Описание; + Иначе + ОписаниеОшибки = ""; + ЗашифрованныеДанные = Результат.ЗашифрованныеДанные; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеЗашифрованныеДанные(ЗашифрованныеДанные, ОписаниеОшибки); + КонецЕсли; + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "Шифрование", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + // Расшифровка. + Если ПроверкиНаКлиенте.НаличиеСертификата И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + МодульСервисКриптографииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииКлиент"); + МодульСервисКриптографииКлиент.Расшифровать(Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеРасшифровкиВМоделиСервиса", ЭтотОбъект, Контекст, + "ПроверитьНаСторонеКлиентаПослеОшибкиРасшифровки", ЭтотОбъект), + Результат.ЗашифрованныеДанные); + Иначе + ПроверитьНаСторонеКлиентаПослеРасшифровкиВМоделиСервиса(Null, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеОшибкиРасшифровки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + ПроверитьНаСторонеКлиентаПослеРасшифровки(КраткоеПредставлениеОшибки(ИнформацияОбОшибке), Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеРасшифровки(РасшифрованныеДанные, Контекст) Экспорт + + Если РасшифрованныеДанные <> Null Тогда + Если ТипЗнч(РасшифрованныеДанные) = Тип("Строка") Тогда + ОписаниеОшибки = РасшифрованныеДанные; + Иначе + ОписаниеОшибки = ""; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеРасшифрованныеДанные(РасшифрованныеДанные, ОписаниеОшибки); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "Расшифровка", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + КонецЕсли; + + ПроверитьНаСторонеКлиентаДополнительныеПроверки(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеРасшифровкиВМоделиСервиса(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("Структура") Тогда + Если Не Результат.Выполнено Тогда + ОписаниеОшибки = Результат.ИнформацияОбОшибке.Описание; + Иначе + ОписаниеОшибки = ""; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеРасшифрованныеДанные(Результат.РасшифрованныеДанные, ОписаниеОшибки); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "Расшифровка", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + КонецЕсли; + + ПроверитьНаСторонеКлиентаДополнительныеПроверки(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаДополнительныеПроверки(Контекст) + + // Дополнительные проверки. + Контекст.Вставить("Индекс", -1); + + ПроверитьНаСторонеКлиентаЦиклНачало(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаЦиклНачало(Контекст) + + Если ДополнительныеПроверки.Количество() <= Контекст.Индекс + 1 Тогда + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + Возврат; + КонецЕсли; + Контекст.Индекс = Контекст.Индекс + 1; + Контекст.Вставить("ЭлементСписка", ДополнительныеПроверки[Контекст.Индекс]); + + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("Сертификат", Сертификат); + ПараметрыВыполнения.Вставить("Проверка", Контекст.ЭлементСписка.Имя); + ПараметрыВыполнения.Вставить("МенеджерКриптографии", Контекст.МенеджерКриптографии); + ПараметрыВыполнения.Вставить("ОписаниеОшибки", ""); + ПараметрыВыполнения.Вставить("ЭтоПредупреждение", Ложь); + ПараметрыВыполнения.Вставить("ОжидатьПродолжения", Ложь); + ПараметрыВыполнения.Вставить("Пароль", ?(ВводитьПароль, СвойстваПароля.Значение, Неопределено)); + ПараметрыВыполнения.Вставить("РезультатыПроверок", ПроверкиНаКлиенте); + ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения( + "ПроверитьНаСторонеКлиентаПослеДополнительнойПроверки", ЭтотОбъект, Контекст)); + + Если ТипЗнч(ПараметрыВыполненияКонтекста) <> Тип("Соответствие") Тогда + ПараметрыВыполненияКонтекста = Новый Соответствие; + КонецЕсли; + ПараметрыВыполненияКонтекста.Вставить(Контекст, ПараметрыВыполнения); + + Попытка + ЭлектроннаяПодписьКлиентПереопределяемый.ПриДополнительнойПроверкеСертификата(ПараметрыВыполнения); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ПараметрыВыполнения.ОжидатьПродолжения = Ложь; + ПараметрыВыполнения.ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + КонецПопытки; + + Если ПараметрыВыполнения.ОжидатьПродолжения <> Истина Тогда + ПроверитьНаСторонеКлиентаПослеДополнительнойПроверки(Неопределено, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПроверитьНаСторонеКлиента. +&НаКлиенте +Процедура ПроверитьНаСторонеКлиентаПослеДополнительнойПроверки(Неопределен, Контекст) Экспорт + + ПараметрыВыполнения = ПараметрыВыполненияКонтекста.Получить(Контекст); + ПараметрыВыполненияКонтекста.Удалить(Контекст); + + УстановитьЭлемент(ЭтотОбъект, Контекст.ЭлементСписка.Имя, Ложь, + ПараметрыВыполнения.ОписаниеОшибки, + ПараметрыВыполнения.ЭтоПредупреждение <> Истина, + ОбъединятьРезультаты); + + ПроверитьНаСторонеКлиентаЦиклНачало(Контекст); + +КонецПроцедуры + +#КонецОбласти + +#Область ПроверкаНаСервере + +&НаСервере +Процедура ПроверитьНаСторонеСервера(Знач ЗначениеПароля) + + ПроверкаВыполнена = Истина; + + ИмяСервера = ИмяКомпьютера(); + + ДанныеСертификата = ПолучитьИзВременногоХранилища(АдресСертификата); + АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДанныеСертификата); + + Попытка + СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата); + Исключение + УстановитьЭлемент(ЭтотОбъект, ИмяПервойПроверки, Истина, + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), Истина, ОбъединятьРезультаты); + Возврат; + КонецПопытки; + + // Законный сертификат. + ПроверитьЗаконныйСертификатНаСервере(СертификатКриптографии); + + // Наличие сертификата в личном списке. + Результат = Новый Структура; + ЭлектроннаяПодписьСлужебный.ПолучитьСертификатПоОтпечатку( + Base64Строка(СертификатКриптографии.Отпечаток), Истина, Ложь, , Результат); + + ОписаниеОшибки = ""; + Если ЗначениеЗаполнено(Результат) Тогда + ОписаниеОшибки = Результат.ОписаниеОшибки + Символы.ПС + Символы.ПС + + НСтр("ru = 'Проверка подписания, созданной подписи и расшифровки не могут быть выполнены.'"); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "НаличиеСертификата", Истина, ОписаниеОшибки, , ОбъединятьРезультаты); + + // Проверка данных сертификата. + ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.АлгоритмПодписи = АлгоритмПодписи; + + МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии( + "ПроверкаСертификата", ПараметрыСоздания); + + ОписаниеОшибки = ПараметрыСоздания.ОписаниеОшибки; + Если Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ЭлектроннаяПодпись.ПроверитьСертификат(МенеджерКриптографии, СертификатКриптографии, ОписаниеОшибки); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "ДанныеСертификата", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + // Наличие программы. + Если ЗначениеЗаполнено(Программа) Тогда + ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.Программа = Программа; + + МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("ПроверкаСертификата", ПараметрыСоздания); + ОписаниеОшибки = ПараметрыСоздания.ОписаниеОшибки; + Иначе + МенеджерКриптографии = Неопределено; + ОписаниеОшибки = НСтр("ru = 'Программа для использования закрытого ключа не указана в сертификате.'"); + КонецЕсли; + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + + ОписаниеОшибки = ОписаниеОшибки + Символы.ПС + Символы.ПС + + НСтр("ru = 'Проверка подписания, созданной подписи, шифрования и + |расшифровки не могут быть выполнены.'"); + + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "НаличиеПрограммы", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + Если МенеджерКриптографии = Неопределено Тогда + Возврат; + КонецЕсли; + + МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = ЗначениеПароля; + + // Подписание. + ОписаниеОшибки = ""; + Если ПроверкиНаСервере.НаличиеСертификата Тогда + ДанныеПодписи = ПроверитьПодписаниеНаСервере(МенеджерКриптографии, ДанныеСертификата, СертификатКриптографии, ОписаниеОшибки); + КонецЕсли; + + // Проверка подписи. + Если ПроверкиНаСервере.НаличиеСертификата И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ПроверитьПодписьНаСервере(МенеджерКриптографии, ДанныеСертификата, ДанныеПодписи); + КонецЕсли; + + // Шифрование. + ОписаниеОшибки = ""; + ЗашифрованныеДанные = ПроверитьШифрованиеНаСервере(МенеджерКриптографии, ДанныеСертификата, СертификатКриптографии, ОписаниеОшибки); + + // Расшифровка. + Если ПроверкиНаСервере.НаличиеСертификата И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ПроверитьРасшифрованиеНаСервере(МенеджерКриптографии, ЗашифрованныеДанные); + КонецЕсли; + + ПроверитьНаСторонеСервераДополнительныеПроверки(ЗначениеПароля, МенеджерКриптографии); + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьЗаконныйСертификатНаСервере(СертификатКриптографии) + + ОписаниеОшибки = ""; + Если Элементы.ГруппаЗаконныйСертификат.Видимость + И Не СертификатКриптографии.Субъект.Свойство("SN") Тогда + + ОписаниеОшибки = НСтр("ru = 'В описании субъекта сертификата не найдено поле ""SN"".'"); + КонецЕсли; + УстановитьЭлемент(ЭтотОбъект, "ЗаконныйСертификат", Истина, ОписаниеОшибки, , ОбъединятьРезультаты); + +КонецПроцедуры + +&НаСервере +Функция ПроверитьПодписаниеНаСервере(МенеджерКриптографии, ДанныеСертификата, СертификатКриптографии, ОписаниеОшибки) + + Попытка + ДанныеПодписи = МенеджерКриптографии.Подписать(ДанныеСертификата, СертификатКриптографии); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДанныеПодписи, ОписаниеОшибки); + Исключение + ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + + ПарольПринят = Не ЗначениеЗаполнено(ОписаниеОшибки); + УстановитьЭлемент(ЭтотОбъект, "Подписание", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + Возврат ДанныеПодписи; + +КонецФункции + +&НаСервере +Процедура ПроверитьПодписьНаСервере(МенеджерКриптографии, ДанныеСертификата, ДанныеПодписи) + + ОписаниеОшибки = ""; + Попытка + МенеджерКриптографии.ПроверитьПодпись(ДанныеСертификата, ДанныеПодписи); + Исключение + ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + УстановитьЭлемент(ЭтотОбъект, "ПроверкаПодписи", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + +КонецПроцедуры + +&НаСервере +Функция ПроверитьШифрованиеНаСервере(МенеджерКриптографии, ДанныеСертификата, СертификатКриптографии, ОписаниеОшибки) + + Попытка + ЗашифрованныеДанные = МенеджерКриптографии.Зашифровать(ДанныеСертификата, СертификатКриптографии); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеЗашифрованныеДанные(ЗашифрованныеДанные, ОписаниеОшибки); + Исключение + ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + УстановитьЭлемент(ЭтотОбъект, "Шифрование", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + + Возврат ЗашифрованныеДанные; + +КонецФункции + +&НаСервере +Процедура ПроверитьРасшифрованиеНаСервере(МенеджерКриптографии, ЗашифрованныеДанные) + + ОписаниеОшибки = ""; + Попытка + РасшифрованныеДанные = МенеджерКриптографии.Расшифровать(ЗашифрованныеДанные); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеРасшифрованныеДанные(РасшифрованныеДанные, ОписаниеОшибки); + Исключение + ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + УстановитьЭлемент(ЭтотОбъект, "Расшифровка", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты); + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьНаСторонеСервераДополнительныеПроверки(ЗначениеПароля, МенеджерКриптографии = Неопределено) + + ИмяСервера = ИмяКомпьютера(); + + // Дополнительные проверки. + Для Каждого ЭлементСписка Из ДополнительныеПроверки Цикл + + ОписаниеОшибки = ""; + ЭтоПредупреждение = Ложь; + Попытка + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("Сертификат", Сертификат); + ПараметрыВыполнения.Вставить("Проверка", ЭлементСписка.Имя); + ПараметрыВыполнения.Вставить("МенеджерКриптографии", МенеджерКриптографии); + ПараметрыВыполнения.Вставить("ОписаниеОшибки", ОписаниеОшибки); + ПараметрыВыполнения.Вставить("ЭтоПредупреждение", ЭтоПредупреждение); + ПараметрыВыполнения.Вставить("Пароль", ?(ВводитьПароль, ЗначениеПароля, Неопределено)); + ПараметрыВыполнения.Вставить("РезультатыПроверок", ПроверкиНаСервере); + + ЭлектроннаяПодписьПереопределяемый.ПриДополнительнойПроверкеСертификата(ПараметрыВыполнения); + + ОписаниеОшибки = ПараметрыВыполнения.ОписаниеОшибки; + ЭтоПредупреждение = ПараметрыВыполнения.ЭтоПредупреждение; + Исключение + ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + + УстановитьЭлемент(ЭтотОбъект, ЭлементСписка.Имя, Истина, + ОписаниеОшибки, ЭтоПредупреждение <> Истина, ОбъединятьРезультаты); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область УправлениеЭлементамиФормы + +&НаСервере +Процедура ДобавитьКартинку(ИмяЭлемента, Родитель, Картинка = Неопределено) + + Декорация = Элементы.Добавить(ИмяЭлемента, Тип("ДекорацияФормы"), Родитель); + Декорация.Вид = ВидДекорацииФормы.Картинка; + Декорация.Ширина = 2; + Декорация.Высота = 1; + Декорация.Картинка = ?(Картинка = Неопределено, Новый Картинка, Картинка); + Декорация.РазмерКартинки = РазмерКартинки.АвтоРазмер; + +КонецПроцедуры + +&НаСервере +Процедура ДобавитьГруппуОписанияРешения(ИмяПроверки, Родитель, НаСервере = Ложь) + + ГруппаРешение = ГруппаФормыБезОтображения( + ИмяПроверки + ?(НаСервере, "РешениеСервер", "РешениеКлиент"), Родитель); + + ДобавитьКартинку(ИмяПроверки + ?(НаСервере, "РешениеСерверКартинка", "РешениеКлиентКартинка"), + ГруппаРешение, БиблиотекаКартинок[?(НаСервере, "КомпьютерСервер", "КомпьютерКлиент")]); + + Надпись = Элементы.Добавить(ИмяПроверки + ?(НаСервере, "РешениеСерверНадпись", "РешениеКлиентНадпись"), + Тип("ДекорацияФормы"), ГруппаРешение); + Надпись.ЦветТекста = ЦветаСтиля.ПоясняющийТекст; + +КонецПроцедуры + +&НаСервере +Функция ГруппаФормыБезОтображения(ИмяГруппы, Родитель, Группировка = Неопределено) + + Группа = Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"), Родитель); + Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа; + Группа.Отображение = ОтображениеОбычнойГруппы.Нет; + Группа.ОтображатьЗаголовок = Ложь; + + Группа.Группировка = ?(Группировка = Неопределено, + ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда, Группировка); + + Возврат Группа; + +КонецФункции + +&НаСервере +Процедура ОбновитьВидимостьНаСервере() + + ОперацииНаСервере = (ЭлектроннаяПодпись.ПроверятьЭлектронныеПодписиНаСервере() + Или ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере()) + И ОбъединятьРезультаты <> "ОбъединятьПоИ" + И ОбъединятьРезультаты <> "ОбъединятьПоИли"; + + Для Каждого Проверка Из СтандартныеПроверки() Цикл + Элементы[Проверка + "НаСервереКартинка"].Видимость = ОперацииНаСервере; + КонецЦикла; + + Для каждого Проверка Из ДополнительныеПроверки Цикл + Элементы[Проверка.Имя + "НаСервереКартинка"].Видимость = ОперацииНаСервере; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ВывестиРезультатПроверки(Проверка, НаСервере = Ложь) + + РезультатыПроверок = ЭтотОбъект[?(НаСервере, "ПроверкиНаСервере", "ПроверкиНаКлиенте")]; + Если РезультатыПроверок <> Неопределено Тогда + + РезультатПроверки = РезультатыПроверок[Проверка]; + Если РезультатПроверки = Неопределено Тогда + УстановитьЭлемент(ЭтотОбъект, Проверка, НаСервере, , , ОбъединятьРезультаты); + Иначе + + ОшибкиПриПроверке = ?(РезультатыПроверок.Свойство(Проверка + "Ошибка"), + РезультатыПроверок[Проверка + "Ошибка"], ""); + + УстановитьЭлемент(ЭтотОбъект, Проверка, НаСервере, + ОшибкиПриПроверке, Не РезультатПроверки, ОбъединятьРезультаты); + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьЭлемент(Форма, НачалоЭлемента, НаСервере, + ОписаниеОшибки = Неопределено, ЭтоОшибка = Ложь, ОбъединятьРезультаты = "НеОбъединять") + + ЭлементНадпись = Форма.Элементы[НачалоЭлемента + "Надпись"]; // ДекорацияФормы, РасширениеДекорацииФормыДляНадписи + Если ОбъединятьРезультаты = "ОбъединятьПоИ" + Или ОбъединятьРезультаты = "ОбъединятьПоИли" Тогда + + ЭлементКартинка = Форма.Элементы[НачалоЭлемента + "НаКлиентеКартинка"]; // ДекорацияФормы + Иначе + ЭлементКартинка = Форма.Элементы[НачалоЭлемента + + ?(НаСервере, "НаСервереКартинка", "НаКлиентеКартинка")]; // ДекорацияФормы + КонецЕсли; + + Проверки = Форма[?(НаСервере, "ПроверкиНаСервере", "ПроверкиНаКлиенте")]; + ПроверкиВторогоКонтекста = Форма[?(НаСервере, "ПроверкиНаКлиенте", "ПроверкиНаСервере")]; + + ЗначениеПроверкиВторогоКонтекста = Неопределено; + Если ТипЗнч(ПроверкиВторогоКонтекста) = Тип("Структура") + И ПроверкиВторогоКонтекста.Свойство(НачалоЭлемента) Тогда + + ЗначениеПроверкиВторогоКонтекста = ПроверкиВторогоКонтекста[НачалоЭлемента]; + КонецЕсли; + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ЗначениеПроверки = Ложь; + РезультатПроверки = ЗначениеПроверки; + Если ОбъединятьРезультаты = "ОбъединятьПоИли" + И ЗначениеПроверкиВторогоКонтекста <> Неопределено Тогда + + РезультатПроверки = Ложь Или ЗначениеПроверкиВторогоКонтекста; + КонецЕсли; + + Если Не РезультатПроверки Тогда + ЭлементКартинка.Картинка = ?(ЭтоОшибка, + БиблиотекаКартинок.ПроверкаСертификатаОшибка, + БиблиотекаКартинок.ПроверкаСертификатаПредупреждение); + + ЭлементКартинка.Подсказка = ОписаниеОшибки; + ЭлементНадпись.Гиперссылка = Истина; + ЭлементНадпись.Заголовок = ОписаниеОшибки; + + ОписаниеИзвестнойОшибки = ОшибкаПоКлассификатору(ОписаниеОшибки); + ЭтоИзвестнаяОшибка = ОписаниеИзвестнойОшибки <> Неопределено; + + ИмяГруппыРешение = НачалоЭлемента + ?(НаСервере, "РешениеСервер", "РешениеКлиент"); + Форма.Элементы[ИмяГруппыРешение].Видимость = ЭтоИзвестнаяОшибка; + Если ЭтоИзвестнаяОшибка Тогда + ИмяГруппыРешениеНадпись = НачалоЭлемента + ?(НаСервере, "РешениеСерверНадпись", "РешениеКлиентНадпись"); + Форма.Элементы[ИмяГруппыРешениеНадпись].Заголовок = ОписаниеИзвестнойОшибки.Решение; + КонецЕсли; + КонецЕсли; + Иначе + ЭлементРешение = Форма.Элементы[НачалоЭлемента + + ?(НаСервере, "РешениеСервер", "РешениеКлиент")]; + ЗначениеПроверки = ?(ОписаниеОшибки = Неопределено, Неопределено, Истина); + Если (ОбъединятьРезультаты = "ОбъединятьПоИ" + Или ОбъединятьРезультаты = "ОбъединятьПоИли") Тогда + + Если ЗначениеПроверки = Неопределено + И ЗначениеПроверкиВторогоКонтекста = Неопределено Тогда + + ЭлементРешение.Видимость = Ложь; + ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаНеВыполнялась; + ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка не выполнялась.'"); + ЭлементНадпись.Гиперссылка = Ложь; + ЭлементНадпись.Заголовок = ЗаголовокЭлемента( + Форма.ДополнительныеПроверки, ЭлементНадпись.Имя); + + ИначеЕсли ЗначениеПроверки = Неопределено + И ЗначениеПроверкиВторогоКонтекста <> Неопределено Тогда + + Проверки.Вставить(НачалоЭлемента, ЗначениеПроверки); + Проверки.Вставить(НачалоЭлемента + "Ошибка", + ?(ОписаниеОшибки = Неопределено, "", ОписаниеОшибки)); + Возврат; + + ИначеЕсли ЗначениеПроверки <> Неопределено + И ЗначениеПроверкиВторогоКонтекста = Неопределено Тогда + + ЭлементРешение.Видимость = Ложь; + ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех; + ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'"); + ЭлементНадпись.Гиперссылка = Ложь; + ЭлементНадпись.Заголовок = ЗаголовокЭлемента( + Форма.ДополнительныеПроверки, ЭлементНадпись.Имя); + Иначе + РезультатПроверки = ?(ОбъединятьРезультаты = "ОбъединятьПоИ", + ЗначениеПроверки И ЗначениеПроверкиВторогоКонтекста, + ЗначениеПроверки Или ЗначениеПроверкиВторогоКонтекста); + + Если РезультатПроверки Тогда + ЭлементРешение.Видимость = Ложь; + ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех; + ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'"); + ЭлементНадпись.Гиперссылка = Ложь; + ЭлементНадпись.Заголовок = ЗаголовокЭлемента( + Форма.ДополнительныеПроверки, ЭлементНадпись.Имя); + КонецЕсли; + КонецЕсли; + Иначе + ЭлементКартинка.Картинка = ?(ОписаниеОшибки = Неопределено, + БиблиотекаКартинок.ПроверкаСертификатаНеВыполнялась, + БиблиотекаКартинок.ПроверкаСертификатаУспех); + ЭлементКартинка.Подсказка = ?(ОписаниеОшибки = Неопределено, + НСтр("ru = 'Проверка не выполнялась.'"), + НСтр("ru = 'Проверка выполнена успешно.'")); + + Если ПроверкиВторогоКонтекста = Неопределено + Или Не ПроверкиВторогоКонтекста.Свойство(НачалоЭлемента + "Ошибка") + Или ПустаяСтрока(ПроверкиВторогоКонтекста[НачалоЭлемента + "Ошибка"]) Тогда + + ЭлементРешение.Видимость = Ложь; + ЭлементНадпись.Гиперссылка = Ложь; + ЭлементНадпись.Заголовок = ЗаголовокЭлемента( + Форма.ДополнительныеПроверки, ЭлементНадпись.Имя); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Проверки.Вставить(НачалоЭлемента, ЗначениеПроверки); + Проверки.Вставить(НачалоЭлемента + "Ошибка", + ?(ОписаниеОшибки = Неопределено, "", ОписаниеОшибки)); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ЗаголовокЭлемента(ДополнительныеПроверки, ИмяЭлемента) + + ЗаголовокЭлемента = СтандартныйЗаголовокЭлемента(ИмяЭлемента); + Если Не ПустаяСтрока(ЗаголовокЭлемента) Тогда + Возврат ЗаголовокЭлемента; + КонецЕсли; + + Для Каждого Проверка Из ДополнительныеПроверки Цикл + + Если Проверка.Имя + "Надпись" = ИмяЭлемента Тогда + Возврат Проверка.Представление; + КонецЕсли; + + КонецЦикла; + + Возврат ""; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция СтандартныйЗаголовокЭлемента(ИмяЭлемента) + + Если ИмяЭлемента = "ЗаконныйСертификатНадпись" Тогда + Возврат НСтр("ru = 'Соответствие законодательству Российской Федерации'"); + + ИначеЕсли ИмяЭлемента = "НаличиеСертификатаНадпись" Тогда + Возврат НСтр("ru = 'Наличие сертификата в личном списке'"); + + ИначеЕсли ИмяЭлемента = "ДанныеСертификатаНадпись" Тогда + Возврат НСтр("ru = 'Корректность данных сертификата'"); + + ИначеЕсли ИмяЭлемента = "НаличиеПрограммыНадпись" Тогда + Возврат НСтр("ru = 'Наличие программы для подписания и расшифровки'"); + + ИначеЕсли ИмяЭлемента = "ПодписаниеНадпись" Тогда + Возврат НСтр("ru = 'Подписание данных'"); + + ИначеЕсли ИмяЭлемента = "ПроверкаПодписиНадпись" Тогда + Возврат НСтр("ru = 'Проверка созданной подписи'"); + + ИначеЕсли ИмяЭлемента = "ШифрованиеНадпись" Тогда + Возврат НСтр("ru = 'Шифрование данных'"); + + ИначеЕсли ИмяЭлемента = "РасшифровкаНадпись" Тогда + Возврат НСтр("ru = 'Расшифровка данных'"); + Иначе + Возврат ""; + КонецЕсли; + +КонецФункции + +#КонецОбласти + +&НаКлиенте +Процедура ДополнитьТекстОшибками(ТекстОшибок, Проверки, НаСервере = Ложь) + + СоставПроверок = ЭтотОбъект[?(НаСервере, "ПроверкиНаСервере", "ПроверкиНаКлиенте")]; + Для Каждого Проверка Из Проверки Цикл + + Если СоставПроверок = Неопределено Тогда + ТекстОшибок = ТекстОшибок + Проверка + ": " + + НСтр("ru = 'Не выполнялась, так как не требуется (не настроено)'") + Символы.ПС; + Иначе + + РезультатПроверки = ?(СоставПроверок.Свойство(Проверка), + ПроверкиНаКлиенте[Проверка], Неопределено); + + ТекстОшибкиПроверки = ?(СоставПроверок.Свойство(Проверка + "Ошибка"), + СокрЛП(ПроверкиНаКлиенте[Проверка + "Ошибка"]), ""); + + ТекстОшибок = ТекстОшибок + Проверка + ": " + + ?(РезультатПроверки = Неопределено, НСтр("ru = 'Не выполнялась из-за предыдущих ошибок'"), + Формат(РезультатПроверки, НСтр("ru = 'БЛ=Ошибка; БИ=Успех'"))) + + ?(ПустаяСтрока(ТекстОшибкиПроверки), "", " """ + ТекстОшибкиПроверки + """") + Символы.ПС; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ОшибкаПоКлассификатору(ОписаниеОшибки) + + Возврат ЭлектроннаяПодписьСлужебный.ОшибкаПоКлассификатору(ОписаниеОшибки); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция СтандартныеПроверки() + + СтандартныеПроверки = Новый Массив; + СтандартныеПроверки.Добавить("ЗаконныйСертификат"); + СтандартныеПроверки.Добавить("НаличиеСертификата"); + СтандартныеПроверки.Добавить("ДанныеСертификата"); + СтандартныеПроверки.Добавить("НаличиеПрограммы"); + СтандартныеПроверки.Добавить("Подписание"); + СтандартныеПроверки.Добавить("ПроверкаПодписи"); + СтандартныеПроверки.Добавить("Шифрование"); + СтандартныеПроверки.Добавить("Расшифровка"); + + Возврат СтандартныеПроверки; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\321\201\320\274\320\276\321\202\321\200\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\321\201\320\274\320\276\321\202\321\200\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" new file mode 100644 index 00000000..6dafc0ce --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\321\201\320\274\320\276\321\202\321\200\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" @@ -0,0 +1,398 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + + СписокПредставление + 20 + true + true + + true + + + + Список.Представление + + + + СписокПредставлениеРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + СписокПредставлениеКонтекстноеМеню + 21 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + Selection + СписокВыбор + + + true + true + + true + + СписокСтрокаПоиска + 5 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 13 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 15 + + СписокУправлениеПоискомРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 18 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + + + + ФормаКоманднаяПанель + -1 + + СписокОткрыть + 23 + true + true + + true + + + СписокОткрытьРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СписокОткрыть + Auto + true + true + UserCmds + Auto + + + СписокСтандартныеКоманды + 25 + true + true + + true + + + <key>ru</key> + <value>Стандартные команды</value> + + + СписокСтандартныеКомандыРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Список + + <key>ru</key> + <value>Список</value> + + 1 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + + СписокОткрыть + + <key>ru</key> + <value>Открыть</value> + + 1 + + true + + + + СписокОткрыть + + + DontUse + + + СписокПредставленийДанных + + + + ПредставлениеДанных + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\321\201\320\274\320\276\321\202\321\200\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\321\201\320\274\320\276\321\202\321\200\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" new file mode 100644 index 00000000..d657a954 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\237\321\200\320\276\321\201\320\274\320\276\321\202\321\200\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" @@ -0,0 +1,85 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем СписокПредставленийДанных; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Заголовок = Параметры.ПредставлениеДанных; + + Для каждого Представление Из Параметры.СписокПредставленийДанных Цикл + Список.Добавить().Представление = Представление; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ОткрытьДанные(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура УстановитьСписокПредставлений(СписокПредставлений, Контекст) Экспорт + + СписокПредставленийДанных = СписокПредставлений; + + Контекст = Новый ОписаниеОповещения("УстановитьСписокПредставлений", ЭтотОбъект, Контекст); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СписокОткрыть() + + ОткрытьДанные(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьДанные() + + Если Элементы.Список.ТекущаяСтрока = Неопределено Тогда + Возврат; + КонецЕсли; + + Строка = Список.НайтиПоИдентификатору(Элементы.Список.ТекущаяСтрока); + Если Строка = Неопределено Тогда + Возврат; + КонецЕсли; + Индекс = Список.Индекс(Строка); + + Значение = СписокПредставленийДанных[Индекс].Значение; + + Если ТипЗнч(Значение) = Тип("ОписаниеОповещения") Тогда + ВыполнитьОбработкуОповещения(Значение); + Иначе + ПоказатьЗначение(, Значение); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" new file mode 100644 index 00000000..95b0360c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" @@ -0,0 +1,1152 @@ + + + + <key>ru</key> + <value>Расшифровка данных</value> + + + ГруппаПредставлениеДанных + 453 + + ПредставлениеДанных + 18 + + <key>ru</key> + <value>Данные</value> + + true + true + + true + + + + ПредставлениеДанных + + + + ПредставлениеДанныхРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеДанныхКонтекстноеМеню + 19 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ПредставлениеДанныхНажатие + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Представление данных</value> + + + ГруппаПредставлениеДанныхРасширеннаяПодсказка + 454 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ГруппаРасшифровка + 378 + + ГруппаПоля + 433 + + Сертификат + 313 + true + true + + true + + + + Сертификат + + + + OnChange + СертификатПриИзменении + + + СертификатРасширеннаяПодсказка + 315 + true + true + + true + + Label + true + true + + Left + + + + СертификатКонтекстноеМеню + 314 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + AutoComplete + СертификатАвтоПодбор + + + StartChoice + СертификатНачалоВыбора + + + Opening + СертификатОткрытие + + + TextEditEnd + СертификатОкончаниеВводаТекста + + + ChoiceProcessing + СертификатОбработкаВыбора + + true + true + true + false + true + ShowInInputField + true + false + false + true + true + true + DontUse + + + + Пароль + 316 + true + true + + true + + + + Пароль + + + + OnChange + ПарольПриИзменении + + + ПарольРасширеннаяПодсказка + 318 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 317 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + Страницы + 416 + + СтраницаЗапоминаниеПароля + 418 + + ЗапомнитьПароль + 324 + true + true + + true + + + + ЗапомнитьПароль + + + Right + + ru + Запомнить пароль сертификата до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее. + + Button + + OnChange + ЗапомнитьПарольПриИзменении + + + ЗапомнитьПарольРасширеннаяПодсказка + 326 + true + true + + true + + Label + true + true + + Left + + + + ЗапомнитьПарольКонтекстноеМеню + 325 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Страница запоминание пароля</value> + + + СтраницаЗапоминаниеПароляРасширеннаяПодсказка + 419 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + СтраницаПояснениеУсиленногоПароля + 438 + + ПояснениеУсиленногоПароля + 440 + + <key>ru</key> + <value>Нажмите Расшифровать, чтобы перейти к вводу пароля.</value> + + true + true + + true + + + ru + Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, +так как для выбранного сертификата указана усиленная защита закрытого ключа. + + Button + + ПояснениеУсиленногоПароляРасширеннаяПодсказка + 442 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеУсиленногоПароляКонтекстноеМеню + 441 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница пояснение усиленного пароля</value> + + + СтраницаПояснениеУсиленногоПароляРасширеннаяПодсказка + 439 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаПояснениеУстановленногоПароля + 443 + + ПояснениеУстановленногоПароля + 445 + true + true + + true + + Button + + ПояснениеУстановленногоПароляРасширеннаяПодсказка + 447 + true + true + + true + + Label + true + true + + + URLProcessing + ПояснениеУстановленногоПароляРасширеннаяПодсказкаОбработкаНавигационнойСсылки + + Left + + + + ПояснениеУстановленногоПароляКонтекстноеМеню + 446 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + + Click + ПояснениеУстановленногоПароляНажатие + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница пояснение установленного пароля</value> + + + СтраницаПояснениеУстановленногоПароляРасширеннаяПодсказка + 444 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 417 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Поля</value> + + + ГруппаПоляРасширеннаяПодсказка + 434 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Введите пароль закрытого ключа сертификата</value> + + + ГруппаРасшифровкаРасширеннаяПодсказка + 379 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаРасшифровать + 307 + true + true + + true + + + ФормаРасшифроватьРасширеннаяПодсказка + 308 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Расшифровать + Auto + true + true + true + UserCmds + Auto + + + ФормаЗакрыть + 303 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 304 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + Auto + + + ФормаСправка + 448 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 449 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + 45 + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ПредставлениеДанных + + <key>ru</key> + <value>Представление данных</value> + + 2 + + String + + + + true + + + true + + + + Сертификат + + <key>ru</key> + <value>Сертификат</value> + + 12 + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + + ShowError + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 13 + + String + + + + true + + + true + + + + ЗапомнитьПароль + + <key>ru</key> + <value>Запомнить пароль</value> + + 14 + + Boolean + + + true + + + true + + + + Комментарий + 4 + + String + + + + true + + + true + + + + СертификатОтпечаток + 5 + + String + + + + true + + + true + + + + СертификатСписокВыбора + 7 + + ValueList + + + true + + + true + + + + + + + ОтборСертификатов + 1 + + ValueList + + + true + + + true + + + + + + + ВыходныеПараметрыДополнительныхДействий + 8 + + + true + + + true + + + + СертификатПрограмма + 9 + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + БезПодтверждения + 10 + + Boolean + + + true + + + true + + + + ОповеститьОбОкончанииСрокаДействия + 11 + + Boolean + + + true + + + true + + + + СертификатДействителенДо + 15 + + Date + + + + true + + + true + + + + СертификатНаСервереОписаниеОшибки + 6 + + + true + + + true + + + + МенеджерКриптографииНаСервереОписаниеОшибки + 16 + + + true + + + true + + + + ОтборОтпечатков + 17 + + + true + + + true + + + + СертификатУсиленнаяЗащитаЗакрытогоКлюча + 18 + + Boolean + + + true + + + true + + + + РазрешитьЗапоминатьПароль + 19 + + Boolean + + + true + + + true + + + + ВыполнятьНаСервере + 20 + + + true + + + true + + + + ЭтоАутентификация + 21 + + Boolean + + + true + + + true + + + + СертификатАдрес + 3 + + String + + + + true + + + true + + + + ВыполнятьВМоделиСервиса + 22 + + Boolean + + + true + + + true + + + + ИмяПоляАктивизироватьПоУмолчанию + 23 + + String + + + + true + + + true + + + + ОблачныйПарольПодтвержден + 24 + + Boolean + + + true + + + true + + + + Расшифровать + + <key>ru</key> + <value>Расшифровать</value> + + 5 + + true + + + + Расшифровать + + + DontUse + + + Операция + + String + + + + + ЗаголовокДанных + + String + + + + + ПредставлениеДанных + + String + + + + + ОткрытиеСпискаДанных + + Boolean + + + + ОтборСертификатов + + + + ПараметрыДополнительныхДействий + + + + БезПодтверждения + + Boolean + + + + ОтпечаткиСертификатовНаКлиенте + + + + СертификатыШифрования + + + + РазрешитьЗапоминатьПароль + + Boolean + + + + ВыполнятьНаСервере + + + + ЭтоАутентификация + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" new file mode 100644 index 00000000..eab88e05 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" @@ -0,0 +1,15 @@ + +

Предназначена для расшифровки данных.

+

Выводятся сведения:

+
  • В ссылке в верхней части окна указываются сведения о данных, которые будут расшифрованы. +
  • В поле Сертификат можно выбрать сертификат, установленный на компьютере, которым возможно расшифровывать данные. +
    • Если в выпадающем списке сертификатов нет, значит, на компьютер нужно установить сертификат с закрытой частью ключа.
      Сертификат, планируемый к установке, должен быть из числа тех, которыми был зашифрованы данные (например, для файла это можно проверить в его карточке на закладке Разрешено расшифровывать). +
    • Если список сертификатов, которыми выполнялось шифрование, пуст, но известно, каким сертификатом выполнялось шифрование, тогда в выпадающем списке нужно нажать кнопку Показать все и выбрать этот сертификат.

Расшифровка данных

+
  • +
    В поле Пароль введите пароль для выбранного сертификата.
    +
  • +
    Включите флажок Запомнить пароль, для того чтобы не вводить пароль в следующий раз.
    +
  • +
    Нажмите Расшифровать.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" new file mode 100644 index 00000000..3e0254a2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\260\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" @@ -0,0 +1,706 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ВнутренниеДанные, СвойстваПароля, ОписаниеДанных, ФормаОбъекта, ОбработкаПослеПредупреждения, ТекущийСписокПредставлений; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебный.НастроитьПояснениеВводаПароля(ЭтотОбъект, , + Элементы.ПояснениеУсиленногоПароля.Имя); + + ЭлектроннаяПодписьСлужебный.НастроитьФормуПодписанияШифрованияРасшифровки(ЭтотОбъект, , Истина); + + РазрешитьЗапоминатьПароль = Параметры.РазрешитьЗапоминатьПароль; + ЭтоАутентификация = Параметры.ЭтоАутентификация; + + Если ЭтоАутентификация Тогда + Элементы.ФормаРасшифровать.Заголовок = НСтр("ru = 'ОК'"); + Элементы.ПояснениеУсиленногоПароля.Заголовок = НСтр("ru = 'Нажмите ОК, чтобы перейти к вводу пароля.'"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ВнутренниеДанные = Неопределено Тогда + Отказ = Истина; + КонецЕсли; + + Если ЗначениеЗаполнено(ИмяПоляАктивизироватьПоУмолчанию) Тогда + ТекущийЭлемент = Элементы[ИмяПоляАктивизироватьПоУмолчанию]; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + ОчиститьПеременныеФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + ПодключитьОбработчикОжидания("ПриИзмененииСпискаСертификатов", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПредставлениеДанныхНажатие(Элемент, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.ПредставлениеДанныхНажатие(ЭтотОбъект, + Элемент, СтандартнаяОбработка, ТекущийСписокПредставлений); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("СертификатПриИзмененииЗавершение", ЭтотОбъект), + ЗначениеЗаполнено(ОтборОтпечатков)); + +КонецПроцедуры + +// Продолжение процедуры СертификатПриИзменении. +&НаКлиенте +Процедура СертификатПриИзмененииЗавершение(ОтпечаткиСертификатовНаКлиенте, Контекст) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте); + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, СвойстваПароля); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если ОтборСертификатов.Количество() > 0 Тогда + ЭлектроннаяПодписьСлужебныйКлиент.НачалоВыбораСертификатаПриУстановленномОтборе(ЭтотОбъект); + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ВыбранныйСертификат", Сертификат); + ПараметрыФормы.Вставить("ДляШифрованияИРасшифровки", Истина); + ПараметрыФормы.Вставить("ВернутьПароль", Истина); + + ЭлектроннаяПодписьСлужебныйКлиент.ВыборСертификатаДляПодписанияИлиРасшифровки(ПараметрыФормы, Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОткрытие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Если ЗначениеЗаполнено(Сертификат) Тогда + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(Сертификат); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если ВыбранноеЗначение = Истина Тогда + Сертификат = ВнутренниеДанные["ВыбранныйСертификат"]; + ВнутренниеДанные.Удалить("ВыбранныйСертификат"); + + ИначеЕсли ВыбранноеЗначение = Ложь Тогда + Сертификат = Неопределено; + + ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОтпечатокВыбранногоСертификата", ВыбранноеЗначение); + ПараметрыФормы.Вставить("ДляШифрованияИРасшифровки", Истина); + ПараметрыФормы.Вставить("ВернутьПароль", Истина); + + ЭлектроннаяПодписьСлужебныйКлиент.ВыборСертификатаДляПодписанияИлиРасшифровки(ПараметрыФормы, Элемент); + Возврат; + Иначе + Сертификат = ВыбранноеЗначение; + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("СертификатОбработкаВыбораЗавершение", ЭтотОбъект, ВыбранноеЗначение), + ЗначениеЗаполнено(ОтборОтпечатков)); + +КонецПроцедуры + +// Продолжение процедуры СертификатОбработкаВыбора. +&НаКлиенте +Процедура СертификатОбработкаВыбораЗавершение(ОтпечаткиСертификатовНаКлиенте, ВыбранноеЗначение) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте); + + Если ВыбранноеЗначение = Истина + И ВнутренниеДанные["ВыбранныйСертификатПароль"] <> Неопределено Тогда + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля,, ВнутренниеДанные["ВыбранныйСертификатПароль"]); + ВнутренниеДанные.Удалить("ВыбранныйСертификатПароль"); + Элементы.ЗапомнитьПароль.ТолькоПросмотр = Ложь; + Иначе + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, СвойстваПароля); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.СертификатПодборИзСпискаВыбора(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.СертификатПодборИзСпискаВыбора(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ПарольПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииРеквизитаПароль", Истина)); + + Если Не РазрешитьЗапоминатьПароль + И Не ЗапомнитьПароль + И Не СвойстваПароля.ПарольПроверен Тогда + + Элементы.ЗапомнитьПароль.ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗапомнитьПарольПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииРеквизитаЗапомнитьПароль", Истина)); + + Если Не РазрешитьЗапоминатьПароль + И Не ЗапомнитьПароль + И Не СвойстваПароля.ПарольПроверен Тогда + + Элементы.ЗапомнитьПароль.ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПояснениеУстановленногоПароляНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПояснениеУстановленногоПароляНажатие(ЭтотОбъект, Элемент, СвойстваПароля); + +КонецПроцедуры + +&НаКлиенте +Процедура ПояснениеУстановленногоПароляРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.ПояснениеУстановленногоПароляОбработкаНавигационнойСсылки( + ЭтотОбъект, Элемент, НавигационнаяСсылка, СтандартнаяОбработка, СвойстваПароля); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Расшифровать(Команда) + + Если Не Элементы.ФормаРасшифровать.Доступность Тогда + Возврат; + КонецЕсли; + + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + Элементы.ФормаРасшифровать.Доступность = Ложь; + + РасшифроватьДанные(Новый ОписаниеОповещения("РасшифроватьЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры Расшифровать. +&НаКлиенте +Процедура РасшифроватьЗавершение(Результат, Контекст) Экспорт + + Элементы.ФормаРасшифровать.Доступность = Истина; + + Если Результат = Истина Тогда + Закрыть(Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПродолжитьОткрытие(Оповещение, ОбщиеВнутренниеДанные, КлиентскиеПараметры) Экспорт + + Если КлиентскиеПараметры = ВнутренниеДанные Тогда + КлиентскиеПараметры = Новый Структура("Сертификат, СвойстваПароля", Сертификат, СвойстваПароля); + Возврат; + КонецЕсли; + + Если КлиентскиеПараметры.Свойство("УказанКонтекстДругойОперации") Тогда + СвойстваСертификата = ОбщиеВнутренниеДанные; + КлиентскиеПараметры.ОписаниеДанных.КонтекстОперации.ПродолжитьОткрытие(Неопределено, Неопределено, СвойстваСертификата); + Если СвойстваСертификата.Сертификат = Сертификат Тогда + СвойстваПароля = СвойстваСертификата.СвойстваПароля; + КонецЕсли; + КонецЕсли; + + ОписаниеДанных = КлиентскиеПараметры.ОписаниеДанных; + ФормаОбъекта = КлиентскиеПараметры.Форма; + ТекущийСписокПредставлений = КлиентскиеПараметры.ТекущийСписокПредставлений; + + ВнутренниеДанные = ОбщиеВнутренниеДанные; + Контекст = Новый Структура("Оповещение", Оповещение); + Оповещение = Новый ОписаниеОповещения("ПродолжитьОткрытие", ЭтотОбъект); + + ЭлектроннаяПодписьСлужебныйКлиент.ПродолжитьОткрытиеНачало(Новый ОписаниеОповещения( + "ПродолжитьОткрытиеПослеНачала", ЭтотОбъект, Контекст), ЭтотОбъект, КлиентскиеПараметры,, Истина); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеНачала(Результат, Контекст) Экспорт + + Если Результат <> Истина Тогда + ПродолжитьОткрытиеЗавершение(Контекст); + Возврат; + КонецЕсли; + + ДополнительныеПараметры = Новый Структура; + Если СвойстваПароля <> Неопределено Тогда + ДополнительныеПараметры.Вставить("ПриУстановкеПароляИзДругойОперации", Истина); + КонецЕсли; + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, ДополнительныеПараметры); + + Если Не РазрешитьЗапоминатьПароль + И Не ЗапомнитьПароль + И Не СвойстваПароля.ПарольПроверен Тогда + + Элементы.ЗапомнитьПароль.ТолькоПросмотр = Истина; + КонецЕсли; + + Если БезПодтверждения + И ( ДополнительныеПараметры.ПарольУказан + Или ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча + Или ОблачныйПарольПодтвержден) Тогда + + ОбработкаПослеПредупреждения = Неопределено; + РасшифроватьДанные(Новый ОписаниеОповещения("ПродолжитьОткрытиеПослеРасшифровкиДанных", ЭтотОбъект, Контекст)); + Возврат; + КонецЕсли; + + Открыть(); + + ПродолжитьОткрытиеЗавершение(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеРасшифровкиДанных(Результат, Контекст) Экспорт + + ПродолжитьОткрытиеЗавершение(Контекст, Результат = Истина); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеЗавершение(Контекст, Результат = Неопределено) + + Если Не Открыта() Тогда + ОчиститьПеременныеФормы(); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Результат); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьПеременныеФормы() + + ОписаниеДанных = Неопределено; + ФормаОбъекта = Неопределено; + ТекущийСписокПредставлений = Неопределено; + +КонецПроцедуры + +&НаКлиенте +Функция ПеременныеОчищены() + + Возврат ОписаниеДанных = Неопределено + И ФормаОбъекта = Неопределено + И ТекущийСписокПредставлений = Неопределено; + +КонецФункции + +// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. +&НаКлиенте +Процедура ВыполнитьРасшифровку(КлиентскиеПараметры, ОбработкаЗавершения) Экспорт +// АПК:78-вкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. + + ЭлектроннаяПодписьСлужебныйКлиент.ОбновитьФормуПередПовторнымИспользованием(ЭтотОбъект, КлиентскиеПараметры); + + ОписаниеДанных = КлиентскиеПараметры.ОписаниеДанных; + ФормаОбъекта = КлиентскиеПараметры.Форма; + ТекущийСписокПредставлений = КлиентскиеПараметры.ТекущийСписокПредставлений; + + ОбработкаПослеПредупреждения = ОбработкаЗавершения; + + Контекст = Новый Структура("ОбработкаЗавершения", ОбработкаЗавершения); + РасшифроватьДанные(Новый ОписаниеОповещения("ВыполнитьРасшифровкуЗавершение", ЭтотОбъект, Контекст)); + +КонецПроцедуры + +// Продолжение процедуры ВыполнитьРасшифровку. +&НаКлиенте +Процедура ВыполнитьРасшифровкуЗавершение(Результат, Контекст) Экспорт + + Если Результат = Истина Тогда + ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииСпискаСертификатов() + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("ПриИзмененииСпискаСертификатовЗавершение", ЭтотОбъект), + ЗначениеЗаполнено(ОтборОтпечатков)); + +КонецПроцедуры + +// Продолжение процедуры ПриИзмененииСпискаСертификатов. +&НаКлиенте +Процедура ПриИзмененииСпискаСертификатовЗавершение(ОтпечаткиСертификатовНаКлиенте, Контекст) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте, Истина); + + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, + ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииСвойствСертификата", Истина)); + +КонецПроцедуры + +&НаСервере +Процедура СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте, ПроверитьСсылку = Ложь) + + Если ПроверитьСсылку + И ЗначениеЗаполнено(Сертификат) + И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сертификат, "Ссылка") <> Сертификат Тогда + + Сертификат = Неопределено; + КонецЕсли; + + ЭлектроннаяПодписьСлужебный.СертификатПриИзмененииНаСервере(ЭтотОбъект, ОтпечаткиСертификатовНаКлиенте,, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура РасшифроватьДанные(Оповещение) + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + Контекст.Вставить("ОшибкаНаКлиенте", Новый Структура); + Контекст.Вставить("ОшибкаНаСервере", Новый Структура); + + Если Не ЗначениеЗаполнено(СертификатПрограмма) Тогда + Контекст.ОшибкаНаКлиенте.Вставить("ОписаниеОшибки", + НСтр("ru = 'У выбранного сертификата не указана программа для закрытого ключа. + |Выберите сертификат повторно из полного списка или + |откройте сертификат и укажите программу вручную.'")); + ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + ВыбранныйСертификат = Новый Структура; + ВыбранныйСертификат.Вставить("Ссылка", Сертификат); + ВыбранныйСертификат.Вставить("Отпечаток", СертификатОтпечаток); + ВыбранныйСертификат.Вставить("Данные", СертификатАдрес); + ОписаниеДанных.Вставить("ВыбранныйСертификат", ВыбранныйСертификат); + + Если ОписаниеДанных.Свойство("ПередВыполнением") + И ТипЗнч(ОписаниеДанных.ПередВыполнением) = Тип("ОписаниеОповещения") Тогда + + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("ОписаниеДанных", ОписаниеДанных); + ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения( + "РасшифроватьДанныеПослеОбработкиПередВыполнением", ЭтотОбъект, Контекст)); + + ВыполнитьОбработкуОповещения(ОписаниеДанных.ПередВыполнением, ПараметрыВыполнения); + Иначе + РасшифроватьДанныеПослеОбработкиПередВыполнением(Новый Структура, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры РасшифроватьДанные. +&НаКлиенте +Процедура РасшифроватьДанныеПослеОбработкиПередВыполнением(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + Если Результат.Свойство("ОписаниеОшибки") Тогда + ОбработатьОшибку(Контекст.Оповещение, Новый Структура("ОписаниеОшибки", Результат.ОписаниеОшибки), Новый Структура); + Возврат; + КонецЕсли; + + Контекст.Вставить("ИдентификаторФормы", УникальныйИдентификатор); + Если ТипЗнч(ФормаОбъекта) = Тип("ФормаКлиентскогоПриложения") Тогда + Контекст.ИдентификаторФормы = ФормаОбъекта.УникальныйИдентификатор; + ИначеЕсли ТипЗнч(ФормаОбъекта) = Тип("УникальныйИдентификатор") Тогда + Контекст.ИдентификаторФормы = ФормаОбъекта; + КонецЕсли; + + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("ОписаниеДанных", ОписаниеДанных); + ПараметрыВыполнения.Вставить("Форма", ЭтотОбъект); + ПараметрыВыполнения.Вставить("ИдентификаторФормы", Контекст.ИдентификаторФормы); + ПараметрыВыполнения.Вставить("ЗначениеПароля", СвойстваПароля.Значение); + Контекст.Вставить("ПараметрыВыполнения", ПараметрыВыполнения); + + Если ЭлектроннаяПодписьКлиент.СоздаватьЭлектронныеПодписиНаСервере() Тогда + Если ЗначениеЗаполнено(СертификатНаСервереОписаниеОшибки) Тогда + Результат = Новый Структура("Ошибка", СертификатНаСервереОписаниеОшибки); + СертификатНаСервереОписаниеОшибки = Новый Структура; + РасшифроватьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст); + Иначе + // Попытка шифрования на сервере. + ЭлектроннаяПодписьСлужебныйКлиент.ВыполнитьНаСтороне(Новый ОписаниеОповещения( + "РасшифроватьДанныеПослеВыполненияНаСторонеСервера", ЭтотОбъект, Контекст), + "Расшифровка", "НаСторонеСервера", Контекст.ПараметрыВыполнения); + КонецЕсли; + Иначе + РасшифроватьДанныеПослеВыполненияНаСторонеСервера(Неопределено, Контекст); + КонецЕсли; + + +КонецПроцедуры + +// Продолжение процедуры РасшифроватьДанные. +&НаКлиенте +Процедура РасшифроватьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + Если Результат <> Неопределено Тогда + РасшифроватьДанныеПослеВыполнения(Результат); + КонецЕсли; + + Если Результат <> Неопределено И Не Результат.Свойство("Ошибка") Тогда + РасшифроватьДанныеПослеВыполненияНаСторонеКлиента(Новый Структура, Контекст); + Иначе + Если Результат <> Неопределено Тогда + Контекст.ОшибкаНаСервере = Результат.Ошибка; + КонецЕсли; + + // Попытка подписания на клиенте. + ЭлектроннаяПодписьСлужебныйКлиент.ВыполнитьНаСтороне(Новый ОписаниеОповещения( + "РасшифроватьДанныеПослеВыполненияНаСторонеКлиента", ЭтотОбъект, Контекст), + "Расшифровка", "НаСторонеКлиента", Контекст.ПараметрыВыполнения); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры РасшифроватьДанные. +&НаКлиенте +Процедура РасшифроватьДанныеПослеВыполненияНаСторонеКлиента(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + РасшифроватьДанныеПослеВыполнения(Результат); + + Если Результат.Свойство("Ошибка") Тогда + Контекст.ОшибкаНаКлиенте = Результат.Ошибка; + ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + Если Не ЗаписатьСертификатыШифрования(Контекст.ИдентификаторФормы, Контекст.ОшибкаНаКлиенте) Тогда + ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + Если Не ЭтоАутентификация + И ЗначениеЗаполнено(ПредставлениеДанных) + И (Не ОписаниеДанных.Свойство("СообщитьОЗавершении") + Или ОписаниеДанных.СообщитьОЗавершении <> Ложь) Тогда + + ЭлектроннаяПодписьКлиент.ИнформироватьОРасшифровкеОбъекта( + ЭлектроннаяПодписьСлужебныйКлиент.ПолноеПредставлениеДанных(ЭтотОбъект), + ТекущийСписокПредставлений.Количество() > 1); + КонецЕсли; + + Если ОписаниеДанных.Свойство("КонтекстОперации") Тогда + ОписаниеДанных.КонтекстОперации = ЭтотОбъект; + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Истина); + +КонецПроцедуры + +// Продолжение процедуры РасшифроватьДанные. +&НаКлиенте +Процедура РасшифроватьДанныеПослеВыполнения(Результат) + + Если Результат.Свойство("ОперацияНачалась") Тогда + ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, + СвойстваПароля, Новый Структура("ПриУспешномВыполненииОперации", Истина)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ЗаписатьСертификатыШифрования(ИдентификаторФормы, Ошибка) + + ОписаниеОбъектов = Новый Массив; + Если ОписаниеДанных.Свойство("Данные") Тогда + ДобавитьОписаниеОбъекта(ОписаниеОбъектов, ОписаниеДанных); + Иначе + Для Каждого ЭлементДанных Из ОписаниеДанных.НаборДанных Цикл + ДобавитьОписаниеОбъекта(ОписаниеОбъектов, ЭлементДанных); + КонецЦикла; + КонецЕсли; + + Ошибка = Новый Структура; + ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, ИдентификаторФормы, Ошибка); + + Возврат Не ЗначениеЗаполнено(Ошибка); + +КонецФункции + +// Возвращаемое значение: +// Структура: +// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования +// +&НаКлиенте +Функция ОписаниеОбъекта(ЭлементДанных) + + ВерсияОбъекта = Неопределено; + ЭлементДанных.Свойство("ВерсияОбъекта", ВерсияОбъекта); + + ОписаниеОбъекта = Новый Структура; + ОписаниеОбъекта.Вставить("Ссылка", ЭлементДанных.Объект); + ОписаниеОбъекта.Вставить("Версия", ВерсияОбъекта); + + Возврат ОписаниеОбъекта; + +КонецФункции + +&НаКлиенте +Процедура ДобавитьОписаниеОбъекта(ОписаниеОбъектов, ЭлементДанных) + + Если Не ЭлементДанных.Свойство("Объект") Тогда + Возврат; + КонецЕсли; + + ОписаниеОбъектов.Добавить(ОписаниеОбъекта(ЭлементДанных)); + +КонецПроцедуры + +// Параметры: +// ОписаниеОбъектов - Массив из см. ОписаниеОбъекта +// +&НаСервереБезКонтекста +Процедура ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, ИдентификаторФормы, Ошибка) + + СертификатыШифрования = Новый Массив; + + НачатьТранзакцию(); + Попытка + Для каждого ОписаниеОбъекта Из ОписаниеОбъектов Цикл + ЭлектроннаяПодпись.ЗаписатьСертификатыШифрования(ОписаниеОбъекта.Ссылка, + СертификатыШифрования, ИдентификаторФормы, ОписаниеОбъекта.Версия); + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Ошибка.Вставить("ОписаниеОшибки", НСтр("ru = 'При очистке сертификатов шифрования возникла ошибка:'") + + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьОшибку(Оповещение, ОшибкаНаКлиенте, ОшибкаНаСервере) + + Если ОписаниеДанных.Свойство("ПрекратитьВыполнение") Тогда + + Если Не ОписаниеДанных.Свойство("ОписаниеОшибки") Тогда + ОписаниеДанных.Вставить("ОписаниеОшибки"); + КонецЕсли; + + ОписаниеДанных.ОписаниеОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОбщееОписаниеОшибки( + ОшибкаНаКлиенте, ОшибкаНаСервере, НСтр("ru = 'Не удалось расшифровать данные по причине:'")); + + Если Открыта() Тогда + Закрыть(Ложь); + Иначе + ВыполнитьОбработкуОповещения(Оповещение, Ложь); + КонецЕсли; + + Иначе + + Если Не Открыта() И ОбработкаПослеПредупреждения = Неопределено Тогда + Открыть(); + КонецЕсли; + + ДополнительныеПараметры = Новый Структура("Сертификат", Сертификат); + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Не удалось расшифровать данные'"), "", + ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры, ОбработкаПослеПредупреждения); + + ВыполнитьОбработкуОповещения(Оповещение, Ложь); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..3cd67d4b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,37 @@ + + + + + false + ПометкаУдаления + Equal + false + + + false + Отозван + Equal + false + + + false + ДействителенДо + Greater + + BeginningOfThisDay + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..49ae4756 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,693 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + Choose + Copy + CopyToClipboard + Delete + + СписокНаименование + 4 + true + true + + true + + + + Список.Наименование + + + true + + СписокНаименованиеРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + + СписокНаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокОрганизация + 9 + true + true + + true + + + + Список.Организация + + + + СписокОрганизацияРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + + СписокОрганизацияКонтекстноеМеню + 10 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокПользователь + 16 + true + true + + + + Список.Пользователь + + + + СписокПользовательРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + + СписокПользовательКонтекстноеМеню + 17 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + СписокСсылка + 55 + true + true + + + + Список.Ссылка + + + + СписокСсылкаРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 56 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + BeforeAddRow + СписокПередНачаломДобавления + + + true + true + + true + + СписокСтрокаПоиска + 42 + + СписокСтрокаПоискаРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 43 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 45 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 46 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 48 + + СписокУправлениеПоискомРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 49 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюСоздать + 51 + + <key>ru</key> + <value>Добавить...</value> + + true + true + + true + + + СписокКонтекстноеМенюСоздатьРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюСтандартныеКоманды + 53 + true + true + + true + + + <key>ru</key> + <value>Контекстное меню стандартные команды</value> + + + СписокКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + true + true + + true + + + true + true + true + true + 7 + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + +
+ + ФормаКоманднаяПанель + -1 + + ФормаВыбрать + 40 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаСоздать + 38 + + <key>ru</key> + <value>Добавить...</value> + + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ГруппаСтандартныеКоманды + 20 + true + true + + true + + + <key>ru</key> + <value>Стандартные команды</value> + + + ГруппаСтандартныеКомандыExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 21 + true + true + + true + + + ФормаСправкаExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Delete + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + СертификатыПереопределяемый.Ссылка КАК Ссылка, + СертификатыПереопределяемый.ПометкаУдаления КАК ПометкаУдаления, + СертификатыПереопределяемый.Наименование КАК Наименование, + СертификатыПереопределяемый.КомуВыдан КАК КомуВыдан, + СертификатыПереопределяемый.Фирма КАК Фирма, + СертификатыПереопределяемый.Фамилия КАК Фамилия, + СертификатыПереопределяемый.Имя КАК Имя, + СертификатыПереопределяемый.Отчество КАК Отчество, + СертификатыПереопределяемый.Должность КАК Должность, + СертификатыПереопределяемый.КемВыдан КАК КемВыдан, + СертификатыПереопределяемый.ДействителенДо КАК ДействителенДо, + СертификатыПереопределяемый.Подписание КАК Подписание, + СертификатыПереопределяемый.Шифрование КАК Шифрование, + СертификатыПереопределяемый.Отпечаток КАК Отпечаток, + СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата, + СертификатыПереопределяемый.Программа КАК Программа, + СертификатыПереопределяемый.Отозван КАК Отозван, + СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча, + СертификатыПереопределяемый.Организация КАК Организация, + СертификатыПереопределяемый.Пользователь КАК Пользователь, + СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия, + СертификатыПереопределяемый.Предопределенный КАК Предопределенный, + СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных +ИЗ + Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый +ГДЕ + &ДополнительноеУсловие + Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования + true + true + true + true + true + +
+ + Организация + 2 + + + true + + + true + + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..4355ead6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,14 @@ + +

Предназначен для выбора сертификата электронной подписи.

+

В списке выводится:

+
  • Представление - полное наименование сертификата; +
  • Организация - организация, которой выдан сертификат; +
  • Пользователь - пользователь, который является владельцем подписи.

Выбор сертификата

+
  • Выделите нужный сертификат, нажмите Выбрать. Также можно воспользоваться двойным щелчком мыши.

Добавление сертификата

+
  • Нажмите Добавить, выберите источник добавления: +
    • из установленных на компьютере - выберите из списка; +
    • из файла - укажите путь к файлу. В открывшемся окне заполните необходимые поля.

Просмотр данных о сертификате

+
  • +
    С помощью команды Изменить контекстного меню по правой кнопке мыши или меню Еще можно открыть данные о сертификате.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..879e8d51 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,113 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебный.УстановитьУсловноеОформлениеСпискаСертификатов(Список); + + Параметры.Отбор.Свойство("Организация", Организация); + + Если Не ЭлектроннаяПодпись.ИспользоватьШифрование() + И Не ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ФормаСоздать", "Заголовок", НСтр("ru = 'Добавить'")); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СписокКонтекстноеМенюСоздать", "Заголовок", НСтр("ru = 'Добавить'")); + КонецЕсли; + + Если Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + + ТекстЗапроса = Список.ТекстЗапроса; + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСпискаСертификатов( + ТекстЗапроса); + Иначе + ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА"); + КонецЕсли; + + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + СвойстваСписка.ТекстЗапроса = ТекстЗапроса; + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") + И Параметр.Свойство("ЭтоНовый") Тогда + + Элементы.Список.Обновить(); + Элементы.Список.ТекущаяСтрока = Источник; + КонецЕсли; + + // При изменении настроек использования. + Если ВРег(ИмяСобытия) <> ВРег("Запись_НаборКонстант") Тогда + Возврат; + КонецЕсли; + + Если ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи") + Или ВРег(Источник) = ВРег("ИспользоватьШифрование") Тогда + + ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + Если Не Копирование Тогда + + ПараметрыСоздания = Новый Структура; + ПараметрыСоздания.Вставить("ВЛичныйСписок", Истина); + ПараметрыСоздания.Вставить("Организация", Организация); + + ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПриИзмененияИспользованияПодписанияИлиШифрования() + + Если ЭлектроннаяПодписьКлиент.ИспользоватьШифрование() + Или ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ФормаСоздать", "Заголовок", НСтр("ru = 'Добавить...'")); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СписокКонтекстноеМенюСоздать", "Заголовок", НСтр("ru = 'Добавить...'")); + Иначе + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ФормаСоздать", "Заголовок", НСтр("ru = 'Добавить'")); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СписокКонтекстноеМенюСоздать", "Заголовок", НСтр("ru = 'Добавить'")); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..433e41b0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1966 @@ + + + + ДанныеСертификата + 151 + + ОписаниеДанныхСертификата + 237 + + <key>ru</key> + <value>Описание данных сертификата</value> + + true + true + + true + + + ОписаниеДанныхСертификата + + true + None + + ОписаниеДанныхСертификатаСвойство + 241 + true + true + + true + + + + ОписаниеДанныхСертификата.Свойство + + + true + + ОписаниеДанныхСертификатаСвойствоРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеДанныхСертификатаСвойствоКонтекстноеМеню + 242 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 13 + true + true + false + true + true + true + true + + + + ОписаниеДанныхСертификатаЗначение + 244 + true + true + + true + + + + ОписаниеДанныхСертификата.Значение + + + true + + ОписаниеДанныхСертификатаЗначениеРасширеннаяПодсказка + 246 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеДанныхСертификатаЗначениеКонтекстноеМеню + 245 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ОписаниеДанныхСертификатаКоманднаяПанель + 239 + true + true + + true + + Left + + + true + true + + true + + ОписаниеДанныхСертификатаСтрокаПоиска + 247 + + ОписаниеДанныхСертификатаСтрокаПоискаРасширеннаяПодсказка + 249 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеДанныхСертификатаСтрокаПоискаКонтекстноеМеню + 248 + true + true + + true + + true + + + true + + + + true + true + + true + + ОписаниеДанныхСертификатаСостояниеПросмотра + 250 + + ОписаниеДанныхСертификатаСостояниеПросмотраРасширеннаяПодсказка + 252 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеДанныхСертификатаСостояниеПросмотраКонтекстноеМеню + 251 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОписаниеДанныхСертификатаУправлениеПоиском + 253 + + ОписаниеДанныхСертификатаУправлениеПоискомРасширеннаяПодсказка + 255 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеДанныхСертификатаУправлениеПоискомКонтекстноеМеню + 254 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОписаниеДанныхСертификатаРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеДанныхСертификатаКонтекстноеМеню + 238 + true + true + + true + + + true + true + true + true + 4 + true + true + MultiRow + Row + 1 + 1 + AutoUse + true + Auto + Auto + true + true + true + true + + + + ВертикальнаяГруппа3 + 261 + + ПоказатьДанныеСертификата + 153 + true + true + + true + + true + + ПоказатьДанныеСертификатаРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПоказатьДанныеСертификата + Picture + true + true + UserCmds + Auto + + + ПоказатьЗаявлениеПоКоторомуБылПолученСертификат + 263 + true + + true + + + ПоказатьЗаявлениеПоКоторомуБылПолученСертификатРасширеннаяПодсказка + 264 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПоказатьЗаявлениеПоКоторомуБылПолученСертификат + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 3</value> + + + ВертикальнаяГруппа3РасширеннаяПодсказка + 262 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Данные сертификата</value> + + + ДанныеСертификатаРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГоризонтальнаяГруппа1 + 210 + + Поля + 215 + + АвтоПоляИзДанныхСертификата + 193 + + ГоризонтальнаяГруппа2 + 189 + + Фамилия + 174 + true + true + + true + + + + Объект.Фамилия + + + + ФамилияРасширеннаяПодсказка + 176 + true + true + + true + + Label + true + true + + Left + + + + ФамилияКонтекстноеМеню + 175 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 16 + true + true + false + true + true + true + true + + + + Имя + 177 + true + true + + true + + + + Объект.Имя + + + + ИмяРасширеннаяПодсказка + 179 + true + true + + true + + Label + true + true + + Left + + + + ИмяКонтекстноеМеню + 178 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 16 + true + true + false + true + true + true + true + + + + Отчество + 180 + true + true + + true + + + + Объект.Отчество + + + + ОтчествоРасширеннаяПодсказка + 182 + true + true + + true + + Label + true + true + + Left + + + + ОтчествоКонтекстноеМеню + 181 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 22 + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Горизонтальная группа 2</value> + + + ГоризонтальнаяГруппа2РасширеннаяПодсказка + 190 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГоризонтальнаяГруппа3 + 197 + + Фирма + 186 + true + true + + true + + + + Объект.Фирма + + + + ФирмаРасширеннаяПодсказка + 188 + true + true + + true + + Label + true + true + + Left + + + + ФирмаКонтекстноеМеню + 187 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 37 + true + true + false + true + true + true + true + + + + Должность + 183 + true + true + + true + + + + Объект.Должность + + + + ДолжностьРасширеннаяПодсказка + 185 + true + true + + true + + Label + true + true + + Left + + + + ДолжностьКонтекстноеМеню + 184 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 3</value> + + + ГоризонтальнаяГруппа3РасширеннаяПодсказка + 198 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Авто поля из данных сертификата</value> + + + АвтоПоляИзДанныхСертификатаРасширеннаяПодсказка + 194 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + true + Button + + НаименованиеРасширеннаяПодсказка + 97 + + <key>ru</key> + <value>Уникальное представление сертификата используется в полях выбора при подписании и +шифровании. Оно формируется из фамилии, имени, организации, должности и срока действия. +Например: "Иванов Иван, ООО 1С, Программист, до 03.2017". + +Когда у пользователя два сертификата от разных удостоверяющих центров (УЦ), +тогда представление нужно дополнить именем УЦ. +Например: "Иванов Иван, ООО 1С, Программист, до 03.2017, УЦ 1С". + +Когда сертификат используется для специальной цели разными пользователями, +тогда представление нужно заменить на описание этой цели, например: +"Для подписания счетов-фактур, до 05.2019", +"Для подписания налоговой отчетности, до 12.2015".</value> + + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 37 + true + true + false + true + true + true + true + + + + Организация + 168 + true + true + + true + + + + Объект.Организация + + + + ОрганизацияРасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + + ОрганизацияКонтекстноеМеню + 169 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 37 + true + true + false + true + true + true + true + DontUse + + + + ГоризонтальнаяГруппа + 259 + + Пользователь + 171 + true + true + + true + + + + Объект.Пользователь + + + + ПользовательРасширеннаяПодсказка + 173 + true + true + + true + + Label + true + true + + Left + + + + ПользовательКонтекстноеМеню + 172 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 37 + true + true + false + true + true + true + true + + + + Добавил + 256 + true + true + + true + + + + Объект.Добавил + + + + ДобавилРасширеннаяПодсказка + 258 + true + true + + true + + Label + true + true + + Left + + + + ДобавилКонтекстноеМеню + 257 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Горизонтальная группа</value> + + + ГоризонтальнаяГруппаРасширеннаяПодсказка + 260 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Поля</value> + + + ПоляРасширеннаяПодсказка + 216 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Горизонтальная группа 1</value> + + false + + ГоризонтальнаяГруппа1РасширеннаяПодсказка + 211 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ДляЭлектроннойПодписиИРасшифровки + 221 + + Программа + 129 + true + true + + true + + + + Объект.Программа + + + + OnChange + ПрограммаПриИзменении + + + ПрограммаРасширеннаяПодсказка + 131 + true + true + + true + + Label + true + true + + Left + + + + ПрограммаКонтекстноеМеню + 130 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + УсиленнаяЗащитаЗакрытогоКлюча + 158 + true + true + + true + + + + Объект.УсиленнаяЗащитаЗакрытогоКлюча + + + Right + Button + + УсиленнаяЗащитаЗакрытогоКлючаРасширеннаяПодсказка + 160 + true + true + + true + + Label + true + true + + Left + + + + УсиленнаяЗащитаЗакрытогоКлючаКонтекстноеМеню + 159 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Настройки закрытого ключа (для создания электронных подписей или расшифровки данных)</value> + + 60 + + ДляЭлектроннойПодписиИРасшифровкиРасширеннаяПодсказка + 222 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаСтандартныеКоманды + 65 + + ФормаСкопировать + 267 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 268 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Скопировать + Auto + true + true + UserCmds + Auto + + + ФормаУдалить + 231 + true + + true + + + ФормаУдалитьРасширеннаяПодсказка + 232 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + + ФормаПроверитьСертификат + 75 + true + true + + true + + + ФормаПроверитьСертификатРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверитьСертификат + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьДанныеСертификатаВФайл + 235 + true + true + + true + + + ФормаСохранитьДанныеСертификатаВФайлРасширеннаяПодсказка + 236 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьДанныеСертификатаВФайл + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма стандартные команды</value> + + + ФормаСтандартныеКомандыРасширеннаяПодсказка + 90 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСертификатОтозван + 63 + true + true + + true + + + ФормаСертификатОтозванРасширеннаяПодсказка + 94 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СертификатОтозван + PictureAndText + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаПоказатьАвтозаполняемыеРеквизиты + 219 + true + true + + true + + + ФормаПоказатьАвтозаполняемыеРеквизитыРасширеннаяПодсказка + 220 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьАвтозаполняемыеРеквизиты + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаПоказатьЗаявлениеПоКоторомуБылПолученСертификат + 265 + true + + true + + + ФормаПоказатьЗаявлениеПоКоторомуБылПолученСертификатРасширеннаяПодсказка + 266 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьЗаявлениеПоКоторомуБылПолученСертификат + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаИзменитьФорму + 233 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 234 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 74 + true + true + + true + + + ФормаСправкаExtendedTooltip + 95 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + Copy + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + +
true
+ true +
+ + АдресСертификата + 3 + + + true + + + true + + + + ДляШифрования + 4 + + + true + + + true + + + + ПараметрыРеквизитов + 5 + + + true + + + true + + + + ОписаниеДанныхСертификата + + <key>ru</key> + <value>Описание данных сертификата</value> + + 6 + + ValueTable + + + true + + + true + + + Свойство + + <key>ru</key> + <value>Свойство</value> + + 1 + + String + + + + true + + + true + + + + Значение + + <key>ru</key> + <value>Значение</value> + + 2 + + String + + + + true + + + true + + + + + ЕстьОрганизации + 7 + + Boolean + + + true + + + true + + + + ОткрытьЗаявление + 8 + + Boolean + + + true + + + true + + + + ИмяФормыЗаявления + 9 + + String + + + + true + + + true + + + + ВозможноОткрытьЗаявление + 10 + + Boolean + + + true + + + true + + + + ПрограммаОблачногоСервиса + 2 + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + СертификатОтозван + + <key>ru</key> + <value>Сертификат отозван</value> + + 3 + + true + + + + СертификатОтозван + + + true + DontUse + + + ПроверитьСертификат + + <key>ru</key> + <value>Проверить...</value> + + 6 + + true + + + + ПроверитьСертификат + + + TextPicture + DontUse + + + ПоказатьДанныеСертификата + + <key>ru</key> + <value>Показать данные сертификата</value> + + 7 + + ru + Показать данные сертификата, которые сохраняются в файле + + + true + + + CommonPicture.СертификатКлюча + + + + ПоказатьДанныеСертификата + + + DontUse + + + ПоказатьАвтозаполняемыеРеквизиты + + <key>ru</key> + <value>Показать автозаполняемые реквизиты</value> + + 1 + + true + + + + ПоказатьАвтозаполняемыеРеквизиты + + + DontUse + + + СохранитьДанныеСертификатаВФайл + + <key>ru</key> + <value>Сохранить в файл...</value> + + 2 + + true + + + + СохранитьДанныеСертификатаВФайл + + + DontUse + + + ПоказатьЗаявлениеПоКоторомуБылПолученСертификат + + <key>ru</key> + <value>Показать заявление, по которому был получен сертификат</value> + + 4 + + ru + Показать заявление, по которому был получен сертификат + + + true + + + CommonPicture.ЗаявлениеНаВыпускСертификатаКлюча + + + + ПоказатьЗаявлениеПоКоторомуБылПолученСертификат + + + Picture + DontUse + + + Скопировать + + <key>ru</key> + <value>Скопировать</value> + + 5 + + ru + Скопировать + + + true + + F9 + + StdPicture.CloneListItem + + + + Скопировать + + + Picture + Auto + + + + + InformationRegister.ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux.Command.ПутиКПрограммеНаСерверахLinux + FormNavigationPanelGoTo + 0 + + + + + 0:63386b75-0cd0-4ae7-87c6-c5ea20c96cd9 + FormCommandBarImportant + 0 + + + + + + + AfterWrite + ПослеЗаписи + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..eac69288 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,30 @@ + +

Сведения о сертификате электронной подписи.

+

В верхней части программа автоматически выводит данные о сертификате:

+
  • Кому выдан; +
  • Кем выдан; +
  • Действителен до; +
  • Назначение.

Сведения о владельце сертификата:

+
  • Данные владельца подписи (заполняются автоматически) в поле Кому выдан: +
    • Фамилия, Имя, Отчество; +
    • Фирма; +
    • Должность;
  • Представление - полное наименование сертификата (заполняется автоматически); +
    • Организация - выберите из списка организацию, которой выдан сертификат; +
    • Пользователь - выберите из списка пользователя - владельца сертификата; +
    • Добавил - выберите пользователя, который добавил сертификат в список.

Настройки закрытого ключа

+
При необходимости можно хранить пароль не в программе 1С:Предприятие, а в программе электронной подписи.
+
    • Программа - выберите программу для электронной подписи и шифрования, в которой будет храниться пароль; +
    • Ввод и сохранение пароля в программе - включите флажок, если необходимо хранить пароль в программе электронной подписи.

Проверка сертификата

+
  • Нажмите Проверить, для того чтобы произвести проверку сертификата.

Просмотр данных сертификата

+

Просмотр заявления

+
  • +
    Нажмите , для того чтобы просмотреть заявление, по которому был получен сертификат.

Выгрузка в файл

+
  • +
    Нажмите Сохранить в файл, укажите путь к папке для сохранения в файл.

Автозаполняемые реквизиты

+
  • +
    Установите соответствующий флажок меню Еще, для того чтобы Показать автозаполняемые реквизиты. В этом случае показываются данные владельца подписи, которые заполняются автоматически.

Отозванные сертификаты

+
  • +
    Включите флажок Еще - Сертификат отозван. Действие необратимо.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..328424ed --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,368 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебный.НастроитьПояснениеВводаПароля(ЭтотОбъект, + Элементы.УсиленнаяЗащитаЗакрытогоКлюча.Имя); + + Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + Возврат; + КонецЕсли; + + Если Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ПриСозданииНаСервере( + Объект, ОткрытьЗаявление); + ИмяФормыЗаявления = "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Форма.Форма"; + ВозможноОткрытьЗаявление = Истина; + КонецЕсли; + + ПрограммаОблачногоСервиса = ЭлектроннаяПодписьСлужебный.ПрограммаОблачногоСервиса(); + ОбновитьВидимостьЭлементаУсиленнаяЗащитаЗакрытогоКлюча(ЭтотОбъект); + + ЕстьОрганизации = Не Метаданные.ОпределяемыеТипы.Организация.Тип.СодержитТип(Тип("Строка")); + ПриСозданииНаСервереПриЧтенииНаСервере(); + + Если Элементы.АвтоПоляИзДанныхСертификата.Видимость Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "НестандартныйСертификат"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + Отказ = Истина; + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Истина); + ПодключитьОбработчикОжидания("ОбработчикОжиданияДобавитьСертификат", 0.1, Истина); + Возврат; + + ИначеЕсли ОткрытьЗаявление Тогда + Отказ = Истина; + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Истина); + ПодключитьОбработчикОжидания("ОбработчикОжиданияОткрытьЗаявление", 0.1, Истина); + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если АдресСертификата <> Неопределено Тогда + ПриСозданииНаСервереПриЧтенииНаСервере(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + ПараметрыЗаписи.Вставить("ЭтоНовый", Не ЗначениеЗаполнено(Объект.Ссылка)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + ДополнительныеПараметры = Новый Структура; + Если ПараметрыЗаписи.ЭтоНовый Тогда + ДополнительныеПараметры.Вставить("ЭтоНовый"); + КонецЕсли; + + Оповестить("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования", ДополнительныеПараметры, Объект.Ссылка); + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + // Проверка уникальности наименования. + Если Не Элементы.Наименование.ТолькоПросмотр Тогда + ЭлектроннаяПодписьСлужебный.ПроверитьУникальностьПредставления( + Объект.Наименование, Объект.Ссылка, "Объект.Наименование", Отказ); + КонецЕсли; + + Если ТипЗнч(ПараметрыРеквизитов) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + Для каждого КлючИЗначение Из ПараметрыРеквизитов Цикл + ИмяРеквизита = КлючИЗначение.Ключ; + Свойства = КлючИЗначение.Значение; + + Если Не Свойства.ПроверкаЗаполнения + Или ЗначениеЗаполнено(Объект[ИмяРеквизита]) Тогда + + Продолжить; + КонецЕсли; + + Элемент = Элементы[ИмяРеквизита]; // ПолеФормы + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле %1 не заполнено.'"), + Элемент.Заголовок); + + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, ИмяРеквизита,, Отказ); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПрограммаПриИзменении(Элемент) + + ОбновитьВидимостьЭлементаУсиленнаяЗащитаЗакрытогоКлюча(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПоказатьАвтозаполняемыеРеквизиты(Команда) + + Показать = Не Элементы.ФормаПоказатьАвтозаполняемыеРеквизиты.Пометка; + + Элементы.ФормаПоказатьАвтозаполняемыеРеквизиты.Пометка = Показать; + Элементы.АвтоПоляИзДанныхСертификата.Видимость = Показать; + + Если ЕстьОрганизации Тогда + Элементы.Организация.Видимость = Показать; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьДанныеСертификата(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОткрытиеИзФормыЭлементаСертификата"); + ПараметрыФормы.Вставить("АдресСертификата", АдресСертификата); + + ОткрытьФорму("ОбщаяФорма.Сертификат", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьЗаявлениеПоКоторомуБылПолученСертификат(Команда) + + Если ВозможноОткрытьЗаявление Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СертификатСсылка", Объект.Ссылка); + ОткрытьФорму(ИмяФормыЗаявления, ПараметрыФормы); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьСертификат(Команда) + + Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Сертификат еще не записан.'")); + Возврат; + КонецЕсли; + + Если Модифицированность И Не Записать() Тогда + Возврат; + КонецЕсли; + + ЭлектроннаяПодписьКлиент.ПроверитьСертификатСправочника(Объект.Ссылка, + Новый Структура("БезПодтверждения", Истина)); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьДанныеСертификатаВФайл(Команда) + + ЭлектроннаяПодписьСлужебныйКлиент.СохранитьСертификат(Неопределено, АдресСертификата); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОтозван(Команда) + + Объект.Отозван = Не Объект.Отозван; + Элементы.ФормаСертификатОтозван.Пометка = Объект.Отозван; + + Если Объект.Отозван Тогда + ПоказатьПредупреждение(, НСтр("ru = 'После записи отменить отзыв будет невозможно.'")); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Скопировать(Команда) + + ПараметрыСоздания = Новый Структура; + ПараметрыСоздания.Вставить("СоздатьЗаявление", Истина); + ПараметрыСоздания.Вставить("СертификатОснование", Объект.Ссылка); + + ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ПриСозданииНаСервереПриЧтенииНаСервере() + + Если Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ПриСозданииНаСервереПриЧтенииНаСервере( + Объект, Элементы); + КонецЕсли; + + ДвоичныеДанныеСертификата = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Объект.Ссылка, "ДанныеСертификата").Получить(); + + Если ТипЗнч(ДвоичныеДанныеСертификата) = Тип("ДвоичныеДанные") Тогда + Сертификат = Новый СертификатКриптографии(ДвоичныеДанныеСертификата); + Если ЗначениеЗаполнено(АдресСертификата) Тогда + ПоместитьВоВременноеХранилище(ДвоичныеДанныеСертификата, АдресСертификата); + Иначе + АдресСертификата = ПоместитьВоВременноеХранилище(ДвоичныеДанныеСертификата, УникальныйИдентификатор); + КонецЕсли; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата(ОписаниеДанныхСертификата, + ЭлектроннаяПодпись.СвойстваСертификата(Сертификат)); + Иначе + АдресСертификата = ""; + Элементы.ПоказатьДанныеСертификата.Доступность = Ложь; + Элементы.ФормаПроверитьСертификат.Доступность = ЗначениеЗаполнено(ДвоичныеДанныеСертификата); + Элементы.ФормаСохранитьДанныеСертификатаВФайл.Доступность = Ложь; + Элементы.АвтоПоляИзДанныхСертификата.Видимость = Истина; + Элементы.ФормаПоказатьАвтозаполняемыеРеквизиты.Пометка = Истина; + Если ЗначениеЗаполнено(ДвоичныеДанныеСертификата) Тогда + // Поддержка отображения основных свойств нестандартных сертификатов (система iBank2). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата(ОписаниеДанныхСертификата, Объект); + КонецЕсли; + КонецЕсли; + + Элементы.ФормаСертификатОтозван.Пометка = Объект.Отозван; + Если Объект.Отозван Тогда + Элементы.ФормаСертификатОтозван.Доступность = Ложь; + КонецЕсли; + + Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда + Если Объект.Добавил <> Пользователи.ТекущийПользователь() + И Объект.Пользователь <> Пользователи.ТекущийПользователь() Тогда + // Обычный пользователь может изменять только свои сертификаты. + ТолькоПросмотр = Истина; + Иначе + // Обычный пользователь не может изменить права доступа. + Элементы.Добавил.ТолькоПросмотр = Истина; + Если Объект.Добавил <> Пользователи.ТекущийПользователь() Тогда + // Обычный пользователь не может изменять реквизит Пользователь, + // если не он добавил сертификат. + Элементы.Пользователь.ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ЕстьОрганизации = Не Метаданные.ОпределяемыеТипы.Организация.Тип.СодержитТип(Тип("Строка")); + Элементы.Организация.Видимость = ЕстьОрганизации; + + Если Не ЗначениеЗаполнено(АдресСертификата) Тогда + Возврат; // Сертификат = Неопределено. + КонецЕсли; + + СвойстваСубъекта = ЭлектроннаяПодпись.СвойстваСубъектаСертификата(Сертификат); + Если СвойстваСубъекта.Фамилия <> Неопределено Тогда + Элементы.Фамилия.ТолькоПросмотр = Истина; + КонецЕсли; + Если СвойстваСубъекта.Имя <> Неопределено Тогда + Элементы.Имя.ТолькоПросмотр = Истина; + КонецЕсли; + Если СвойстваСубъекта.Свойство("Отчество") И СвойстваСубъекта.Отчество <> Неопределено Тогда + Элементы.Отчество.ТолькоПросмотр = Истина; + КонецЕсли; + Если СвойстваСубъекта.Организация <> Неопределено Тогда + Элементы.Фирма.ТолькоПросмотр = Истина; + КонецЕсли; + Если СвойстваСубъекта.Свойство("Должность") И СвойстваСубъекта.Должность <> Неопределено Тогда + Элементы.Должность.ТолькоПросмотр = Истина; + КонецЕсли; + + ПараметрыРеквизитов = Неопределено; + ЭлектроннаяПодписьСлужебный.ПередНачаломРедактированияСертификатаКлюча( + Объект.Ссылка, Сертификат, ПараметрыРеквизитов); + + Для каждого КлючИЗначение Из ПараметрыРеквизитов Цикл + ИмяРеквизита = КлючИЗначение.Ключ; + Свойства = КлючИЗначение.Значение; + + Если Не Свойства.Видимость Тогда + Элементы[ИмяРеквизита].Видимость = Ложь; + + ИначеЕсли Свойства.ТолькоПросмотр Тогда + Элементы[ИмяРеквизита].ТолькоПросмотр = Истина + КонецЕсли; + Если Свойства.ПроверкаЗаполнения Тогда + Элементы[ИмяРеквизита].АвтоОтметкаНезаполненного = Истина; + КонецЕсли; + КонецЦикла; + + Элементы.АвтоПоляИзДанныхСертификата.Видимость = + Не Элементы.Фамилия.ТолькоПросмотр И Не ЗначениеЗаполнено(Объект.Фамилия) + Или Не Элементы.Имя.ТолькоПросмотр И Не ЗначениеЗаполнено(Объект.Имя) + Или Не Элементы.Отчество.ТолькоПросмотр И Не ЗначениеЗаполнено(Объект.Отчество); + + Элементы.ФормаПоказатьАвтозаполняемыеРеквизиты.Пометка = + Элементы.АвтоПоляИзДанныхСертификата.Видимость; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияДобавитьСертификат() + + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Ложь); + + ПараметрыСоздания = Новый Структура; + ПараметрыСоздания.Вставить("ВЛичныйСписок", Истина); + ПараметрыСоздания.Вставить("Организация", Объект.Организация); + ПараметрыСоздания.Вставить("СкрытьЗаявление", Ложь); + + ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияОткрытьЗаявление() + + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Ложь); + + Если ВозможноОткрытьЗаявление Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СертификатСсылка", Объект.Ссылка); + ОткрытьФорму(ИмяФормыЗаявления, ПараметрыФормы); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьВидимостьЭлементаУсиленнаяЗащитаЗакрытогоКлюча(Форма) + + Форма.Элементы.УсиленнаяЗащитаЗакрытогоКлюча.Видимость = + Форма.Объект.Программа <> Форма.ПрограммаОблачногоСервиса; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" new file mode 100644 index 00000000..eb06c770 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Form.form" @@ -0,0 +1,1709 @@ + + + + <key>ru</key> + <value>Шифрование данных</value> + + + ГруппаПредставлениеДанных + 455 + + ПредставлениеДанных + 18 + + <key>ru</key> + <value>Данные</value> + + true + true + + true + + + + ПредставлениеДанных + + + + ПредставлениеДанныхРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеДанныхКонтекстноеМеню + 19 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ПредставлениеДанныхНажатие + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Представление данных</value> + + + ГруппаПредставлениеДанныхРасширеннаяПодсказка + 456 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ВариантыШифрования + 494 + + ПодборИзСправочника + 496 + + ГруппаЛичныйСертификат + 450 + + Сертификат + 452 + + <key>ru</key> + <value>Личный сертификат</value> + + true + true + + true + + + + Сертификат + + + + ru + Личный сертификат позволяет пользователю расшифровать данные, которые он шифрует. + + Button + + OnChange + СертификатПриИзменении + + + СертификатРасширеннаяПодсказка + 454 + true + true + + true + + Label + true + true + + Left + + + + СертификатКонтекстноеМеню + 453 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + AutoComplete + СертификатАвтоПодбор + + + StartChoice + СертификатНачалоВыбора + + + Opening + СертификатОткрытие + + + TextEditEnd + СертификатОкончаниеВводаТекста + + + ChoiceProcessing + СертификатОбработкаВыбора + + true + true + true + false + true + ShowInInputField + true + false + false + true + true + true + DontUse + + + true + true + + true + + + <key>ru</key> + <value>Личный сертификат</value> + + + ГруппаЛичныйСертификатРасширеннаяПодсказка + 451 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаСертификатыШифрования + 489 + + СертификатыШифрования + 457 + + <key>ru</key> + <value>Сертификаты шифрования</value> + + true + true + + true + + + СертификатыШифрования + + true + None + Change + Copy + CopyToClipboard + + СертификатыШифрованияСертификат + 491 + true + true + + true + + + + СертификатыШифрования.Сертификат + + + + СертификатыШифрованияСертификатРасширеннаяПодсказка + 493 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияСертификатКонтекстноеМеню + 492 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + false + true + ShowInInputField + true + true + true + + + Top + + СертификатыШифрованияКоманднаяПанель + 459 + + СертификатыШифрованияПодобрать + 481 + true + true + + true + + + СертификатыШифрованияПодобратьРасширеннаяПодсказка + 482 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подобрать + Auto + true + true + UserCmds + Auto + + + СертификатыШифрованияДобавить + 483 + true + true + + true + + + СертификатыШифрованияДобавитьРасширеннаяПодсказка + 484 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СертификатыШифрования.StandardCommand.Add + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СертификатыШифрованияУдалить + 485 + true + true + + true + + + СертификатыШифрованияУдалитьРасширеннаяПодсказка + 486 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СертификатыШифрования.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + СертификатыКоманднаяПанель + 487 + true + true + + true + + + <key>ru</key> + <value>Сертификаты командная панель</value> + + + СертификатыКоманднаяПанельРасширеннаяПодсказка + 488 + true + true + + true + + Label + true + true + + Left + + + + Item.СертификатыШифрования + + + true + true + + true + + Left + + + ChoiceProcessing + СертификатыШифрованияОбработкаВыбора + + + true + true + + true + + СертификатыШифрованияСтрокаПоиска + 461 + + СертификатыШифрованияСтрокаПоискаРасширеннаяПодсказка + 465 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияСтрокаПоискаКонтекстноеМеню + 464 + true + true + + true + + true + + + true + + + + true + true + + true + + СертификатыШифрованияСостояниеПросмотра + 466 + + СертификатыШифрованияСостояниеПросмотраРасширеннаяПодсказка + 470 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияСостояниеПросмотраКонтекстноеМеню + 469 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СертификатыШифрованияУправлениеПоиском + 471 + + СертификатыШифрованияУправлениеПоискомРасширеннаяПодсказка + 475 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияУправлениеПоискомКонтекстноеМеню + 474 + true + true + + true + + true + + SearchControlAddition + + true + + + + СертификатыШифрованияРасширеннаяПодсказка + 460 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияКонтекстноеМеню + 458 + + СертификатыШифрованияКонтекстноеМенюОткрытьСертификат + 479 + true + true + + true + + + СертификатыШифрованияКонтекстноеМенюОткрытьСертификатРасширеннаяПодсказка + 480 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьСертификат + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + 3 + true + MultiRow + Row + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты тех, кому разрешено расшифровывать данные, кроме Вас</value> + + + ГруппаСертификатыШифрованияРасширеннаяПодсказка + 490 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Подбор из справочника</value> + + + ПодборИзСправочникаРасширеннаяПодсказка + 497 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + УказанныйНаборСертификатов + 498 + + ГруппаУказанныйНаборСертификатов + 522 + + НаборСертификатов + 500 + + <key>ru</key> + <value>Набор сертификатов</value> + + true + true + + true + + + НаборСертификатов + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + НаборСертификатовПредставление + 519 + true + true + + true + + + + НаборСертификатов.Представление + + + + НаборСертификатовПредставлениеРасширеннаяПодсказка + 521 + true + true + + true + + Label + true + true + + Left + + + + НаборСертификатовПредставлениеКонтекстноеМеню + 520 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + None + + НаборСертификатовКоманднаяПанель + 502 + true + true + + true + + Left + true + + + true + true + + true + + НаборСертификатовСтрокаПоиска + 504 + + НаборСертификатовСтрокаПоискаРасширеннаяПодсказка + 508 + true + true + + true + + Label + true + true + + Left + + + + НаборСертификатовСтрокаПоискаКонтекстноеМеню + 507 + true + true + + true + + true + + + true + + + + true + true + + true + + НаборСертификатовСостояниеПросмотра + 509 + + НаборСертификатовСостояниеПросмотраРасширеннаяПодсказка + 513 + true + true + + true + + Label + true + true + + Left + + + + НаборСертификатовСостояниеПросмотраКонтекстноеМеню + 512 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НаборСертификатовУправлениеПоиском + 514 + + НаборСертификатовУправлениеПоискомРасширеннаяПодсказка + 518 + true + true + + true + + Label + true + true + + Left + + + + НаборСертификатовУправлениеПоискомКонтекстноеМеню + 517 + true + true + + true + + true + + SearchControlAddition + + true + + + + НаборСертификатовРасширеннаяПодсказка + 503 + true + true + + true + + Label + true + true + + Left + + + + НаборСертификатовКонтекстноеМеню + 501 + + НаборСертификатовКонтекстноеМенюОткрытьСертификат + 524 + true + true + + true + + + НаборСертификатовКонтекстноеМенюОткрытьСертификатРасширеннаяПодсказка + 525 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьСертификат + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + 4 + true + MultiRow + Row + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты тех, кому разрешено расшифровывать данные</value> + + + ГруппаУказанныйНаборСертификатовРасширеннаяПодсказка + 523 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Указанный набор сертификатов</value> + + + УказанныйНаборСертификатовРасширеннаяПодсказка + 499 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Варианты шифрования</value> + + + ВариантыШифрованияРасширеннаяПодсказка + 495 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаЗашифровать + 307 + true + true + + true + + + ФормаЗашифроватьРасширеннаяПодсказка + 308 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Зашифровать + Auto + true + true + true + UserCmds + Auto + + + ФормаЗакрыть + 303 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 304 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + Auto + + + ФормаСправка + 448 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 449 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + 55 + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ПредставлениеДанных + + <key>ru</key> + <value>Представление данных</value> + + 2 + + String + + + + true + + + true + + + + Сертификат + + <key>ru</key> + <value>Сертификат</value> + + 12 + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + + ShowError + + + СертификатОтпечаток + 5 + + String + + + + true + + + true + + + + СертификатСписокВыбора + 7 + + ValueList + + + true + + + true + + + + + + + ОтборСертификатов + 1 + + ValueList + + + true + + + true + + + + + + + СертификатПрограмма + 9 + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + ОповеститьОбОкончанииСрокаДействия + 11 + + Boolean + + + true + + + true + + + + СертификатДействителенДо + 15 + + Date + + + + true + + + true + + + + СертификатНаСервереОписаниеОшибки + 6 + + + true + + + true + + + + МенеджерКриптографииНаСервереОписаниеОшибки + 16 + + + true + + + true + + + + ОтборОтпечатков + 17 + + + true + + + true + + + + СертификатыШифрования + + <key>ru</key> + <value>Сертификаты шифрования</value> + + 4 + + ValueTable + + + true + + + true + + + Сертификат + + <key>ru</key> + <value>Сертификат</value> + + 1 + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + true + + + true + + + + + СертификатУсиленнаяЗащитаЗакрытогоКлюча + 8 + + Boolean + + + true + + + true + + + + БезПодтверждения + 10 + + Boolean + + + true + + + true + + + + ВыполнятьНаСервере + 13 + + + true + + + true + + + + СертификатАдрес + 3 + + String + + + + true + + + true + + + + НаборСертификатов + + <key>ru</key> + <value>Набор сертификатов</value> + + 14 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Представление</value> + + 1 + + String + + + + true + + + true + + + + Отпечаток + 2 + + String + + + + true + + + true + + + + Ссылка + 4 + + String + + + + true + + + true + + + + АдресДанных + 3 + + String + + + + true + + + true + + + + + АдресСвойствСертификатов + 18 + + String + + + + true + + + true + + + + УказанНеизменяемыйНаборСертификатов + 20 + + Boolean + + + true + + + true + + + + ПерваяПрограммаНаСервере + 19 + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + ВыполнятьВМоделиСервиса + 21 + + Boolean + + + true + + + true + + + + ИмяПоляАктивизироватьПоУмолчанию + 22 + + String + + + + true + + + true + + + + Зашифровать + + <key>ru</key> + <value>Зашифровать</value> + + 5 + + true + + + + Зашифровать + + + DontUse + + + ОткрытьСертификат + + <key>ru</key> + <value>Открыть сертификат</value> + + 1 + + ru + Открыть сертификат + + + true + + + + ОткрытьСертификат + + + DontUse + + + Подобрать + + <key>ru</key> + <value>Подобрать</value> + + 2 + + true + + + + Подобрать + + + DontUse + + + Операция + + String + + + + + ЗаголовокДанных + + String + + + + + ПредставлениеДанных + + String + + + + + ОткрытиеСпискаДанных + + Boolean + + + + ОтпечаткиСертификатовНаКлиенте + + + + БезПодтверждения + + Boolean + + + + ВыполнятьНаСервере + + + + ИзменятьНабор + + Boolean + + + + НаборСертификатов + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" new file mode 100644 index 00000000..62d14556 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" @@ -0,0 +1,9 @@ + +

Предназначена для выбора сертификатов при шифровании данных.

+

Шифрование данных

+
  • С помощью ссылки в верхней части окна можно просмотреть объект, который будет подписан. Ссылка принимает значение наименования объекта. +
  • Личный сертификат - указывается обязательно для возможности последующей расшифровки; +
    • выберите личный сертификат из списка;
  • Сертификаты тех, кому разрешено расшифровывать данные, кроме Вас - список других сертификатов,
    которые могут быть использованы для расшифровки. +
    • С помощью кнопок Подобрать (выберите из списка один или несколько сертификатов) или Удалить можно сформировать список для выбора.
  • Могут использоваться несколько сертификатов, например, если необходимо зашифровать данные для нескольких пользователей. +
  • Для подтверждения выбора нажмите Зашифровать.

См. также:

+ \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" new file mode 100644 index 00000000..4bbd1684 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" @@ -0,0 +1,1106 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ВнутренниеДанные, ОписаниеДанных, ФормаОбъекта, ОбработкаПослеПредупреждения, ТекущийСписокПредставлений; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Параметры.НаборСертификатов) Тогда + УказанНеизменяемыйНаборСертификатов = Истина; + ЗаполнитьСертификатыШифрованияИзНабора(Параметры.НаборСертификатов); + Если НаборСертификатов.Количество() = 0 И Параметры.ИзменятьНабор Тогда + // Если все сертификаты набора ссылочные и изменение набора разрешено, + // то взаимодействие с пользователем обычное, как будто он сам их добавил. + УказанНеизменяемыйНаборСертификатов = Ложь; + КонецЕсли; + КонецЕсли; + + ЭлектроннаяПодписьСлужебный.НастроитьФормуПодписанияШифрованияРасшифровки(ЭтотОбъект, Истина); + + Если УказанНеизменяемыйНаборСертификатов Тогда + Элементы.Сертификат.Видимость = Ложь; + Элементы.ГруппаСертификатыШифрования.Заголовок = Элементы.ГруппаУказанныйНаборСертификатов.Заголовок; + Элементы.СертификатыШифрования.ТолькоПросмотр = Истина; + Элементы.СертификатыШифрованияПодобрать.Доступность = Ложь; + ЗаполнитьПрограммуШифрованияНаСервере(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ВнутренниеДанные = Неопределено Тогда + Отказ = Истина; + КонецЕсли; + + Если ЗначениеЗаполнено(ИмяПоляАктивизироватьПоУмолчанию) Тогда + ТекущийЭлемент = Элементы[ИмяПоляАктивизироватьПоУмолчанию]; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + ОчиститьПеременныеФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования") + Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux") + Или ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + + Если УказанНеизменяемыйНаборСертификатов Тогда + ПодключитьОбработчикОжидания("ПерезаполнитьПрограммуШифрования", 0.1, Истина); + Возврат; + КонецЕсли; + КонецЕсли; + + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + ПодключитьОбработчикОжидания("ПриИзмененииСпискаСертификатов", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПредставлениеДанныхНажатие(Элемент, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.ПредставлениеДанныхНажатие(ЭтотОбъект, + Элемент, СтандартнаяОбработка, ТекущийСписокПредставлений); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("СертификатПриИзмененииЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры СертификатПриИзменении. +&НаКлиенте +Процедура СертификатПриИзмененииЗавершение(ОтпечаткиСертификатовНаКлиенте, Контекст) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ЭлектроннаяПодписьКлиент.СертификатНачалоВыбораСПодтверждением(Элемент, + Сертификат, СтандартнаяОбработка, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОткрытие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Если ЗначениеЗаполнено(Сертификат) Тогда + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(Сертификат); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Сертификат = ВыбранноеЗначение; + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("СертификатОбработкаВыбораЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры СертификатОбработкаВыбора. +&НаКлиенте +Процедура СертификатОбработкаВыбораЗавершение(ОтпечаткиСертификатовНаКлиенте, Контекст) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.СертификатПодборИзСпискаВыбора(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.СертификатПодборИзСпискаВыбора(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСертификатыШифрования + +&НаКлиенте +Процедура СертификатыШифрованияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Массив") Тогда + Возврат; + КонецЕсли; + + Для каждого Значение Из ВыбранноеЗначение Цикл + Отбор = Новый Структура("Сертификат", Значение); + Строки = СертификатыШифрования.НайтиСтроки(Отбор); + Если Строки.Количество() > 0 Тогда + Продолжить; + КонецЕсли; + СертификатыШифрования.Добавить().Сертификат = Значение; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подобрать(Команда) + + ОткрытьФорму("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма.ПодборСертификатовДляШифрования", + , Элементы.СертификатыШифрования); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьСертификат(Команда) + + Если Элементы.ВариантыШифрования.ТекущаяСтраница = Элементы.ПодборИзСправочника Тогда + ТекущиеДанные = Элементы.СертификатыШифрования.ТекущиеДанные; + Иначе + ТекущиеДанные = Элементы.НаборСертификатов.ТекущиеДанные; + КонецЕсли; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Элементы.ВариантыШифрования.ТекущаяСтраница = Элементы.ПодборИзСправочника Тогда + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.Сертификат); + Иначе + ЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.АдресДанных); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Зашифровать(Команда) + + Если Не Элементы.ФормаЗашифровать.Доступность Тогда + Возврат; + КонецЕсли; + + Если Не УказанНеизменяемыйНаборСертификатов + И Не ПроверитьЗаполнение() Тогда + + Возврат; + КонецЕсли; + + Элементы.ФормаЗашифровать.Доступность = Ложь; + + ЗашифроватьДанные(Новый ОписаниеОповещения("ЗашифроватьЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры Зашифровать. +&НаКлиенте +Процедура ЗашифроватьЗавершение(Результат, Контекст) Экспорт + + Элементы.ФормаЗашифровать.Доступность = Истина; + + Если Результат = Истина Тогда + Закрыть(Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьСертификатыШифрованияИзНабора(ОписаниеНабораСертификатов) + + Если ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ОписаниеНабораСертификатов)) Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", ОписаниеНабораСертификатов); + Запрос.Текст = + "ВЫБРАТЬ + | СертификатыШифрования.Сертификат КАК Сертификат + |ИЗ + | РегистрСведений.СертификатыШифрования КАК СертификатыШифрования + |ГДЕ + | СертификатыШифрования.ЗашифрованныйОбъект = &Ссылка"; + МассивСертификатов = Новый Массив; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + МассивСертификатов.Добавить(Выборка.Сертификат.Получить()); + КонецЦикла; + Иначе + Если ТипЗнч(ОписаниеНабораСертификатов) = Тип("Строка") Тогда + МассивСертификатов = ПолучитьИзВременногоХранилища(ОписаниеНабораСертификатов); + Иначе + МассивСертификатов = ОписаниеНабораСертификатов; + КонецЕсли; + ДобавленныеСертификаты = Новый Соответствие; + Для Каждого ТекущийСертификат Из МассивСертификатов Цикл + Если ТипЗнч(ТекущийСертификат) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + Если ДобавленныеСертификаты.Получить(ТекущийСертификат) = Неопределено Тогда + ДобавленныеСертификаты.Вставить(ТекущийСертификат, Истина); + СертификатыШифрования.Добавить().Сертификат = ТекущийСертификат; + КонецЕсли; + Иначе + СертификатыШифрования.Очистить(); + Прервать; + КонецЕсли; + КонецЦикла; + Если СертификатыШифрования.Количество() > 0 + Или МассивСертификатов.Количество() = 0 Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + ТаблицаСертификатов = Новый ТаблицаЗначений; + ТаблицаСертификатов.Колонки.Добавить("Ссылка"); + ТаблицаСертификатов.Колонки.Добавить("Отпечаток"); + ТаблицаСертификатов.Колонки.Добавить("Представление"); + ТаблицаСертификатов.Колонки.Добавить("КомуВыдан"); + ТаблицаСертификатов.Колонки.Добавить("Данные"); + + Ссылки = Новый Массив; + Отпечатки = Новый Массив; + Для Каждого ОписаниеСертификата Из МассивСертификатов Цикл + НоваяСтрока = ТаблицаСертификатов.Добавить(); + Если ТипЗнч(ОписаниеСертификата) = Тип("ДвоичныеДанные") Тогда + СертификатКриптографии = Новый СертификатКриптографии(ОписаниеСертификата); + СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии); + НоваяСтрока.Представление = СвойстваСертификата.Представление; + НоваяСтрока.КомуВыдан = СвойстваСертификата.КомуВыдан; + НоваяСтрока.Отпечаток = СвойстваСертификата.Отпечаток; + НоваяСтрока.Данные = ОписаниеСертификата; + Отпечатки.Добавить(СвойстваСертификата.Отпечаток); + Иначе + НоваяСтрока.Ссылка = ОписаниеСертификата; + Ссылки.Добавить(ОписаниеСертификата); + КонецЕсли; + КонецЦикла; + ТаблицаСертификатов.Индексы.Добавить("Ссылка"); + ТаблицаСертификатов.Индексы.Добавить("Отпечаток"); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылки", Ссылки); + Запрос.УстановитьПараметр("Отпечатки", Отпечатки); + Запрос.Текст = + "ВЫБРАТЬ + | Сертификаты.Ссылка КАК Ссылка, + | Сертификаты.Отпечаток КАК Отпечаток, + | Сертификаты.Наименование КАК Представление, + | Сертификаты.ДанныеСертификата КАК ДанныеСертификата + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты + |ГДЕ + | (Сертификаты.Ссылка В (&Ссылки) + | ИЛИ Сертификаты.Отпечаток В (&Отпечатки))"; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Строки = ТаблицаСертификатов.НайтиСтроки(Новый Структура("Ссылка", Выборка.Ссылка)); + Для Каждого Строка Из Строки Цикл + ДанныеСертификата = Выборка.ДанныеСертификата.Получить(); + Если ТипЗнч(ДанныеСертификата) <> Тип("ДвоичныеДанные") Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Данные сертификата ""%1"" не существуют в справочнике'"), Выборка.Представление); + КонецЕсли; + Попытка + СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Данные сертификата ""%1"" в справочнике не корректны по причине: + |%2'"), + Выборка.Представление, + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии); + Строка.Отпечаток = Выборка.Отпечаток; + Строка.Представление = Выборка.Представление; + Строка.КомуВыдан = СвойстваСертификата.КомуВыдан; + Строка.Данные = ДанныеСертификата; + КонецЦикла; + Строки = ТаблицаСертификатов.НайтиСтроки(Новый Структура("Отпечаток", Выборка.Отпечаток)); + Для Каждого Строка Из Строки Цикл + Строка.Ссылка = Выборка.Ссылка; + Строка.Представление = Выборка.Представление; + КонецЦикла; + КонецЦикла; + + // Удаление дублей. + ВсеОтпечатки = Новый Соответствие; + Индекс = ТаблицаСертификатов.Количество() - 1; + Пока Индекс >= 0 Цикл + Строка = ТаблицаСертификатов[Индекс]; + Если ВсеОтпечатки.Получить(Строка.Отпечаток) = Неопределено Тогда + ВсеОтпечатки.Вставить(Строка.Отпечаток, Истина); + Иначе + ТаблицаСертификатов.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + + Отбор = Новый Структура("Ссылка", Неопределено); + ВсеСертификатыВСправочнике = ТаблицаСертификатов.НайтиСтроки(Отбор).Количество() = 0; + + Если ВсеСертификатыВСправочнике Тогда + Для Каждого Строка Из ТаблицаСертификатов Цикл + СертификатыШифрования.Добавить().Сертификат = Строка.Ссылка; + КонецЦикла; + Иначе + СвойстваСертификатов = Новый Массив; + Для Каждого Строка Из ТаблицаСертификатов Цикл + НоваяСтрока = НаборСертификатов.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); + НоваяСтрока.АдресДанных = ПоместитьВоВременноеХранилище(Строка.Данные, УникальныйИдентификатор); + Свойства = Новый Структура; + Свойства.Вставить("Отпечаток", Строка.Отпечаток); + Свойства.Вставить("Представление", Строка.КомуВыдан); + Свойства.Вставить("Сертификат", Строка.Данные); + СвойстваСертификатов.Добавить(Свойства); + КонецЦикла; + + АдресСвойствСертификатов = ПоместитьВоВременноеХранилище(СвойстваСертификатов, УникальныйИдентификатор); + Элементы.ВариантыШифрования.ТекущаяСтраница = Элементы.УказанныйНаборСертификатов; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПерезаполнитьПрограммуШифрования() + + ЗаполнитьПрограммуШифрованияНаСервере(); + ЗаполнитьПрограммуШифрования(); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПрограммуШифрованияНаСервере() + + СертификатПрограмма = Неопределено; + ПерваяПрограммаНаСервере = Неопределено; + + Если НаборСертификатов.Количество() > 0 Тогда + СертификатАдрес = НаборСертификатов[0].АдресДанных; + Иначе + Попытка + ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + СертификатыШифрования[0].Сертификат, "Программа, ДанныеСертификата"); + + Если ЗначениеЗаполнено(ЗначенияРеквизитов.Программа) Тогда + СертификатПрограмма = ЗначенияРеквизитов.Программа; + Возврат; + КонецЕсли; + + ДвоичныеДанныеСертификата = ЗначенияРеквизитов.ДанныеСертификата.Получить(); + СертификатКриптографии = Новый СертификатКриптографии(ДвоичныеДанныеСертификата); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При получении данных сертификата ""%1"" + |из информационной базы возникла ошибка: + |%2'"), + СертификатыШифрования[0].Сертификат, + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + СертификатАдрес = ПоместитьВоВременноеХранилище(ДвоичныеДанныеСертификата, УникальныйИдентификатор); + КонецЕсли; + + Если Не ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда + Возврат; + КонецЕсли; + + ДвоичныеДанныеСертификата = ПолучитьИзВременногоХранилища(СертификатАдрес); + СертификатКриптографии = Новый СертификатКриптографии(ДвоичныеДанныеСертификата); + ТестовыеДанные = ТестовыеДвоичныеДанные(); + + ОписанияПрограмм = ЭлектроннаяПодпись.ОбщиеНастройки().ОписанияПрограмм; + АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДвоичныеДанныеСертификата); + + Для Каждого ОписаниеПрограммы Из ОписанияПрограмм Цикл + + ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.Программа = ОписаниеПрограммы.Ссылка; + ПараметрыСоздания.АлгоритмПодписи = АлгоритмПодписи; + + МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("Шифрование", ПараметрыСоздания); + + Если МенеджерКриптографии = Неопределено Тогда + Продолжить; + КонецЕсли; + Если Не ЗначениеЗаполнено(ПерваяПрограммаНаСервере) Тогда + ПерваяПрограммаНаСервере = ОписаниеПрограммы.Ссылка; + КонецЕсли; + Попытка + ЗашифрованныеТестовыеДанные = МенеджерКриптографии.Зашифровать(ТестовыеДанные, СертификатКриптографии); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + КонецПопытки; + Если ИнформацияОбОшибке = Неопределено И ЗначениеЗаполнено(ЗашифрованныеТестовыеДанные) Тогда + СертификатПрограмма = ОписаниеПрограммы.Ссылка; + Прервать; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ТестовыеДвоичныеДанные() + + Возврат БиблиотекаКартинок.СертификатКлюча.ПолучитьДвоичныеДанные(); + +КонецФункции + +&НаКлиенте +Процедура ЗаполнитьПрограммуШифрования(Оповещение = Неопределено) + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + Контекст.Вставить("ПерваяПрограммаНаКлиенте", Неопределено); + + Если ЗначениеЗаполнено(СертификатПрограмма) Тогда + ЗаполнитьПрограммуШифрованияПослеЦикла(Контекст); + Возврат; + КонецЕсли; + + ДанныеСертификата = ПолучитьИзВременногоХранилища(СертификатАдрес); + Контекст.Вставить("АлгоритмПодписи", + ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДанныеСертификата)); + + ОписанияПрограмм = ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ОписанияПрограмм; + + Если ОписанияПрограмм.Количество() = 0 Тогда + ЗаполнитьПрограммуШифрованияПослеЦикла(Контекст); + Возврат; + КонецЕсли; + + Контекст.Вставить("ОписанияПрограмм", ОписанияПрограмм); + + СертификатКриптографии = Новый СертификатКриптографии; + СертификатКриптографии.НачатьИнициализацию(Новый ОписаниеОповещения( + "ЗаполнитьПрограммуШифрованияПослеИнициализацииСертификата", ЭтотОбъект, Контекст), + ДанныеСертификата); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьПрограммуШифрования. +&НаКлиенте +Процедура ЗаполнитьПрограммуШифрованияПослеИнициализацииСертификата(СертификатКриптографии, Контекст) Экспорт + + Контекст.Вставить("СертификатШифрования", СертификатКриптографии); + Контекст.Вставить("ТестовыеДанные", ТестовыеДвоичныеДанные()); + + Контекст.Вставить("Индекс", -1); + ЗаполнитьПрограммуШифрованияЦиклНачало(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьПрограммуШифрования. +// +// Параметры: +// Контекст - Структура: +// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования +// +&НаКлиенте +Процедура ЗаполнитьПрограммуШифрованияЦиклНачало(Контекст) + + Если Контекст.ОписанияПрограмм.Количество() <= Контекст.Индекс + 1 Тогда + ЗаполнитьПрограммуШифрованияПослеЦикла(Контекст); + Возврат; + КонецЕсли; + Контекст.Индекс = Контекст.Индекс + 1; + Контекст.Вставить("ОписаниеПрограммы", Контекст.ОписанияПрограмм[Контекст.Индекс]); + + Если Не Контекст.Свойство("АлгоритмПодписи") Тогда + Контекст.Вставить("АлгоритмПодписи", ""); + КонецЕсли; + + ПараметрыСоздания = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.Программа = Контекст.ОписаниеПрограммы.Ссылка; + ПараметрыСоздания.ПоказатьОшибку = Ложь; + ПараметрыСоздания.АлгоритмПодписи = Контекст.АлгоритмПодписи; + + ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения( + "ЗаполнитьПрограммуШифрованияПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст), + "Шифрование", ПараметрыСоздания); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьПрограммуШифрования. +// +// Параметры: +// Контекст - Структура: +// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования +// +&НаКлиенте +Процедура ЗаполнитьПрограммуШифрованияПослеСозданияМенеджераКриптографии(МенеджерКриптографии, Контекст) Экспорт + + Если ТипЗнч(МенеджерКриптографии) <> Тип("МенеджерКриптографии") Тогда + ЗаполнитьПрограммуШифрованияЦиклНачало(Контекст); + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(Контекст.ПерваяПрограммаНаКлиенте) Тогда + Контекст.ПерваяПрограммаНаКлиенте = Контекст.ОписаниеПрограммы.Ссылка; + КонецЕсли; + + МенеджерКриптографии.НачатьШифрование(Новый ОписаниеОповещения( + "ЗаполнитьПрограммуШифрованияПослеШифрования", ЭтотОбъект, Контекст, + "ЗаполнитьПрограммуШифрованияПослеОшибкиШифрования", ЭтотОбъект), + Контекст.ТестовыеДанные, Контекст.СертификатШифрования); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьПрограммуШифрования. +&НаКлиенте +Процедура ЗаполнитьПрограммуШифрованияПослеОшибкиШифрования(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + ЗаполнитьПрограммуШифрованияЦиклНачало(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ЗаполнитьПрограммуШифрования. +// +// Параметры: +// Контекст - Структура: +// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования +// +&НаКлиенте +Процедура ЗаполнитьПрограммуШифрованияПослеШифрования(ЗашифрованныеДанные, Контекст) Экспорт + + Если Не ЗначениеЗаполнено(ЗашифрованныеДанные) Тогда + ЗаполнитьПрограммуШифрованияЦиклНачало(Контекст); + Возврат; + КонецЕсли; + + СертификатПрограмма = Контекст.ОписаниеПрограммы.Ссылка; + ЗаполнитьПрограммуШифрованияПослеЦикла(Контекст); + +КонецПроцедуры + +// Продолжение процедуры СоздатьМенеджерКриптографии. +&НаКлиенте +Процедура ЗаполнитьПрограммуШифрованияПослеЦикла(Контекст) + + Если Не ЗначениеЗаполнено(СертификатПрограмма) Тогда + + Если ЗначениеЗаполнено(Контекст.ПерваяПрограммаНаКлиенте) Тогда + СертификатПрограмма = Контекст.ПерваяПрограммаНаКлиенте; + + ИначеЕсли ЗначениеЗаполнено(ПерваяПрограммаНаСервере) Тогда + СертификатПрограмма = ПерваяПрограммаНаСервере; + КонецЕсли; + КонецЕсли; + + Если Контекст.Оповещение <> Неопределено Тогда + ВыполнитьОбработкуОповещения(Контекст.Оповещение); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьОткрытие(Оповещение, ОбщиеВнутренниеДанные, КлиентскиеПараметры) Экспорт + + ОписаниеДанных = КлиентскиеПараметры.ОписаниеДанных; + ФормаОбъекта = КлиентскиеПараметры.Форма; + ТекущийСписокПредставлений = КлиентскиеПараметры.ТекущийСписокПредставлений; + + ВнутренниеДанные = ОбщиеВнутренниеДанные; + Контекст = Новый Структура("Оповещение", Оповещение); + Оповещение = Новый ОписаниеОповещения("ПродолжитьОткрытие", ЭтотОбъект); + + ЭлектроннаяПодписьСлужебныйКлиент.ПродолжитьОткрытиеНачало(Новый ОписаниеОповещения( + "ПродолжитьОткрытиеПослеНачала", ЭтотОбъект, Контекст), ЭтотОбъект, КлиентскиеПараметры, Истина); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеНачала(Результат, Контекст) Экспорт + + Если Результат <> Истина Тогда + ПродолжитьОткрытиеЗавершение(Контекст); + Возврат; + КонецЕсли; + + Если УказанНеизменяемыйНаборСертификатов Тогда + ЗаполнитьПрограммуШифрования(Новый ОписаниеОповещения( + "ПродолжитьОткрытиеПослеЗаполненияПрограммы", ЭтотОбъект, Контекст)); + Иначе + ПродолжитьОткрытиеПослеЗаполненияПрограммы(Неопределено, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеЗаполненияПрограммы(Результат, Контекст) Экспорт + + Если БезПодтверждения Тогда + ОбработкаПослеПредупреждения = Неопределено; + ЗашифроватьДанные(Новый ОписаниеОповещения("ПродолжитьОткрытиеПослеШифрованияДанных", ЭтотОбъект, Контекст)); + Возврат; + КонецЕсли; + + Открыть(); + + ПродолжитьОткрытиеЗавершение(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеПослеШифрованияДанных(Результат, Контекст) Экспорт + + ПродолжитьОткрытиеЗавершение(Контекст, Результат = Истина); + +КонецПроцедуры + +// Продолжение процедуры ПродолжитьОткрытие. +&НаКлиенте +Процедура ПродолжитьОткрытиеЗавершение(Контекст, Результат = Неопределено) + + Если Не Открыта() Тогда + ОчиститьПеременныеФормы(); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Результат); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьПеременныеФормы() + + ОписаниеДанных = Неопределено; + ФормаОбъекта = Неопределено; + ТекущийСписокПредставлений = Неопределено; + +КонецПроцедуры + +&НаКлиенте +Функция ПеременныеОчищены() + + Возврат ОписаниеДанных = Неопределено + И ФормаОбъекта = Неопределено + И ТекущийСписокПредставлений = Неопределено; + +КонецФункции + +// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. +&НаКлиенте +Процедура ВыполнитьШифрование(КлиентскиеПараметры, ОбработкаЗавершения) Экспорт +// АПК:78-вкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер. + + ЭлектроннаяПодписьСлужебныйКлиент.ОбновитьФормуПередПовторнымИспользованием(ЭтотОбъект, КлиентскиеПараметры); + + ОписаниеДанных = КлиентскиеПараметры.ОписаниеДанных; + ФормаОбъекта = КлиентскиеПараметры.Форма; + ТекущийСписокПредставлений = КлиентскиеПараметры.ТекущийСписокПредставлений; + + ОбработкаПослеПредупреждения = ОбработкаЗавершения; + + Контекст = Новый Структура("ОбработкаЗавершения", ОбработкаЗавершения); + ЗашифроватьДанные(Новый ОписаниеОповещения("ВыполнитьШифрованиеЗавершение", ЭтотОбъект, Контекст)); + +КонецПроцедуры + +// Продолжение процедуры ВыполнитьШифрование. +&НаКлиенте +Процедура ВыполнитьШифрованиеЗавершение(Результат, Контекст) Экспорт + + Если Результат = Истина Тогда + ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииСпискаСертификатов() + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте( + Новый ОписаниеОповещения("ПриИзмененииСпискаСертификатовЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры ПриИзмененииСпискаСертификатов. +&НаКлиенте +Процедура ПриИзмененииСпискаСертификатовЗавершение(ОтпечаткиСертификатовНаКлиенте, Контекст) Экспорт + + СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте, Истина); + +КонецПроцедуры + +&НаСервере +Процедура СертификатПриИзмененииНаСервере(ОтпечаткиСертификатовНаКлиенте, ПроверитьСсылку = Ложь) + + Если ПроверитьСсылку + И ЗначениеЗаполнено(Сертификат) + И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сертификат, "Ссылка") <> Сертификат Тогда + + Сертификат = Неопределено; + КонецЕсли; + + ЭлектроннаяПодписьСлужебный.СертификатПриИзмененииНаСервере(ЭтотОбъект, ОтпечаткиСертификатовНаКлиенте, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗашифроватьДанные(Оповещение) + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + Контекст.Вставить("ОшибкаНаКлиенте", Новый Структура); + Контекст.Вставить("ОшибкаНаСервере", Новый Структура); + + Если ЗначениеЗаполнено(Сертификат) Тогда + Если Не ЗначениеЗаполнено(СертификатПрограмма) Тогда + Контекст.ОшибкаНаКлиенте.Вставить("ОписаниеОшибки", + НСтр("ru = 'У выбранного личного сертификата не указана программа для закрытого ключа. + |Выберите другой сертификат.'")); + ОбработатьОшибку(Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + КонецЕсли; + + Контекст.Вставить("ИдентификаторФормы", УникальныйИдентификатор); + Если ТипЗнч(ФормаОбъекта) = Тип("ФормаКлиентскогоПриложения") Тогда + Контекст.ИдентификаторФормы = ФормаОбъекта.УникальныйИдентификатор; + ИначеЕсли ТипЗнч(ФормаОбъекта) = Тип("УникальныйИдентификатор") Тогда + Контекст.ИдентификаторФормы = ФормаОбъекта; + КонецЕсли; + + Если НаборСертификатов.Количество() = 0 Тогда + Ссылки = Новый Массив; + ИсключитьЛичныйСертификат = Ложь; + Если Элементы.Сертификат.Видимость И ЗначениеЗаполнено(Сертификат) Тогда + Ссылки.Добавить(Сертификат); + ИсключитьЛичныйСертификат = Истина; + КонецЕсли; + Для каждого Строка Из СертификатыШифрования Цикл + Если Не ИсключитьЛичныйСертификат Или Строка.Сертификат <> Сертификат Тогда + Ссылки.Добавить(Строка.Сертификат); + КонецЕсли; + КонецЦикла; + ОписаниеДанных.Вставить("СертификатыШифрования", + СвойстваСертификатов(Ссылки, Контекст.ИдентификаторФормы)); + Иначе + ОписаниеДанных.Вставить("СертификатыШифрования", АдресСвойствСертификатов); + КонецЕсли; + + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("ОписаниеДанных", ОписаниеДанных); + ПараметрыВыполнения.Вставить("Форма", ЭтотОбъект); + ПараметрыВыполнения.Вставить("ИдентификаторФормы", Контекст.ИдентификаторФормы); + Контекст.Вставить("ПараметрыВыполнения", ПараметрыВыполнения); + + Если ЭлектроннаяПодписьКлиент.СоздаватьЭлектронныеПодписиНаСервере() Тогда + Если ЗначениеЗаполнено(СертификатНаСервереОписаниеОшибки) Тогда + Результат = Новый Структура("Ошибка", СертификатНаСервереОписаниеОшибки); + СертификатНаСервереОписаниеОшибки = Новый Структура; + ЗашифроватьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст); + Иначе + // Попытка шифрования на сервере. + ЭлектроннаяПодписьСлужебныйКлиент.ВыполнитьНаСтороне(Новый ОписаниеОповещения( + "ЗашифроватьДанныеПослеВыполненияНаСторонеСервера", ЭтотОбъект, Контекст), + "Шифрование", "НаСторонеСервера", Контекст.ПараметрыВыполнения); + КонецЕсли; + Иначе + ЗашифроватьДанныеПослеВыполненияНаСторонеСервера(Неопределено, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ЗашифроватьДанные. +&НаКлиенте +Процедура ЗашифроватьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + Если Результат <> Неопределено Тогда + ЗашифроватьДанныеПослеВыполнения(Результат); + КонецЕсли; + + Если Результат <> Неопределено И Не Результат.Свойство("Ошибка") Тогда + ЗашифроватьДанныеПослеВыполненияНаСторонеКлиента(Новый Структура, Контекст); + Иначе + Если Результат <> Неопределено Тогда + Контекст.ОшибкаНаСервере = Результат.Ошибка; + КонецЕсли; + + // Попытка подписания на клиенте. + ЭлектроннаяПодписьСлужебныйКлиент.ВыполнитьНаСтороне(Новый ОписаниеОповещения( + "ЗашифроватьДанныеПослеВыполненияНаСторонеКлиента", ЭтотОбъект, Контекст), + "Шифрование", "НаСторонеКлиента", Контекст.ПараметрыВыполнения); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ЗашифроватьДанные. +&НаКлиенте +Процедура ЗашифроватьДанныеПослеВыполненияНаСторонеКлиента(Результат, Контекст) Экспорт + + Если ПеременныеОчищены() Тогда + Возврат; + КонецЕсли; + + ЗашифроватьДанныеПослеВыполнения(Результат); + + Если Результат.Свойство("Ошибка") Тогда + Контекст.ОшибкаНаКлиенте = Результат.Ошибка; + ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + Если Не ЗаписатьСертификатыШифрования(Контекст.ИдентификаторФормы, Контекст.ОшибкаНаКлиенте) Тогда + ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(ПредставлениеДанных) + И (Не ОписаниеДанных.Свойство("СообщитьОЗавершении") + Или ОписаниеДанных.СообщитьОЗавершении <> Ложь) Тогда + + ЭлектроннаяПодписьКлиент.ИнформироватьОШифрованииОбъекта( + ЭлектроннаяПодписьСлужебныйКлиент.ПолноеПредставлениеДанных(ЭтотОбъект), + ТекущийСписокПредставлений.Количество() > 1); + КонецЕсли; + + Если ОписаниеДанных.Свойство("КонтекстОперации") Тогда + ОписаниеДанных.КонтекстОперации = ЭтотОбъект; + КонецЕсли; + + Если ОповеститьОбОкончанииСрокаДействия Тогда + ПараметрыФормы = Новый Структура("Сертификат", Сертификат); + ОткрытьФорму("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма.ОповещениеОбОкончанииСрокаДействия", + ПараметрыФормы); + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.Оповещение, Истина); + +КонецПроцедуры + +// Продолжение процедуры ЗашифроватьДанные. +&НаКлиенте +Процедура ЗашифроватьДанныеПослеВыполнения(Результат) + + Если Результат.Свойство("ЕстьОбработанныеЭлементыДанных") Тогда + // После начала шифрования изменять сертификаты более недопустимо, + // иначе набор данных будет обработан по-разному. + Элементы.Сертификат.ТолькоПросмотр = Истина; + Элементы.СертификатыШифрования.ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СвойстваСертификатов(Знач Ссылки, Знач ИдентификаторФормы) + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылки", Ссылки); + Запрос.Текст = + "ВЫБРАТЬ + | Сертификаты.Ссылка КАК Ссылка, + | Сертификаты.Наименование КАК Наименование, + | Сертификаты.Программа, + | Сертификаты.ДанныеСертификата + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты + |ГДЕ + | Сертификаты.Ссылка В(&Ссылки)"; + + Выборка = Запрос.Выполнить().Выбрать(); + СвойстваСертификатов = Новый Массив; + + Пока Выборка.Следующий() Цикл + + ДанныеСертификата = Выборка.ДанныеСертификата.Получить(); + Если ТипЗнч(ДанныеСертификата) <> Тип("ДвоичныеДанные") Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Данные сертификата ""%1"" не существует в справочнике'"), + Выборка.Наименование); + КонецЕсли; + + Попытка + СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Данные сертификата ""%1"" в справочнике не корректны по причине: + |%2'"), + Выборка.Наименование, + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии); + + Свойства = Новый Структура; + Свойства.Вставить("Отпечаток", СвойстваСертификата.Отпечаток); + Свойства.Вставить("Представление", СвойстваСертификата.КомуВыдан); + Свойства.Вставить("Сертификат", ДанныеСертификата); + + СвойстваСертификатов.Добавить(Свойства); + КонецЦикла; + + Возврат ПоместитьВоВременноеХранилище(СвойстваСертификатов, ИдентификаторФормы); + +КонецФункции + + +&НаКлиенте +Функция ЗаписатьСертификатыШифрования(ИдентификаторФормы, Ошибка) + + ОписаниеОбъектов = Новый Массив; + Если ОписаниеДанных.Свойство("Данные") Тогда + ДобавитьОписаниеОбъекта(ОписаниеОбъектов, ОписаниеДанных); + Иначе + Для Каждого ЭлементДанных Из ОписаниеДанных.НаборДанных Цикл + ДобавитьОписаниеОбъекта(ОписаниеОбъектов, ЭлементДанных); + КонецЦикла; + КонецЕсли; + + АдресСертификатов = ОписаниеДанных.СертификатыШифрования; + + Ошибка = Новый Структура; + ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, АдресСертификатов, ИдентификаторФормы, Ошибка); + + Возврат Не ЗначениеЗаполнено(Ошибка); + +КонецФункции + +// Возвращаемое значение: +// Структура: +// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования +// +&НаКлиенте +Функция ОписаниеОбъекта(ЭлементДанных) + + ВерсияОбъекта = Неопределено; + ЭлементДанных.Свойство("ВерсияОбъекта", ВерсияОбъекта); + + ОписаниеОбъекта = Новый Структура; + ОписаниеОбъекта.Вставить("Ссылка", ЭлементДанных.Объект); + ОписаниеОбъекта.Вставить("Версия", ВерсияОбъекта); + + Возврат ОписаниеОбъекта; + +КонецФункции + +&НаКлиенте +Процедура ДобавитьОписаниеОбъекта(ОписаниеОбъектов, ЭлементДанных) + + Если Не ЭлементДанных.Свойство("Объект") Тогда + Возврат; + КонецЕсли; + + ОписаниеОбъектов.Добавить(ОписаниеОбъекта(ЭлементДанных)); + +КонецПроцедуры + +// Параметры: +// ОписаниеОбъектов - Массив из см. ОписаниеОбъекта +// +&НаСервереБезКонтекста +Процедура ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, АдресСертификатов, ИдентификаторФормы, Ошибка) + + СвойстваСертификатов = ПолучитьИзВременногоХранилища(АдресСертификатов); + + НачатьТранзакцию(); + Попытка + Для каждого ОписаниеОбъекта Из ОписаниеОбъектов Цикл + ЭлектроннаяПодпись.ЗаписатьСертификатыШифрования(ОписаниеОбъекта.Ссылка, + СвойстваСертификатов, ИдентификаторФормы, ОписаниеОбъекта.Версия); + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Ошибка.Вставить("ОписаниеОшибки", НСтр("ru = 'При записи сертификатов шифрования возникла ошибка:'") + + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьОшибку(Оповещение, ОшибкаНаКлиенте, ОшибкаНаСервере) + + Если ОписаниеДанных.Свойство("ПрекратитьВыполнение") Тогда + + Если Не ОписаниеДанных.Свойство("ОписаниеОшибки") Тогда + ОписаниеДанных.Вставить("ОписаниеОшибки"); + КонецЕсли; + + ОписаниеДанных.ОписаниеОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОбщееОписаниеОшибки( + ОшибкаНаКлиенте, ОшибкаНаСервере, НСтр("ru = 'Не удалось зашифровать данные по причине:'")); + + Если Открыта() Тогда + Закрыть(Ложь); + Иначе + ВыполнитьОбработкуОповещения(Оповещение, Ложь); + КонецЕсли; + + Иначе + + Если Не Открыта() И ОбработкаПослеПредупреждения = Неопределено Тогда + Открыть(); + КонецЕсли; + + ВсеСертификаты = Новый Массив; + ВсеСертификаты.Добавить(Сертификат); + Для Каждого Строка Из СертификатыШифрования Цикл + Если Не ЗначениеЗаполнено(Строка.Сертификат) + Или ВсеСертификаты.Найти(Строка.Сертификат) <> Неопределено Тогда + Продолжить; + КонецЕсли; + ВсеСертификаты.Добавить(Строка.Сертификат); + КонецЦикла; + ДополнительныеПараметры = Новый Структура("Сертификат", ВсеСертификаты); + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Не удалось зашифровать данные'"), "", + ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры, ОбработкаПослеПредупреждения); + + ВыполнитьОбработкуОповещения(Оповещение, Ложь); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..e722ff62 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,12 @@ + +

Предназначен для управления сертификатами ключей электронной подписи и шифрования.

+

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

+

Контроль неизменности электронного документа осуществляется в результате проверки соответствия электронной подписи документа и сертификата ключа электронной подписи. Если электронная подпись соответствует сертификату, то это является гарантией того, что документ не был изменен кем-либо с момента его подписания. Контроль неизменности электронного документа можно выполнить в любой момент времени.

+

С помощью электронной подписи можно:

+
  • Подписывать объекты программы (например, поля Наименование и Краткое содержание); +
  • +
  • Подписывать содержимое хранимых файлов; +
  • +
  • Шифровать содержимое хранимых файлов; +
  • +
  • Расшифровать зашифрованные файлы.
\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" new file mode 100644 index 00000000..6caf327f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" @@ -0,0 +1,77 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + НеРедактируемыеРеквизиты = Новый Массив; + НеРедактируемыеРеквизиты.Добавить("КомуВыдан"); + НеРедактируемыеРеквизиты.Добавить("Фирма"); + НеРедактируемыеРеквизиты.Добавить("Фамилия"); + НеРедактируемыеРеквизиты.Добавить("Имя"); + НеРедактируемыеРеквизиты.Добавить("Отчество"); + НеРедактируемыеРеквизиты.Добавить("Должность"); + НеРедактируемыеРеквизиты.Добавить("КемВыдан"); + НеРедактируемыеРеквизиты.Добавить("ДействителенДо"); + НеРедактируемыеРеквизиты.Добавить("Подписание"); + НеРедактируемыеРеквизиты.Добавить("Шифрование"); + НеРедактируемыеРеквизиты.Добавить("Отпечаток"); + НеРедактируемыеРеквизиты.Добавить("ДанныеСертификата"); + НеРедактируемыеРеквизиты.Добавить("Программа"); + НеРедактируемыеРеквизиты.Добавить("Отозван"); + НеРедактируемыеРеквизиты.Добавить("УсиленнаяЗащитаЗакрытогоКлюча"); + НеРедактируемыеРеквизиты.Добавить("Организация"); + НеРедактируемыеРеквизиты.Добавить("Пользователь"); + НеРедактируемыеРеквизиты.Добавить("Добавил"); + + Если Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.РеквизитыНеРедактируемыеВГрупповойОбработке( + НеРедактируемыеРеквизиты); + КонецЕсли; + + Возврат НеРедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + + Если ВидФормы = "ФормаСписка" Тогда + СтандартнаяОбработка = Ложь; + Параметры.Вставить("ПоказатьСтраницуСертификаты"); + ВыбраннаяФорма = Метаданные.ОбщиеФормы.НастройкиЭлектроннойПодписиИШифрования; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" new file mode 100644 index 00000000..71b2ce7a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПриКопировании(ОбъектКопирования) + + ОбъектКопирования = Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.СоздатьЭлемент(); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Templates/\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\260XMLDSIG/Template.addin" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Templates/\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\260XMLDSIG/Template.addin" new file mode 100644 index 00000000..18595d0e Binary files /dev/null and "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Templates/\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\320\260XMLDSIG/Template.addin" differ diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Templates/\320\250\321\202\320\260\320\274\320\277/Template.mxlx" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Templates/\320\250\321\202\320\260\320\274\320\277/Template.mxlx" new file mode 100644 index 00000000..30c52e96 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Templates/\320\250\321\202\320\260\320\274\320\277/Template.mxlx" @@ -0,0 +1,472 @@ + + + + ru + ru + + ru + Русский + Русский + + + + 3 + + 0 + + 1 + + + + 1 + + 2 + + + + 2 + + 3 + + + + + 0 + + true + + + + 1 + + + + 4 + + + + + 5 + + + + + + 6 + + + ru + ДОКУМЕНТ ПОДПИСАН +ЭЛЕКТРОННОЙ ПОДПИСЬЮ + + + + + + + + 2 + + + + 7 + + + + + 8 + + + + + 9 + + + + + + 3 + + + + 10 + + + + + 11 + + + ru + Сертификат: + + + + + + + 12 + НомерСертификата + + + + + + 4 + + + + 10 + + + + + 11 + + + ru + Владелец: + + + + + + + 12 + ВладелецСертификата + + + + + + 5 + + + + 13 + + + + + 14 + + + ru + Действителен: + + + + + + + 15 + СрокДействия + + + + + + 6 + + + + 16 + + + + + 17 + ТекстОтметки + + + + + true + 18 + 11 + 11 + + 1 + 1 + 1 + + + 6 + 1 + 1 + + + ВладелецСертификата + + Rectangle + 4 + 4 + 2 + 2 + + + + Картинка + + Rectangle + 1 + 2 + 1 + 1 + + + + НомерСертификата + + Rectangle + 3 + 3 + 2 + 2 + + + + ОбластьСтрокШтамп + + Rows + 1 + 6 + -1 + -1 + + + + Отступ + + Rows + 9 + 9 + -1 + -1 + + + + ОтступЛев + + Rectangle + 9 + 10 + 1 + 1 + + + + ОтступПрав + + Rectangle + 9 + 10 + 2 + 2 + + + + ОтступШтампа + + Rectangle + 1 + 6 + 0 + 0 + + + + СрокДействия + + Rectangle + 5 + 5 + 2 + 2 + + + + ТекстОтметки + + Rectangle + 6 + 6 + 1 + 2 + + + + Штамп + + Rectangle + 1 + 6 + 1 + 2 + + + + ШтампЛеваяКолонка + + Rectangle + 1 + 5 + 1 + 1 + + + + ШтампПраваяКолонка + + Rectangle + 1 + 5 + 2 + 2 + + + + None + + + Solid + + + + + 25 + + + 85 + + + 226 + + + 0 + 0 + 0 + 0 + 45 + 72 + Top + + + 0 + 1 + 1 + 45 + 72 + Top + Text + true + 1 + Proportionally + Center + Center + + + 1 + 1 + 1 + 139 + Center + Block + true + 0 + 0 + + + 0 + 0 + 72 + + + 72 + true + + + 0 + 1 + 219 + Center + true + + + 0 + 0 + 0 + 72 + Top + 1 + + + 0 + 1 + 72 + Top + true + 1 + + + 0 + 1 + 72 + Top + Wrap + Parameter + true + + + 0 + 0 + 0 + 0 + 51 + 72 + Top + 1 + + + 0 + 1 + 1 + 51 + 72 + Top + true + 1 + + + 0 + 1 + 1 + 51 + 72 + Top + Wrap + Parameter + true + + + 0 + 90 + Center + Wrap + + + 0 + 90 + Center + Wrap + Parameter + true + + + 72 + + + 0 + + + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..ac5fea1f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213\320\232\320\273\321\216\321\207\320\265\320\271\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" @@ -0,0 +1,750 @@ + + + + + + + + + + СертификатыКлючейЭлектроннойПодписиИШифрования + + ru + Сертификаты ключей электронной подписи и шифрования + + true + Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования.StandardAttribute.Description + AnyPart + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Представление + + + ru + Пользовательское представление сертификата. + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Сертификат ключа электронной подписи и шифрования + + 2 + true + 100 + String + Variable + AsDescription + InDialog + BothWays + Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования.Form.ФормаЭлемента + Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования.Form.ФормаВыбора + DontUse + + КомуВыдан + + ru + Кому выдан + + + String + + 430 + + + + ru + Владелец сертификата (фамилия имя, организация, должность). + + + + + + + Index + Use + Use + + + Фирма + + ru + Фирма + + + String + + 100 + + + + ru + Своя организация или контрагент, которому выдан сертификат. + + + + + + + Index + Use + Use + + + Фамилия + + ru + Фамилия + + + String + + 100 + + + + ru + Фамилия владельца сертификата. + + + + + + + Index + Use + Use + + + Имя + + ru + Имя + + + String + + 100 + + + + ru + Имя владельца сертификата. + + + + + + + Index + Use + Use + + + Отчество + + ru + Отчество + + + String + + 100 + + + + ru + Отчество владельца сертификата. + + + + + + + Index + Use + Use + + + Должность + + ru + Должность + + + String + + 100 + + + + ru + Должность владельца сертификата. + + + + + + + Index + Use + Use + + + КемВыдан + + ru + Кем выдан + + + String + + 100 + + + + ru + Удостоверяющий центр, который выдал сертификат. + + + + + + + Index + Use + + + ДействителенДо + + ru + Действителен до + + + Date + + + + ru + ДФ=dd.MM.yyyy + + + ru + ДФ=dd.MM.yyyy + + + ru + Дата окончания действия сертификата. + + + + + Index + Use + + + Подписание + + ru + Подписание + + + Boolean + + + ru + Используется для подписания данных + + + + + Use + + + Шифрование + + ru + Шифрование + + + Boolean + + + ru + Используется для шифрования данных + + + + + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + + + + Index + Use + Use + + + ДанныеСертификата + + ru + Данные сертификата + + Двоичные данные сертификата + + ValueStorage + + + ru + Данные файла сертификата. + + + + + Use + + + Программа + + ru + Программа + + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + ru + Программа, требуемая для подписания и расшифровки документов +(с помощью секретного ключа по которому выпущен этот сертификат). + + + + + Use + Use + + + Отозван + + ru + Отозван + + + Boolean + + + ru + Признак, что сертификат является недействительным. + + + + + Use + + + УсиленнаяЗащитаЗакрытогоКлюча + + ru + Усиленная защита закрытого ключа + + + Boolean + + + ru + Передавать пустой пароль к закрытому ключу сертификата из 1С:Предприятия, +так как он будет вводиться в отдельном окне программой электронной подписи и шифрования. + +Только для закрытых ключей сертификатов, для которых в ОС включена усиленная защита. + + + + + Use + + + Организация + + ru + Организация + + + DefinedType.Организация + + + ru + Своя организация, которой выдан сертификат. + + + + true + + Use + Use + + + Пользователь + + ru + Пользователь + + + CatalogRef.Пользователи + + + ru + Пользователь, которому принадлежит сертификат. + + + + + Index + Use + Use + + + ПользовательОповещенОСрокеДействия + + ru + Пользователь оповещен о сроке действия + + + Boolean + + + ru + Пользователь оповещен о скором окончании +срока действия своего сертификата. + + + + + Use + + + Добавил + + ru + Добавил + + + CatalogRef.Пользователи + + + ru + Пользователь, который добавил сертификат в справочник. + + + + + Use + + + СостояниеЗаявления + + ru + Состояние заявления + + + EnumRef.СостоянияЗаявленияНаВыпускСертификата + + + ru + Показывает состояние заявления на выпуск сертификата, +если сертификат добавлялся путем оформления заявления. + + + + + Use + Use + + + СодержаниеЗаявления + + ru + Содержание заявления + + + ValueStorage + + + ru + Содержит заявление, как оно была оформлено в момент создания закрытого ключа. + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + + + ru + + + PersonalComputer + MobileDevice + + + ДобавлениеСертификата + + ru + Добавление сертификата + + PersonalComputer + MobileDevice + + + ДобавлениеСертификатаДляШифрования + + ru + Добавление сертификата для шифрования + + PersonalComputer + MobileDevice + + + ПодборСертификатовДляШифрования + + ru + Подбор сертификатов для шифрования + + + + ru + + + PersonalComputer + MobileDevice + + + ПередачаПараметров + + ru + Передача параметров + + PersonalComputer + MobileDevice + + + ВыборСертификатаДляПодписанияИлиРасшифровки + + ru + Выбор сертификата для подписания или расшифровки + + PersonalComputer + MobileDevice + + + ПодписаниеДанных + + ru + Подписание данных + + + + ru + + + PersonalComputer + MobileDevice + + + ШифрованиеДанных + + ru + Шифрование данных + + + + ru + + + PersonalComputer + MobileDevice + + + РасшифровкаДанных + + ru + Расшифровка данных + + + + ru + + + PersonalComputer + MobileDevice + + + ПросмотрДанных + + ru + Просмотр данных + + PersonalComputer + MobileDevice + + + ОповещениеОбОкончанииСрокаДействия + + ru + Оповещение об окончании срока действия + + PersonalComputer + MobileDevice + + + ПроверкаСертификата + + ru + Проверка сертификата + + + + ru + + + PersonalComputer + MobileDevice + + + КомпонентаXMLDSIG + + ru + Компонента XMLDSIG + + AddIn + + + Штамп + + ru + Штамп + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..7ef684af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(ВладелецФайла)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..c738fe64 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265SMS\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,836 @@ + + + + + + + + + + СообщениеSMSПрисоединенныеФайлы + + ru + Присоединенные файлы (Сообщение SMS) + + Catalog.СообщениеSMSПрисоединенныеФайлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла + + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + Catalog.СообщениеSMSПрисоединенныеФайлы.Attribute.ВладелецФайла + Managed + Use + + ru + Присоединенный файл (Сообщение SMS) + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Автор + + ru + Автор + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил файл в список + + + + ShowError + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Размещение + + + DocumentRef.СообщениеSMS + + + ru + Место размещения файла (объект) + + + + + Index + Use + + + ДатаЗаема + + ru + Дата заема + + + Date + + + + ru + ДЛФ=ДВ + + + ru + ДЛФ=ДВ + + + ru + Дата, когда файл был занят для редактирования + + false + + + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата изменения (универсальное время) + + + Date + + + + ru + Дата изменения данных файла (универсальное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления файла в список + + + + ShowError + + 0001-01-01T00:00:00 + + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Use + + + Изменил + + ru + Отредактировал + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Последний пользователь, который отредактировал файл + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ИндексКартинки + + ru + Индекс значка + + + Number + + 10 + + + + ru + Индекс значка файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Краткое описание файла + + true + + + + + + Use + Use + + + ПодписанЭП + + ru + Подписан электронно + + + Boolean + + + ru + Признак того, что файл подписан электронно + + + + + Use + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + + + Use + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + + + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который занял файл для редактирования + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или в информационной базе) + + + + ShowError + + Index + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (когда файл хранится в томе) + + + + + Index + Use + + + ФайлХранилище + + ru + Временное хранилище файла + + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + ХранитьВерсии + + ru + Хранить версии + + + Boolean + + + ru + Добавлять версии файла при окончании редактирования. Если отключить, тогда будет хранится только последняя версия. + + false + + + + Use + Use + + + + + + + УдалитьЭлектронныеПодписи + + ru + (не используется) электронные подписи + + + ru + Хранение электронных подписей файла + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Index + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + ДатаПроверкиПодписи + + ru + Дата проверки подписи + + + Date + + + + ru + Дата последней проверки подписи. + + + + Use + Use + + + ПодписьВерна + + ru + Подпись верна + + + Boolean + + + ru + Результат последней проверки подписи. + + + + Use + Use + + + + + + + + УдалитьСертификатыШифрования + + ru + (не используется) Сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..41d34030 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + РеквизитДопУпорядочивания + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..5eb26504 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,425 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Ссылка + 19 + + <key>ru</key> + <value>Ссылка</value> + + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Наименование + 16 + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + AsFileRef + + Список.Картинка + + + CommonPicture.КоллекцияПиктограммНаличиеОригиналаПервичногоДокумента + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
+ + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + + <key>ru</key> + <value>Список</value> + + 1 + + DynamicList + + + true + + + true + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + СправочникСостоянияОригиналовПервичныхДокументов.Ссылка КАК Ссылка, + СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления КАК ПометкаУдаления, + СправочникСостоянияОригиналовПервичныхДокументов.Код КАК Код, + СправочникСостоянияОригиналовПервичныхДокументов.Наименование КАК Наименование, + СправочникСостоянияОригиналовПервичныхДокументов.Описание КАК Описание, + СправочникСостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + СправочникСостоянияОригиналовПервичныхДокументов.Предопределенный КАК Предопределенный, + СправочникСостоянияОригиналовПервичныхДокументов.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + ВЫБОР + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен) + ТОГДА 1 + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана) + ТОГДА 0 + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления + ТОГДА 4 + ИНАЧЕ 3 + КОНЕЦ КАК Картинка +ИЗ + Справочник.СостоянияОригиналовПервичныхДокументов КАК СправочникСостоянияОригиналовПервичныхДокументов +ГДЕ + Не СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе) + И НЕ СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления + Catalog.СостоянияОригиналовПервичныхДокументов + true + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217/Form.form" new file mode 100644 index 00000000..d678f2a4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217/Form.form" @@ -0,0 +1,528 @@ + + + + <key>ru</key> + <value>Выбор состояний оригиналов</value> + + + СписокСостоянийОригинала + 1 + + <key>ru</key> + <value>Состояний оригинала</value> + + true + true + + true + + + СписокСостоянийОригинала + + None + + СписокСостоянийОригиналаПометка + 19 + true + true + + true + + + + СписокСостоянийОригинала.Check + + + + СписокСостоянийОригиналаПометкаРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянийОригиналаПометкаКонтекстноеМеню + 20 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + СписокСостоянийОригиналаЗначение + 14 + true + true + + true + + + + СписокСостоянийОригинала.Value + + + + СписокСостоянийОригиналаЗначениеРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянийОригиналаЗначениеКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СписокСостоянийОригиналаКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСостоянийОригиналаСтрокаПоиска + 5 + + СписокСостоянийОригиналаСтрокаПоискаРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянийОригиналаСтрокаПоискаКонтекстноеМеню + 6 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостоянийОригиналаСостояниеПросмотра + 8 + + СписокСостоянийОригиналаСостояниеПросмотраРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянийОригиналаСостояниеПросмотраКонтекстноеМеню + 9 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокСостоянийОригиналаУправлениеПоиском + 11 + + СписокСостоянийОригиналаУправлениеПоискомРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянийОригиналаУправлениеПоискомКонтекстноеМеню + 12 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокСостоянийОригиналаРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянийОригиналаКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + AsFileRef + + СписокСостоянийОригинала.Picture + + + + ФормаКоманднаяПанель + -1 + + СписокСостоянийОригиналаВыбрать + 17 + true + true + + true + + + СписокСостоянийОригиналаВыбратьРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + + ГруппаУстСнятьФлажкиВидДокумента + 26 + + УстановитьВсеФлажки + 22 + true + true + + true + + + УстановитьВсеФлажкиРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьВсеФлажки + Auto + true + true + UserCmds + Auto + + + СнятьВсеФлажки + 24 + true + true + + true + + + СнятьВсеФлажкиРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьВсеФлажки + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Уст снять флажки вид документа</value> + + + ГруппаУстСнятьФлажкиВидДокументаРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + СписокСостоянийОригинала + + <key>ru</key> + <value>Список состояний оригинала</value> + + 1 + + ValueList + + + true + + + true + + + + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать + + + true + + + + Выбрать + + + Auto + + + УстановитьВсеФлажки + + <key>ru</key> + <value>Установить все флажки</value> + + 2 + + ru + Установить все флажки + + + true + + + StdPicture.CheckAll + + + + УстановитьВсеФлажки + + + Auto + + 351:02023637-7868-4a5f-8576-835a76e0c9ba + + + + СнятьВсеФлажки + + <key>ru</key> + <value>Снять все флажки</value> + + 3 + + ru + Снять все флажки + + + true + + + StdPicture.UncheckAll + + + + СнятьВсеФлажки + + + Auto + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..9f1b1859 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,61 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + СостоянияОригинала = УчетОригиналовПервичныхДокументов.ВсеСостояния(); + Для Каждого Состояние Из СостоянияОригинала Цикл + СписокСостоянийОригинала.Добавить(Состояние,,Ложь); + КонецЦикла; + СписокСостоянийОригинала.Добавить("Состояниенеизвестно",НСтр("ru='<Состояние неизвестно>'"),Ложь); + + Если Параметры.Свойство("СписокСостояний") Тогда + Для Каждого Состояние Из Параметры.СписокСостояний Цикл + НайденноеСостояние = СписокСостоянийОригинала.НайтиПоЗначению(Состояние.Значение); + Если Не НайденноеСостояние = Неопределено Тогда + НайденноеСостояние.Пометка=Истина; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + + ОповеститьОВыборе(СписокСостоянийОригинала); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьВсеФлажки(Команда) + + Для Каждого ТекущийОтбор Из СписокСостоянийОригинала Цикл + ТекущийОтбор.Пометка = Истина; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура СнятьВсеФлажки(Команда) + + Для Каждого ТекущийОтбор Из СписокСостоянийОригинала Цикл + ТекущийОтбор.Пометка = Ложь; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..41d34030 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + РеквизитДопУпорядочивания + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..b9499d07 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,461 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Ссылка + 26 + + <key>ru</key> + <value>Ссылка</value> + + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 27 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Наименование + 23 + true + true + + true + + + + Список.Наименование + + + + НаименованиеРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 24 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + OnChange + СписокПриИзменении + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + AsFileRef + + Список.Картинка + + + CommonPicture.ПиктограммыЭлементовСправочникаСостоянияОригиналовПервичныхДокументов + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
+ + ФормаКоманднаяПанель + -1 + + НастройкаПорядкаЭлементов + 21 + true + true + + true + + + <key>ru</key> + <value>Настройка порядка элементов</value> + + + НастройкаПорядкаЭлементовРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.ИмяПредопределенныхДанных + + + Список.Предопределенный + + + Список.РеквизитДопУпорядочивания + + + Список.Ссылка + +
true
+ + ВЫБРАТЬ + СправочникСостоянияОригиналовПервичныхДокументов.Ссылка КАК Ссылка, + СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления КАК ПометкаУдаления, + СправочникСостоянияОригиналовПервичныхДокументов.Код КАК Код, + СправочникСостоянияОригиналовПервичныхДокументов.Наименование КАК Наименование, + СправочникСостоянияОригиналовПервичныхДокументов.Описание КАК Описание, + СправочникСостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + СправочникСостоянияОригиналовПервичныхДокументов.Предопределенный КАК Предопределенный, + СправочникСостоянияОригиналовПервичныхДокументов.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + ВЫБОР + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен) + ТОГДА 1 + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана) + ТОГДА 0 + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления + ТОГДА 4 + ИНАЧЕ 3 + КОНЕЦ КАК Картинка +ИЗ + Справочник.СостоянияОригиналовПервичныхДокументов КАК СправочникСостоянияОригиналовПервичныхДокументов +ГДЕ + НЕ СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе) + Catalog.СостоянияОригиналовПервичныхДокументов + true + true + true + true + true + +
+ + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..43878434 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,125 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормы + +&НаКлиенте +Процедура СписокПриИзменении(Элемент) + + ОбновитьПовторноИспользуемыеЗначения(); + Оповестить("ДобавлениеУдалениеСостоянияОригиналаПервичногоДокумента"); + +КонецПроцедуры + +#КонецОбласти + + +#Область ОбработчикиКомандФормы + +// СтандартныеПодсистемы.ПодключаемыеКоманды + +// Параметры: +// Команда - КомандаФормы +// +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если Команда.Имя = "НастройкаПорядкаЭлементовОбычное_Вниз" Или Команда.Имя = "НастройкаПорядкаЭлементовОбычное_Вверх" Тогда + Если ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана") + Или ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен") Тогда + ПоказатьПредупреждение(,НСтр("ru='Начальное и конечное состояние перемещать нельзя.'")); + Иначе + + Если Команда.Имя = "НастройкаПорядкаЭлементовОбычное_Вниз" Тогда + Перемещать = ВозможностьПеремещения("Вниз",ТекущиеДанные.РеквизитДопУпорядочивания); + ИначеЕсли Команда.Имя = "НастройкаПорядкаЭлементовОбычное_Вверх" Тогда + Перемещать = ВозможностьПеремещения("Вверх",ТекущиеДанные.РеквизитДопУпорядочивания); + КонецЕсли; + + Если Перемещать Тогда + ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); + Иначе + ПоказатьПредупреждение(,НСтр("ru = 'Начальное и конечное состояние перемещать нельзя.'")); + КонецЕсли; + + КонецЕсли; + Иначе + ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); + +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + + ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список); + +КонецПроцедуры +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); +КонецПроцедуры +//Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ВозможностьПеремещения(Перемещение, НомерПорядка); + + Запрос = Новый Запрос; + Запрос.Текст ="ВЫБРАТЬ + | СостоянияОригиналовПервичныхДокументов.Ссылка КАК Ссылка + |ИЗ + | Справочник.СостоянияОригиналовПервичныхДокументов КАК СостоянияОригиналовПервичныхДокументов + |ГДЕ + | СостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания > &НомерПорядка + | И СостоянияОригиналовПервичныхДокументов.Ссылка <> ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана) + | И СостоянияОригиналовПервичныхДокументов.Ссылка <> ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе) + | И СостоянияОригиналовПервичныхДокументов.Ссылка <> ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен)"; + + Если Перемещение = "Вверх" Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст,"> &НомерПорядка","< &НомерПорядка"); + КонецЕсли; + + Запрос.УстановитьПараметр("НомерПорядка", НомерПорядка); + + Выборка = Запрос.Выполнить(); + + Если Не Выборка.Пустой() Тогда + Возврат Истина; + Иначе + Возврат Ложь; + КонецЕсли; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..01ba8d93 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,158 @@ + + + + Наименование + 4 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Описание + 7 + true + true + + true + + + + Объект.Описание + + + Left + + ОписаниеРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + false + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.СостоянияОригиналовПервичныхДокументов + + + true + + + true + +
true
+ true +
+ + + + + + + AfterWrite + ПослеЗаписи + + + BeforeWrite + ПередЗаписью + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..4fa4a535 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,60 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + Если Не Объект.Ссылка = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен") + И Не Объект.Ссылка = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана") + И Объект.Ссылка.Пустая() Тогда + Объект.РеквизитДопУпорядочивания = РассчитатьПорядокЭлемента(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция РассчитатьПорядокЭлемента() + + Запрос = Новый Запрос; + Запрос.Текст ="ВЫБРАТЬ ПЕРВЫЕ 1 + | СостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания КАК Порядок + |ИЗ + | Справочник.СостоянияОригиналовПервичныхДокументов КАК СостоянияОригиналовПервичныхДокументов + |ГДЕ + | СостоянияОригиналовПервичныхДокументов.Предопределенный = ЛОЖЬ + | + |УПОРЯДОЧИТЬ ПО + | РеквизитДопУпорядочивания УБЫВ" ; + + Выборка = Запрос.Выполнить().Выбрать(); + Выборка.Следующий(); + + Если Не Выборка.Порядок = Неопределено Тогда + ПорядокПоУмолчанию = Выборка.Порядок + 1; + Иначе + ПорядокПоУмолчанию = 2; + КонецЕсли; + + Возврат ПорядокПоУмолчанию; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..489d8e5c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Help/ru.html" @@ -0,0 +1,14 @@ +Предназначен для ввода и хранения состояний оригиналов первичных документов. +
Открывается по команде Состояния оригиналов первичных документов в разделе Администрирование - Печатные формы, отчеты и обработки.
+
В программе предусмотрена возможность контроля получения оригиналов входящих и исходящих первичных документов от поставщиков или клиентов, а также отдельное рабочее место для контроля.
+
Перед началом работы при необходимости можно ввести в список состояния оригиналов первичных документов, которые впоследствии будут контролироваться.
+
Каждый из документов в программе может иметь несколько печатных форм. Признак наличия оригинала документа будет храниться как для каждой печатной формы, так и одним общим состоянием для документа. В список уже введены предопределенные состояния как для печатных форм, так и для документа в целом.
+

Ввод состояния оригинала первичного документа

+
+
  • В список уже введены предопределенные состояния. 
  • +
  • При необходимости (например, отдельный сотрудник отвечает за рассылку печатных форм и делает пометку на своем рабочем месте, что отослал оригиналы по адресам) можно дополнить список, добавив нужные значения с помощью кнопки Создать.
+

См. также:

+ +

+

\ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..257b40ab --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,195 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ФормаНапечатана"; + Элемент.Наименование = НСтр("ru='Форма напечатана'",ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.Описание = НСтр("ru='Состояние, означающее, что печатная форма только печаталась.'") ; + Элемент.Код = "000000001"; + Элемент.РеквизитДопУпорядочивания = "1"; + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ОригиналыНеВсе"; + Элемент.Наименование = НСтр("ru='Оригиналы не все'",ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.Описание = НСтр("ru='Общее состояние для документа, у которого оригиналы печатных форм находятся в разных состояниях.'"); + Элемент.Код = "000000002"; + Элемент.РеквизитДопУпорядочивания = "99998"; + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ОригиналПолучен"; + Элемент.Наименование = НСтр("ru='Оригинал получен'",ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.Описание = НСтр("ru='Состояние, означающее, что подписанный оригинал печатной формы есть в наличии.'"); + Элемент.Код = "000000003"; + Элемент.РеквизитДопУпорядочивания = "99999"; + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики обновления. + +// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, +// которые необходимо обновить на новую версию. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | СостоянияОригиналовПервичныхДокументов.Ссылка КАК Ссылка + |ИЗ + | Справочник.СостоянияОригиналовПервичныхДокументов КАК СостоянияОригиналовПервичныхДокументов + | + |УПОРЯДОЧИТЬ ПО + | СостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания"; + + Результат = Запрос.Выполнить().Выгрузить(); + МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); + +КонецПроцедуры + +// Заполнить значение служебного реквизита РеквизитДопУпорядочивания у справочника Состояния оригиналов первичных документов. +// +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.СостоянияОригиналовПервичныхДокументов"); + + СостояниеПорядок = Новый ТаблицаЗначений(); + СостояниеПорядок.Колонки.Добавить("Ссылка"); + СостояниеПорядок.Колонки.Добавить("Порядок"); + + Пока Выборка.Следующий() Цикл + ТекСостояние = СостояниеПорядок.Добавить(); + ТекСостояние.Ссылка = Выборка.Ссылка; + ТекСостояние.Порядок = Выборка.Ссылка.РеквизитДопУпорядочивания; + КонецЦикла; + + СостояниеПорядок.Сортировать("Порядок"); + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + + Порядок = 2; + + Для Каждого СостояниеИзм Из СостояниеПорядок Цикл + + Попытка + + Если СостояниеИзм.Ссылка = Справочники.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана Тогда + ЗаполнитьРеквизитРеквизитДопУпорядочивания(СостояниеИзм, 1); + ОбъектовОбработано = ОбъектовОбработано + 1; + ИначеЕсли СостояниеИзм.Ссылка = Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе Тогда + ЗаполнитьРеквизитРеквизитДопУпорядочивания(СостояниеИзм, 99998); + ОбъектовОбработано = ОбъектовОбработано + 1; + ИначеЕсли СостояниеИзм.Ссылка = Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен Тогда + ЗаполнитьРеквизитРеквизитДопУпорядочивания(СостояниеИзм, 99999); + ОбъектовОбработано = ОбъектовОбработано + 1; + Иначе + ЗаполнитьРеквизитРеквизитДопУпорядочивания(СостояниеИзм, Порядок); + ОбъектовОбработано = ОбъектовОбработано + 1; + Порядок = Порядок + 1; + КонецЕсли; + + Исключение + // Если не удалось обработать состояние, повторяем попытку снова. + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать состояние: %1 по причине: + |%2'"), + СостояниеИзм.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.Справочники.СостоянияОригиналовПервичныхДокументов, СостояниеИзм.Ссылка, ТекстСообщения); + КонецПопытки; + + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.СостоянияОригиналовПервичныхДокументов"); + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре ЗаполнитьРеквизитРеквизитДопУпорядочивания не удалось обработать некоторые состояния (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.Справочники.СостоянияОригиналовПервичныхДокументов,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьРеквизитРеквизитДопУпорядочивания обработала очередную порцию состояний оригиналов: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Перезаполняет значение служебного реквизита РеквизитДопУпорядочивания у переданного элемента. +// +Процедура ЗаполнитьРеквизитРеквизитДопУпорядочивания(Выборка, Порядок) + + НачатьТранзакцию(); + Попытка + + // Блокируем объект от изменения другими сеансами. + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СостоянияОригиналовПервичныхДокументов"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); + Блокировка.Заблокировать(); + + СостояниеОбъект = Выборка.Ссылка.ПолучитьОбъект(); + + // Если объект ранее был удален или обработан другими сеансами, пропускаем его. + Если СостояниеОбъект = Неопределено Тогда + ОтменитьТранзакцию(); + Возврат; + КонецЕсли; + + // Обработка объекта. + СостояниеОбъект.РеквизитДопУпорядочивания = Порядок; + + // Запись обработанного объекта. + ОбновлениеИнформационнойБазы.ЗаписатьДанные(СостояниеОбъект); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..3371f726 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.mdo" @@ -0,0 +1,235 @@ + + + + + + + + + + СостоянияОригиналовПервичныхДокументов + + ru + Состояния оригиналов первичных документов + + true + Catalog.СостоянияОригиналовПервичныхДокументов.StandardAttribute.Description + Catalog.СостоянияОригиналовПервичныхДокументов.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Состояние оригинала + + + ru + Состояние оригинала первичного документа + + + ru + Состояния оригиналов + + + ru + Состояния оригиналов первичных документов + + 2 + true + 9 + 50 + String + Variable + true + true + AsDescription + + + ОригиналПолучен + Оригинал получен + + 000000003 + + + + ОригиналыНеВсе + Оригиналы не все + + 000000002 + + + + ФормаНапечатана + Форма напечатана + + 000000001 + + + + InDialog + BothWays + Catalog.СостоянияОригиналовПервичныхДокументов.Form.ФормаЭлемента + Catalog.СостоянияОригиналовПервичныхДокументов.Form.ФормаСписка + Catalog.СостоянияОригиналовПервичныхДокументов.Form.ФормаВыбора + + Описание + + ru + Описание + + + String + + + + ru + Полное описание назначения состояния оригинала + + true + + + + + + Use + Use + + + РеквизитДопУпорядочивания + + ru + Порядок + + + Number + + 5 + true + + + + + + IndexWithAdditionalOrder + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + + ФормаВыбораСостояния + + ru + Форма выбора состояния + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Form.form" new file mode 100644 index 00000000..818303e5 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Form.form" @@ -0,0 +1,1341 @@ + + + + <key>ru</key> + <value>Классификатор стран мира (ОКСМ)</value> + + + Классификатор + 17 + + <key>ru</key> + <value>Классификатор</value> + + true + true + + true + + + Классификатор + + None + Add + Copy + Delete + EndEdit + MoveDown + MoveUp + + КлассификаторНаименование + 22 + true + true + + true + + + + Классификатор.Наименование + + + + КлассификаторНаименованиеExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторНаименованиеКонтекстноеМеню + 23 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 12 + true + true + false + true + true + true + + + + КлассификаторКод + 20 + true + true + + true + + + + Классификатор.Код + + + + КлассификаторКодExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторКодКонтекстноеМеню + 21 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 5 + true + true + true + true + true + + + + КлассификаторКодАльфа2 + 26 + true + true + + true + + + + Классификатор.КодАльфа2 + + + + КлассификаторКодАльфа2ExtendedTooltip + 66 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторКодАльфа2КонтекстноеМеню + 27 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + true + true + true + + + + КлассификаторКолАльфа3 + 28 + true + true + + true + + + + Классификатор.КодАльфа3 + + + + КлассификаторКолАльфа3ExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторКолАльфа3КонтекстноеМеню + 29 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + true + true + true + + + + КлассификаторУчастникЕАЭС + 84 + true + + true + + + + Классификатор.УчастникЕАЭС + + + + КлассификаторУчастникЕАЭСРасширеннаяПодсказка + 86 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторУчастникЕАЭСКонтекстноеМеню + 85 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + КлассификаторНаименованиеПолное + 24 + true + true + + true + + + + Классификатор.НаименованиеПолное + + + + КлассификаторНаименованиеПолноеExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторНаименованиеПолноеКонтекстноеМеню + 25 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + Top + + КлассификаторКоманднаяПанель + 19 + + КлассификаторИзменить + 78 + true + true + + true + + + КлассификаторИзменитьРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + КлассификаторГруппаВывестиСписок + 82 + + КлассификаторВывестиСписок + 80 + true + true + + true + + + КлассификаторВывестиСписокРасширеннаяПодсказка + 81 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Классификатор группа вывести список</value> + + + КлассификаторГруппаВывестиСписокРасширеннаяПодсказка + 83 + true + true + + true + + Label + true + true + + Left + + + + + + КлассификаторГруппаПоиск + 34 + + КлассификаторНайти + 32 + true + true + + true + + + КлассификаторНайтиExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + КлассификаторОтменитьПоиск + 33 + true + true + + true + + + КлассификаторОтменитьПоискExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Классификатор группа поиск</value> + + + КлассификаторГруппаПоискExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + + + КлассификаторСортироватьСписокПоВозрастанию + 30 + true + true + + true + + + КлассификаторСортироватьСписокПоВозрастаниюExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SortListAsc + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КлассификаторСортироватьСписокПоУбыванию + 31 + true + true + + true + + + КлассификаторСортироватьСписокПоУбываниюExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SortListDesc + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КлассификаторИзменитьФорму + 47 + true + true + + true + + + КлассификаторИзменитьФормуExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + КлассификаторСправка + 43 + true + true + + true + + + КлассификаторСправкаExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + ValueChoice + КлассификаторВыборЗначения + + + Selection + КлассификаторВыбор + + + BeforeAddRow + КлассификаторПередНачаломДобавления + + + BeforeDeleteRow + КлассификаторПередУдалением + + + BeforeRowChange + КлассификаторПередНачаломИзменения + + + true + true + + true + + КлассификаторSearchString + 69 + + КлассификаторSearchStringExtendedTooltip + 71 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторSearchStringContextMenu + 70 + true + true + + true + + true + + + true + + + + true + true + + true + + КлассификаторViewStatus + 72 + + КлассификаторViewStatusExtendedTooltip + 74 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторViewStatusContextMenu + 73 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + КлассификаторSearchControl + 75 + + КлассификаторSearchControlExtendedTooltip + 77 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторSearchControlContextMenu + 76 + true + true + + true + + true + + SearchControlAddition + + true + + + + КлассификаторExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + + КлассификаторКонтекстноеМеню + 18 + + КлассификаторКонтекстноеМенюИзменить + 35 + true + true + + true + + + КлассификаторКонтекстноеМенюИзменитьExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюНайти + 36 + true + true + + true + + + КлассификаторКонтекстноеМенюНайтиExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюОтменитьПоиск + 37 + true + true + + true + + + КлассификаторКонтекстноеМенюОтменитьПоискExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюСортироватьСписокПоВозрастанию + 38 + true + true + + true + + + КлассификаторКонтекстноеМенюСортироватьСписокПоВозрастаниюExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SortListAsc + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюСортироватьСписокПоУбыванию + 39 + true + true + + true + + + КлассификаторКонтекстноеМенюСортироватьСписокПоУбываниюExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SortListDesc + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюВывестиСписок + 40 + true + true + + true + + + КлассификаторКонтекстноеМенюВывестиСписокExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюКопироватьВБуферОбмена + 41 + true + true + + true + + + КлассификаторКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюВыделитьВсе + 42 + true + true + + true + + + КлассификаторКонтекстноеМенюВыделитьВсеExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + 17:51c99108-107c-43e1-8918-e48835bf2495 + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + true +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + true + true + true + true + + Классификатор.ИндексПиктограммы + + + CommonPicture.ПиктограммыЭлементов + + +
+ None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Классификатор + + <key>ru</key> + <value>Классификатор</value> + + 2 + + ValueTable + + + true + + + true + + + Классификатор.ИндексПиктограммы + + + Код + + <key>ru</key> + <value>Код</value> + + 1 + + String + + 3 + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 2 + + String + + 60 + + + + true + + + true + + + + НаименованиеПолное + + <key>ru</key> + <value>Наименование полное</value> + + 3 + + String + + + + true + + + true + + + + КодАльфа2 + + <key>ru</key> + <value>Код альфа 2</value> + + 4 + + String + + 2 + + + + true + + + true + + + + КодАльфа3 + + <key>ru</key> + <value>Код альфа 3</value> + + 5 + + String + + 3 + + + + true + + + true + + + + ИндексПиктограммы + 7 + + Number + + 2 + + + + true + + + true + + + + УчастникЕАЭС + + <key>ru</key> + <value>Участник ЕАЭС</value> + + 6 + + Boolean + + + true + + + true + + + + МеждународноеНаименование + 8 + + String + + + + true + + + true + + + + + ПоляКлассификатора + 3 + + String + + + + true + + + true + + + + ПредставлениеОбъектаКлассификатора + 4 + + String + + + + true + + + true + + + + РежимВыбора + 1 + + Boolean + + + true + + + true + + + + ЕстьПравоРедактироватьСтраны + 5 + + Boolean + + + true + + + true + + + + РежимДобавления + 6 + + Boolean + + + true + + + true + + + + ТекущаяСтрока + + CatalogRef.СтраныМира + + + + РежимДобавления + + Boolean + + + + + + +
diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Help/ru.html" new file mode 100644 index 00000000..8ab8ee0b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Help/ru.html" @@ -0,0 +1,31 @@ + +

Общероссийский классификатор стран мира (ОКСМ)

+

Общероссийский классификатор стран мира (ОКСМ) входит в состав Единой системы классификации и кодирования технико-экономической и социальной информации (ЕСКК) в Российской Федерации.

+

ОКСМ гармонизирован с Международным стандартом ИСО 3166-97 «Коды для представления наименований стран», разработанным Международной организацией по стандартизации (ИСО), и Межгосударственным классификатором стран мира MK (ИСО 3166) 004-97.

+

ОКСМ предназначен для идентификации стран мира и используется в процессе обмена информацией при решении различных задач.

+

В отличие от стандартов ISO 3166 и ГОСТ 7.67, в ОКСМ, согласно приказу [1] Ростехрегулирования, с 1 января 2009 года входят республики Абхазия и Южная Осетия, которые признаны Россией [2].

+

Структурно классификатор состоит из трёх блоков:

+
  • цифровой идентификации, +
  • наименований, +
  • буквенной идентификации.

Блок цифровой идентификации содержит трёхзначный цифровой код страны мира, построенный с использованием порядкового метода кодирования.

+

Блок наименований включает краткое наименование и полное официальное наименование страны мира. Отсутствие в позиции классификатора полного наименования страны мира означает его совпадение с кратким наименованием.

+

Блок буквенной идентификации стран мира содержит двухзначный (альфа-2) и трёхзначный (альфа-3) буквенные коды, знаками которых являются буквы латинского алфавита. Эти коды предназначены для идентификации государств и зависимых территорий, основных административных образований внутри государств согласно ГОСТ 7.67 и ISO 3166.

+

Цифровой код имеет приоритет перед буквенными кодами, заключающийся в том, что на него не влияют изменения в наименованиях стран мира, которые могут повлечь за собой изменения кодов альфа-2 и альфа-3.

+

Выбор страны

+
  • Выделите страну, нажмите Выбрать.

См. также:

+

+

+

Примечания:

+
  1. Изменение 8/2008 ОКСМ. Принято и введено в действие Приказом Федерального агентства по техническому регулированию и метрологии от 03.12.2008 N 352-ст. Дата введения — 01.01.2009 +
  2. Указ Президента Российской Федерации от 26.08.2008 № 1260 «О признании Республики Абхазия» +
    \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Module.bsl" new file mode 100644 index 00000000..1eab9686 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Module.bsl" @@ -0,0 +1,298 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("РежимОткрытияОкна") Тогда + РежимОткрытияОкна = Параметры.РежимОткрытияОкна + КонецЕсли; + + Параметры.Свойство("РежимДобавления", РежимДобавления); + + Параметры.Свойство("РежимВыбора", РежимВыбора); + Элементы.Классификатор.РежимВыбора = РежимВыбора; + ЗакрыватьПриВыборе = РежимВыбора; + + // Служебные реквизиты + ПоляКлассификатора = "Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3, УчастникЕАЭС, МеждународноеНаименование"; + + ПредставлениеОбъектаКлассификатора = ОбщегоНазначения.ПредставлениеОбъекта(Метаданные.Справочники.СтраныМира); + Если Не ПустаяСтрока(ПредставлениеОбъектаКлассификатора) Тогда + ПредставлениеОбъектаКлассификатора = " (" + ПредставлениеОбъектаКлассификатора + ")"; + КонецЕсли; + + ДанныеКлассификатора = СостояниеКлассификатора(); + Классификатор.Загрузить(ДанныеКлассификатора); + + Фильтр = Классификатор.НайтиСтроки(Новый Структура("Код", Параметры.ТекущаяСтрока.Код)); + Если Фильтр.Количество()>0 Тогда + Элементы.Классификатор.ТекущаяСтрока = Фильтр[0].ПолучитьИдентификатор(); + КонецЕсли; + + Элементы.КлассификаторКонтекстноеМенюИзменить.Видимость = ПравоДоступа("Изменение", Метаданные.Справочники.СтраныМира); + + ЕстьПравоРедактироватьСтраны = ПравоДоступа("Изменение", Метаданные.Справочники.СтраныМира); + Элементы.КлассификаторКонтекстноеМенюИзменить.Видимость = ЕстьПравоРедактироватьСтраны; + Элементы.КлассификаторИзменить.Видимость = ЕстьПравоРедактироватьСтраны; + Элементы.Классификатор.ТолькоПросмотр = НЕ ЕстьПравоРедактироватьСтраны; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыКлассификатор + +&НаКлиенте +Процедура КлассификаторВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Если ВыбраннаяСтрока = Неопределено Или Не ЕстьПравоРедактироватьСтраны Тогда + Возврат; + КонецЕсли; + + Если Не РежимВыбора Тогда + Страна = Классификатор.НайтиПоИдентификатору(ВыбраннаяСтрока); + + Если СтраныНетВСпискеСтран(Страна.Наименование) Тогда + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Добавить страну ""%1"" из классификатора в список стран мира?'"), + Страна.Наименование); + Оповещение = Новый ОписаниеОповещения("ДобавитьСтрану", ЭтотОбъект, ВыбраннаяСтрока); + ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет); + КонецЕсли; + Иначе + Если ТипЗнч(ВыбраннаяСтрока) = Тип("Массив") Тогда + ИдентификаторСтрокиВыбора = ВыбраннаяСтрока[0]; + Иначе + ИдентификаторСтрокиВыбора = ВыбраннаяСтрока; + КонецЕсли; + + ОповеститьОВыбореЭлементаКлассификатора(ИдентификаторСтрокиВыбора); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьСтрану(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = КодВозвратаДиалога.Да Тогда + ОповеститьОВыбореЭлементаКлассификатора(ДополнительныеПараметры); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура КлассификаторВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + ОповеститьОВыбореЭлементаКлассификатора(Значение); +КонецПроцедуры + +&НаКлиенте +Процедура КлассификаторПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; + Если ЕстьПравоРедактироватьСтраны Тогда + ОткрытьФормуЭлементаКлассификатора(Элементы.Классификатор.ТекущиеДанные); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура КлассификаторПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура КлассификаторПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОткрытьФормуЭлементаКлассификатора(ДанныеЗаполнения, ЭтоНовый = Ложь) + + Если ДанныеЗаполнения=Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Основание", Новый Структура(ПоляКлассификатора)); + ЗаполнитьЗначенияСвойств(ПараметрыФормы.Основание, ДанныеЗаполнения); + Если ЭтоНовый Тогда + ПараметрыФормы.Основание.Вставить("Код", "--"); + Иначе + ПараметрыФормы.Вставить("ТолькоПросмотр", Истина); + КонецЕсли; + ПараметрыФормы.Вставить("Заголовок", ДанныеЗаполнения.Наименование + ПредставлениеОбъектаКлассификатора); + + ОткрытьФорму("Справочник.СтраныМира.ФормаОбъекта", ПараметрыФормы, Элементы.Классификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ОповеститьОВыбореЭлементаКлассификатора(ИдентификаторСтрокиВыбора) + + ВсеДанныеСтроки = Классификатор.НайтиПоИдентификатору(ИдентификаторСтрокиВыбора); + Если ВсеДанныеСтроки <> Неопределено Тогда + ДанныеСтроки = Новый Структура(ПоляКлассификатора); + ЗаполнитьЗначенияСвойств(ДанныеСтроки, ВсеДанныеСтроки); + + ДанныеВыбора = ДанныеВыбораЭлементаКлассификатора(ДанныеСтроки, ПоляКлассификатора); + Если ДанныеВыбора.ЭтоНовый Тогда + ОповеститьОСозданииЭлементов(ДанныеВыбора.Ссылка); + ИначеЕсли РежимДобавления И ДанныеВыбора.ДанныеОтличаются Тогда + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("Ссылка", ДанныеВыбора.Ссылка); + ДополнительныеПараметры.Вставить("Данные", ДанныеСтроки); + + Оповещение = Новый ОписаниеОповещения("ПослеВопросаПроОбновление", ЭтотОбъект, ДополнительныеПараметры); + ПоказатьВопрос(Оповещение, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 уже присутствует в списке стран. Перезаполнить?'"), ДанныеСтроки.Наименование), РежимДиалогаВопрос.ДаНет); + Возврат; + КонецЕсли; + + ОповеститьОВыборе(ДанныеВыбора.Ссылка); + КонецЕсли; + +КонецПроцедуры + +// Параметры: +// Результат - КодВозвратаДиалога +// ДополнительныеПараметры - Структура: +// * Ссылка - СправочникСсылка.СтраныМира +// +&НаКлиенте +Процедура ПослеВопросаПроОбновление(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = КодВозвратаДиалога.Да Тогда + ПерезаполнитьДанныеСтраны(ДополнительныеПараметры); + Оповестить("Справочник.СтраныМира.Изменение", ДополнительныеПараметры.Ссылка, ЭтотОбъект); + КонецЕсли; + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОповеститьОСозданииЭлементов(Ссылка) + ОповеститьОЗаписиНового(Ссылка); + Оповестить("Справочник.СтраныМира.Изменение", Ссылка, ЭтотОбъект); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ДанныеВыбораЭлементаКлассификатора(Знач СведенияОСтране, ПоляКлассификатора) + + Результат = Новый Структура; + Результат.Вставить("ЭтоНовый", Ложь); + Результат.Вставить("Ссылка", Неопределено); + Результат.Вставить("Код", СведенияОСтране.Код); + Результат.Вставить("ДанныеОтличаются", Ложь); + + // Ищем только по коду, так как в классификаторе все коды заданы. + Ссылка = Справочники.СтраныМира.НайтиПоКоду(СведенияОСтране.Код); + Результат.ЭтоНовый = Не ЗначениеЗаполнено(Ссылка); + Если Результат.ЭтоНовый Тогда + + Страна = Справочники.СтраныМира.СоздатьЭлемент(); + ЗаполнитьЗначенияСвойств(Страна, СведенияОСтране); + Страна.Записать(); + Ссылка = Страна.Ссылка; + + Иначе + + ЗначенияСправочника = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, ПоляКлассификатора); + Для каждого ЗначениеКлассификатора Из СведенияОСтране Цикл + Если ЗначениеКлассификатора.Значение <> ЗначенияСправочника[ЗначениеКлассификатора.Ключ] Тогда + Результат.ДанныеОтличаются = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + КонецЕсли; + + Результат.Ссылка = Ссылка; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ПерезаполнитьДанныеСтраны(Знач СведенияОСтране) + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СтраныМира"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", СведенияОСтране.Ссылка); + + НачатьТранзакцию(); + Попытка + + Блокировка.Заблокировать(); + Страна = СведенияОСтране.Ссылка.ПолучитьОбъект(); + Если Страна = Неопределено Тогда // объект может быть уже удален в других сеансах + ОтменитьТранзакцию(); + Возврат; + КонецЕсли; + ЗаблокироватьДанныеДляРедактирования(СведенияОСтране.Ссылка); + + ЗаполнитьЗначенияСвойств(Страна, СведенияОСтране.Данные); + Страна.Записать(); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + + КонецПопытки; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СостояниеКлассификатора() + + Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") = Неопределено Тогда + Возврат Новый ТаблицаЗначений; + КонецЕсли; + + МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами"); + Данные = МодульРаботаСАдресами.ТаблицаКлассификатора(); + + Данные.Колонки.Добавить("ИндексПиктограммы", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0))); + Данные.ЗаполнитьЗначения(8, "ИндексПиктограммы"); + + Запрос = Новый Запрос("ВЫБРАТЬ Код ИЗ Справочник.СтраныМира ГДЕ Предопределенный"); + Для Каждого СтрокаПредопределенного Из Запрос.Выполнить().Выгрузить() Цикл + СтрокаДанных = Данные.Найти(СтрокаПредопределенного.Код, "Код"); + Если СтрокаДанных<>Неопределено Тогда + СтрокаДанных.ИндексПиктограммы = 5; + КонецЕсли; + КонецЦикла; + + Возврат Данные; +КонецФункции + +&НаСервереБезКонтекста +Функция СтраныНетВСпискеСтран(Страна) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ СтраныМира.Ссылка + |ИЗ Справочник.СтраныМира КАК СтраныМира + |ГДЕ СтраныМира.Наименование = &Наименование"; + + Запрос.УстановитьПараметр("Наименование", Страна); + РезультатЗапроса = Запрос.Выполнить().Выбрать(); + + Если РезультатЗапроса.Следующий() Тогда + Возврат Ложь; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..c96fe664 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1002 @@ + + + + ГруппаПользовательскихНастроек + 36 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 12 + true + true + false + + + + Код + 6 + true + true + + true + + + + Список.Code + + + + КодExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 5 + true + true + + + + КодАльфа2 + 8 + true + true + + true + + + + Список.КодАльфа2 + + + + КодАльфа2ExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + + КодАльфа2КонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 10 + true + true + + + + КодАльфа3 + 10 + true + true + + true + + + + Список.КодАльфа3 + + + + КодАльфа3ExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + КодАльфа3КонтекстноеМеню + 11 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 10 + true + true + + + + УчастникЕАЭС + 57 + true + + true + + + + Список.УчастникЕАЭС + + + + УчастникЕАЭСРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + УчастникЕАЭСКонтекстноеМеню + 58 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + НаименованиеПолное + 12 + + <key>ru</key> + <value>Полное наименование</value> + + true + true + + true + + + + Список.НаименованиеПолное + + + + НаименованиеПолноеExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеПолноеКонтекстноеМеню + 13 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 33 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 34 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + Top + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + ChoiceProcessing + СписокОбработкаВыбора + + + NewWriteProcessing + СписокОбработкаЗаписиНового + + + true + true + + true + + СписокСтрокаПоиска + 38 + + СписокСтрокаПоискаРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 39 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 41 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 42 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 44 + + СписокУправлениеПоискомРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 45 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
    + + ФормаКоманднаяПанель + -1 + + СписокВыбрать + 16 + true + true + + true + + + СписокВыбратьExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Choose + Auto + true + true + UserCmds + Auto + + + Создать + 47 + + СписокСоздать + 55 + + <key>ru</key> + <value>Добавить вручную</value> + + true + true + + true + + + СписокСоздатьРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Create + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокВыбратьИзКлассификатора + 53 + true + true + + true + + + СписокВыбратьИзКлассификатораРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыбратьИзКлассификатора + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Создать</value> + + + СоздатьРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКоманды + 15 + true + true + + true + + + <key>ru</key> + <value>Команды списка</value> + + + СписокКомандыExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + + СписокКлассификатор + 17 + true + true + + true + + + СписокКлассификаторExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьКлассификатор + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокИзменитьФорму + 19 + true + true + + true + + + СписокИзменитьФормуExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + СписокСправка + 20 + true + true + + true + + + СписокСправкаExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Create + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
    true
    + + Catalog.СтраныМира + true + true + true + true + +
    + + ОткрытьФормуКлассификатора + 2 + + Boolean + + + true + + + true + + + + РежимВыбора + 3 + + Boolean + + + true + + + true + + + + ИдентификаторЭлементаОтбораСсылки + 4 + + + true + + + true + + + + ДанныеКлассификатораДоступны + 5 + + Boolean + + + true + + + true + + + + ОткрытьКлассификатор + + <key>ru</key> + <value>Классификатор стран (ОКСМ)</value> + + 2 + + ru + Открыть классификатор + + + true + + + + ОткрытьКлассификатор + + + DontUse + + + ВыбратьИзКлассификатора + + <key>ru</key> + <value>Добавить из классификатора...</value> + + 1 + + ru + Создать страну выбрав из классификатора стран + + + true + + + StdPicture.CreateListItem + + + + ВыбратьИзКлассификатора + + + TextPicture + DontUse + + + ТолькоДанныеКлассификатора + + Boolean + + true + + + РазрешитьДанныеКлассификатора + + true + + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..9ea01828 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,223 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Инициализируем внутренние флаги. + МожноДобавлятьВСправочник = УправлениеКонтактнойИнформациейСлужебный.ЕстьПравоДобавления(); + + Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") = Неопределено Тогда + ДанныеКлассификатораДоступны = Ложь; + ИначеЕсли Параметры.РазрешитьДанныеКлассификатора = Неопределено Тогда + ДанныеКлассификатораДоступны = Истина; + Иначе + ТипБулево = Новый ОписаниеТипов("Булево"); + ДанныеКлассификатораДоступны = ТипБулево.ПривестиЗначение(Параметры.РазрешитьДанныеКлассификатора); + КонецЕсли; + + ТолькоДанныеКлассификатора = Параметры.ТолькоДанныеКлассификатора; + Параметры.Свойство("РежимВыбора", РежимВыбора); + + // Разрешаем элементы + Элементы.Список.РежимВыбора = РежимВыбора; + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СписокВыбрать", "КнопкаПоУмолчанию", РежимВыбора); + Элементы.Создать.Видимость = МожноДобавлятьВСправочник; + + Если Не ДанныеКлассификатораДоступны Тогда + // Показываем только элементы справочника. + Элементы.СписокКлассификатор.Видимость = Ложь; + // Кнопки классификатора скрываем. + Элементы.СписокВыбратьИзКлассификатора.Видимость = Ложь; + Элементы.СписокКлассификатор.Видимость = Ложь; + + Если МожноДобавлятьВСправочник Тогда + Элементы.СписокСоздать.ТолькоВоВсехДействиях = Ложь; + Элементы.СписокСоздать.КнопкаПоУмолчанию = Не РежимВыбора; + Элементы.СписокСоздать.Заголовок = ""; + КонецЕсли; + + Возврат; + КонецЕсли; + + Если РежимВыбора Тогда + Если ТолькоДанныеКлассификатора Тогда + Если МожноДобавлятьВСправочник Тогда + // Выбор только стран классификатора. + ОткрытьФормуКлассификатора = Истина + + Иначе + // Показываем только пересечение справочника и классификатора. + УстановитьОтборПересеченияСКлассификатором(); + // Кнопки классификатора скрываем. + Элементы.СписокВыбратьИзКлассификатора.Видимость = Ложь; + Элементы.СписокКлассификатор.Видимость = Ложь; + КонецЕсли; + + Иначе + Если МожноДобавлятьВСправочник Тогда + // Показываем справочник и кнопку выбора из классификатора (установки по умолчанию). + Иначе + // Кнопки классификатора скрываем. + Элементы.СписокВыбратьИзКлассификатора.Видимость = Ложь; + Элементы.СписокКлассификатор.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОткрытьФормуКлассификатора Тогда + // Выбор только стран классификатора, открываем его форму для выбора. + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("РежимВыбора", Истина); + ПараметрыОткрытия.Вставить("ЗакрыватьПриВыборе", ЗакрыватьПриВыборе); + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + ПараметрыОткрытия.Вставить("РежимОткрытияОкна", РежимОткрытияОкна); + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + + ПоказатьКлассификатор(ПараметрыОткрытия, ВладелецФормы); + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "Справочник.СтраныМира.Изменение" Тогда + ОбновитьОтображениеСпискаСтран(); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Если РежимВыбора Тогда + ОповеститьОВыборе(ВыбранноеЗначение); // Выбор из классификатора + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка) + ОбновитьОтображениеСпискаСтран(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОткрытьКлассификатор(Команда) + + // Открываем на просмотр + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + + ПоказатьКлассификатор(ПараметрыОткрытия, Элементы.Список); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьИзКлассификатора(Команда) + + // Открываем для выбора + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("РежимВыбора", Истина); + ПараметрыОткрытия.Вставить("ЗакрыватьПриВыборе", ЗакрыватьПриВыборе); + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + ПараметрыОткрытия.Вставить("РежимОткрытияОкна", РежимОткрытияОкна); + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + ПараметрыОткрытия.Вставить("РежимДобавления", Истина); + + ПоказатьКлассификатор(ПараметрыОткрытия, Элементы.Список, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПоказатьКлассификатор(ПараметрыОткрытия, ВладелецФормы, РежимОткрытияОкна = Неопределено); + + Если Не ДанныеКлассификатораДоступны Тогда + Возврат; + КонецЕсли; + + МодульРаботаСАдресамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСАдресамиКлиент"); + МодульРаботаСАдресамиКлиент.ПоказатьКлассификатор( ПараметрыОткрытия, ВладелецФормы, РежимОткрытияОкна); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьОтображениеСпискаСтран() + + Если ИдентификаторЭлементаОтбораСсылки <> Неопределено Тогда + // Был наложен дополнительный отбор, который надо обновить. + УстановитьОтборПересеченияСКлассификатором(); + КонецЕсли; + + Элементы.Список.Обновить(); +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтборПересеченияСКлассификатором() + ОтборСписка = Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор; + + Если ИдентификаторЭлементаОтбораСсылки=Неопределено Тогда + ЭлементОтбора = ОтборСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + + ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; + ЭлементОтбора.Использование = Истина; + + ИдентификаторЭлементаОтбораСсылки = ОтборСписка.ПолучитьИдентификаторПоОбъекту(ЭлементОтбора); + Иначе + ЭлементОтбора = ОтборСписка.ПолучитьОбъектПоИдентификатору(ИдентификаторЭлементаОтбораСсылки); + КонецЕсли; + + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | Код, Наименование + |ПОМЕСТИТЬ + | Классификатор + |ИЗ + | &Классификатор КАК Классификатор + |ИНДЕКСИРОВАТЬ ПО + | Код, Наименование + |;//////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | Ссылка + |ИЗ + | Справочник.СтраныМира КАК СтраныМира + |ВНУТРЕННЕЕ СОЕДИНЕНИЕ + | Классификатор КАК Классификатор + |ПО + | СтраныМира.Код = Классификатор.Код + | И СтраныМира.Наименование = Классификатор.Наименование + |"); + + МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами"); + Запрос.УстановитьПараметр("Классификатор", МодульРаботаСАдресами.ТаблицаКлассификатора()); + ЭлементОтбора.ПравоеЗначение = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..9ba2dee4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,495 @@ + + + + ГруппаНаименование + 11 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + Наименование_КонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + Код_КонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование</value> + + + ГруппаНаименованиеРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + + НаименованиеПолное + 5 + + <key>ru</key> + <value>Полное наименование</value> + + true + true + + true + + + + Объект.НаименованиеПолное + + + + НаименованиеПолноеExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеПолное_КонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + МеждународноеНаименование + 23 + true + true + + true + + + + Объект.МеждународноеНаименование + + + + МеждународноеНаименованиеРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + МеждународноеНаименованиеКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаАльфаКодов + 12 + + КодАльфа2 + 7 + true + true + + true + + + + Объект.КодАльфа2 + + + + КодАльфа2ExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + КодАльфа2_КонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 2 + true + true + false + true + true + true + + + + КодАльфа3 + 9 + true + true + + true + + + + Объект.КодАльфа3 + + + + КодАльфа3ExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + + КодАльфа3_КонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 3 + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Альфа кодов</value> + + + ГруппаАльфаКодовExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + УчастникЕАЭС + 20 + true + true + + true + + + + Объект.УчастникЕАЭС + + + + ru + Страна является участником Евразийского экономического союза. + + Button + + УчастникЕАЭСРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + УчастникЕАЭСКонтекстноеМеню + 21 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Форма_КоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.СтраныМира + + + true + + + true + +
    true
    + true +
    + + Заголовок + + String + + + + + + + + + + AfterWrite + ПослеЗаписи + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..b9668886 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,31 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Предопределенный Тогда + Элементы.ГруппаНаименование.ТолькоПросмотр = Истина; + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.Заголовок) Тогда + Заголовок = Параметры.Заголовок; + АвтоЗаголовок = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Справочник.СтраныМира.Изменение", Объект.Ссылка, ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..6ce85c2d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Help/ru.html" @@ -0,0 +1,28 @@ + +

    Предназначен для хранения информации о странах мира, таможенных союзах стран, либо регионах или частях стран. Данные справочника используются, например, при указании страны адреса контактной информации, страны происхождения товара.

    +

    Открывается по команде Страны мира раздела Справочники. В списке можно хранить только несколько необходимых для работы стран.

    +

    Может быть заполнен как вручную, так и по данным общероссийского классификатора стран мира (ОКСМ). Классификатор стран мира открывается по соответствующей команде меню Еще.

    +

    В списке выводится информация:

    +
    • Поля Наименование и Полное наименование предназначены для хранения соответственно краткого и полного официального наименования страны мира. Для представления страны, в том числе и при печати, будет использовано по умолчанию краткое наименование. Отсутствие в позиции списка полного наименования страны мира означает его совпадение с кратким наименованием. +
    • +
      Поле Код содержит трёхзначный цифровой код страны мира, позволяющий однозначно идентифицировать страну согласно ОКСМ. Для стран, таможенных союзов и прочих данных, не относящихся к классификатору стран (например, Евросоюз), в это поле рекомендуется вводить "--".
      +
    • +
      Поля Код Альфа-2 и Код Альфа-3 содержат двухзначный (альфа-2) и трёхзначный (альфа-3) коды для идентификации государств и зависимых территорий, основных административных образований внутри государств, согласно ГОСТ 7.67 и ISO 3166
      +
    • +
      Участник ЕАЭС - если страна является участником ЕАЭС, то в соответствующей колонке проставляется флажок.

    Для удобства работы со списком можно добавлять страны в список из классификатора по мере необходимости. В случае необходимости в списке можно отредактировать страну, если данные о ней изменились, и классификатор еще не обновляется.

    +

    Добавление страны из классификатора

    +
    • Нажмите Добавить из классификатора.

    Ввод вручную

    +

    В некоторых случаях необходимо ввести какую-нибудь область, или содружество стран, например, Евросоюз.

    +
    • Не рекомендуется вводить вручную страны, имеющиеся в классификаторе, так как ручной ввод увеличивает возможность ошибок. +
    • Для того чтобы добавить новую страну в список стран, выполните команду Еще - Добавить вручную. +
    • Заполните необходимые поля. Вместо цифрового кода автоматически предлагается значение "--", так как это значение используется в печатных формах для стран, отсутствующих в классификаторе (см., например, Письмо Минфина России от 10.02.12 № 03-07-09/06).

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/ManagerModule.bsl" new file mode 100644 index 00000000..1766ad68 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/ManagerModule.bsl" @@ -0,0 +1,298 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("*"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + Если Не СтандартнаяОбработка Тогда + // Обрабатывается в другом месте. + Возврат; + + ИначеЕсли Не Параметры.Свойство("РазрешитьДанныеКлассификатора") Тогда + // Поведение по умолчанию, подбор только справочника. + Возврат; + + ИначеЕсли Истина <> Параметры.РазрешитьДанныеКлассификатора Тогда + // Подбор классификатора отключен, поведение по умолчанию. + Возврат; + КонецЕсли; + + УправлениеКонтактнойИнформациейСлужебный.ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Определяет данные страны по справочнику стран или классификатору стран. +// Рекомендуется использовать УправлениеКонтактнойИнформацией.ДанныеСтраныМира. +// +// Параметры: +// КодСтраны - Строка +// - Число - код страны по классификатору. Если не указано, то поиск по коду не производится. +// Наименование - Строка - наименование страны. Если не указано, то поиск по наименованию не производится. +// +// Возвращаемое значение: +// Структура: +// * Код - Строка +// * Наименование - Строка +// * НаименованиеПолное - Строка +// * КодАльфа2 - Строка +// * КодАльфа3 - Строка +// * Ссылка - СправочникаСсылка.СтраныМира +// Неопределено - страна не существует. +// +Функция ДанныеСтраныМира(Знач КодСтраны = Неопределено, Знач Наименование = Неопределено) Экспорт + Возврат УправлениеКонтактнойИнформацией.ДанныеСтраныМира(КодСтраны, Наименование); +КонецФункции + +// Определяет данные страны по классификатору стран мира. +// Рекомендуется использовать УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду. +// +// Параметры: +// Код - Строка +// - Число - код страны по классификатору. +// ТипКода - Строка - Варианты: КодСтраны (по умолчанию), Альфа2, Альфа3. +// +// Возвращаемое значение: +// Структура: +// * Код - Строка +// * Наименование - Строка +// * НаименованиеПолное - Строка +// * КодАльфа2 - Строка +// * КодАльфа3 - Строка +// Неопределено - страна не существует. +// +Функция ДанныеКлассификатораСтранМираПоКоду(Знач Код, ТипКода = "КодСтраны") Экспорт + Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду(Код, ТипКода); +КонецФункции + +// Определяет данные страны по классификатору. +// Рекомендуется использовать УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоНаименованию. +// +// Параметры: +// Наименование - Строка - наименование страны. +// +// Возвращаемое значение: +// Структура: +// * Код - Строка +// * Наименование - Строка +// * НаименованиеПолное - Строка +// * КодАльфа2 - Строка +// * КодАльфа3 - Строка +// Неопределено - страна не существует. +// +Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт + Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоНаименованию(Наименование); +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "Россия"; + Элемент.Код = "643"; + Элемент.Наименование = НСтр("ru = 'РОССИЯ'", ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.НаименованиеПолное = НСтр("ru = 'Российская Федерация'", ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.КодАльфа2 = "RU"; + Элемент.КодАльфа3 = "RUS"; + Элемент.УчастникЕАЭС = Истина; + Элемент.МеждународноеНаименование = НСтр("ru = 'The Russian Federation'", ОбщегоНазначения.КодОсновногоЯзыка()); + +КонецПроцедуры + +#Область ОбновлениеИнформационнойБазы + +// Регистрирует к обработке страны мира. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + // Обновление мультиязычных строк, если они были изменены. + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("РежимОбновления", "МультиязычныеСтроки"); + + ОбновлениеИнформационнойБазы.ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры, + Метаданные.Справочники.СтраныМира, ДополнительныеПараметры); + + КонецЕсли; + + СписокСтран = УправлениеКонтактнойИнформацией.СтраныУчастникиЕАЭС(); + + НоваяСтрока = СписокСтран.Добавить(); + НоваяСтрока.Код = "203"; + НоваяСтрока.Наименование = НСтр("ru = 'ЧЕШСКАЯ РЕСПУБЛИКА'"); + НоваяСтрока.КодАльфа2 = "CZ"; + НоваяСтрока.КодАльфа3 = "CZE"; + + НоваяСтрока = СписокСтран.Добавить(); + НоваяСтрока.Код = "270"; + НоваяСтрока.Наименование = НСтр("ru = 'ГАМБИЯ'"); + НоваяСтрока.КодАльфа2 = "GM"; + НоваяСтрока.КодАльфа3 = "GMB"; + НоваяСтрока.НаименованиеПолное = НСтр("ru = 'Республика Гамбия'"); + + НоваяСтрока = СписокСтран.Добавить(); + НоваяСтрока.Код = "807"; + НоваяСтрока.Наименование = НСтр("ru = 'РЕСПУБЛИКА МАКЕДОНИЯ'"); + НоваяСтрока.КодАльфа2 = "MK"; + НоваяСтрока.КодАльфа3 = "MKD"; + НоваяСтрока.НаименованиеПолное = НСтр("ru = 'Республика Македония'"); + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | СписокСтран.Код КАК Код, + | СписокСтран.Наименование КАК Наименование, + | СписокСтран.КодАльфа2 КАК КодАльфа2, + | СписокСтран.КодАльфа3 КАК КодАльфа3, + | СписокСтран.НаименованиеПолное КАК НаименованиеПолное + |ПОМЕСТИТЬ СписокСтран + |ИЗ + | &СписокСтран КАК СписокСтран + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | СтраныМира.Ссылка КАК Ссылка + |ИЗ + | СписокСтран КАК СписокСтран + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныМира + | ПО (СтраныМира.Код = СписокСтран.Код) + | И (СтраныМира.Наименование = СписокСтран.Наименование) + | И (СтраныМира.КодАльфа2 = СписокСтран.КодАльфа2) + | И (СтраныМира.КодАльфа3 = СписокСтран.КодАльфа3) + | И (СтраныМира.НаименованиеПолное = СписокСтран.НаименованиеПолное)"; + + Запрос.УстановитьПараметр("СписокСтран", СписокСтран); + РезультатЗапроса = Запрос.Выполнить().Выгрузить(); + СтраныКОбработке = РезультатЗапроса.ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, СтраныКОбработке); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + СтранаМираСсылка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.СтраныМира"); + НастройкиОбновления = Неопределено; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + НастройкиОбновления = МодульМультиязычностьСервер.НастройкиОбновлениеПредопределенныхДанных(Метаданные.Справочники.СтраныМира); + КонецЕсли; + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + + Пока СтранаМираСсылка.Следующий() Цикл + Попытка + + ДанныеКлассификатора = УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду(СтранаМираСсылка.Ссылка.Код); + + Если ДанныеКлассификатора <> Неопределено Тогда + СтранаМира = СтранаМираСсылка.Ссылка.ПолучитьОбъект(); + ЗаполнитьЗначенияСвойств(СтранаМира, ДанныеКлассификатора); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(СтранаМира); + Иначе + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(СтранаМираСсылка.Ссылка); + КонецЕсли; + + // Обновление наименований + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + Если НастройкиОбновления.ЛокализуемыеРеквизитыОбъекта.Количество() > 0 Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ОбновитьМультиязычныеСтрокиПредопределенногоЭлемента(СтранаМираСсылка, НастройкиОбновления); + КонецЕсли; + КонецЕсли; + + ОбъектовОбработано = ОбъектовОбработано + 1; + + Исключение + // Если не удалось обработать страну мира, повторяем попытку снова. + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать страну: %1 по причине: %2'"), + СтранаМираСсылка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.Справочники.СтраныМира, СтранаМираСсылка.Ссылка, ТекстСообщения); + КонецПопытки; + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.СтраныМира"); + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые страны мира(пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.Справочники.СтраныМира,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию стран мира: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/ObjectModule.bsl" new file mode 100644 index 00000000..fca1a896 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/ObjectModule.bsl" @@ -0,0 +1,200 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Или ДополнительныеСвойства.Свойство("НеПроверятьУникальность") Тогда + Возврат; + КонецЕсли; + + Если Предопределенный И Не ЭтоНовый() Тогда + + ПроверитьИзменениеПредопределенногоЭлемента(); + + КонецЕсли; + + Если Не ПроверитьЗаполнение() Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + СписокОшибок = ПроверитьУникальностьЭлементов(); + + Если СписокОшибок.Количество() > 0 Тогда + + Отказ = Истина; + Для каждого ОписаниеОшибки Из СписокОшибок Цикл + ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки.ТекстСообщения,, ОписаниеОшибки.ИмяПоля); + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) + Если ДанныеЗаполнения<>Неопределено Тогда + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Контролирует уникальность элемента в базе. +// В случае выявления дублей кодов или наименование возвращает их список. +// +// Возвращаемое значение: +// Массив из см. НовыйСообщениеОбОшибке - если в программе были найдены дубли, то содержит описание элементов +// существующих в базе. +// +Функция ПроверитьУникальностьЭлементов() + + Результат = Новый Массив; + + // Нецифровые коды пропускаем + ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 0, ДопустимыйЗнак.Неотрицательный)); + Если Код= "0" Или Код = "00" Или Код = "000" Тогда + КодПоиска = "000"; + Иначе + КодПоиска = Формат(ТипЧисло.ПривестиЗначение(Код), "ЧЦ=3; ЧН=; ЧВН="); + КонецЕсли; + + Запрос = Новый Запрос(" + |ВЫБРАТЬ ПЕРВЫЕ 10 + | Код КАК Код, + | Наименование КАК Наименование, + | НаименованиеПолное КАК НаименованиеПолное, + | КодАльфа2 КАК КодАльфа2, + | КодАльфа3 КАК КодАльфа3, + | УчастникЕАЭС КАК УчастникЕАЭС, + | Ссылка КАК Ссылка + |ИЗ + | Справочник.СтраныМира + |ГДЕ + | (Код = &Код + | ИЛИ Наименование = &Наименование + | ИЛИ КодАльфа2 = &КодАльфа2 + | ИЛИ КодАльфа3 = &КодАльфа3 + | ИЛИ НаименованиеПолное = &НаименованиеПолное) + | И Ссылка <> &Ссылка + |"); + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.УстановитьПараметр("Код", КодПоиска); + Запрос.УстановитьПараметр("Наименование", Наименование); + Запрос.УстановитьПараметр("НаименованиеПолное", НаименованиеПолное); + Запрос.УстановитьПараметр("КодАльфа2", КодАльфа2); + Запрос.УстановитьПараметр("КодАльфа3", КодАльфа3); + + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат Результат; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + + Сообщение = НовыйСообщениеОбОшибке(); + Если СтрСравнить(Выборка.Код, Код) = 0 Тогда + + Сообщение.ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'С кодом %1 уже существует страна %2. Измените код или используйте уже существующие данные.'"), + Код, Выборка.Наименование); + Сообщение.ИмяПоля = "Объект.Код"; + + ИначеЕсли СтрСравнить(Выборка.Наименование, Наименование) = 0 Тогда + + Сообщение.ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Страна с наименованием %1 уже существует. Измените наименование или используйте уже существующие данные.'"), + Выборка.Наименование); + Сообщение.ИмяПоля = "Объект.Наименование"; + + ИначеЕсли ЗначениеЗаполнено(НаименованиеПолное) + И СтрСравнить(Выборка.НаименованиеПолное, НаименованиеПолное) = 0 Тогда + + Сообщение.ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Уже существует страна %2 с полным наименованием %1. Измените полное наименование или используйте уже существующие данные.'"), + НаименованиеПолное, Выборка.Наименование); + Сообщение.ИмяПоля = "Объект.НаименованиеПолное"; + + ИначеЕсли ЗначениеЗаполнено(КодАльфа2) + И СтрСравнить(Выборка.КодАльфа2, КодАльфа2) = 0 Тогда + + Сообщение.ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'С кодом Альфа-2 %1 уже существует страна %2. Измените код Альфа-2 или используйте уже существующие данные.'"), + КодАльфа2, Выборка.Наименование); + Сообщение.ИмяПоля = "Объект.КодАльфа2"; + + ИначеЕсли ЗначениеЗаполнено(КодАльфа3) + И СтрСравнить(Выборка.КодАльфа3, КодАльфа3) = 0 Тогда + + Сообщение.ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'С кодом Альфа-3 %1 уже существует страна %2. Измените код Альфа-3 или используйте уже существующие данные.'"), + КодАльфа3, Выборка.Наименование); + Сообщение.ИмяПоля = "Объект.КодАльфа3"; + + КонецЕсли; + + Если ЗначениеЗаполнено(Сообщение.ИмяПоля) Тогда + Результат.Добавить(Сообщение); + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Возвращаемое значение: +// Структура: +// ИмяПоля - Строка +// ТекстСообщения - Строка +// +Функция НовыйСообщениеОбОшибке() + + Результат = Новый Структура; + Результат.Вставить("ИмяПоля", ""); + Результат.Вставить("ТекстСообщения", ""); + + Возврат Результат; + +КонецФункции + +Процедура ПроверитьИзменениеПредопределенногоЭлемента() + + ПредыдущиеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Код, Наименование"); + Если СтрСравнить(ПредыдущиеЗначения.Наименование, Наименование) <> 0 Тогда + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не допускается изменение наименования для страны %1'"), ПредыдущиеЗначения.Наименование); + ВызватьИсключение ТекстСообщения; + + КонецЕсли; + + Если СтрСравнить(ПредыдущиеЗначения.Код, Код) <> 0 Тогда + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не допускается изменение кода для страны %1'"), ПредыдущиеЗначения.Наименование); + ВызватьИсключение ТекстСообщения; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Templates/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Template.txt" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Templates/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Template.txt" new file mode 100644 index 00000000..6fb37fe8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/Templates/\320\232\320\273\320\260\321\201\321\201\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200/Template.txt" @@ -0,0 +1,2590 @@ + + + Наименование + + xs:string + + 60 + Variable + + + + + КодАльфа2 + + xs:string + + 2 + Variable + + + + + КодАльфа3 + + xs:string + + 3 + Variable + + + + + Код + + xs:string + + 3 + Variable + + + + + НаименованиеПолное + + xs:string + + 100 + Variable + + + + + УчастникЕАЭС + + xs:boolean + + + + Неактуальный + + xs:boolean + + + + МеждународноеНаименование + + xs:string + + 100 + Variable + + + + + Код + + + Наименование + + + АБХАЗИЯ + AB + ABH + 895 + Республика Абхазия + false + false + Abkhazia + + + АВСТРАЛИЯ + AU + AUS + 036 + + false + false + Australia + + + АВСТРИЯ + AT + AUT + 040 + Австрийская Республика + false + false + Austria + + + АЗЕРБАЙДЖАН + AZ + AZE + 031 + Республика Азербайджан + false + false + Azerbaijan + + + АЛБАНИЯ + AL + ALB + 008 + Республика Албания + false + false + Albania + + + АЛЖИР + DZ + DZA + 012 + Алжирская Народная Демократическая Республика + false + false + Algeria + + + АМЕРИКАНСКОЕ САМОА + AS + ASM + 016 + + false + false + American Samoa + + + АНГИЛЬЯ + AI + AIA + 660 + + false + false + Anguilla + + + АНГОЛА + AO + AGO + 024 + Республика Ангола + false + false + Angola + + + АНДОРРА + AD + AND + 020 + Княжество Андорра + false + false + Andorra + + + АНТАРКТИДА + AQ + ATA + 010 + + false + false + Antarctica + + + АНТИГУА И БАРБУДА + AG + ATG + 028 + + false + false + Antigua and Barbuda + + + АРГЕНТИНА + AR + ARG + 032 + Аргентинская Республика + false + false + Argentina + + + АРМЕНИЯ + AM + ARM + 051 + Республика Армения + true + false + Armenia + + + АРУБА + AW + ABW + 533 + + false + false + Aruba + + + АФГАНИСТАН + AF + AFG + 004 + Переходное Исламское Государство Афганистан + false + false + Afghanistan + + + БАГАМЫ + BS + BHS + 044 + Содружество Багамы + false + false + The Bahamas + + + БАНГЛАДЕШ + BD + BGD + 050 + Народная Республика Бангладеш + false + false + Bangladesh + + + БАРБАДОС + BB + BRB + 052 + + false + false + Barbados + + + БАХРЕЙН + BH + BHR + 048 + Королевство Бахрейн + false + false + Bahrain + + + БЕЛАРУСЬ + BY + BLR + 112 + Республика Беларусь + true + false + Belarus + + + БЕЛИЗ + BZ + BLZ + 084 + + false + false + Belize + + + БЕЛЬГИЯ + BE + BEL + 056 + Королевство Бельгии + false + false + Belgium + + + БЕНИН + BJ + BEN + 204 + Республика Бенин + false + false + Benin + + + БЕРМУДЫ + BM + BMU + 060 + + false + false + Bermuda + + + БОЛГАРИЯ + BG + BGR + 100 + Республика Болгария + false + false + Bulgaria + + + БОЛИВИЯ, МНОГОНАЦИОНАЛЬНОЕ ГОСУДАРСТВО + BO + BOL + 068 + Многонациональное Государство Боливия + false + false + Plurinational State Of Bolivia + + + БОНЭЙР, СИНТ-ЭСТАТИУС И САБА + BQ + BES + 535 + + false + false + Bonaire, Sint Eustatius and Saba + + + БОСНИЯ И ГЕРЦЕГОВИНА + BA + BIH + 070 + + false + false + Bosnia and Herzegovina + + + БОТСВАНА + BW + BWA + 072 + Республика Ботсвана + false + false + Botswana + + + БРАЗИЛИЯ + BR + BRA + 076 + Федеративная Республика Бразилия + false + false + Brazil + + + БРИТАНСКАЯ ТЕРРИТОРИЯ В ИНДИЙСКОМ ОКЕАНЕ + IO + IOT + 086 + + false + false + The British Indian Ocean Territory + + + БРУНЕЙ-ДАРУССАЛАМ + BN + BRN + 096 + + false + false + Brunei Darussalam + + + БУРКИНА-ФАСО + BF + BFA + 854 + + false + false + Burkina Faso + + + БУРУНДИ + BI + BDI + 108 + Республика Бурунди + false + false + Burundi + + + БУТАН + BT + BTN + 064 + Королевство Бутан + false + false + Bhutan + + + ВАНУАТУ + VU + VUT + 548 + Республика Вануату + false + false + Vanuatu + + + ВЕНГРИЯ + HU + HUN + 348 + Венгрия + false + false + Hungary + + + ВЕНЕСУЭЛА БОЛИВАРИАНСКАЯ РЕСПУБЛИКА + VE + VEN + 862 + Боливарианская Республика Венесуэла + false + false + Bolivarian Republic Of Venezuela + + + ВИРГИНСКИЕ ОСТРОВА (БРИТАНСКИЕ) + VG + VGB + 092 + Британские Виргинские острова + false + false + British Virgin Islands + + + ВИРГИНСКИЕ ОСТРОВА (США) + VI + VIR + 850 + Виргинские острова Соединенных Штатов + false + false + U.s. Virgin Islands + + + ТИМОР-ЛЕСТЕ + TL + TLS + 626 + Демократическая Республика Тимор-Лесте + false + false + Timor-Leste + + + ВЬЕТНАМ + VN + VNM + 704 + Социалистическая Республика Вьетнам + false + false + Viet Nam + + + ГАБОН + GA + GAB + 266 + Габонская Республика + false + false + Gabon + + + ГАИТИ + HT + HTI + 332 + Республика Гаити + false + false + Haiti + + + ГАЙАНА + GY + GUY + 328 + Кооперативная Республика Гайана + false + false + Guyana + + + ГАМБИЯ + GM + GMB + 270 + Исламская Республика Гамбия + false + false + The Gambia + + + ГАНА + GH + GHA + 288 + Республика Гана + false + false + Ghana + + + ГВАДЕЛУПА + GP + GLP + 312 + + false + false + Guadeloupe + + + ГВАТЕМАЛА + GT + GTM + 320 + Республика Гватемала + false + false + Guatemala + + + ГВИНЕЯ + GN + GIN + 324 + Гвинейская Республика + false + false + Guinea + + + ГВИНЕЯ-БИСАУ + GW + GNB + 624 + Республика Гвинея-Бисау + false + false + Guinea-Bissau + + + ГЕРМАНИЯ + DE + DEU + 276 + Федеративная Республика Германия + false + false + Germany + + + ГЕРНСИ + GG + GGY + 831 + + false + false + Guernsey + + + ГИБРАЛТАР + GI + GIB + 292 + + false + false + Gibraltar + + + ГОНДУРАС + HN + HND + 340 + Республика Гондурас + false + false + Honduras + + + ГОНКОНГ + HK + HKG + 344 + Специальный административный регион Китая Гонконг + false + false + Hong Kong + + + ГРЕНАДА + GD + GRD + 308 + + false + false + Grenada + + + ГРЕНЛАНДИЯ + GL + GRL + 304 + + false + false + Greenland + + + ГРЕЦИЯ + GR + GRC + 300 + Греческая Республика + false + false + Greece + + + ГРУЗИЯ + GE + GEO + 268 + + false + false + Georgia + + + ГУАМ + GU + GUM + 316 + + false + false + Guam + + + ДАНИЯ + DK + DNK + 208 + Королевство Дания + false + false + Denmark + + + ДЖЕРСИ + JE + JEY + 832 + + false + false + Jersey + + + ДЖИБУТИ + DJ + DJI + 262 + Республика Джибути + false + false + Djibouti + + + ДОМИНИКА + DM + DMA + 212 + Содружество Доминики + false + false + Dominica + + + ДОМИНИКАНСКАЯ РЕСПУБЛИКА + DO + DOM + 214 + + false + false + The Dominican Republic + + + ЕГИПЕТ + EG + EGY + 818 + Арабская Республика Египет + false + false + Egypt + + + ЗАМБИЯ + ZM + ZMB + 894 + Республика Замбия + false + false + Zambia + + + ЗАПАДНАЯ САХАРА + EH + ESH + 732 + + false + false + Western Sahara* + + + ЗИМБАБВЕ + ZW + ZWE + 716 + Республика Зимбабве + false + false + Zimbabwe + + + ИЗРАИЛЬ + IL + ISR + 376 + Государство Израиль + false + false + Israel + + + ИНДИЯ + IN + IND + 356 + Республика Индия + false + false + India + + + ИНДОНЕЗИЯ + ID + IDN + 360 + Республика Индонезия + false + false + Indonesia + + + ИОРДАНИЯ + JO + JOR + 400 + Иорданское Хашимитское Королевство + false + false + Jordan + + + ИРАК + IQ + IRQ + 368 + Республика Ирак + false + false + Iraq + + + ИРАН (ИСЛАМСКАЯ РЕСПУБЛИКА) + IR + IRN + 364 + Исламская Республика Иран + false + false + Islamic Republic Of Iran + + + ИРЛАНДИЯ + IE + IRL + 372 + + false + false + Ireland + + + ИСЛАНДИЯ + IS + ISL + 352 + Республика Исландия + false + false + Iceland + + + ИСПАНИЯ + ES + ESP + 724 + Королевство Испания + false + false + Spain + + + ИТАЛИЯ + IT + ITA + 380 + Итальянская Республика + false + false + Italy + + + ЙЕМЕН + YE + YEM + 887 + Йеменская Республика + false + false + Yemen + + + КАБО-ВЕРДЕ + CV + CPV + 132 + Республика Кабо-Верде + false + false + Cabo Verde + + + КАЗАХСТАН + KZ + KAZ + 398 + Республика Казахстан + true + false + Kazakhstan + + + КАМБОДЖА + KH + KHM + 116 + Королевство Камбоджа + false + false + Cambodia + + + КАМЕРУН + CM + CMR + 120 + Республика Камерун + false + false + Cameroon + + + КАНАДА + CA + CAN + 124 + + false + false + Canada + + + КАТАР + QA + QAT + 634 + Государство Катар + false + false + Qatar + + + КЕНИЯ + KE + KEN + 404 + Республика Кения + false + false + Kenya + + + КИПР + CY + CYP + 196 + Республика Кипр + false + false + Cyprus + + + КИРГИЗИЯ + KG + KGZ + 417 + Киргизская Республика + true + false + Kyrgyzstan + + + КИРИБАТИ + KI + KIR + 296 + Республика Кирибати + false + false + Kiribati + + + КИТАЙ + CN + CHN + 156 + Китайская Народная Республика + false + false + China + + + КОКОСОВЫЕ (КИЛИНГ) ОСТРОВА + CC + CCK + 166 + + false + false + The Cocos (Keeling) Islands + + + КОЛУМБИЯ + CO + COL + 170 + Республика Колумбия + false + false + Colombia + + + КОМОРЫ + KM + COM + 174 + Союз Коморы + false + false + The Comoros + + + КОНГО + CG + COG + 178 + Республика Конго + false + false + The Congo + + + КОНГО, ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА + CD + COD + 180 + + false + false + The Democratic Republic Of The Congo + + + КОРЕЯ, НАРОДНО-ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА + KP + PRK + 408 + Корейская Народно-Демократическая Республика + false + false + The Democratic People's Republic Of Korea + + + КОРЕЯ, РЕСПУБЛИКА + KR + KOR + 410 + Республика Корея + false + false + The Republic Of Korea + + + КОСТА-РИКА + CR + CRI + 188 + Республика Коста-Рика + false + false + Costa Rica + + + КОТ Д'ИВУАР + CI + CIV + 384 + Республика Кот д'Ивуар + false + false + Côte d'Ivoire + + + КУБА + CU + CUB + 192 + Республика Куба + false + false + Cuba + + + КУВЕЙТ + KW + KWT + 414 + Государство Кувейт + false + false + Kuwait + + + КЮРАСАО + CW + CUW + 531 + + false + false + Curaçao + + + ЛАОССКАЯ НАРОДНО-ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА + LA + LAO + 418 + + false + false + The Lao People's Democratic Republic + + + ЛАТВИЯ + LV + LVA + 428 + Латвийская Республика + false + false + Latvia + + + ЛЕСОТО + LS + LSO + 426 + Королевство Лесото + false + false + Lesotho + + + ЛИБЕРИЯ + LR + LBR + 430 + Республика Либерия + false + false + Liberia + + + ЛИВАН + LB + LBN + 422 + Ливанская Республика + false + false + Lebanon + + + ЛИВИЯ + LY + LBY + 434 + Государство Ливия + false + false + Libya + + + ЛИТВА + LT + LTU + 440 + Литовская Республика + false + false + Lithuania + + + ЛИХТЕНШТЕЙН + LI + LIE + 438 + Княжество Лихтенштейн + false + false + Liechtenstein + + + ЛЮКСЕМБУРГ + LU + LUX + 442 + Великое Герцогство Люксембург + false + false + Luxembourg + + + МАВРИКИЙ + MU + MUS + 480 + Республика Маврикий + false + false + Mauritius + + + МАВРИТАНИЯ + MR + MRT + 478 + Исламская Республика Мавритания + false + false + Mauritania + + + МАДАГАСКАР + MG + MDG + 450 + Республика Мадагаскар + false + false + Madagascar + + + МАЙОТТА + YT + MYT + 175 + + false + false + Mayotte + + + МАКАО + MO + MAC + 446 + Специальный административный регион Китая Макао + false + false + Macao + + + СЕВЕРНАЯ МАКЕДОНИЯ + MK + MKD + 807 + Республика Северная Македония + false + false + North Macedonia + + + МАЛАВИ + MW + MWI + 454 + Республика Малави + false + false + Malawi + + + МАЛАЙЗИЯ + MY + MYS + 458 + + false + false + Malaysia + + + МАЛИ + ML + MLI + 466 + Республика Мали + false + false + Mali + + + МАЛЫЕ ТИХООКЕАНСКИЕ ОТДАЛЕННЫЕ ОСТРОВА СОЕДИНЕННЫХ ШТАТОВ + UM + UMI + 581 + + false + false + The United States Minor Outlying Islands + + + МАЛЬДИВЫ + MV + MDV + 462 + Мальдивская Республика + false + false + Maldives + + + МАЛЬТА + MT + MLT + 470 + Республика Мальта + false + false + Malta + + + МАРОККО + MA + MAR + 504 + Королевство Марокко + false + false + Morocco + + + МАРТИНИКА + MQ + MTQ + 474 + + false + false + Martinique + + + МАРШАЛЛОВЫ ОСТРОВА + MH + MHL + 584 + Республика Маршалловы Острова + false + false + The Marshall Islands + + + МЕКСИКА + MX + MEX + 484 + Мексиканские Соединенные Штаты + false + false + Mexico + + + МИКРОНЕЗИЯ, ФЕДЕРАТИВНЫЕ ШТАТЫ + FM + FSM + 583 + Федеративные Штаты Микронезии + false + false + Federated States Of Micronesia + + + МОЗАМБИК + MZ + MOZ + 508 + Республика Мозамбик + false + false + Mozambique + + + МОЛДОВА, РЕСПУБЛИКА + MD + MDA + 498 + Республика Молдова + false + false + The Republic Of Moldova + + + МОНАКО + MC + MCO + 492 + Княжество Монако + false + false + Monaco + + + МОНГОЛИЯ + MN + MNG + 496 + + false + false + Mongolia + + + МОНТСЕРРАТ + MS + MSR + 500 + + false + false + Montserrat + + + МЬЯНМА + MM + MMR + 104 + Республика Союза Мьянма + false + false + Myanmar + + + НАМИБИЯ + NA + NAM + 516 + Республика Намибия + false + false + Namibia + + + НАУРУ + NR + NRU + 520 + Республика Науру + false + false + Nauru + + + НЕПАЛ + NP + NPL + 524 + Федеративная Демократическая Республика Непал + false + false + Nepal + + + НИГЕР + NE + NER + 562 + Республика Нигер + false + false + The Niger + + + НИГЕРИЯ + NG + NGA + 566 + Федеративная Республика Нигерия + false + false + Nigeria + + + НИДЕРЛАНДЫ + NL + NLD + 528 + Королевство Нидерландов + false + false + The Netherlands + + + НИКАРАГУА + NI + NIC + 558 + Республика Никарагуа + false + false + Nicaragua + + + НИУЭ + NU + NIU + 570 + Ниуэ + false + false + Niue + + + НОВАЯ ЗЕЛАНДИЯ + NZ + NZL + 554 + + false + false + New Zealand + + + НОВАЯ КАЛЕДОНИЯ + NC + NCL + 540 + + false + false + New Caledonia + + + НОРВЕГИЯ + NO + NOR + 578 + Королевство Норвегия + false + false + Norway + + + ОБЪЕДИНЕННЫЕ АРАБСКИЕ ЭМИРАТЫ + AE + ARE + 784 + + false + false + The United Arab Emirates + + + ОМАН + OM + OMN + 512 + Султанат Оман + false + false + Oman + + + ОСТРОВА КАЙМАН + KY + CYM + 136 + + false + false + The Cayman Islands + + + ОСТРОВА КУКА + CK + COK + 184 + + false + false + The Cook Islands + + + ОСТРОВА ТЕРКС И КАЙКОС + TC + TCA + 796 + + false + false + The Turks And Caicos Islands + + + ОСТРОВ БУВЕ + BV + BVT + 074 + + false + false + Bouvet Island + + + ОСТРОВ МЭН + IM + IMN + 833 + + false + false + Isle of Man + + + ОСТРОВ НОРФОЛК + NF + NFK + 574 + + false + false + Norfolk Island + + + ОСТРОВ РОЖДЕСТВА + CX + CXR + 162 + + false + false + Christmas Island + + + ОСТРОВ ХЕРД И ОСТРОВА МАКДОНАЛЬД + HM + HMD + 334 + + false + false + Heard Island and McDonald Islands + + + ПАКИСТАН + PK + PAK + 586 + Исламская Республика Пакистан + false + false + Pakistan + + + ПАЛАУ + PW + PLW + 585 + Республика Палау + false + false + Palau + + + ПАЛЕСТИНА, ГОСУДАРСТВО + PS + PSE + 275 + Государство Палестина + false + false + Palestine, State of + + + ПАНАМА + PA + PAN + 591 + Республика Панама + false + false + Panama + + + ПАПСКИЙ ПРЕСТОЛ (ГОСУДАРСТВО - ГОРОД ВАТИКАН) + VA + VAT + 336 + + false + false + The Holy See + + + ПАПУА НОВАЯ ГВИНЕЯ + PG + PNG + 598 + Независимое Государство Папуа Новая Гвинея + false + false + Papua New Guinea + + + ПАРАГВАЙ + PY + PRY + 600 + Республика Парагвай + false + false + Paraguay + + + ПЕРУ + PE + PER + 604 + Республика Перу + false + false + Peru + + + ПИТКЕРН + PN + PCN + 612 + + false + false + Pitcairn + + + ПОЛЬША + PL + POL + 616 + Республика Польша + false + false + Poland + + + ПОРТУГАЛИЯ + PT + PRT + 620 + Португальская Республика + false + false + Portugal + + + ПУЭРТО-РИКО + PR + PRI + 630 + + false + false + Puerto Rico + + + РЕЮНЬОН + RE + REU + 638 + + false + false + Réunion + + + РОССИЯ + RU + RUS + 643 + Российская Федерация + true + false + The Russian Federation + + + РУАНДА + RW + RWA + 646 + Руандийская Республика + false + false + Rwanda + + + РУМЫНИЯ + RO + ROU + 642 + + false + false + Romania + + + САМОА + WS + WSM + 882 + Независимое Государство Самоа + false + false + Samoa + + + САН-МАРИНО + SM + SMR + 674 + Республика Сан-Марино + false + false + San Marino + + + САН-ТОМЕ И ПРИНСИПИ + ST + STP + 678 + Демократическая Республика Сан-Томе и Принсипи + false + false + Sao Tome and Principe + + + САУДОВСКАЯ АРАВИЯ + SA + SAU + 682 + Королевство Саудовская Аравия + false + false + Saudi Arabia + + + ЭСВАТИНИ + SZ + SWZ + 748 + Королевство Эсватини + false + false + Eswatini + + + СВЯТАЯ ЕЛЕНА, ОСТРОВ ВОЗНЕСЕНИЯ, ТРИСТАН-ДА-КУНЬЯ + SH + SHN + 654 + + false + false + Saint Helena, Ascension and Tristan da Cunha + + + СЕВЕРНЫЕ МАРИАНСКИЕ ОСТРОВА + MP + MNP + 580 + Содружество Северных Марианских островов + false + false + The Northern Mariana Islands + + + СЕЙШЕЛЫ + SC + SYC + 690 + Республика Сейшелы + false + false + Seychelles + + + СЕН-БАРТЕЛЕМИ + BL + BLM + 652 + + false + false + Saint Barthélemy + + + СЕН-МАРТЕН + MF + MAF + 663 + + false + false + French Part Saint Martin + + + СЕН-МАРТЕН (нидерландская часть) + SX + SXM + 534 + + false + false + Sint Maarten (Dutch Part) + + + СЕНЕГАЛ + SN + SEN + 686 + Республика Сенегал + false + false + Senegal + + + СЕНТ-ВИНСЕНТ И ГРЕНАДИНЫ + VC + VCT + 670 + + false + false + Saint Vincent and the Grenadines + + + СЕНТ-КИТС И НЕВИС + KN + KNA + 659 + + false + false + Saint Kitts and Nevis + + + СЕНТ-ЛЮСИЯ + LC + LCA + 662 + + false + false + Saint Lucia + + + СЕНТ-ПЬЕР И МИКЕЛОН + PM + SPM + 666 + + false + false + Saint Pierre and Miquelon + + + СЕРБИЯ + RS + SRB + 688 + Республика Сербия + false + false + Serbia + + + СИНГАПУР + SG + SGP + 702 + Республика Сингапур + false + false + Singapore + + + СИРИЙСКАЯ АРАБСКАЯ РЕСПУБЛИКА + SY + SYR + 760 + + false + false + The Syrian Arab Republic + + + СЛОВАКИЯ + SK + SVK + 703 + Словацкая Республика + false + false + Slovakia + + + СЛОВЕНИЯ + SI + SVN + 705 + Республика Словения + false + false + Slovenia + + + СОЕДИНЕННОЕ КОРОЛЕВСТВО + GB + GBR + 826 + Соединенное Королевство Великобритании и Северной Ирландии + false + false + The United Kingdom Of Great Britain And Northern Ireland + + + СОЕДИНЕННЫЕ ШТАТЫ + US + USA + 840 + Соединенные Штаты Америки + false + false + The United States Of America + + + СОЛОМОНОВЫ ОСТРОВА + SB + SLB + 090 + + false + false + Solomon Islands + + + СОМАЛИ + SO + SOM + 706 + Федеративная Республика Сомали + false + false + Somalia + + + СУДАН + SD + SDN + 729 + Республика Судан + false + false + The Sudan + + + СУРИНАМ + SR + SUR + 740 + Республика Суринам + false + false + Suriname + + + СЬЕРРА-ЛЕОНЕ + SL + SLE + 694 + Республика Сьерра-Леоне + false + false + Sierra Leone + + + ТАДЖИКИСТАН + TJ + TJK + 762 + Республика Таджикистан + false + false + Tajikistan + + + ТАИЛАНД + TH + THA + 764 + Королевство Таиланд + false + false + Thailand + + + ТАЙВАНЬ (КИТАЙ) + TW + TWN + 158 + + false + false + Taiwan (Province Of China) + + + ТАНЗАНИЯ, ОБЪЕДИНЕННАЯ РЕСПУБЛИКА + TZ + TZA + 834 + Объединенная Республика Танзания + false + false + Tanzania, the United Republic of + + + ТОГО + TG + TGO + 768 + Тоголезская Республика + false + false + Togo + + + ТОКЕЛАУ + TK + TKL + 772 + + false + false + Tokelau + + + ТОНГА + TO + TON + 776 + Королевство Тонга + false + false + Tonga + + + ТРИНИДАД И ТОБАГО + TT + TTO + 780 + Республика Тринидад и Тобаго + false + false + Trinidad and Tobago + + + ТУВАЛУ + TV + TUV + 798 + + false + false + Tuvalu + + + ТУНИС + TN + TUN + 788 + Тунисская Республика + false + false + Tunisia + + + ТУРКМЕНИСТАН + TM + TKM + 795 + Туркменистан + false + false + Turkmenistan + + + ТУРЦИЯ + TR + TUR + 792 + Турецкая Республика + false + false + Turkey + + + УГАНДА + UG + UGA + 800 + Республика Уганда + false + false + Uganda + + + УЗБЕКИСТАН + UZ + UZB + 860 + Республика Узбекистан + false + false + Uzbekistan + + + УКРАИНА + UA + UKR + 804 + + false + false + Ukraine + + + УОЛЛИС И ФУТУНА + WF + WLF + 876 + + false + false + Wallis and Futuna + + + УРУГВАЙ + UY + URY + 858 + Восточная Республика Уругвай + false + false + Uruguay + + + ФАРЕРСКИЕ ОСТРОВА + FO + FRO + 234 + + false + false + The Faroe Islands + + + ФИДЖИ + FJ + FJI + 242 + Республика Фиджи + false + false + Fiji + + + ФИЛИППИНЫ + PH + PHL + 608 + Республика Филиппины + false + false + The Philippines + + + ФИНЛЯНДИЯ + FI + FIN + 246 + Финляндская Республика + false + false + Finland + + + ФОЛКЛЕНДСКИЕ ОСТРОВА (МАЛЬВИНСКИЕ) + FK + FLK + 238 + + false + false + The Falkland Islands (Malvinas) + + + ФРАНЦИЯ + FR + FRA + 250 + Французская Республика + false + false + France + + + ФРАНЦУЗСКАЯ ГВИАНА + GF + GUF + 254 + + false + false + French Guiana + + + ФРАНЦУЗСКАЯ ПОЛИНЕЗИЯ + PF + PYF + 258 + + false + false + French Polynesia + + + ФРАНЦУЗСКИЕ ЮЖНЫЕ ТЕРРИТОРИИ + TF + ATF + 260 + + false + false + The French Southern Territories + + + ХОРВАТИЯ + HR + HRV + 191 + Республика Хорватия + false + false + Croatia + + + ЦЕНТРАЛЬНО-АФРИКАНСКАЯ РЕСПУБЛИКА + CF + CAF + 140 + + false + false + The Central African Republic + + + ЧАД + TD + TCD + 148 + Республика Чад + false + false + Chad + + + ЧЕРНОГОРИЯ + ME + MNE + 499 + + false + false + Montenegro + + + ЧЕХИЯ + CZ + CZE + 203 + Чешская республика + false + false + Czechia + + + ЧИЛИ + CL + CHL + 152 + Республика Чили + false + false + Chile + + + ШВЕЙЦАРИЯ + CH + CHE + 756 + Швейцарская Конфедерация + false + false + Switzerland + + + ШВЕЦИЯ + SE + SWE + 752 + Королевство Швеция + false + false + Sweden + + + ШПИЦБЕРГЕН И ЯН МАЙЕН + SJ + SJM + 744 + + false + false + Svalbard and Jan Mayen + + + ШРИ-ЛАНКА + LK + LKA + 144 + Демократическая Социалистическая Республика Шри-Ланка + false + false + Sri Lanka + + + ЭКВАДОР + EC + ECU + 218 + Республика Эквадор + false + false + Ecuador + + + ЭКВАТОРИАЛЬНАЯ ГВИНЕЯ + GQ + GNQ + 226 + Республика Экваториальная Гвинея + false + false + Equatorial Guinea + + + ЭЛАНДСКИЕ ОСТРОВА + АХ + ALA + 248 + + false + false + Åland Islands + + + ЭЛЬ-САЛЬВАДОР + SV + SLV + 222 + Республика Эль-Сальвадор + false + false + El Salvador + + + ЭРИТРЕЯ + ER + ERI + 232 + Государство Эритрея + false + false + Eritrea + + + ЭСТОНИЯ + EE + EST + 233 + Эстонская Республика + false + false + Estonia + + + ЭФИОПИЯ + ET + ETH + 231 + Федеративная Демократическая Республика Эфиопия + false + false + Ethiopia + + + ЮЖНАЯ АФРИКА + ZA + ZAF + 710 + Южно-Африканская Республика + false + false + South Africa + + + ЮЖНАЯ ДЖОРДЖИЯ И ЮЖНЫЕ САНДВИЧЕВЫ ОСТРОВА + GS + SGS + 239 + + false + false + South Georgia and the South Sandwich Islands + + + ЮЖНАЯ ОСЕТИЯ + OS + OST + 896 + Республика Южная Осетия + false + false + South Ossetia + + + ЮЖНЫЙ СУДАН + SS + SSD + 728 + Республика Южный Судан + false + false + South Sudan + + + ЯМАЙКА + JM + JAM + 388 + + false + false + Jamaica + + + ЯПОНИЯ + JP + JPN + 392 + + false + false + Japan + + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260.mdo" new file mode 100644 index 00000000..e0cd372f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260/\320\241\321\202\321\200\320\260\320\275\321\213\320\234\320\270\321\200\320\260.mdo" @@ -0,0 +1,305 @@ + + + + + + + + + + СтраныМира + + ru + Страны мира + + true + Catalog.СтраныМира.StandardAttribute.Description + Catalog.СтраныМира.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование + + Наименование + + ru + Краткое наименование страны мира + + + ShowError + Use + + + + + Use + Code + + ru + Код + + Код + + ru + Числовой код страны по ОКСМ + + true + + -- + + ShowError + + + + Use + true + + + ru + + + Managed + Use + + ru + Страна мира + + 1 + true + 3 + 60 + String + Variable + AsDescription + + + Россия + РОССИЯ + + 643 + + + + BothWays + BothWays + Catalog.СтраныМира.Form.ФормаЭлемента + Catalog.СтраныМира.Form.ФормаСписка + Catalog.СтраныМира.Form.ФормаСписка + + НаименованиеПолное + + ru + Наименование полное + + + String + + 100 + + + + ru + Полное наименование страны мира + + + + + + + Use + Use + + + КодАльфа2 + + ru + Код альфа-2 + + + String + + 2 + + + + ru + Двузначный буквенный код альфа-2 страны по ОКСМ + + + + + + + Use + Use + + + КодАльфа3 + + ru + Код альфа-3 + + + String + + 3 + + + + ru + Трехзначный буквенный код альфа-3 страны по ОКСМ + + + + + + + Use + Use + + + УчастникЕАЭС + + ru + Участник ЕАЭС + + + Boolean + + + ru + Страна является участником Евразийского экономического союза. + + + + + Use + Use + + + МеждународноеНаименование + + ru + Международное наименование + + + String + + 100 + + + + ru + Международное наименование страны мира + + + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + Классификатор + + ru + Классификатор + + + + ru + + + PersonalComputer + MobileDevice + + + Классификатор + + ru + Классификатор + + TextDocument + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..828074df --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/ManagerModule.bsl" @@ -0,0 +1,36 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271.mdo" new file mode 100644 index 00000000..dcdcd811 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\232\320\276\320\275\321\202\320\260\320\272\321\202\321\213\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\320\271.mdo" @@ -0,0 +1,113 @@ + + + + + + + + + + СтроковыеКонтактыВзаимодействий + + ru + Строковые контакты взаимодействий + + true + Catalog.СтроковыеКонтактыВзаимодействий.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Строковое представление контакта взаимодействий + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + Use + + ru + Строковый контакт взаимодействий + + 2 + true + 100 + String + Variable + AsDescription + InDialog + BothWays + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..88f93f57 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,25 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + Наименование + Asc + + + ФлагИспользования + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Form.form" new file mode 100644 index 00000000..4af76197 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Form.form" @@ -0,0 +1,1304 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + ФлагИспользованияЗагрузки + 23 + + <key>ru</key> + <value>Выполняется получение данных</value> + + true + true + + true + + + + Список.ФлагИспользованияЗагрузки + + + None + + ru + Загрузка + + + ФлагИспользованияЗагрузкиExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + + ФлагИспользованияЗагрузкиКонтекстноеМеню + 24 + true + true + + true + + true + + CheckBoxField + Enter + true + + StdPicture.MoveLeft + + Left + true + + + + ФлагИспользованияВыгрузки + 21 + + <key>ru</key> + <value>Выполняется отправка данных</value> + + true + true + + true + + + + Список.ФлагИспользованияВыгрузки + + + None + + ru + Выгрузка + + + ФлагИспользованияВыгрузкиExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + + ФлагИспользованияВыгрузкиКонтекстноеМеню + 22 + true + true + + true + + true + + CheckBoxField + Enter + true + + StdPicture.MoveRight + + Left + true + + + + Наименование + 4 + true + true + + true + + + + Список.Description + + + + НаименованиеExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 66 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 67 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ИспользоватьРегламентноеЗадание + 69 + true + true + + true + + + + Список.ИспользоватьРегламентноеЗадание + + + None + + ИспользоватьРегламентноеЗаданиеРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьРегламентноеЗаданиеКонтекстноеМеню + 70 + true + true + + true + + true + + CheckBoxField + true + Enter + true + + StdPicture.ScheduledJob + + Left + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + Selection + СписокВыбор + + + true + true + + true + + СписокSearchString + 57 + + СписокSearchStringExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 58 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 60 + + СписокViewStatusExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 61 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 63 + + СписокSearchControlExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 64 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + ГруппаКнопокВключенияЗагрузкиВыгрузкиДанных + 25 + + СписокКонтекстноеМенюВключитьОтключитьЗагрузку + 27 + true + true + + true + + + СписокКонтекстноеМенюВключитьОтключитьЗагрузкуExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьЗагрузку + Auto + true + true + UserCmds + Auto + + + ФормаВключитьОтключитьВыгрузку + 26 + true + true + + true + + + ФормаВключитьОтключитьВыгрузкуExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьВыгрузку + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопок включения загрузки выгрузки данных</value> + + + ГруппаКнопокВключенияЗагрузкиВыгрузкиДанныхExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюГруппаКнопок + 18 + + СписокКонтекстноеМенюВключитьОтключитьРегламентноеЗадание + 16 + true + true + + true + + + СписокКонтекстноеМенюВключитьОтключитьРегламентноеЗаданиеExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьРегламентноеЗадание + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюОткрытьСценарийОбменаДанными + 19 + true + true + + true + + + СписокКонтекстноеМенюОткрытьСценарийОбменаДаннымиExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + 0 + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Контекстное меню группа кнопок</value> + + + СписокКонтекстноеМенюГруппаКнопокExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюВыполнитьСценарий + 33 + true + true + + true + + + СписокКонтекстноеМенюВыполнитьСценарийExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьСценарий + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + true + MultiRow + Row +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + +
    + + Комментарий + 34 + true + true + + true + + + + Items.Список.CurrentData.Комментарий + + + + КомментарийExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 35 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + Style.ПоясняющийТекст + + + + + ФормаКоманднаяПанель + -1 + + ВключитьОтключитьВыгрузкуЗагрузку + 28 + + ФормаВключитьОтключитьЗагрузкуВыгрузку + 31 + + <key>ru</key> + <value>Загрузка и выгрузка</value> + + true + true + + true + + + ФормаВключитьОтключитьЗагрузкуВыгрузкуExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьЗагрузкуВыгрузку + Auto + true + true + UserCmds + Auto + + + ФормаВключитьОтключитьЗагрузку + 29 + + <key>ru</key> + <value>Загрузка</value> + + true + true + + true + + + ФормаВключитьОтключитьЗагрузкуExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьЗагрузку + Auto + true + true + UserCmds + Auto + + + ФормаВключитьОтключитьВыгрузку1 + 30 + + <key>ru</key> + <value>Выгрузка</value> + + true + true + + true + + + ФормаВключитьОтключитьВыгрузку1ExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьВыгрузку + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Включить/Отключить</value> + + + ru + Включить или отключить загрузку и выгрузку данных + + + ВключитьОтключитьВыгрузкуЗагрузкуExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + Создать + 13 + true + true + + true + + + СоздатьExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьСценарийОбменаДанными + Auto + true + true + UserCmds + Auto + + + ИзменитьСценарийОбменаДанными + 14 + true + true + + true + + + ИзменитьСценарийОбменаДаннымиExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьСценарийОбменаДанными + Auto + true + true + UserCmds + Auto + + + ГруппаКнопок + 17 + + ФормаВключитьОтключитьРегламентноеЗадание + 15 + true + true + + true + + + ФормаВключитьОтключитьРегламентноеЗаданиеExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьРегламентноеЗадание + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопок</value> + + + ГруппаКнопокExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаВыполнитьСценарий + 32 + true + true + + true + + + ФормаВыполнитьСценарийExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьСценарий + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + CancelSearch + Change + Copy + Create + Delete + Find + SetDeletionMark + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.ИспользоватьРегламентноеЗадание + + + Список.ФлагИспользования + + + Список.ФлагИспользованияВыгрузки + + + Список.ФлагИспользованияЗагрузки + +
    true
    + + ВЫБРАТЬ + СценарииОбменовДаннымиНастройкиОбмена.Ссылка КАК Ссылка, + СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание КАК ИспользоватьРегламентноеЗадание, + СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование КАК Наименование, + МАКСИМУМ(ВЫБОР + КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ) КАК ФлагИспользования, + МАКСИМУМ(ВЫБОР + КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы + И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ЗагрузкаДанных) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ) КАК ФлагИспользованияЗагрузки, + МАКСИМУМ(ВЫБОР + КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы + И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ВыгрузкаДанных) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ) КАК ФлагИспользованияВыгрузки +ПОМЕСТИТЬ ВложенныйЗапрос +ИЗ + Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена +ГДЕ + НЕ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ПометкаУдаления + +СГРУППИРОВАТЬ ПО + СценарииОбменовДаннымиНастройкиОбмена.Ссылка, + СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание, + СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование +; +ВЫБРАТЬ + СценарииОбменовДанными.Ссылка, + СценарииОбменовДанными.ИспользоватьРегламентноеЗадание, + СценарииОбменовДанными.Наименование, + ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользования, ЛОЖЬ) КАК ФлагИспользования, + ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияЗагрузки, ЛОЖЬ) КАК ФлагИспользованияЗагрузки, + ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияВыгрузки, ЛОЖЬ) КАК ФлагИспользованияВыгрузки, + СценарииОбменовДанными.Комментарий +ИЗ + Справочник.СценарииОбменовДанными КАК СценарииОбменовДанными + ЛЕВОЕ СОЕДИНЕНИЕ ВложенныйЗапрос КАК ВложенныйЗапрос + ПО ВложенныйЗапрос.Ссылка = СценарииОбменовДанными.Ссылка +ГДЕ + НЕ СценарииОбменовДанными.ПометкаУдаления + + Catalog.СценарииОбменовДанными + true + true + true + true + true + +
    + + СоздатьСценарийОбменаДанными + + <key>ru</key> + <value>Добавить</value> + + 1 + + ru + Создать новое расписание синхронизации + + + true + + + StdPicture.CreateListItem + + + + Создать + + + TextPicture + DontUse + + + ИзменитьСценарийОбменаДанными + + <key>ru</key> + <value>Изменить</value> + + 2 + + ru + Изменить расписание синхронизации + + + true + + + StdPicture.Change + + + + ИзменитьСценарийОбменаДанными + + + DontUse + + + ВключитьОтключитьРегламентноеЗадание + + <key>ru</key> + <value>Включить/отключить расписание</value> + + 3 + + ru + Включить/отключить расписание синхронизации данных + + + true + + + StdPicture.ScheduledJob + + + + ВключитьОтключитьРегламентноеЗадание + + + DontUse + + + ВключитьОтключитьВыгрузку + + <key>ru</key> + <value>Включить/отключить отправку данных</value> + + 5 + + ru + Включить/отключить отправку данных в другую базу + + + true + + + + ВключитьОтключитьВыгрузку + + + DontUse + + + ВключитьОтключитьЗагрузку + + <key>ru</key> + <value>Включить/отключить получение данных</value> + + 6 + + ru + Включить/отключить получение данных из другой базы + + + true + + + + ВключитьОтключитьЗагрузку + + + DontUse + + + ВключитьОтключитьЗагрузкуВыгрузку + + <key>ru</key> + <value>Включить или отключить получение и отправку данных</value> + + 4 + + ru + Включить или отключить получение и отправку данных + + + true + + + + ВключитьОтключитьЗагрузкуВыгрузку + + + DontUse + + + ВыполнитьСценарий + + <key>ru</key> + <value>Выполнить сценарий</value> + + 7 + + ru + Выполнить синхронизацию данных по сценарию + + + true + + + CommonPicture.СинхронизацияДанныхВыполнение + + + + ВыполнитьСценарий + + + TextPicture + DontUse + + + УзелИнформационнойБазы + + ExchangePlanRef + + true + + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Module.bsl" new file mode 100644 index 00000000..62882aea --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\321\201\320\277\320\270\321\201\320\260\320\275\320\270\321\217\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Module.bsl" @@ -0,0 +1,267 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Список.Параметры.Элементы[0].Значение = Параметры.УзелИнформационнойБазы; + Список.Параметры.Элементы[0].Использование = Истина; + + Заголовок = НСтр("ru = 'Сценарии синхронизации данных для: [УзелИнформационнойБазы]'"); + Заголовок = СтрЗаменить(Заголовок, "[УзелИнформационнойБазы]", Строка(Параметры.УзелИнформационнойБазы)); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_СценарииОбменовДанными" Тогда + + Элементы.Список.Обновить(); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Поле = Элементы.ФлагИспользованияЗагрузки Тогда + + ВключитьОтключитьЗагрузкуНаСервере(ТекущиеДанные.ФлагИспользованияЗагрузки, ТекущиеДанные.Ссылка); + + ИначеЕсли Поле = Элементы.ФлагИспользованияВыгрузки Тогда + + ВключитьОтключитьВыгрузкуНаСервере(ТекущиеДанные.ФлагИспользованияВыгрузки, ТекущиеДанные.Ссылка); + + ИначеЕсли Поле = Элементы.Наименование Тогда + + ИзменитьСценарийОбменаДанными(Неопределено); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Создать(Команда) + + ПараметрыФормы = Новый Структура("УзелИнформационнойБазы", Параметры.УзелИнформационнойБазы); + + ОткрытьФорму("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьСценарийОбменаДанными(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ключ", ТекущиеДанные.Ссылка); + + ОткрытьФорму("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьОтключитьРегламентноеЗадание(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ВключитьОтключитьРегламентноеЗаданиеНаСервере(ТекущиеДанные.Ссылка); + + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьОтключитьВыгрузку(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ВключитьОтключитьВыгрузкуНаСервере(ТекущиеДанные.ФлагИспользованияВыгрузки, ТекущиеДанные.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьОтключитьЗагрузку(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ВключитьОтключитьЗагрузкуНаСервере(ТекущиеДанные.ФлагИспользованияЗагрузки, ТекущиеДанные.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьОтключитьЗагрузкуВыгрузку(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ВключитьОтключитьЗагрузкуВыгрузкуНаСервере(ТекущиеДанные.ФлагИспользованияЗагрузки ИЛИ ТекущиеДанные.ФлагИспользованияВыгрузки, ТекущиеДанные.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьСценарий(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Отказ = Ложь; + + // Запускаем выполнение обмена. + ОбменДаннымиВызовСервера.ВыполнитьОбменДаннымиПоСценариюОбменаДанными(Отказ, ТекущиеДанные.Ссылка); + + Если Отказ Тогда + Сообщение = НСтр("ru = 'Сценарий синхронизации выполнен с ошибками.'"); + Картинка = БиблиотекаКартинок.Ошибка32; + Иначе + Сообщение = НСтр("ru = 'Сценарий синхронизации успешно выполнен.'"); + Картинка = Неопределено; + КонецЕсли; + ПоказатьОповещениеПользователя(Сообщение,,,Картинка); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Параметры: +// Ссылка - СправочникСсылка.СценарииОбменовДанными - сценарий обмена. +// +&НаСервереБезКонтекста +Процедура ВключитьОтключитьРегламентноеЗаданиеНаСервере(Ссылка) + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СценарииОбменовДанными"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка); + Блокировка.Заблокировать(); + + ЗаблокироватьДанныеДляРедактирования(Ссылка); + СценарийОбъект = Ссылка.ПолучитьОбъект(); + + СценарийОбъект.ИспользоватьРегламентноеЗадание = Не СценарийОбъект.ИспользоватьРегламентноеЗадание; + СценарийОбъект.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +&НаСервере +Процедура ВключитьОтключитьВыгрузкуНаСервере(Знач ФлагИспользованияВыгрузки, Знач СценарийОбменаДанными) + + Если ФлагИспользованияВыгрузки Тогда + + Справочники.СценарииОбменовДанными.УдалитьВыгрузкуВСценарииОбменаДанными(СценарийОбменаДанными, Параметры.УзелИнформационнойБазы); + + Иначе + + Справочники.СценарииОбменовДанными.ДобавитьВыгрузкуВСценарииОбменаДанными(СценарийОбменаДанными, Параметры.УзелИнформационнойБазы); + + КонецЕсли; + + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаСервере +Процедура ВключитьОтключитьЗагрузкуНаСервере(Знач ФлагИспользованияЗагрузки, Знач СценарийОбменаДанными) + + Если ФлагИспользованияЗагрузки Тогда + + Справочники.СценарииОбменовДанными.УдалитьЗагрузкуВСценарииОбменаДанными(СценарийОбменаДанными, Параметры.УзелИнформационнойБазы); + + Иначе + + Справочники.СценарииОбменовДанными.ДобавитьЗагрузкуВСценарииОбменаДанными(СценарийОбменаДанными, Параметры.УзелИнформационнойБазы); + + КонецЕсли; + + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаСервере +Процедура ВключитьОтключитьЗагрузкуВыгрузкуНаСервере(Знач ФлагИспользования, Знач СценарийОбменаДанными) + + ВключитьОтключитьЗагрузкуНаСервере(ФлагИспользования, СценарийОбменаДанными); + + ВключитьОтключитьВыгрузкуНаСервере(ФлагИспользования, СценарийОбменаДанными); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Список.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.ФлагИспользования"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Лазурный); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..5403cf0e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,559 @@ + + + + ГруппаПользовательскихНастроек + 22 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 24 + + ФормаВключитьОтключитьРегламентноеЗадание + 12 + true + true + + true + + + ФормаВключитьОтключитьРегламентноеЗаданиеExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьРегламентноеЗадание + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + ИспользоватьРегламентноеЗадание + 8 + true + true + + true + + + + Список.ИспользоватьРегламентноеЗадание + + + None + + ИспользоватьРегламентноеЗаданиеExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьРегламентноеЗаданиеКонтекстноеМеню + 9 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + 2 + true + true + true + + StdPicture.ScheduledJob + + + + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Ссылка + 19 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 20 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокСтрокаПоиска + 26 + + СписокСтрокаПоискаРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 27 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 29 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 30 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 32 + + СписокУправлениеПоискомРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 33 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюВключитьОтключитьРегламентноеЗадание + 13 + true + true + + true + + + СписокКонтекстноеМенюВключитьОтключитьРегламентноеЗаданиеExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьОтключитьРегламентноеЗадание + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
    + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
    true
    + + Catalog.СценарииОбменовДанными + true + true + true + true + +
    + + ВключитьОтключитьРегламентноеЗадание + + <key>ru</key> + <value>Включить / отключить выполнение синхронизации по расписанию</value> + + 1 + + ru + Включить / отключить выполнение синхронизации по расписанию + + + true + + + StdPicture.ScheduledJob + + + + ВключитьОтключитьРегламентноеЗадание + + + DontUse + + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..3b2cc2c4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,71 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьОтключитьРегламентноеЗадание(Команда) + + ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки; + + Если ВыделенныеСтроки.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + КоллекцияСценариев = Новый Массив; + Для Каждого ДанныеСтроки Из ВыделенныеСтроки Цикл + + Если ДанныеСтроки.ПометкаУдаления Тогда + Продолжить; + КонецЕсли; + + КоллекцияСценариев.Добавить(ДанныеСтроки.Ссылка); + + КонецЦикла; + + ВключитьОтключитьРегламентноеЗаданиеНаСервере(КоллекцияСценариев, Не ТекущиеДанные.ИспользоватьРегламентноеЗадание); + + // Обновляем данные списка. + Элементы.Список.Обновить(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Процедура ВключитьОтключитьРегламентноеЗаданиеНаСервере(КоллекцияСценариев, ИспользоватьРегламентноеЗадание) + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + Для Каждого Сценарий Из КоллекцияСценариев Цикл + ЭлементБлокировки = Блокировка.Добавить("Справочник.СценарииОбменовДанными"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Сценарий); + КонецЦикла; + Блокировка.Заблокировать(); + + Для Каждого Сценарий Из КоллекцияСценариев Цикл + ЗаблокироватьДанныеДляРедактирования(Сценарий); + СценарийОбъект = Сценарий.ПолучитьОбъект(); // СправочникОбъект.СценарииОбменовДанными + СценарийОбъект.ИспользоватьРегламентноеЗадание = ИспользоватьРегламентноеЗадание; + СценарийОбъект.Записать(); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..caa9082a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,1225 @@ + + + + ГруппаКодНаименование + 103 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + + + + Код + 101 + true + true + + true + + + КодExtendedTooltip + 130 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 102 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Код наименование</value> + + + ГруппаКодНаименованиеРасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ОбменПоРасписанию + 22 + + ИспользоватьРегламентноеЗадание + 24 + + <key>ru</key> + <value>Автоматически по расписанию:</value> + + true + true + + true + + + + Объект.ИспользоватьРегламентноеЗадание + + + Right + + OnChange + ИспользоватьРегламентноеЗаданиеПриИзменении + + + ИспользоватьРегламентноеЗаданиеExtendedTooltip + 132 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьРегламентноеЗаданиеКонтекстноеМеню + 25 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + НастроитьРасписаниеРегламентногоЗадания + 62 + true + true + + true + + false + + НастроитьРасписаниеРегламентногоЗаданияExtendedTooltip + 133 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.НастроитьРасписаниеРегламентногоЗадания + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Обмен по расписанию</value> + + + ОбменПоРасписаниюExtendedTooltip + 131 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Состав + 104 + + СоставРасписания + 5 + + <key>ru</key> + <value>Состав расписания</value> + + true + true + + true + + + Объект.НастройкиОбмена + + false + None + + НастройкиОбменаНомерСтроки + 108 + true + true + + true + + + + Объект.НастройкиОбмена.LineNumber + + + + НастройкиОбменаНомерСтрокиExtendedTooltip + 138 + true + true + + true + + Label + true + true + + Left + + + + НастройкиОбменаНомерСтрокиКонтекстноеМеню + 109 + true + true + + true + + true + + LabelField + EnterOnInput + true + Left + true + + true + true + + + + КолонкиУзлаИнформационнойБазы + 122 + + НастройкиОбменаРезультатВыполненияОбмена + 123 + true + true + + true + + + + Объект.НастройкиОбмена.РезультатВыполненияОбмена + + + None + + НастройкиОбменаРезультатВыполненияОбменаExtendedTooltip + 140 + true + true + + true + + Label + true + true + + Left + + + + НастройкиОбменаРезультатВыполненияОбменаКонтекстноеМеню + 124 + true + true + + true + + true + + PictureField + EnterOnInput + true + Left + true + + true + true + true + true + + CommonPicture.СостояниеОбменаДанными + + + + + НастройкиОбменаУзелИнформационнойБазы + 112 + true + true + + true + + + + Объект.НастройкиОбмена.УзелИнформационнойБазы + + + + OnChange + НастройкиОбменаУзелИнформационнойБазыПриИзменении + + + НастройкиОбменаУзелИнформационнойБазыExtendedTooltip + 141 + true + true + + true + + Label + true + true + + Left + + + + НастройкиОбменаУзелИнформационнойБазыКонтекстноеМеню + 113 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + ChoiceProcessing + НастройкиОбменаУзелИнформационнойБазыОбработкаВыбора + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Колонки узла информационной базы</value> + + + КолонкиУзлаИнформационнойБазыExtendedTooltip + 139 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + НастройкиОбменаВидТранспортаОбмена + 114 + true + true + + true + + + + Объект.НастройкиОбмена.ВидТранспортаОбмена + + + + НастройкиОбменаВидТранспортаОбменаExtendedTooltip + 142 + true + true + + true + + Label + true + true + + Left + + + + НастройкиОбменаВидТранспортаОбменаКонтекстноеМеню + 115 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + НастройкиОбменаВидТранспортаОбменаНачалоВыбора + + true + true + true + true + true + true + true + + + + НастройкиОбменаВыполняемоеДействие + 116 + true + true + + true + + + + Объект.НастройкиОбмена.ВыполняемоеДействие + + + + НастройкиОбменаВыполняемоеДействиеExtendedTooltip + 143 + true + true + + true + + Label + true + true + + Left + + + + НастройкиОбменаВыполняемоеДействиеКонтекстноеМеню + 117 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СоставРасписанияКоманднаяПанель + 7 + true + true + + true + + Left + true + + + OnActivateRow + СоставРасписанияПриАктивизацииСтроки + + + true + true + + true + + СоставРасписанияСтрокаПоиска + 147 + + СоставРасписанияСтрокаПоискаРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + + СоставРасписанияСтрокаПоискаКонтекстноеМеню + 148 + true + true + + true + + true + + + true + + + + true + true + + true + + СоставРасписанияСостояниеПросмотра + 150 + + СоставРасписанияСостояниеПросмотраРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + + СоставРасписанияСостояниеПросмотраКонтекстноеМеню + 151 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СоставРасписанияУправлениеПоиском + 153 + + СоставРасписанияУправлениеПоискомРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + + СоставРасписанияУправлениеПоискомКонтекстноеМеню + 154 + true + true + + true + + true + + SearchControlAddition + + true + + + + СоставРасписанияExtendedTooltip + 137 + true + true + + true + + Label + true + true + + Left + + + + СоставРасписанияКонтекстноеМеню + 6 + + НастройкиТранспорта + 86 + true + true + + true + + false + + НастройкиТранспортаExtendedTooltip + 135 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НастройкиТранспорта + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюСоставРасписанияПерейтиВЖурналРегистрации + 126 + true + true + + true + + false + + КонтекстноеМенюСоставРасписанияПерейтиВЖурналРегистрацииExtendedTooltip + 136 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиВЖурналРегистрации + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + true + MultiRow + Row +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + +
    + true + true + + true + + + <key>ru</key> + <value>Состав настройки обмена</value> + + + СоставExtendedTooltip + 134 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + +
    + + Дополнительно + 107 + + Комментарий + 30 + true + true + + true + + + + Объект.Комментарий + + + + КомментарийExtendedTooltip + 146 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 31 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + КомментарийНачалоВыбора + + 2 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + ДополнительноExtendedTooltip + 145 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ВыполнитьОбмен + 125 + true + true + + true + + false + + ВыполнитьОбменExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьОбмен + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.СценарииОбменовДанными + + + true + + + true + +
    true
    + true + + + Объект.НастройкиОбмена + + + РезультатВыполненияОбмена + + <key>ru</key> + <value>Результат выполнения обмена</value> + + 1 + + Number + + 1 + true + + + + true + + + true + + + +
    + + РасписаниеРегламентногоЗадания + 2 + + + true + + + true + + + + СписокУзловОбмена + 3 + + ValueList + + + true + + + true + + + + + + + НастроитьРасписаниеРегламентногоЗадания + + <key>ru</key> + <value>Расписание синхронизации</value> + + 1 + + ru + Настроить расписание регламентного задания + + + true + + + StdPicture.SetTime + + + + НастроитьРасписаниеРегламентногоЗадания + + + DontUse + + + НастройкиТранспорта + + <key>ru</key> + <value>Параметры подключения</value> + + 2 + + ru + Открыть параметры подключения для текущей строки настройки + + + true + + + CommonPicture.СинхронизацияДанныхНастройка + + + + НастройкиТранспорта + + + TextPicture + DontUse + + + ВыполнитьОбмен + + <key>ru</key> + <value>Выполнить сценарий</value> + + 3 + + ru + Выполнить сценарий + + + true + + + CommonPicture.СинхронизацияДанныхВыполнение + + + + ВыполнитьОбмен + + + TextPicture + DontUse + + + ПерейтиВЖурналРегистрации + + <key>ru</key> + <value>События обмена данных</value> + + 5 + + ru + Перейти в журнал регистрации событий обмена данных + + + true + + + StdPicture.EventLog + + + + ПерейтиВЖурналРегистрации + + + DontUse + + + + + 0 + Added + + Items.СоставРасписания.CurrentData.УзелИнформационнойБазы + + + true + + + + 0 + Added + + Items.СоставРасписания.CurrentData.УзелИнформационнойБазы + + 3 + + true + + + + 0 + Added + + Items.СоставРасписания.CurrentData.УзелИнформационнойБазы + + 1 + + true + + + + 0 + Added + + Items.СоставРасписания.CurrentData.УзелИнформационнойБазы + + 2 + + true + + + + + + + + AfterWrite + ПослеЗаписи + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..1b25c95f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,13 @@ + +

    Основное назначение сценария - это выполнение синхронизации данных автоматически по заданному расписанию. Сценарий необходим для задания расписания и порядка отправки и получения данных.

    +

    Не рекомендуется выполнять только отправку данных или только получение данных, хотя сценарий позволяет это сделать. Рекомендуется выполнять полноценную синхронизацию данных в одном сценарии.

    +

    Настройка сценария синхронизации

    +
    • Введите Наименование сценария. Необходимо указать наименования баз данных, участвующих в синхронизации, редакцию программы, для того чтобы все пользователи могли понять назначение данного сценария. +
    • Настройте расписание выполнения сценария синхронизации данных. +
      • Включите флажок Автоматически по расписанию. После этого становится доступной для выбора ссылка (По умолчанию равна Расписание не задано). Нажмите ссылку для того чтобы задать расписание. После подтверждения расписания ссылка показывает составленное расписание.
    • Выберите информационные базы, для которых будет выполняться сценарий синхронизации данных (как правило, сценарий настраивается для обмена с одной информационной базой и включает отправку и получение данных). Для каждой информационной базы выберите способ подключения и выполняемое действие (отправка или получение). Нажмите Добавить, заполните соответствующие колонки: +
      • Информационная база -  Выберите тип данных. Затем из предложенного списка нужного типа выберите информационную базу; +
      • Подключение - выберите способ подключения из списка (зависит от свойств выбранной информационной базы); +
      • Выполняемое действие - с помощью кнопки Выберите Получение или Отправка данных;
    • Напишите Комментарий - краткое описание сценария.

    Выполнение сценария

    +
    • Нажмите  Выполнить сценарий. Будет предпринята попытка синхронизации данных. Перечисленные в сценарии действия будут выполняться последовательно. После того как синхронизация данных проведена, неудачные получения или отправки данных отмечаются значком  в колонке Информационная база.

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..413b0485 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,380 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем НомерОбрабатываемойСтроки; + +&НаКлиенте +Перем КоличествоСтрок; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЭтоНовый = (Объект.Ссылка.Пустая()); + + УзелИнформационнойБазы = Неопределено; + + Если ЭтоНовый + И Параметры.Свойство("УзелИнформационнойБазы", УзелИнформационнойБазы) + И УзелИнформационнойБазы <> Неопределено Тогда + + Справочники.СценарииОбменовДанными.ДобавитьЗагрузкуВСценарииОбменаДанными(Объект, УзелИнформационнойБазы); + Справочники.СценарииОбменовДанными.ДобавитьВыгрузкуВСценарииОбменаДанными(Объект, УзелИнформационнойБазы); + + Наименование = НСтр("ru = 'Сценарий синхронизации для %1'"); + Объект.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Наименование, Строка(УзелИнформационнойБазы)); + + РасписаниеРегламентногоЗадания = Справочники.СценарииОбменовДанными.РасписаниеРегламентногоЗаданияПоУмолчанию(); + + Объект.ИспользоватьРегламентноеЗадание = Истина; + Иначе + // Получаем расписание из самого регламентного задания + // если РЗ не задано, то расписание = Неопределено и будет создано на клиенте в момент редактирования расписания. + РасписаниеРегламентногоЗадания = Справочники.СценарииОбменовДанными.ПолучитьРасписаниеВыполненияОбменаДанными(Объект.Ссылка); + КонецЕсли; + + Если Не ЭтоНовый Тогда + ОбновитьСостоянияОбменовДанными(); + КонецЕсли; + + ПланыОбменаБСП = ОбменДаннымиПовтИсп.ПланыОбменаБСП(); + Для Каждого ИмяПланаОбмена Из ПланыОбменаБСП Цикл + СписокУзловОбмена.Добавить(Тип("ПланОбменаСсылка." + ИмяПланаОбмена)); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ОбновитьПредставлениеРасписания(); + + УстановитьДоступностьГиперссылкиНастройкиРасписания(); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект) + + Справочники.СценарииОбменовДанными.ОбновитьДанныеРегламентногоЗадания(Отказ, РасписаниеРегламентногоЗадания, ТекущийОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_СценарииОбменовДанными", ПараметрыЗаписи, Объект.Ссылка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ИспользоватьРегламентноеЗаданиеПриИзменении(Элемент) + + УстановитьДоступностьГиперссылкиНастройкиРасписания(); + +КонецПроцедуры + +&НаКлиенте +Процедура СоставРасписанияПриАктивизацииСтроки(Элемент) + + Если Элемент.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ЗаполнитьСписокВыбораВидаТранспортаОбмена(Элемент.ПодчиненныеЭлементы.НастройкиОбменаВидТранспортаОбмена.СписокВыбора, Элемент.ТекущиеДанные.УзелИнформационнойБазы); + +КонецПроцедуры + +&НаКлиенте +Процедура НастройкиОбменаУзелИнформационнойБазыПриИзменении(Элемент) + + Элементы.СоставРасписания.ТекущиеДанные.ВидТранспортаОбмена = Неопределено; + +КонецПроцедуры + +&НаКлиенте +Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыНастройкиОбмена + +&НаКлиенте +Процедура НастройкиОбменаВидТранспортаОбменаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ТекущиеДанные = Элементы.СоставРасписания.ТекущиеДанные; + + Если ТекущиеДанные <> Неопределено Тогда + + ЗаполнитьСписокВыбораВидаТранспортаОбмена(Элемент.СписокВыбора, ТекущиеДанные.УзелИнформационнойБазы); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НастройкиОбменаУзелИнформационнойБазыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Тип") И СписокУзловОбмена.НайтиПоЗначению(ВыбранноеЗначение) = Неопределено Тогда + ТекстСообщения = НСтр("ru = 'Данные выбранного типа не могут быть использованы в этой форме. + |Выберите другой тип данных.'"); + Поле = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("НастройкиОбмена[%1].УзелИнформационнойБазы", Элементы.СоставРасписания.ТекущиеДанные.НомерСтроки-1); + ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, , Поле, "Объект"); + СтандартнаяОбработка = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьОбмен(Команда) + + ЭтоНовый = (Объект.Ссылка.Пустая()); + + Если Модифицированность ИЛИ ЭтоНовый Тогда + + Записать(); + + КонецЕсли; + + НомерОбрабатываемойСтроки = 1; + КоличествоСтрок = Объект.НастройкиОбмена.Количество(); + + ПодключитьОбработчикОжидания("ВыполнитьОбменДаннымиНаКлиенте", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьРасписаниеРегламентногоЗадания(Команда) + + РедактированиеРасписанияРегламентногоЗадания(); + + ОбновитьПредставлениеРасписания(); + +КонецПроцедуры + +&НаКлиенте +Процедура НастройкиТранспорта(Команда) + + ТекущиеДанные = Элементы.СоставРасписания.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + ИначеЕсли Не ЗначениеЗаполнено(ТекущиеДанные.УзелИнформационнойБазы) Тогда + Возврат; + КонецЕсли; + + Отбор = Новый Структура("Корреспондент", ТекущиеДанные.УзелИнформационнойБазы); + ЗначенияЗаполнения = Новый Структура("Корреспондент", ТекущиеДанные.УзелИнформационнойБазы); + + ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, + ЗначенияЗаполнения, "НастройкиТранспортаОбменаДанными", ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиВЖурналРегистрации(Команда) + + ТекущиеДанные = Элементы.СоставРасписания.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ОбменДаннымиКлиент.ПерейтиВЖурналРегистрацииСобытийДанныхМодально(ТекущиеДанные.УзелИнформационнойБазы, + ЭтотОбъект, + ТекущиеДанные.ВыполняемоеДействие); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура РедактированиеРасписанияРегламентногоЗадания() + + // Если расписание не инициализировано в форме на сервере, то создаем новое. + Если РасписаниеРегламентногоЗадания = Неопределено Тогда + + РасписаниеРегламентногоЗадания = Новый РасписаниеРегламентногоЗадания; + + КонецЕсли; + + Диалог = Новый ДиалогРасписанияРегламентногоЗадания(РасписаниеРегламентногоЗадания); + + // Открываем диалог для редактирования Расписания. + ОписаниеОповещения = Новый ОписаниеОповещения("РедактированиеРасписанияРегламентногоЗаданияЗавершение", ЭтотОбъект); + Диалог.Показать(ОписаниеОповещения); + +КонецПроцедуры + +&НаКлиенте +Процедура РедактированиеРасписанияРегламентногоЗаданияЗавершение(Расписание, ДополнительныеПараметры) Экспорт + + Если Расписание <> Неопределено Тогда + + РасписаниеРегламентногоЗадания = Расписание; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьПредставлениеРасписания() + + ПредставлениеРасписания = Строка(РасписаниеРегламентногоЗадания); + + Если ПредставлениеРасписания = Строка(Новый РасписаниеРегламентногоЗадания) Тогда + + ПредставлениеРасписания = НСтр("ru = 'Расписание не задано'"); + + КонецЕсли; + + Элементы.НастроитьРасписаниеРегламентногоЗадания.Заголовок = ПредставлениеРасписания; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьДоступностьГиперссылкиНастройкиРасписания() + + Элементы.НастроитьРасписаниеРегламентногоЗадания.Доступность = Объект.ИспользоватьРегламентноеЗадание; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбменДаннымиНаКлиенте() + + Если НомерОбрабатываемойСтроки > КоличествоСтрок Тогда // выход из рекурсии + ВыводитьСостояние = (КоличествоСтрок > 1); + Состояние(НСтр("ru = 'Данные синхронизированы.'"), ?(ВыводитьСостояние, 100, Неопределено)); + Возврат; // выходим + КонецЕсли; + + ТекущиеДанные = Объект.НастройкиОбмена[НомерОбрабатываемойСтроки - 1]; + + ВыводитьСостояние = (КоличествоСтрок > 1); + + СтрокаСообщения = ""; + Если ТекущиеДанные.ВыполняемоеДействие = ПредопределенноеЗначение("Перечисление.ДействияПриОбмене.ЗагрузкаДанных") Тогда + СтрокаСообщения = НСтр("ru = 'Выполняется получение данных из ""%1"".'"); + ИначеЕсли ТекущиеДанные.ВыполняемоеДействие = ПредопределенноеЗначение("Перечисление.ДействияПриОбмене.ВыгрузкаДанных") Тогда + СтрокаСообщения = НСтр("ru = 'Выполняется отправка данных в ""%1"".'"); + КонецЕсли; + + СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, + ТекущиеДанные.УзелИнформационнойБазы); + + Прогресс = Окр(100 * (НомерОбрабатываемойСтроки -1) / ?(КоличествоСтрок = 0, 1, КоличествоСтрок)); + Состояние(СтрокаСообщения, ?(ВыводитьСостояние, Прогресс, Неопределено)); + + // Запускаем выполнение обмена по строке настройки. + ВыполнитьОбменДаннымиПоСтрокеНастройки(НомерОбрабатываемойСтроки); + + ОбработкаПрерыванияПользователя(); + + НомерОбрабатываемойСтроки = НомерОбрабатываемойСтроки + 1; + + // Рекурсивно вызываем эту процедуру. + ПодключитьОбработчикОжидания("ВыполнитьОбменДаннымиНаКлиенте", 0.1, Истина); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСостоянияОбменовДанными() + + ТекстЗапроса = " + |ВЫБРАТЬ + | СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы, + | СценарииОбменовДаннымиНастройкиОбмена.ВидТранспортаОбмена, + | СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие, + | ВЫБОР + | КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена ЕСТЬ NULL + | ТОГДА 0 + | КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято) + | ТОГДА 2 + | КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями) + | ТОГДА 2 + | КОГДА СостоянияОбменовДанными.РезультатВыполненияОбмена = ЗНАЧЕНИЕ(Перечисление.РезультатыВыполненияОбмена.Выполнено) + | ТОГДА 0 + | ИНАЧЕ 1 + | КОНЕЦ КАК РезультатВыполненияОбмена + |ИЗ + | Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена + |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОбменовДанными КАК СостоянияОбменовДанными + | ПО СостоянияОбменовДанными.УзелИнформационнойБазы = СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы + | И СостоянияОбменовДанными.ДействиеПриОбмене = СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие + |ГДЕ + | СценарииОбменовДаннымиНастройкиОбмена.Ссылка = &Ссылка + |УПОРЯДОЧИТЬ ПО + | СценарииОбменовДаннымиНастройкиОбмена.НомерСтроки ВОЗР + |"; + + Запрос = Новый Запрос; + Запрос.Текст = ТекстЗапроса; + Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); + + Объект.НастройкиОбмена.Загрузить(Запрос.Выполнить().Выгрузить()); + +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьОбменДаннымиПоСтрокеНастройки(Знач Индекс) + + Отказ = Ложь; + + // Запускаем выполнение обмена. + ОбменДаннымиСервер.ВыполнитьОбменДаннымиПоСценариюОбменаДанными(Отказ, Объект.Ссылка, Индекс); + + // Обновляем данных табличной части сценария обмена. + ОбновитьСостоянияОбменовДанными(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьСписокВыбораВидаТранспортаОбмена(СписокВыбора, УзелИнформационнойБазы) + + СписокВыбора.Очистить(); + + Если ЗначениеЗаполнено(УзелИнформационнойБазы) Тогда + + Для Каждого Элемент Из ИспользуемыеТранспортыСообщенийОбмена(УзелИнформационнойБазы) Цикл + + СписокВыбора.Добавить(Элемент, Строка(Элемент)); + + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ИспользуемыеТранспортыСообщенийОбмена(Знач УзелИнформационнойБазы) + + Возврат ОбменДаннымиПовтИсп.ИспользуемыеТранспортыСообщенийОбмена(УзелИнформационнойБазы); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Help/ru.html" new file mode 100644 index 00000000..45e7b4a1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/Help/ru.html" @@ -0,0 +1,25 @@ + +

    Предназначен для настройки и хранения сценариев синхронизации данных.

    +

    Открыть список можно из раздела Синхронизация данных по соответствующей команде. Также можно открыть список сценариев из списка Синхронизация данных по соответствующей команде меню Еще.

    +

    В списке выводится:

    +
    • +
       - загрузка (получение данных);
      +
    • +
       - выгрузка (отправка данных);
      +
    • +
      Наименование - полное наименование сценария;

    Жирным шрифтом в списке выделяются сценарии, которые выполняются автоматически по расписанию.

    +

    По команде Еще - Изменить форму можно добавить дополнительные поля, такие как Версия данных, Комментарий и т.д.

    +

    Настройка сценария

    +
    • Нажмите Добавить, введите необходимые поля. +

      Настройка сценария синхронизации данных состоит из следующих этапов:

      +
      • Настроить расписание выполнения сценария синхронизации данных. +
      • Выбрать информационные базы, для которых будет выполняться сценарий синхронизации данных. +
      • Для каждой информационной базы выбрать способ подключения и выполняемое действие (отправка или получение).
    • После того как настроен сценарий синхронизации данных, около настройки синхронизации данных в списке появляется значок . Синхронизация данных производится по расписанию с помощью регламентного задания.

    Включение выгрузки и загрузки данных

    +
    • +
      С помощью выпадающего меню Включить/Отключить можно управлять выгрузкой и загрузкой данных.
      +
    • +
      Если выгрузка или загрузка включена, в соответствующей колонке появляется флажок.
      +
    • +
      Не рекомендуется выполнять только выгрузку данных или только загрузку данных, хотя сценарий позволяет это сделать. Надо выполнять полноценную синхронизацию данных в одном сценарии.

    Включение расписания

    +
    • Нажмите , для того чтобы Включить/Отключить расписание синхронизации данных. Если расписание включено, сценарий выделяется в списке жирным шрифтом. 

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/ManagerModule.bsl" new file mode 100644 index 00000000..80c18d81 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/ManagerModule.bsl" @@ -0,0 +1,490 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("РегламентноеЗаданиеGUID"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура СоздатьСценарий( + УзелИнформационнойБазы, + Расписание = Неопределено, + ИспользоватьРегламентноеЗадание = Истина) Экспорт + + Отказ = Ложь; + + Наименование = НСтр("ru = 'Автоматическая синхронизация данных с %1'"); + Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Наименование, + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "Наименование")); + + ВидТранспортаОбмена = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы); + + СценарийОбменаДанными = СоздатьЭлемент(); + + // Заполняем реквизиты шапки + СценарийОбменаДанными.Наименование = Наименование; + СценарийОбменаДанными.ИспользоватьРегламентноеЗадание = ИспользоватьРегламентноеЗадание; + + // Создаем регламентное задание. + ОбновитьДанныеРегламентногоЗадания(Отказ, Расписание, СценарийОбменаДанными); + + // Табличная часть + СтрокаТаблицы = СценарийОбменаДанными.НастройкиОбмена.Добавить(); + СтрокаТаблицы.ВидТранспортаОбмена = ВидТранспортаОбмена; + СтрокаТаблицы.ВыполняемоеДействие = Перечисления.ДействияПриОбмене.ЗагрузкаДанных; + СтрокаТаблицы.УзелИнформационнойБазы = УзелИнформационнойБазы; + + СтрокаТаблицы = СценарийОбменаДанными.НастройкиОбмена.Добавить(); + СтрокаТаблицы.ВидТранспортаОбмена = ВидТранспортаОбмена; + СтрокаТаблицы.ВыполняемоеДействие = Перечисления.ДействияПриОбмене.ВыгрузкаДанных; + СтрокаТаблицы.УзелИнформационнойБазы = УзелИнформационнойБазы; + + СценарийОбменаДанными.Записать(); + +КонецПроцедуры + +Функция РасписаниеРегламентногоЗаданияПоУмолчанию() Экспорт + + Месяцы = Новый Массив; + Месяцы.Добавить(1); + Месяцы.Добавить(2); + Месяцы.Добавить(3); + Месяцы.Добавить(4); + Месяцы.Добавить(5); + Месяцы.Добавить(6); + Месяцы.Добавить(7); + Месяцы.Добавить(8); + Месяцы.Добавить(9); + Месяцы.Добавить(10); + Месяцы.Добавить(11); + Месяцы.Добавить(12); + + ДниНедели = Новый Массив; + ДниНедели.Добавить(1); + ДниНедели.Добавить(2); + ДниНедели.Добавить(3); + ДниНедели.Добавить(4); + ДниНедели.Добавить(5); + ДниНедели.Добавить(6); + ДниНедели.Добавить(7); + + Расписание = Новый РасписаниеРегламентногоЗадания; + Расписание.ДниНедели = ДниНедели; + Расписание.ПериодПовтораВТечениеДня = 900; // 15 минут + Расписание.ПериодПовтораДней = 1; // каждый день + Расписание.Месяцы = Месяцы; + + Возврат Расписание; +КонецФункции + +// Получает расписание регламентного задания. +// Если регламентное задание не задано, то возвращает пустое расписание (по умолчанию). +// +Функция ПолучитьРасписаниеВыполненияОбменаДанными(НастройкаВыполненияОбмена) Экспорт + + РегламентноеЗаданиеОбъект = РегламентноеЗаданиеПоИдентификатору(НастройкаВыполненияОбмена.РегламентноеЗаданиеGUID); + + Если РегламентноеЗаданиеОбъект <> Неопределено Тогда + + РасписаниеРегламентногоЗадания = РегламентноеЗаданиеОбъект.Расписание; + + Иначе + + РасписаниеРегламентногоЗадания = Новый РасписаниеРегламентногоЗадания; + + КонецЕсли; + + Возврат РасписаниеРегламентногоЗадания; + +КонецФункции + +Процедура ОбновитьДанныеРегламентногоЗадания(Отказ, РасписаниеРегламентногоЗадания, ТекущийОбъект) Экспорт + + // Получаем регламентное задание по идентификатору, если объект не находим, то создаем новый. + РегламентноеЗаданиеОбъект = СоздатьРегламентноеЗаданиеПриНеобходимости(Отказ, ТекущийОбъект); + + Если Отказ Тогда + Возврат; + КонецЕсли; + + // обновляем свойства РЗ + УстановитьПараметрыРегламентногоЗадания(РегламентноеЗаданиеОбъект, РасписаниеРегламентногоЗадания, ТекущийОбъект); + + // Записываем измененное задание. + ЗаписатьРегламентноеЗадание(Отказ, РегламентноеЗаданиеОбъект); + + // Запоминаем GUID регламентное задания в реквизите объекта. + ТекущийОбъект.РегламентноеЗаданиеGUID = Строка(РегламентноеЗаданиеОбъект.УникальныйИдентификатор); + +КонецПроцедуры + +Функция СоздатьРегламентноеЗаданиеПриНеобходимости(Отказ, ТекущийОбъект) + + РегламентноеЗаданиеОбъект = РегламентноеЗаданиеПоИдентификатору(ТекущийОбъект.РегламентноеЗаданиеGUID); + + // При необходимости создаем регламентное задание. + Если РегламентноеЗаданиеОбъект = Неопределено Тогда + ПараметрыЗадания = Новый Структура("Метаданные", Метаданные.РегламентныеЗадания.СинхронизацияДанных); + РегламентноеЗаданиеОбъект = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания); + КонецЕсли; + + Возврат РегламентноеЗаданиеОбъект; + +КонецФункции + +Процедура УстановитьПараметрыРегламентногоЗадания(РегламентноеЗаданиеОбъект, РасписаниеРегламентногоЗадания, ТекущийОбъект) + + Если ПустаяСтрока(ТекущийОбъект.Код) Тогда + + ТекущийОбъект.УстановитьНовыйКод(); + + КонецЕсли; + + ПараметрыРегламентногоЗадания = Новый Массив; + ПараметрыРегламентногоЗадания.Добавить(ТекущийОбъект.Код); + + НаименованиеРегламентногоЗадания = НСтр("ru = 'Выполнение обмена по сценарию: %1'"); + НаименованиеРегламентногоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НаименованиеРегламентногоЗадания, СокрЛП(ТекущийОбъект.Наименование)); + + РегламентноеЗаданиеОбъект.Наименование = Лев(НаименованиеРегламентногоЗадания, 120); + РегламентноеЗаданиеОбъект.Использование = ТекущийОбъект.ИспользоватьРегламентноеЗадание; + РегламентноеЗаданиеОбъект.Параметры = ПараметрыРегламентногоЗадания; + + // Обновляем расписание, если оно было изменено. + Если РасписаниеРегламентногоЗадания <> Неопределено Тогда + РегламентноеЗаданиеОбъект.Расписание = РасписаниеРегламентногоЗадания; + КонецЕсли; + +КонецПроцедуры + +// Выполняет запись регламентного задания. +// +// Параметры: +// Отказ - Булево - флаг отказа. Если в процессе выполнения процедуры были обнаружены ошибки, +// то флаг отказа устанавливается в значение Истина. +// РегламентноеЗаданиеОбъект - объект регламентного задания, которое необходимо записать. +// +Процедура ЗаписатьРегламентноеЗадание(Отказ, РегламентноеЗаданиеОбъект) + + УстановитьПривилегированныйРежим(Истина); + + Попытка + + // записываем задание + РегламентноеЗаданиеОбъект.Записать(); + + Исключение + + СтрокаСообщения = НСтр("ru = 'Произошла ошибка при сохранении расписания выполнения обменов. Подробное описание ошибки: %1'"); + СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + ОбменДаннымиСервер.СообщитьОбОшибке(СтрокаСообщения, Отказ); + + КонецПопытки; + +КонецПроцедуры + +// Возвращает регламентное задание по GUID. +// +// Параметры: +// УникальныйНомерЗадания - Строка - строка с GUID регламентного задания. +// +// Возвращаемое значение: +// Неопределено - если поиск регламентного задания по GUID не дал результатов, или +// РегламентноеЗадание - найденное по GUID регламентное задание. +// +Функция РегламентноеЗаданиеПоИдентификатору(Знач УникальныйНомерЗадания) Экспорт + + Если ПустаяСтрока(УникальныйНомерЗадания) Тогда + Возврат Неопределено; + КонецЕсли; + + Отбор = Новый Структура; + Отбор.Вставить("УникальныйИдентификатор", Новый УникальныйИдентификатор(УникальныйНомерЗадания)); + + УстановитьПривилегированныйРежим(Истина); + Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор); + + Если Задания.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат Задания[0]; + +КонецФункции + +// Удаляет узел из всех сценариев обменов данными. +// Если после этого сценарий оказывается пустым, то такой сценарий удаляется. +// +Процедура ОчиститьСсылкиНаУзелИнформационнойБазы(Знач УзелИнформационнойБазы) Экспорт + + Если ОбщегоНазначения.РазделениеВключено() + И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос( + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | СценарииОбменовДаннымиНастройкиОбмена.Ссылка КАК СценарийОбменаДанными + |ИЗ + | Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена + |ГДЕ + | СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы"); + Запрос.УстановитьПараметр("УзелИнформационнойБазы", УзелИнформационнойБазы); + + ТаблицаСценарии = Запрос.Выполнить().Выгрузить(); + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СценарииОбменовДанными"); + ЭлементБлокировки.ИсточникДанных = ТаблицаСценарии; + ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Ссылка", "СценарийОбменаДанными"); + Блокировка.Заблокировать(); + + Для Каждого СтрокаСценарии Из ТаблицаСценарии Цикл + ЗаблокироватьДанныеДляРедактирования(СтрокаСценарии.СценарийОбменаДанными); + СценарийОбменаДанными = СтрокаСценарии.СценарийОбменаДанными.ПолучитьОбъект(); // СправочникОбъект.СценарииОбменовДанными + + УдалитьВыгрузкуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы); + УдалитьЗагрузкуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы); + + СценарийОбменаДанными.Записать(); + + Если СценарийОбменаДанными.НастройкиОбмена.Количество() = 0 Тогда + СценарийОбменаДанными.Удалить(); + КонецЕсли; + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Процедура УдалитьВыгрузкуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы) Экспорт + + УдалитьСтрокуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ВыгрузкаДанных); + +КонецПроцедуры + +Процедура УдалитьЗагрузкуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы) Экспорт + + УдалитьСтрокуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); + +КонецПроцедуры + +Процедура ДобавитьВыгрузкуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы) Экспорт + + Если ТипЗнч(СценарийОбменаДанными) = Тип("СправочникСсылка.СценарииОбменовДанными") Тогда + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СценарииОбменовДанными"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", СценарийОбменаДанными); + Блокировка.Заблокировать(); + + ЗаблокироватьДанныеДляРедактирования(СценарийОбменаДанными); + СценарийОбъект = СценарийОбменаДанными.ПолучитьОбъект(); + + ДобавитьСтрокиНастроекОбменаПоСценарию( + СценарийОбъект.НастройкиОбмена, УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ВыгрузкаДанных); + + СценарийОбъект.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + Иначе + ДобавитьСтрокиНастроекОбменаПоСценарию( + СценарийОбменаДанными.НастройкиОбмена, УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ВыгрузкаДанных); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьЗагрузкуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы) Экспорт + + Если ТипЗнч(СценарийОбменаДанными) = Тип("СправочникСсылка.СценарииОбменовДанными") Тогда + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СценарииОбменовДанными"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", СценарийОбменаДанными); + Блокировка.Заблокировать(); + + ЗаблокироватьДанныеДляРедактирования(СценарийОбменаДанными); + СценарийОбъект = СценарийОбменаДанными.ПолучитьОбъект(); + + ДобавитьСтрокиНастроекОбменаПоСценарию( + СценарийОбъект.НастройкиОбмена, УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); + + СценарийОбъект.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + Иначе + ДобавитьСтрокиНастроекОбменаПоСценарию( + СценарийОбменаДанными.НастройкиОбмена, УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьСтрокиНастроекОбменаПоСценарию( + НастройкиОбмена, УзелИнформационнойБазы, ВыполняемоеДействие) + + ВидТранспортаОбмена = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы); + + Если ВыполняемоеДействие = Перечисления.ДействияПриОбмене.ВыгрузкаДанных Тогда + // Добавляем выгрузку данных в цикле. + МаксимальныйИндекс = НастройкиОбмена.Количество() - 1; + + Для Индекс = 0 По МаксимальныйИндекс Цикл + + ОбратныйИндекс = МаксимальныйИндекс - Индекс; + + СтрокаТаблицы = НастройкиОбмена[ОбратныйИндекс]; + + // последняя строка выгрузки + Если СтрокаТаблицы.ВыполняемоеДействие = ВыполняемоеДействие Тогда + + НоваяСтрока = НастройкиОбмена.Вставить(ОбратныйИндекс + 1); + + НоваяСтрока.УзелИнформационнойБазы = УзелИнформационнойБазы; + НоваяСтрока.ВидТранспортаОбмена = ВидТранспортаОбмена; + НоваяСтрока.ВыполняемоеДействие = ВыполняемоеДействие; + + Прервать; + КонецЕсли; + + КонецЦикла; + + // Если в цикле строка выгрузки не была добавлена, то вставляем строку в конец таблицы. + Отбор = Новый Структура("УзелИнформационнойБазы, ВыполняемоеДействие", УзелИнформационнойБазы, ВыполняемоеДействие); + Если НастройкиОбмена.НайтиСтроки(Отбор).Количество() = 0 Тогда + + НоваяСтрока = НастройкиОбмена.Добавить(); + + НоваяСтрока.УзелИнформационнойБазы = УзелИнформационнойБазы; + НоваяСтрока.ВидТранспортаОбмена = ВидТранспортаОбмена; + НоваяСтрока.ВыполняемоеДействие = ВыполняемоеДействие; + + КонецЕсли; + ИначеЕсли ВыполняемоеДействие = Перечисления.ДействияПриОбмене.ЗагрузкаДанных Тогда + // Добавляем загрузку данных в цикле. + Для каждого СтрокаТаблицы Из НастройкиОбмена Цикл + + Если СтрокаТаблицы.ВыполняемоеДействие = ВыполняемоеДействие Тогда // первая строка загрузки + + НоваяСтрока = НастройкиОбмена.Вставить(НастройкиОбмена.Индекс(СтрокаТаблицы)); + + НоваяСтрока.УзелИнформационнойБазы = УзелИнформационнойБазы; + НоваяСтрока.ВидТранспортаОбмена = ВидТранспортаОбмена; + НоваяСтрока.ВыполняемоеДействие = ВыполняемоеДействие; + + Прервать; + КонецЕсли; + + КонецЦикла; + + // Если в цикле строка загрузки не была добавлена, то вставляем строку в начало таблицы. + Отбор = Новый Структура("УзелИнформационнойБазы, ВыполняемоеДействие", УзелИнформационнойБазы, ВыполняемоеДействие); + Если НастройкиОбмена.НайтиСтроки(Отбор).Количество() = 0 Тогда + + НоваяСтрока = НастройкиОбмена.Вставить(0); + + НоваяСтрока.УзелИнформационнойБазы = УзелИнформационнойБазы; + НоваяСтрока.ВидТранспортаОбмена = ВидТранспортаОбмена; + НоваяСтрока.ВыполняемоеДействие = ВыполняемоеДействие; + + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура УдалитьСтрокуВСценарииОбменаДанными(СценарийОбменаДанными, УзелИнформационнойБазы, ДействиеПриОбмене) + + Если ТипЗнч(СценарийОбменаДанными) = Тип("СправочникСсылка.СценарииОбменовДанными") Тогда + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СценарииОбменовДанными"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", СценарийОбменаДанными); + Блокировка.Заблокировать(); + + ЗаблокироватьДанныеДляРедактирования(СценарийОбменаДанными); + СценарийОбъект = СценарийОбменаДанными.ПолучитьОбъект(); + + УдалитьСтрокиНастроекОбменаИзСценария(СценарийОбъект.НастройкиОбмена, УзелИнформационнойБазы, ДействиеПриОбмене); + + СценарийОбъект.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + Иначе + УдалитьСтрокиНастроекОбменаИзСценария(СценарийОбменаДанными.НастройкиОбмена, УзелИнформационнойБазы, ДействиеПриОбмене) + КонецЕсли; + +КонецПроцедуры + +Процедура УдалитьСтрокиНастроекОбменаИзСценария(НастройкиОбмена, УзелИнформационнойБазы, ДействиеПриОбмене) + + Сч = НастройкиОбмена.Количество() - 1; + Пока Сч >= 0 Цикл + + СтрокаТаблицы = НастройкиОбмена[Сч]; + + Если СтрокаТаблицы.УзелИнформационнойБазы = УзелИнформационнойБазы + И СтрокаТаблицы.ВыполняемоеДействие = ДействиеПриОбмене Тогда + + НастройкиОбмена.Удалить(Сч); + + КонецЕсли; + + Сч = Сч - 1; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..294fc473 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/ObjectModule.bsl" @@ -0,0 +1,98 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если ПометкаУдаления Тогда + + ИспользоватьРегламентноеЗадание = Ложь; + + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + // Удаляем регламентное задание при необходимости. + Если ПометкаУдаления Тогда + + УдалитьРегламентноеЗадание(Отказ); + + КонецЕсли; + + // Обновляем кэш платформы для зачитывания актуальных настроек + // сценария обмена данными процедурой ОбменДаннымиПовтИсп.НастройкиОбменаДанными. + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + + РегламентноеЗаданиеGUID = ""; + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + УдалитьРегламентноеЗадание(Отказ); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Выполняет удаление регламентного задания. +// +// Параметры: +// Отказ - Булево - флаг отказа. Если в процессе выполнения процедуры были обнаружены ошибки, +// то флаг отказа устанавливается в значение Истина. +// РегламентноеЗаданиеОбъект - объект регламентного задания, которое необходимо удалить. +// +Процедура УдалитьРегламентноеЗадание(Отказ) + + УстановитьПривилегированныйРежим(Истина); + + // Определяем регламентное задание. + РегламентноеЗаданиеОбъект = Справочники.СценарииОбменовДанными.РегламентноеЗаданиеПоИдентификатору(РегламентноеЗаданиеGUID); + + Если РегламентноеЗаданиеОбъект <> Неопределено Тогда + + Попытка + РегламентноеЗаданиеОбъект.Удалить(); + Исключение + СтрокаСообщения = НСтр("ru = 'Ошибка при удалении регламентного задания: %1'"); + СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + ОбменДаннымиСервер.СообщитьОбОшибке(СтрокаСообщения, Отказ); + КонецПопытки; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270.mdo" new file mode 100644 index 00000000..0640931e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\320\274\320\265\320\275\320\276\320\262\320\224\320\260\320\275\320\275\321\213\320\274\320\270.mdo" @@ -0,0 +1,311 @@ + + + + + + + + + + СценарииОбменовДанными + + ru + Сценарии синхронизации данных + + true + Catalog.СценарииОбменовДанными.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование сценария обмена данными. + + + ShowError + Use + + + + + Use + Code + + ru + Код сценария настройки обмена + + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Сценарий синхронизации данных + + + ru + Используется для задания сценариев синхронизации данных + + 2 + true + 5 + 150 + String + Variable + true + true + AsDescription + InDialog + BothWays + Catalog.СценарииОбменовДанными.Form.ФормаЭлемента + Catalog.СценарииОбменовДанными.Form.ФормаСписка + + ИспользоватьРегламентноеЗадание + + ru + Использовать регламентное задание + + + Boolean + + + ru + Признак использования расписания регламентного задания. + + + + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Краткое описание сценария. + + true + + + + + + Use + Use + + + РегламентноеЗаданиеGUID + + ru + Регламентное задание GUID + + + String + + 40 + + + + ru + Строковое представление уникального идентификатора регламентного задания. + + + + + + + Use + Use + + + + + + + НастройкиОбмена + + ru + Настройки синхронизации + + + ru + Содержит последовательно выполняемые действия сценария синхронизации. + + ShowError + + Use + LineNumber + + Use + + + + + УзелИнформационнойБазы + + ru + Информационная база + + + ExchangePlanRef + + + ru + Информационная база, для которой используется сценарий синхронизации данных. + + + + ShowError + Use + Use + + + ВидТранспортаОбмена + + ru + Подключение + + + EnumRef.ВидыТранспортаСообщенийОбмена + + + ru + Подключение, используемое для текущего сценария. + + + + ShowError + Use + Use + + + ВыполняемоеДействие + + ru + Выполняемое действие + + + EnumRef.ДействияПриОбмене + + + ru + Действие сценарий обмена (выгрузка/загрузка данных). + + + + ShowError + Use + Use + + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + НастройкаРасписанияОбменовДанными + + ru + Настройка расписания обменов данными + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..7ef684af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(ВладелецФайла)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..d5bf7ac1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\242\320\265\320\273\320\265\321\204\320\276\320\275\320\275\321\213\320\271\320\227\320\262\320\276\320\275\320\276\320\272\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,835 @@ + + + + + + + + + + ТелефонныйЗвонокПрисоединенныеФайлы + + ru + Присоединенные файлы (Телефонный звонок) + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла (без расширения) + + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + Managed + Use + + ru + Присоединенный файл (Телефонный звонок) + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Автор + + ru + Автор + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил файл в список + + + + ShowError + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Размещение + + + DocumentRef.ТелефонныйЗвонок + + + ru + Место размещения файла (объект) + + + + + Index + Use + + + ДатаЗаема + + ru + Дата заема + + + Date + + + + ru + ДЛФ=ДВ + + + ru + ДЛФ=ДВ + + + ru + Дата, когда файл был занят для редактирования + + false + + + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата изменения (универсальное время) + + + Date + + + + ru + Дата изменения данных файла (универсальное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления файла в список + + + + ShowError + + 0001-01-01T00:00:00 + + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Use + + + Изменил + + ru + Отредактировал + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Последний пользователь, который отредактировал файл + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ИндексКартинки + + ru + Индекс значка + + + Number + + 10 + + + + ru + Индекс значка файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Краткое описание файла + + true + + + + + + Use + Use + + + ПодписанЭП + + ru + Подписан электронно + + + Boolean + + + ru + Признак того, что файл подписан электронно + + + + + Use + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + + + Use + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + + + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который занял файл для редактирования + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или в информационной базе) + + + + ShowError + + Index + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (когда файл хранится в томе) + + + + + Index + Use + + + ФайлХранилище + + ru + Временное хранилище файла + + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + ХранитьВерсии + + ru + Хранить версии + + + Boolean + + + ru + Добавлять версии файла при окончании редактирования. Если отключить, тогда будет хранится только последняя версия. + + false + + + + Use + Use + + + + + + + УдалитьЭлектронныеПодписи + + ru + (не используется) электронные подписи + + + ru + Хранение электронных подписей файла + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Index + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + ДатаПроверкиПодписи + + ru + Дата проверки подписи + + + Date + + + + ru + Дата последней проверки подписи. + + + + Use + Use + + + ПодписьВерна + + ru + Подпись верна + + + Boolean + + + ru + Результат последней проверки подписи. + + + + Use + Use + + + + + + + + УдалитьСертификатыШифрования + + ru + (не используется) Сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\243\320\264\320\260\320\273\320\265\320\275\320\270\320\265\320\233\320\270\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\242\320\276\320\274\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\243\320\264\320\260\320\273\320\265\320\275\320\270\320\265\320\233\320\270\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\242\320\276\320\274\320\260/Form.form" new file mode 100644 index 00000000..b74d3ea3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\243\320\264\320\260\320\273\320\265\320\275\320\270\320\265\320\233\320\270\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\242\320\276\320\274\320\260/Form.form" @@ -0,0 +1,642 @@ + + + + ГруппаЛишниеФайлы + 16 + + КоличествоЛишнихФайлов + 13 + true + true + + true + + + + КоличествоЛишнихФайлов + + + + КоличествоЛишнихФайловРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + КоличествоЛишнихФайловКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДекорацияПодробнее + 18 + + <key>ru</key> + <value>Подробнее ...</value> + + true + true + + true + + + ДекорацияПодробнееРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПодробнееКонтекстноеМеню + 19 + true + true + + true + + true + + Label + true + + + Click + ДекорацияПодробнееНажатие + + true + Left + + + true + true + + true + + + ГруппаЛишниеФайлыРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + NormalSeparation + true + true + Auto + Auto + + + + ГруппаКомментарий + 5 + + ДекорацияИконка + 7 + + <key>ru</key> + <value>Декорация иконка</value> + + true + true + + true + + + ДекорацияИконкаExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияИконкаКонтекстноеМеню + 8 + true + true + + true + + true + + true + true + false + + + CommonPicture.Информация32 + + + + + ДекорацияИнфо + 10 + + <key>ru</key> + <value>Если в файлах, которые есть на диске, но сведения о них в базе отсутствуют, может содержаться полезная информация, +то рекомендуется скопировать их в другую папку.</value> + + true + true + + true + + + ДекорацияИнфоExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияИнфоКонтекстноеМеню + 11 + true + true + + true + + true + + Label + true + true + false + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + ГруппаКомментарийРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Center + true + true + Auto + Auto + + + + НастройкиУдаления + 27 + + СкопироватьФайлыПередУдалением + 24 + true + true + + true + + + + СкопироватьФайлыПередУдалением + + + Right + + OnChange + СкопироватьФайлыПередУдалениемПриИзменении + + + СкопироватьФайлыПередУдалениемРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СкопироватьФайлыПередУдалениемКонтекстноеМеню + 25 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПутьКПапкеДляКопирования + 21 + true + true + + true + + + + ПутьКПапкеДляКопирования + + + None + + OnChange + ПутьКПапкеДляКопированияПриИзменении + + + ПутьКПапкеДляКопированияРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + ПутьКПапкеДляКопированияКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ПутьКПапкеДляКопированияНачалоВыбора + + true + true + true + true + true + true + true + true + + + true + true + + true + + + НастройкиУдаленияРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаУдалитьЛишниеФайлы + 1 + true + true + + true + + + ФормаУдалитьЛишниеФайлыРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УдалитьЛишниеФайлы + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 3 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + + КоличествоЛишнихФайлов + + <key>ru</key> + <value>Количество лишних файлов</value> + + 1 + + Number + + 5 + true + + + + true + + + true + + + + ПутьКПапкеДляКопирования + + <key>ru</key> + <value>Путь к папке для копирования</value> + + 2 + + String + + + + true + + + true + + + + ТомХраненияФайлов + 3 + + CatalogRef.ТомаХраненияФайлов + + + true + + + true + + + + ЛишниеФайлы + 4 + + ValueTable + + + true + + + true + + + ПолноеИмя + 1 + + String + + + + true + + + true + + + + Имя + 2 + + String + + + + true + + + true + + + + + ПутьДня + 5 + + String + + + + true + + + true + + + + СкопироватьФайлыПередУдалением + + <key>ru</key> + <value>Скопировать файлы перед удалением в папку:</value> + + 6 + + Boolean + + + true + + + true + + + + УдалитьЛишниеФайлы + + <key>ru</key> + <value>Удалить лишние файлы</value> + + 1 + + ru + Удалить лишние файлы + + + true + + + + УдалитьЛишниеФайлы + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\243\320\264\320\260\320\273\320\265\320\275\320\270\320\265\320\233\320\270\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\242\320\276\320\274\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\243\320\264\320\260\320\273\320\265\320\275\320\270\320\265\320\233\320\270\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\242\320\276\320\274\320\260/Module.bsl" new file mode 100644 index 00000000..1b2ba0fe --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\243\320\264\320\260\320\273\320\265\320\275\320\270\320\265\320\233\320\270\321\210\320\275\320\270\321\205\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\242\320\276\320\274\320\260/Module.bsl" @@ -0,0 +1,530 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Параметры.Свойство("ТомХраненияФайлов", ТомХраненияФайлов); + + ЗаполнитьТаблицуЛишнихФайлов(); + КоличествоЛишнихФайлов = ЛишниеФайлы.Количество(); + + ПутьДня = Формат(ТекущаяДатаСеанса(), "ДФ=ггггММдд") + ПолучитьРазделительПути(); + + СкопироватьФайлыПередУдалением = Ложь; + Элементы.ПутьКПапкеДляКопирования.Доступность = Ложь; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ДекорацияПодробнееНажатие(Элемент) + + ПараметрыОтчета = Новый Структура(); + ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина); + ПараметрыОтчета.Вставить("Отбор", Новый Структура("Том", ТомХраненияФайлов)); + + ОткрытьФорму("Отчет.ПроверкаЦелостностиТома.ФормаОбъекта", ПараметрыОтчета); + +КонецПроцедуры + +&НаКлиенте +Процедура ПутьКПапкеДляКопированияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); + ДиалогОткрытияФайла.ПолноеИмяФайла = ""; + ДиалогОткрытияФайла.Каталог = ПутьКПапкеДляКопирования; + ДиалогОткрытияФайла.МножественныйВыбор = Ложь; + ДиалогОткрытияФайла.Заголовок = Заголовок; + + Контекст = Новый Структура("ДиалогОткрытияФайла", ДиалогОткрытияФайла); + + ОписаниеОповещенияДиалогаВыбора = Новый ОписаниеОповещения( + "ПутьКПапкеДляКопированияНачалоВыбораЗавершение", ЭтотОбъект, Контекст); + ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(ОписаниеОповещенияДиалогаВыбора, ДиалогОткрытияФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура ПутьКПапкеДляКопированияНачалоВыбораЗавершение(ВыбранныеФайлы, Контекст) Экспорт + + ДиалогОткрытияФайла = Контекст.ДиалогОткрытияФайла; + + Если ВыбранныеФайлы = Неопределено Тогда + Элементы.ФормаУдалитьЛишниеФайлы.Доступность = Ложь; + Иначе + ПутьКПапкеДляКопирования = ДиалогОткрытияФайла.Каталог; + ПутьКПапкеДляКопирования = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКПапкеДляКопирования); + Элементы.ФормаУдалитьЛишниеФайлы.Доступность = ЗначениеЗаполнено(ПутьКПапкеДляКопирования); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПутьКПапкеДляКопированияПриИзменении(Элемент) + + ПутьКПапкеДляКопирования = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКПапкеДляКопирования); + Элементы.ФормаУдалитьЛишниеФайлы.Доступность = ЗначениеЗаполнено(ПутьКПапкеДляКопирования); + +КонецПроцедуры + +&НаКлиенте +Процедура СкопироватьФайлыПередУдалениемПриИзменении(Элемент) + + Если Не СкопироватьФайлыПередУдалением Тогда + ПутьКПапкеДляКопирования = ""; + Элементы.ПутьКПапкеДляКопирования.Доступность = Ложь; + Элементы.ФормаУдалитьЛишниеФайлы.Доступность = Истина; + Иначе + Элементы.ПутьКПапкеДляКопирования.Доступность = Истина; + Если ЗначениеЗаполнено(ПутьКПапкеДляКопирования) Тогда + Элементы.ФормаУдалитьЛишниеФайлы.Доступность = Истина; + Иначе + Элементы.ФормаУдалитьЛишниеФайлы.Доступность = Ложь; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура УдалитьЛишниеФайлы(Команда) + + Если КоличествоЛишнихФайлов = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Нет ни одного лишнего файла на диске'")); + Возврат; + КонецЕсли; + + ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами( + Новый ОписаниеОповещения("ПодключениеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект),, + Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ПодключениеРасширенияРаботыСФайламиЗавершение(РасширениеПодключено, ДополнительныеПараметры) Экспорт + + Если Не РасширениеПодключено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не установлено расширение для работы с 1С:Предприятием. Действие не доступно.'")); + Возврат; + КонецЕсли; + + Если Не СкопироватьФайлыПередУдалением Тогда + ПослеПроверкиЗаписиВКаталог(Истина, Новый Структура); + Иначе + ПапкаДляКопирования = Новый Файл(ПутьКПапкеДляКопирования); + ПапкаДляКопирования.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПроверкаСуществованияКаталогаЗавершение", ЭтотОбъект)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверкаСуществованияКаталогаЗавершение(Существует, ДополнительныеПараметры) Экспорт + + Если Не Существует Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Указанная папка не существует.'")); + Иначе + ПравоЗаписиВКаталог(Новый ОписаниеОповещения("ПослеПроверкиЗаписиВКаталог", ЭтотОбъект)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеПроверкиЗаписиВКаталог(Результат, ДополнительныеПараметры) Экспорт + + Если Не Результат Тогда + Возврат; + КонецЕсли; + + Если ЛишниеФайлы.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ПараметрыИтоговогоОповещения = Новый Структура; + ПараметрыИтоговогоОповещения.Вставить("МассивФайловСОшибками", Новый Массив); + ПараметрыИтоговогоОповещения.Вставить("ЧислоУдаленныхФайлов", 0); + ИтоговоеОповещение = Новый ОписаниеОповещения("ПослеОбработкиФайлов", ЭтотОбъект, ПараметрыИтоговогоОповещения); + + ВыполнитьОбработкуОповещения(Новый ОписаниеОповещения("ОбработатьОчереднойФайл", ЭтотОбъект, + Новый Структура("ИтоговоеОповещение, ТекущийФайл", ИтоговоеОповещение, Неопределено), "ОбработатьОчереднойФайлОшибка", ЭтотОбъект)); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьОчереднойФайл(Результат, ДополнительныеПараметры) Экспорт + + ТекущийФайл = ДополнительныеПараметры.ТекущийФайл; + ПоследняяИтерация = Ложь; + + Если ТекущийФайл = Неопределено Тогда + ТекущийФайл = ЛишниеФайлы.Получить(0); + Иначе + + ИндексТекущегоФайла = ЛишниеФайлы.Индекс(ТекущийФайл); + Если ИндексТекущегоФайла = ЛишниеФайлы.Количество() - 1 Тогда + ПоследняяИтерация = Истина; + Иначе + ТекущийФайл = ЛишниеФайлы.Получить(ИндексТекущегоФайла + 1); + КонецЕсли; + + КонецЕсли; + + ПолноеИмяТекущегоФайла = ТекущийФайл.ПолноеИмя; + ПараметрыТекущегоФайла = ПараметрыТекущегоФайла(ДополнительныеПараметры, ПоследняяИтерация, ТекущийФайл); + + Если Не ПустаяСтрока(ПутьКПапкеДляКопирования) Тогда + + Файл = Новый Файл(ПолноеИмяТекущегоФайла); + Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПроверкаСуществованияФайлаЗавершение", ЭтотОбъект, ПараметрыТекущегоФайла)); + + Иначе + + НачатьУдалениеФайлов(Новый ОписаниеОповещения("ОбработатьУдалениеОчередногоФайлаЗавершение", ЭтотОбъект, ПараметрыТекущегоФайла, + "ОбработатьОчереднойФайлОшибка", ЭтотОбъект), ПолноеИмяТекущегоФайла); + + КонецЕсли; + +КонецПроцедуры + + +// Возвращаемое значение: +// Структура: +// * КаталогДляКопирования - Строка +// * ПоследняяИтерация - Булево +// * ТекущийФайл - Файл +// * ИтоговоеОповещение - ОписаниеОповещения +// +&НаКлиенте +Функция ПараметрыТекущегоФайла(ДополнительныеПараметры, Знач ПоследняяИтерация, Знач ТекущийФайл) + КаталогДляКопирования = ПутьКПапкеДляКопирования + ПутьДня + ПолучитьРазделительПути(); + + ПараметрыТекущегоФайла = Новый Структура; + ПараметрыТекущегоФайла.Вставить("ИтоговоеОповещение", ДополнительныеПараметры.ИтоговоеОповещение); + ПараметрыТекущегоФайла.Вставить("ТекущийФайл", ТекущийФайл); + ПараметрыТекущегоФайла.Вставить("ПоследняяИтерация", ПоследняяИтерация); + ПараметрыТекущегоФайла.Вставить("КаталогДляКопирования", КаталогДляКопирования); + Возврат ПараметрыТекущегоФайла +КонецФункции + + +&НаКлиенте +Процедура ПроверкаСуществованияФайлаЗавершение(ФайлСуществует, ДополнительныеПараметры) Экспорт + + Если Не ФайлСуществует Тогда + ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ИтоговоеОповещение); + Иначе + КаталогТекущегоДня = Новый Файл(ДополнительныеПараметры.КаталогДляКопирования); + КаталогТекущегоДня.НачатьПроверкуСуществования(Новый ОписаниеОповещения("КаталогДняСуществуетЗавершение", ЭтотОбъект, ДополнительныеПараметры)); + КонецЕсли; + +КонецПроцедуры + +// Параметры: +// КаталогСуществует - Булево +// ДополнительныеПараметры - см. ПараметрыТекущегоФайла +// +&НаКлиенте +Процедура КаталогДняСуществуетЗавершение(КаталогСуществует, ДополнительныеПараметры) Экспорт + + Если Не КаталогСуществует Тогда + НачатьСозданиеКаталога(Новый ОписаниеОповещения("СоздатьКаталогДняЗавершение", ЭтотОбъект, ДополнительныеПараметры), ДополнительныеПараметры.КаталогДляКопирования); + Иначе + КонечноеИмяФайла = ДополнительныеПараметры.КаталогДляКопирования + ДополнительныеПараметры.ТекущийФайл.Имя; + Файл = Новый Файл(КонечноеИмяФайла); + Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПроверкаСуществованияКонечногоФайлаЗавершение", ЭтотОбъект, ДополнительныеПараметры)); + КонецЕсли; + +КонецПроцедуры + +// Параметры: +// ИмяКаталога - Строка +// ДополнительныеПараметры - см. ПараметрыТекущегоФайла +// +&НаКлиенте +Процедура СоздатьКаталогДняЗавершение(ИмяКаталога, ДополнительныеПараметры) Экспорт + КонечноеИмяФайла = ДополнительныеПараметры.КаталогДляКопирования + ДополнительныеПараметры.ТекущийФайл.Имя; + Файл = Новый Файл(КонечноеИмяФайла); + Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПроверкаСуществованияКонечногоФайлаЗавершение", ЭтотОбъект, ДополнительныеПараметры)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверкаСуществованияКонечногоФайлаЗавершение(ФайлСуществует, ДополнительныеПараметры) Экспорт + + КаталогДляКопирования = ДополнительныеПараметры.КаталогДляКопирования; + ИмяТекущегоФайла = ДополнительныеПараметры.ТекущийФайл.Имя; + ПолноеИмяТекущегоФайла = ДополнительныеПараметры.ТекущийФайл.ПолноеИмя; + + Если Не ФайлСуществует Тогда + КонечноеИмяФайла = КаталогДляКопирования + ИмяТекущегоФайла; + Иначе + РазделенноеИмяФайла = СтрРазделить(ИмяТекущегоФайла, "."); + ИмяБезРасширения = РазделенноеИмяФайла.Получить(0); + Расширение = РазделенноеИмяФайла.Получить(1); + КонечноеИмяФайла = КаталогДляКопирования + ИмяБезРасширения + "_" + Строка(Новый УникальныйИдентификатор) + "." + Расширение; + КонецЕсли; + + НачатьПеремещениеФайла(Новый ОписаниеОповещения("ОбработатьПеремещениеОчередногоФайлаЗавершение", ЭтотОбъект, ДополнительныеПараметры, + "ОбработатьОчереднойФайлОшибка", ЭтотОбъект), ПолноеИмяТекущегоФайла, КонечноеИмяФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьПеремещениеОчередногоФайлаЗавершение(Результат, ДополнительныеПараметры) Экспорт + + ОбработатьОчереднойФайлЗавершение(ДополнительныеПараметры); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьУдалениеОчередногоФайлаЗавершение(ДополнительныеПараметры) Экспорт + + ОбработатьОчереднойФайлЗавершение(ДополнительныеПараметры); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьОчереднойФайлЗавершение(ДополнительныеПараметры) + + ТекущийФайл = ДополнительныеПараметры.ТекущийФайл; + ИтоговоеОповещение = ДополнительныеПараметры.ИтоговоеОповещение; // ОписаниеОповещения + ПараметрыИтоговогоОповещения = ИтоговоеОповещение.ДополнительныеПараметры; + + ПараметрыИтоговогоОповещения.Вставить("ЧислоУдаленныхФайлов", ПараметрыИтоговогоОповещения.ЧислоУдаленныхФайлов + 1); + + Если ДополнительныеПараметры.ПоследняяИтерация Тогда + ВыполнитьОбработкуОповещения(ИтоговоеОповещение); + Иначе + ВыполнитьОбработкуОповещения(Новый ОписаниеОповещения("ОбработатьОчереднойФайл", ЭтотОбъект, + Новый Структура("ИтоговоеОповещение, ТекущийФайл", ИтоговоеОповещение, ТекущийФайл), "ОбработатьОчереднойФайлОшибка", ЭтотОбъект)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьОчереднойФайлОшибка(ИнформацияОбОшибке, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт + + ТекущийФайл = ДополнительныеПараметры.ТекущийФайл; + ИмяТекущегоФайла = ТекущийФайл.Имя; + + ИтоговоеОповещение = ДополнительныеПараметры.ИтоговоеОповещение; // ОписаниеОповещения + ПараметрыИтоговогоОповещения = ИтоговоеОповещение.ДополнительныеПараметры; + + СтруктураОшибки = СтруктураОшибки(ИмяТекущегоФайла, ИнформацияОбОшибке); + + МассивФайловСОшибками = ПараметрыИтоговогоОповещения.МассивФайловСОшибками; // Массив + МассивФайловСОшибками.Добавить(СтруктураОшибки); + ПараметрыИтоговогоОповещения.Вставить("МассивФайловСОшибками", МассивФайловСОшибками); + + ОбработатьСообщениеОбОшибке(ТекущийФайл.ПолноеИмя, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + + Если ДополнительныеПараметры.ПоследняяИтерация Тогда + ВыполнитьОбработкуОповещения(ИтоговоеОповещение); + Иначе + ВыполнитьОбработкуОповещения(Новый ОписаниеОповещения("ОбработатьОчереднойФайл", ЭтотОбъект, + Новый Структура("ИтоговоеОповещение, ТекущийФайл", ИтоговоеОповещение, ТекущийФайл), "ОбработатьОчереднойФайлОшибка", ЭтотОбъект)); + КонецЕсли; + +КонецПроцедуры + +// Возвращаемое значение: +// Структура: +// * Имя - Строка +// * Ошибка - Строка +// +&НаКлиенте +Функция СтруктураОшибки(ИмяТекущегоФайла, ИнформацияОбОшибке) + СтруктураОшибки = Новый Структура; + СтруктураОшибки.Вставить("Имя", ИмяТекущегоФайла); + СтруктураОшибки.Вставить("Ошибка", КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + Возврат СтруктураОшибки; +КонецФункции + +&НаКлиенте +Процедура ПослеОбработкиФайлов(Результат, ДополнительныеПараметры) Экспорт + + ЧислоУдаленныхФайлов = ДополнительныеПараметры.ЧислоУдаленныхФайлов; + МассивФайловСОшибками = ДополнительныеПараметры.МассивФайловСОшибками;// Массив из см. СтруктураОшибки + + Если ЧислоУдаленныхФайлов <> 0 Тогда + ТекстОповещения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Удалено файлов: %1'"), + ЧислоУдаленныхФайлов); + ПоказатьОповещениеПользователя( + НСтр("ru = 'Завершено удаление лишних файлов.'"), + , + ТекстОповещения, + БиблиотекаКартинок.Информация32); + КонецЕсли; + + Если МассивФайловСОшибками.Количество() > 0 Тогда + ОтчетОбОшибках = Новый ТабличныйДокумент; + СформироватьОтчетОбОшибках(ОтчетОбОшибках, МассивФайловСОшибками); + ОтчетОбОшибках.Показать(); + КонецЕсли; + + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьТаблицуЛишнихФайлов() + + ТаблицаФайловНаДиске = РаботаСФайламиВТомахСлужебный.ЛишниеФайлыНаДиске(); + ПутьКТому = СокрЛП(РаботаСФайламиВТомахСлужебный.ПолныйПутьТома(ТомХраненияФайлов)); + + МассивФайлов = НайтиФайлы(ПутьКТому,"*", Истина); + Для Каждого Файл Из МассивФайлов Цикл + + Если Не Файл.ЭтоФайл() Тогда + Продолжить; + КонецЕсли; + + НоваяСтрока = ТаблицаФайловНаДиске.Добавить(); + НоваяСтрока.Имя = Файл.Имя; + НоваяСтрока.ИмяБезРасширения = Файл.ИмяБезРасширения; + НоваяСтрока.ПолноеИмя = Файл.ПолноеИмя; + НоваяСтрока.Путь = Файл.Путь; + НоваяСтрока.Расширение = Файл.Расширение; + НоваяСтрока.СтатусПроверки = НСтр("ru = 'Лишние файлы (есть на диске, но сведения о них отсутствуют)'"); + НоваяСтрока.Количество = 1; + НоваяСтрока.Том = ТомХраненияФайлов; + + КонецЦикла; + + РаботаСФайламиВТомахСлужебный.ПроверитьЦелостностьФайлов(ТаблицаФайловНаДиске, ТомХраненияФайлов); + ТаблицаФайловНаДиске.Индексы.Добавить("СтатусПроверки"); + МассивЛишнихФайлов = ТаблицаФайловНаДиске.НайтиСтроки( + Новый Структура("СтатусПроверки", НСтр("ru = 'Лишние файлы (есть на диске, но сведения о них отсутствуют)'"))); + + Для Каждого Файл Из МассивЛишнихФайлов Цикл + НоваяСтрока = ЛишниеФайлы.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Файл); + КонецЦикла; + + ЛишниеФайлы.Сортировать("Имя"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПравоЗаписиВКаталог(ИсходноеОповещение) + + Если ПустаяСтрока(ПутьКПапкеДляКопирования) Тогда + ВыполнитьОбработкуОповещения(ИсходноеОповещение, Истина); + Возврат + КонецЕсли; + + ИмяКаталога = ПутьКПапкеДляКопирования + "ПроверкаДоступа\"; + + ПараметрыУдаленияКаталога = Новый Структура("ИсходноеОповещение, ИмяКаталога", ИсходноеОповещение, ИмяКаталога); + ОповещениеСозданияКаталога = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект, ПараметрыУдаленияКаталога, "ПослеОшибкиСозданияКаталога", ЭтотОбъект); + НачатьСозданиеКаталога(ОповещениеСозданияКаталога, ИмяКаталога); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОшибкиСозданияКаталога(ИнформацияОбОшибке, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт + + ОбработатьОшибкуПравДоступа(ИнформацияОбОшибке, ДополнительныеПараметры.ИсходноеОповещение); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеСозданияКаталога(Результат, ДополнительныеПараметры) Экспорт + + НачатьУдалениеФайлов(Новый ОписаниеОповещения("ПослеУдаленияКаталога", ЭтотОбъект, ДополнительныеПараметры, "ПослеОшибкиУдаленияКаталога", ЭтотОбъект), ДополнительныеПараметры.ИмяКаталога); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеУдаленияКаталога(ДополнительныеПараметры) Экспорт + + ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ИсходноеОповещение, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОшибкиУдаленияКаталога(ИнформацияОбОшибке, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт + + ОбработатьОшибкуПравДоступа(ИнформацияОбОшибке, ДополнительныеПараметры.ИсходноеОповещение); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьОшибкуПравДоступа(ИнформацияОбОшибке, ИсходноеОповещение) + + ШаблонОшибки = НСтр("ru = 'Некорректная папка для копирования. + |Возможно учетная запись, от лица которой работает + |сервер 1С:Предприятия, не имеет прав доступа к указанной папке. + | + |%1'"); + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , , "ПутьКПапкеДляКопирования"); + + ВыполнитьОбработкуОповещения(ИсходноеОповещение, Ложь); + +КонецПроцедуры + +&НаСервере +Процедура ОбработатьСообщениеОбОшибке(ИмяФайла, ИнформацияОбОшибке) + + ЗаписьЖурналаРегистрации(НСтр("ru = 'Файлы.Ошибка удаления лишних файлов'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Информация,,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При удалении файла с диска + |""%1"" + |возникла ошибка: + |""%2"".'"), + ИмяФайла, + ИнформацияОбОшибке)); + +КонецПроцедуры + +// Параметры: +// ОтчетОбОшибках - ТабличныйДокумент +// МассивФайловСОшибками - Массив из см. СтруктураОшибки +// +&НаСервере +Процедура СформироватьОтчетОбОшибках(ОтчетОбОшибках, МассивФайловСОшибками) + + ТабМакет = Справочники.ТомаХраненияФайлов.ПолучитьМакет("МакетОтчета"); + + ОбластьЗаголовок = ТабМакет.ПолучитьОбласть("Заголовок"); + ОбластьЗаголовок.Параметры.Описание = НСтр("ru = 'Файлы с ошибками:'"); + ОтчетОбОшибках.Вывести(ОбластьЗаголовок); + + ОбластьСтрока = ТабМакет.ПолучитьОбласть("Строка"); + + Для Каждого ФайлСОшибкой Из МассивФайловСОшибками Цикл + ОбластьСтрока.Параметры.Название = ФайлСОшибкой.Имя; + ОбластьСтрока.Параметры.Ошибка = ФайлСОшибкой.Ошибка; + ОтчетОбОшибках.Вывести(ОбластьСтрока); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..72691ab4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + ПорядокЗаполнения + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..04c1d28b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1088 @@ + + + + ГруппаПользовательскихНастроек + 62 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель + 64 + + ФормаСоздать + 48 + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ФормаСкопировать + 50 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаИзменить + 52 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаУстановкаПометкиУдаления + 28 + true + true + + true + + + ФормаУстановкаПометкиУдаленияРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановкаПометкиУдаления + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСтандартныеКоманды + 46 + true + true + + true + + + <key>ru</key> + <value>Форма стандартные команды</value> + + + ФормаСтандартныеКомандыРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 54 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + + ПеренестиВсеФайлыВТома + 75 + true + true + + true + + + ПеренестиВсеФайлыВТомаРасширеннаяПодсказка + 76 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПеренестиФайлы + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Delete + SetDeletionMark + + ВертикальнаяГруппа1 + 56 + VeryHigh + + СписокНаименование + 4 + VeryHigh + true + true + + true + + + + Список.Description + + + true + + СписокНаименованиеРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + СписокНаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 25 + true + true + + + + СписокКомментарий + 10 + VeryLow + true + true + + true + + + + Список.Комментарий + + + + СписокКомментарийРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + СписокКомментарийКонтекстноеМеню + 11 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 25 + true + 1 + true + + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 1</value> + + + ВертикальнаяГруппа1РасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + ВертикальнаяГруппа2 + 58 + + СписокПорядокЗаполнения + 6 + VeryHigh + true + true + + true + + + + Список.ПорядокЗаполнения + + + + СписокПорядокЗаполненияРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + СписокПорядокЗаполненияКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 10 + true + true + + + + СписокМаксимальныйРазмер + 12 + VeryLow + true + true + + true + + + + Список.МаксимальныйРазмер + + + + СписокМаксимальныйРазмерРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокМаксимальныйРазмерКонтекстноеМеню + 13 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 10 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 2</value> + + + ВертикальнаяГруппа2РасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + ВертикальнаяГруппа3 + 60 + + СписокПолныйПутьWindows + 14 + Usual + + <key>ru</key> + <value>Полный путь Microsoft Windows</value> + + true + true + + true + + + + Список.ПолныйПутьWindows + + + + СписокПолныйПутьWindowsРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + СписокПолныйПутьWindowsКонтекстноеМеню + 15 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 45 + true + true + + + + СписокПолныйПутьLinux + 16 + Usual + + <key>ru</key> + <value>Полный путь Linux</value> + + true + true + + true + + + + Список.ПолныйПутьLinux + + + + СписокПолныйПутьLinuxРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокПолныйПутьLinuxКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 45 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Вертикальная группа 3</value> + + + ВертикальнаяГруппа3РасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + СписокСсылка + 25 + true + true + + + + Список.Ref + + + + СписокСсылкаРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 26 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 66 + + СписокСтрокаПоискаРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 67 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 69 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 70 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 72 + + СписокУправлениеПоискомРасширеннаяПодсказка + 74 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 73 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюУстановкаПометкиУдаления + 77 + true + true + + true + + + СписокКонтекстноеМенюУстановкаПометкиУдаленияРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановкаПометкиУдаления + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + None + None + None + SelectionPresentationAndChoice + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
    + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Delete + SetDeletionMark + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.DeletionMark + + + Список.Description + + + Список.Ref + +
    true
    + + Catalog.ТомаХраненияФайлов + true + true + true + true + +
    + + УстановкаПометкиУдаления + + <key>ru</key> + <value>Установка пометки удаления</value> + + 1 + + ru + Установка пометки удаления + + + true + + + StdPicture.MarkToDelete + + + + УстановитьСнятьПометкуУдаления + + + Picture + DontUse + + + ПеренестиФайлы + + <key>ru</key> + <value>Перенести файлы</value> + + 2 + + ru + Перенести файлы + + + true + + + + ПеренестиФайлы + + + DontUse + + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..a9155dff --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,162 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.ПеренестиВсеФайлыВТома.Видимость = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами"); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.СписокКомментарий.Видимость = Ложь; + Элементы.СписокМаксимальныйРазмер.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура УстановитьСнятьПометкуУдаления(Команда) + + Если Элементы.Список.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + НачатьИзменениеПометкиУдаления(Элементы.Список.ТекущиеДанные); + +КонецПроцедуры + +&НаКлиенте +Процедура ПеренестиФайлы(Команда) + + РаботаСФайламиСлужебныйКлиент.ПеренестиФайлы(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура НачатьИзменениеПометкиУдаления(ТекущиеДанные) + + Если ТекущиеДанные.ПометкаУдаления Тогда + ТекстВопроса = НСтр("ru = 'Снять с ""%1"" пометку на удаление?'"); + Иначе + ТекстВопроса = НСтр("ru = 'Пометить ""%1"" на удаление?'"); + КонецЕсли; + + СодержимоеВопроса = Новый Массив; + СодержимоеВопроса.Добавить(БиблиотекаКартинок.Вопрос32); + СодержимоеВопроса.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса, ТекущиеДанные.Наименование)); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПродолжитьИзменениеПометкиУдаления", ЭтотОбъект, ТекущиеДанные), + Новый ФорматированнаяСтрока(СодержимоеВопроса), + РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьИзменениеПометкиУдаления(Ответ, ТекущиеДанные) Экспорт + + Если Ответ <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + Том = Элементы.Список.ТекущиеДанные.Ссылка; + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("Том", Элементы.Список.ТекущиеДанные.Ссылка); + ДополнительныеПараметры.Вставить("ПометкаУдаления", Неопределено); + ДополнительныеПараметры.Вставить("Запросы", Новый Массив()); + ДополнительныеПараметры.Вставить("ИдентификаторФормы", УникальныйИдентификатор); + + ПодготовкаКУстановкеСнятиюПометкиУдаления(Том, ДополнительныеПараметры); + + ОповещениеОПродолжении = Новый ОписаниеОповещения( + "ПродолжитьУстановкуСнятиеПометкиУдаления", ЭтотОбъект, ДополнительныеПараметры); + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); + МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов( + ДополнительныеПараметры.Запросы, ЭтотОбъект, ОповещениеОПродолжении); + Иначе + ВыполнитьОбработкуОповещения(ОповещениеОПродолжении, КодВозвратаДиалога.ОК); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ПодготовкаКУстановкеСнятиюПометкиУдаления(Том, ДополнительныеПараметры) + + ЗаблокироватьДанныеДляРедактирования(Том, , ДополнительныеПараметры.ИдентификаторФормы); + + СвойстваТома = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Том, "ПометкаУдаления,ПолныйПутьWindows,ПолныйПутьLinux"); + + ДополнительныеПараметры.ПометкаУдаления = СвойстваТома.ПометкаУдаления; + + Если ДополнительныеПараметры.ПометкаУдаления Тогда + // Пометка удаления установлена, ее требуется снять. + + Запрос = Справочники.ТомаХраненияФайлов.ЗапросНаИспользованиеВнешнихРесурсовДляТома( + Том, СвойстваТома.ПолныйПутьWindows, СвойстваТома.ПолныйПутьLinux); + Иначе + // Пометка удаления не установлена, ее требуется установить. + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + Запрос = МодульРаботаВБезопасномРежиме.ЗапросНаОчисткуРазрешенийИспользованияВнешнихРесурсов(Том) + КонецЕсли; + КонецЕсли; + + ДополнительныеПараметры.Запросы.Добавить(Запрос); + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьУстановкуСнятиеПометкиУдаления(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = КодВозвратаДиалога.ОК Тогда + ЗавершитьУстановкуСнятиеПометкиУдаления(ДополнительныеПараметры); + Элементы.Список.Обновить(); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ЗавершитьУстановкуСнятиеПометкиУдаления(ДополнительныеПараметры) + + НачатьТранзакцию(); + Попытка + + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировкиДанных = БлокировкаДанных.Добавить(Метаданные.Справочники.ТомаХраненияФайлов.ПолноеИмя()); + ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", ДополнительныеПараметры.Том); + БлокировкаДанных.Заблокировать(); + + Объект = ДополнительныеПараметры.Том.ПолучитьОбъект(); + Объект.УстановитьПометкуУдаления(Не ДополнительныеПараметры.ПометкаУдаления); + Объект.Записать(); + + РазблокироватьДанныеДляРедактирования( + ДополнительныеПараметры.Том, ДополнительныеПараметры.ИдентификаторФормы); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..b5437d58 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,999 @@ + + + + ГруппаКодИНаименование + 12 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Код + 1 + true + true + + true + + + + Объект.Code + + + true + + КодExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Код и наименование</value> + + + ГруппаКодИНаименованиеExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Свойства + 42 + + СвойстваГлавное + 44 + + ГруппаПути + 11 + + ПолныйПутьWindows + 5 + + <key>ru</key> + <value>Полный путь к общей папке на компьютере под управлением Microsoft Windows</value> + + true + true + + true + + + + Объект.ПолныйПутьWindows + + + Top + + OnChange + ПолныйПутьWindowsПриИзменении + + + ПолныйПутьWindowsExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + + ПолныйПутьWindowsКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + + ru + Меняя путь тома, вы потеряете возможность доступа к уже созданным на этом томе файлам + + EnterOnInput + true + Left + true + + 60 + true + true + true + true + true + true + + ru + \\computername\foldername + + + + + ПолныйПутьLinux + 23 + + <key>ru</key> + <value>Полный путь к общей папке на компьютере под управлением Linux</value> + + true + true + + true + + + + Объект.ПолныйПутьLinux + + + Top + + OnChange + ПолныйПутьLinuxПриИзменении + + + ПолныйПутьLinuxExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + + ПолныйПутьLinuxКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 60 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пути</value> + + + ГруппаПутиExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Порядок + 7 + true + true + + true + + + + Объект.ПорядокЗаполнения + + + + ПорядокExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + ПорядокКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + + ГруппаМаксимальныйРазмер + 19 + + МаксимальныйРазмер + 17 + true + true + + true + + + + Объект.МаксимальныйРазмер + + + + МаксимальныйРазмерExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + МаксимальныйРазмерКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ТекущийРазмер + 20 + true + true + + true + + + + ТекущийРазмер + + + + ru + Текущий размер всех файлов в томе в мегабайтах. + + + ТекущийРазмерExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + ТекущийРазмерКонтекстноеМеню + 21 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Максимальный размер</value> + + + ГруппаМаксимальныйРазмерExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Главное</value> + + + СвойстваГлавноеРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СвойстваКомментарий + 46 + + Комментарий + 13 + true + true + + true + + + + Объект.Комментарий + + + None + + КомментарийExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + СвойстваКомментарийРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Свойства</value> + + + СвойстваРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 36 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + true + true + true + UserCmds + + StdPicture.WriteAndClose + + Auto + + + СтандартныеКоманды + 38 + true + true + + true + + + <key>ru</key> + <value>Стандартные команды</value> + + + СтандартныеКомандыРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 40 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + + ФормаПроверитьЦелостностьТома + 48 + true + true + + true + + + ФормаПроверитьЦелостностьТомаРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверитьЦелостностьТома + Auto + true + true + UserCmds + Auto + + + ФормаУдалитьЛишниеФайлы + 50 + true + true + + true + + + ФормаУдалитьЛишниеФайлыРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УдалитьЛишниеФайлы + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + WriteAndClose + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ТомаХраненияФайлов + + + true + + + true + +
    true
    + true +
    + + ТекущийРазмер + + <key>ru</key> + <value>Текущий размер, МБ</value> + + 2 + + Number + + 10 + + + + true + + + true + + + + ПроверкаЗаполненияУжеВыполнена + 3 + + Boolean + + + true + + + true + + + + СсылкаНового + 4 + + CatalogRef.ТомаХраненияФайлов + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + ПроверитьЦелостностьТома + + <key>ru</key> + <value>Проверить целостность</value> + + 2 + + ru + Проверить целостность тома + + + true + + + + ПроверитьЦелостностьТома + + + true + DontUse + + + УдалитьЛишниеФайлы + + <key>ru</key> + <value>Удалить лишние файлы</value> + + 3 + + ru + Удалить лишние файлы + + + true + + + + УдалитьЛишниеФайлы + + + DontUse + + + + + 0:ebab97cf-5335-4648-9845-8ca41f79fb49 + + true + + + + + + + + AfterWrite + ПослеЗаписи + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..8cd7cfdf --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,34 @@ + +

    Описание свойств тома хранения файлов.

    +

    При создании нового тома автоматически проверяется доступ к указанному в поле Полный путь каталогу, в случае ошибки выводится соответствующее сообщение. Уже созданному тому нельзя поменять пути.

    +

    Для каждого тома необходимо указать:

    +
    • Наименование - полное наименование тома для хранения файлов; +
    • +
    • Код - заполняется автоматически; +
    • +
    • Полный путь к общей папке на компьютере под управлением Microsoft Windows - напишите путь к каталогу тома для сервера под управлением Microsoft Windows в формате UNC - \\Имя компьютера\Наименование папки;

    или

    +
      • Полный путь к общей папке на компьютере под управлением Linux - напишите путь к каталогу для сервера под управлением Linux;
    • Порядок - введите целое число, по умолчанию равно 1. Заполнение томов осуществляется по порядку заполнения (по возрастанию) до полного заполнения тома. Эту особенность можно использовать, например, для временного отключения тома путем увеличения ему порядка заполнения. +
    • +
    • Предел, МБ -можно указать максимальный размер всех файлов на томе (квота тома). Если суммарный размер файлов в томе превышает установленную квоту, то будет использован следующий по порядку том. Если ни на одном из доступных томов не будет достаточно места для размещения файла, то информация об этом будет записана в журнал регистрации и будет выдано сообщение об ошибке. Если квота установлена равной нулю, то при размещении файлов в томе она не проверяется; +
    • +
    • Текущий размер, МБ - проставляется программой автоматически по мере наполнения тома, показывает, насколько том заполнен; +
    • +
    • На вкладке Комментарий напишите подробную информацию о томе.

    Особенности заполнения поля Полный путь для Linux

    +
    • Если сервер 1С:Предприятия работает под Linux, то путь к тому хранения файлов можно указать только локальный, например /home/path. Для того чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора сделайте следующее: +
      • выполните команду вида mkdir folder, где вместо "folder" напишите имя своего каталога. Например, в каталоге /home выполните команду mkdir shared - будет создан каталог shared с полным путем /home/shared. +
      • +
      • выполните команду видаmount -t cifs //server/share folder -o //domain/user, password=pwd, где
        - где //server/share - UNC путь к другому компьютеру , folder - путь к каталогу на Linux компьютере, например \home\shared, //domain/user - имя домена/пользователя, если необходимо, pwd - пароль пользователя (если необходимо). +
      • +
      •  Если имя и пароль не нужны, команда выглядит так:mount -t cifs //server/share folder.
    • +
    • После этого в пути к тому указываем folder, например /home/shared.

    Просмотр списка файлов в томе

    +
    • В каждом томе файлы хранятся в подкаталогах. На каждую дату создания версии файла создается свой подкаталог. Все файлы хранятся с оригинальным именем и расширением, между ними добавляется номер версии, например "Приказ.2.txt". +
    • +
    • Для того чтобы просмотреть список файлов в томе, выполните команду Файлы в томе на панели навигации тома. 

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..07654241 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,312 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ТекущиеПараметрыЗаписи; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Объект.Ссылка.Пустая() Тогда + Объект.ПорядокЗаполнения = НайтиМаксимальныйПорядок() + 1; + Иначе + + Элементы.ПолныйПутьLinux.ОтображениеПредупрежденияПриРедактировании + = ОтображениеПредупрежденияПриРедактировании.Отображать; + + Элементы.ПолныйПутьWindows.ОтображениеПредупрежденияПриРедактировании + = ОтображениеПредупрежденияПриРедактировании.Отображать; + + ТекущийРазмерВБайтах = РаботаСФайламиВТомахСлужебный.ОбъемТома(Объект.Ссылка); + + ТекущийРазмер = ТекущийРазмерВБайтах / (1024 * 1024); + Если ТекущийРазмер = 0 И ТекущийРазмерВБайтах <> 0 Тогда + ТекущийРазмер = 1; + КонецЕсли; + + КонецЕсли; + + Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда + + Элементы.ПолныйПутьWindows.АвтоОтметкаНезаполненного = Истина; + Иначе + Элементы.ПолныйПутьLinux.АвтоОтметкаНезаполненного = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Наименование.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьОповещение", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + Если Не ПараметрыЗаписи.Свойство("ВнешниеРесурсыРазрешены") Тогда + Отказ = Истина; + ТекущиеПараметрыЗаписи = ПараметрыЗаписи; + ПодключитьОбработчикОжидания("РазрешитьВнешнийРесурсНачало", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ЗначениеЗаполнено(СсылкаНового) И ТекущийОбъект.ЭтоНовый() Тогда + ТекущийОбъект.УстановитьСсылкуНового(СсылкаНового); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда + Закрыть(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + ТекущийОбъект = РеквизитФормыВЗначение("Объект"); + + Если ПроверкаЗаполненияУжеВыполнена Тогда + ПроверкаЗаполненияУжеВыполнена = Ложь; + ТекущийОбъект.ДополнительныеСвойства.Вставить("ПропуститьОсновнуюПроверкуЗаполнения"); + Иначе + ТекущийОбъект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуДоступаКПапке"); + КонецЕсли; + + ПроверяемыеРеквизиты.Очистить(); + + Если Не ТекущийОбъект.ПроверитьЗаполнение() Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПолныйПутьWindowsПриИзменении(Элемент) + + // Удаляем лишние пробелы и добавляем слэш в конце, если его нет. + Если Не ПустаяСтрока(Объект.ПолныйПутьWindows) Тогда + + Если СтрНачинаетсяС(Объект.ПолныйПутьWindows, " ") Или СтрЗаканчиваетсяНа(Объект.ПолныйПутьWindows, " ") Тогда + Объект.ПолныйПутьWindows = СокрЛП(Объект.ПолныйПутьWindows); + КонецЕсли; + + Если Не СтрЗаканчиваетсяНа(Объект.ПолныйПутьWindows, "\") Тогда + Объект.ПолныйПутьWindows = Объект.ПолныйПутьWindows + "\"; + КонецЕсли; + + Если СтрЗаканчиваетсяНа(Объект.ПолныйПутьWindows, "\\") Тогда + Объект.ПолныйПутьWindows = Лев(Объект.ПолныйПутьWindows, СтрДлина(Объект.ПолныйПутьWindows) - 1); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПолныйПутьLinuxПриИзменении(Элемент) + + // Удаляем лишние пробелы и добавляем слэш в конце, если его нет. + Если Не ПустаяСтрока(Объект.ПолныйПутьLinux) Тогда + + Если СтрНачинаетсяС(Объект.ПолныйПутьLinux, " ") Или СтрЗаканчиваетсяНа(Объект.ПолныйПутьLinux, " ") Тогда + Объект.ПолныйПутьLinux = СокрЛП(Объект.ПолныйПутьLinux); + КонецЕсли; + + Если Не СтрЗаканчиваетсяНа(Объект.ПолныйПутьLinux, "/") Тогда + Объект.ПолныйПутьLinux = Объект.ПолныйПутьLinux + "/"; + КонецЕсли; + + Если СтрЗаканчиваетсяНа(Объект.ПолныйПутьLinux, "//") Тогда + Объект.ПолныйПутьLinux = Лев(Объект.ПолныйПутьLinux, СтрДлина(Объект.ПолныйПутьLinux) - 1); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + Записать(Новый Структура("ЗаписатьИЗакрыть")); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьЦелостностьТома(Команда) + + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ТекстВопроса = НСтр("ru = 'Для выполнения проверки целостности требуется записать сведения о томе. + |Записать?'"); + Оповещение = Новый ОписаниеОповещения("ТребуетсяЗаписатьФормуДляПроверкиЦелостностиТома", ЭтотОбъект); + ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет); + Иначе + ВыполнитьПроверкуЦелостностиТома(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьЛишниеФайлы(Команда) + ПараметрыОткрытия = Новый Структура("ТомХраненияФайлов", Объект.Ссылка); + ОткрытьФорму("Справочник.ТомаХраненияФайлов.Форма.УдалениеЛишнихФайловИзТома", ПараметрыОткрытия, ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ТребуетсяЗаписатьФормуДляПроверкиЦелостностиТома(Записать, ДополнительныеПараметры) Экспорт + + Если Записать = КодВозвратаДиалога.Да Тогда + ЗаписатьНаСервере(); + ВыполнитьПроверкуЦелостностиТома(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроверкуЦелостностиТома() + + ПараметрыОтчета = Новый Структура(); + ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина); + ПараметрыОтчета.Вставить("Отбор", Новый Структура("Том", Объект.Ссылка)); + + ОткрытьФорму("Отчет.ПроверкаЦелостностиТома.ФормаОбъекта", ПараметрыОтчета); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрытьОповещение(Результат, Контекст) Экспорт + + Записать(Новый Структура("ЗаписатьИЗакрыть")); + +КонецПроцедуры + +// Находит максимальный порядок среди томов. +&НаСервере +Функция НайтиМаксимальныйПорядок() + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | МАКСИМУМ(Тома.ПорядокЗаполнения) КАК МаксимальныйНомер + |ИЗ + | Справочник.ТомаХраненияФайлов КАК Тома"; + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Если Выборка.МаксимальныйНомер = Null Тогда + Возврат 0; + Иначе + Возврат Число(Выборка.МаксимальныйНомер); + КонецЕсли; + КонецЕсли; + + Возврат 0; + +КонецФункции + +&НаКлиенте +Процедура РазрешитьВнешнийРесурсНачало() + + ОповещениеОЗакрытии = Новый ОписаниеОповещения( + "РазрешитьВнешнийРесурсЗавершение", ЭтотОбъект, ТекущиеПараметрыЗаписи); + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + + ЗапросыВнешнихРесурсов = Новый Массив; + Если Не ПроверитьЗаполнениеНаСервере(ЗапросыВнешнихРесурсов) Тогда + Возврат; + КонецЕсли; + + МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); + МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(ЗапросыВнешнихРесурсов, ЭтотОбъект, ОповещениеОЗакрытии); + + Иначе + ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, КодВозвратаДиалога.ОК); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПроверитьЗаполнениеНаСервере(ЗапросыВнешнихРесурсов) + + Если Не ПроверитьЗаполнение() Тогда + Возврат Ложь; + КонецЕсли; + + ПроверкаЗаполненияУжеВыполнена = Истина; + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + СсылкаНаОбъект = Объект.Ссылка; + Иначе + Если Не ЗначениеЗаполнено(СсылкаНового) Тогда + СсылкаНового = Справочники.ТомаХраненияФайлов.ПолучитьСсылку(); + КонецЕсли; + СсылкаНаОбъект = СсылкаНового; + КонецЕсли; + + ЗапросыВнешнихРесурсов.Добавить( + Справочники.ТомаХраненияФайлов.ЗапросНаИспользованиеВнешнихРесурсовДляТома( + СсылкаНаОбъект, Объект.ПолныйПутьWindows, Объект.ПолныйПутьLinux)); + + Возврат Истина; + +КонецФункции + +&НаКлиенте +Процедура РазрешитьВнешнийРесурсЗавершение(Результат, ПараметрыЗаписи) Экспорт + + Если Результат = КодВозвратаДиалога.ОК Тогда + ПараметрыЗаписи.Вставить("ВнешниеРесурсыРазрешены"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНаСервере() + Записать(); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..fef23b37 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" @@ -0,0 +1,47 @@ + +

    Предназначен для управления томами хранения файлов.

    +

    Используется в том случае, если установлен режим хранения файлов В томах на диске. Для этого в разделе Администрирование - Настройки работы с файлами включите флажок Хранить файлы в томах на диске,после этого в разделах Администрирование - Настройки работы с файлами становится доступной команда Тома хранения файлов, по которой открывается список. При смене способа хранения файлов перенос файлов из программы в тома и обратно не происходит.

    +

    В списке выводится:

    +
    • Наименование - наименование тома хранения файлов; +
    • +
    • Порядок - целое число. Заполнение томов осуществляется по порядку заполнения по возрастанию до полного заполнения тома; +
    • +
    • Полный путь Microsoft Windows - путь к каталогу тома для сервера под управлением Microsoft Windows в формате UNC: \\Имя компьютера\Наименование папки; +
    • +
    • Комментарий - подробная информация о томе. +
    • +
    • Предел, Мб - можно указать максимальный размер всех файлов в томе (квота тома). Если квота установлена равной нулю, то при размещении файлов в томе она не проверяется. При установленном ненулевом значении Максимальный размер, если суммарный размер файлов в томе уже превышает установленную квоту, то будет использован следующий по порядку заполнения том. Если ни в одном из доступных томов не будет достаточно места для размещения файла, то информация об этом записывается в журнал регистрации и выводится сообщение об ошибке; +
    • +
    • Полный путь Linux - путь к каталогу для сервера под управлением Linux.

    Ввод тома хранения файлов

    +
    • Нажмите Создать, заполните необходимые поля. +
    • +
    • Необходимо указать один или несколько каталогов на жестком диске сервера, на котором работает программа, или других серверов в сети, которые будут использоваться для хранения в них всех файлов.

    Правила хранения файлов в томах

    +
    • +
      Переключение флажка Хранить файлы в томах на диске обратной силы не имеет. Если хранение файлов в томах отключили, то новые файлы добавляются в саму ИБ, а старые остаются томах. При этом папка с томом будет продолжать использоваться до того, пока в базе есть хотя бы один файл. Файлы, ранее сохраненные в тома, открываются из этих томов.
      +
    • +
    • +
      Если сохранить файл в томе, а потом том удалить (внешними средствами), то файл будет не найден, даже если флажок Хранить файлы в томах на диске уже выключен. Включение и выключение флажка не вернет пропавшие файлы.
      +
    • +
    • +
      Поэтому если программа не находит файлы, которые хранились в томах, следует в сообщениях об ошибке (в журнале регистрации) посмотреть путь к папке с томом, проверить местонахождение этой папки, наличие в ней нужного файла, и при необходимости восстановить папку. Для осуществления такой возможности необходимо периодически проводить резервное копирование папок с томами файлов внешними средствами (например, средствами операционной системы).

    Работа с томами хранения файлов

    +
    • При создании нового тома автоматически проверяется доступ к указанному в поле Полный путь каталогу, в случае ошибки выводится соответствующее сообщение. +
    • +
    • Заполнение томов осуществляется по порядку (по возрастанию) до полного заполнения тома. Эту особенность можно использовать для временного отключения тома путем увеличения ему порядка заполнения. +
    • +
    • Уже созданному тому нельзя поменять пути. +
    • +
    • Созданный том нельзя удалить до тех пор, пока на него ссылаются какие-либо версии файлов. +
    • +
    • Ошибки доступа к томам помещаются в журнал регистрации и могут быть просмотрены администратором программы. +
    • +
    • В каждом томе файлы хранятся в подкаталогах по дате так, что на каждый день создается свой подкаталог. Все файлы в томах хранятся с оригинальным именем и расширением, между которыми добавляется номер версии, например "Приказ.1.txt". +
    • +
    • После переключения режима хранения файлов (например, в значение В томах на диске) все ранее накопленные файлы не перемещаются в тома - только вновь добавленные файлы будут размещаться в соответствии с настройкой. Для того чтобы перенести ранее накопленные файлы из информационной базы в тома, воспользуйтесь командой Перенос файлов в тома. +
    • +
    • Если используется синхронизация данных между программой-источником и программой-приемником и при этом в программе-источнике используется хранение файлов в томах на дисках, то в процессе создания начального образа необходимо будет создать архивный файл с томами хранимых файлов. +
    • +
    • В процессе получения начального образа в программу-приемник необходимо будет указать и расположение архивного файла с томами хранимых файлов. Для получения файлов в томах из архива выполните команду Разместить файлы начального образа.
    +
    Примечание
    Для использования томов, расположенных на сетевых дисках, сервер 1С:Предприятия 8 нужно запускать от лица доменного пользователя вида domain1\user1, имеющего права доступа к тому, указанному в виде UNC пути. Этот пользователь должен входить в группу Users локального компьютера,иметь права "Run as service" и "Run as batch job" и права на каталоги, в которых сервер 1С:Предприятия 8 хранит служебные файлы - журнал регистрации, каталог временных файлов и пр.

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..68e64d95 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,127 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + РедактируемыеРеквизиты.Добавить("Комментарий"); + + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Только для внутреннего использования. +// +// Параметры: +// Запросы - Массив +// +Процедура ДобавитьЗапросыНаИспользованиеВнешнихРесурсовВсехТомов(Запросы) Экспорт + + Если ОбщегоНазначения.РазделениеВключено() И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ТомаХраненияФайлов.Ссылка КАК Ссылка, + | ТомаХраненияФайлов.ПолныйПутьLinux, + | ТомаХраненияФайлов.ПолныйПутьWindows, + | ТомаХраненияФайлов.ПометкаУдаления КАК ПометкаУдаления + |ИЗ + | Справочник.ТомаХраненияФайлов КАК ТомаХраненияФайлов + |ГДЕ + | ТомаХраненияФайлов.ПометкаУдаления = ЛОЖЬ"; + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Запросы.Добавить(ЗапросНаИспользованиеВнешнихРесурсовДляТома( + Выборка.Ссылка, Выборка.ПолныйПутьWindows, Выборка.ПолныйПутьLinux)); + КонецЦикла; + +КонецПроцедуры + +// Только для внутреннего использования. +// +// Параметры: +// Запросы - Массив +// +Процедура ДобавитьЗапросыНаОтменуИспользованияВнешнихРесурсовВсехТомов(Запросы) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ТомаХраненияФайлов.Ссылка КАК Ссылка, + | ТомаХраненияФайлов.ПолныйПутьLinux, + | ТомаХраненияФайлов.ПолныйПутьWindows, + | ТомаХраненияФайлов.ПометкаУдаления КАК ПометкаУдаления + |ИЗ + | Справочник.ТомаХраненияФайлов КАК ТомаХраненияФайлов"; + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Запросы.Добавить(МодульРаботаВБезопасномРежиме.ЗапросНаОчисткуРазрешенийИспользованияВнешнихРесурсов( + Выборка.Ссылка)); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +// Только для внутреннего использования. +Функция ЗапросНаИспользованиеВнешнихРесурсовДляТома(Том, ПолныйПутьWindows, ПолныйПутьLinux) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + + Разрешения = Новый Массив; + + Если ЗначениеЗаполнено(ПолныйПутьWindows) Тогда + Разрешения.Добавить(МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы( + ПолныйПутьWindows, Истина, Истина)); + КонецЕсли; + + Если ЗначениеЗаполнено(ПолныйПутьLinux) Тогда + Разрешения.Добавить(МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы( + ПолныйПутьLinux, Истина, Истина)); + КонецЕсли; + + Возврат МодульРаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(Разрешения, Том); + КонецЕсли; + +КонецФункции + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" new file mode 100644 index 00000000..1943709d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" @@ -0,0 +1,144 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + ИспользуютсяПрофилиБезопасности = МодульРаботаВБезопасномРежиме.ИспользуютсяПрофилиБезопасности(); + + Иначе + ИспользуютсяПрофилиБезопасности = Ложь; + КонецЕсли; + + Если Не ДополнительныеСвойства.Свойство("ПропуститьОсновнуюПроверкуЗаполнения") Тогда + + Если Не НомерПорядкаУникален(ПорядокЗаполнения, Ссылка) Тогда + ТекстОшибки = НСтр("ru = 'Порядок заполнения не уникален - в системе уже есть том с таким порядком'"); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "ПорядокЗаполнения", "Объект", Отказ); + КонецЕсли; + + Если МаксимальныйРазмер <> 0 Тогда + ТекущийРазмерВБайтах = 0; + Если Не Ссылка.Пустая() Тогда + ТекущийРазмерВБайтах = РаботаСФайламиВТомахСлужебный.ОбъемТома(Ссылка); + КонецЕсли; + ТекущийРазмер = ТекущийРазмерВБайтах / (1024 * 1024); + + Если МаксимальныйРазмер < ТекущийРазмер Тогда + ТекстОшибки = НСтр("ru = 'Максимальный размер тома меньше, чем текущий размер'"); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "МаксимальныйРазмер", "Объект", Отказ); + КонецЕсли; + КонецЕсли; + + Если ПустаяСтрока(ПолныйПутьWindows) И ПустаяСтрока(ПолныйПутьLinux) Тогда + ТекстОшибки = НСтр("ru = 'Не заполнен полный путь'"); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "ПолныйПутьWindows", "Объект", Отказ); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "ПолныйПутьLinux", "Объект", Отказ); + Возврат; + КонецЕсли; + + Если Не ИспользуютсяПрофилиБезопасности + И Не ПустаяСтрока(ПолныйПутьWindows) + И ( Лев(ПолныйПутьWindows, 2) <> "\\" + ИЛИ СтрНайти(ПолныйПутьWindows, ":") <> 0 ) Тогда + + ТекстОшибки = НСтр("ru = 'Путь к тому должен быть в формате UNC (\\servername\resource).'"); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "ПолныйПутьWindows", "Объект", Отказ); + Возврат; + КонецЕсли; + КонецЕсли; + + Если Не ДополнительныеСвойства.Свойство("ПропуститьПроверкуДоступаКПапке") Тогда + + ИмяПоляСПолнымПутем = ?(ОбщегоНазначения.ЭтоWindowsСервер(), "ПолныйПутьWindows", "ПолныйПутьLinux"); + Если ОбщегоНазначения.РазделениеВключено() Тогда + МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); + ЗначениеРазделителя = ?(МодульРаботаВМоделиСервиса.ИспользованиеРазделителяСеанса(), + МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса(), ""); + Иначе + ЗначениеРазделителя = ""; + КонецЕсли; + + ПолныйПутьТома = СтрЗаменить(ЭтотОбъект[ИмяПоляСПолнымПутем], "%z", ЗначениеРазделителя); + ИмяКаталогаТестовое = ПолныйПутьТома + "ПроверкаДоступа" + ПолучитьРазделительПути(); + + Попытка + СоздатьКаталог(ИмяКаталогаТестовое); + УдалитьФайлы(ИмяКаталогаТестовое); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + + Если ИспользуютсяПрофилиБезопасности Тогда + ШаблонОшибки = + НСтр("ru = 'Некорректный путь к тому или сервер с томом в данный момент недоступен. + |Проверьте корректность пути к общей папке и доступность сервера. + |Возможно не настроены разрешения в профилях безопасности, + |или учетная запись, от лица которой работает + |сервер 1С:Предприятия, не имеет прав доступа к каталогу тома. + | + |%1'"); + Иначе + ШаблонОшибки = + НСтр("ru = 'Некорректный путь к тому или сервер с томом в данный момент недоступен. + |Проверьте корректность пути к общей папке и доступность сервера. + |Возможно учетная запись, от лица которой работает + |сервер 1С:Предприятия, не имеет прав доступа к каталогу тома. + | + |%1'"); + КонецЕсли; + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонОшибки, КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + + ОбщегоНазначения.СообщитьПользователю( + ТекстОшибки, , ИмяПоляСПолнымПутем, "Объект", Отказ); + КонецПопытки; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Возвращает Ложь, если есть том с таким порядком. +Функция НомерПорядкаУникален(ПорядокЗаполнения, СсылкаНаТом) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | КОЛИЧЕСТВО(Тома.ПорядокЗаполнения) КАК Количество + |ИЗ + | Справочник.ТомаХраненияФайлов КАК Тома + |ГДЕ + | Тома.ПорядокЗаполнения = &ПорядокЗаполнения + | И Тома.Ссылка <> &СсылкаНаТом"; + + Запрос.Параметры.Вставить("ПорядокЗаполнения", ПорядокЗаполнения); + Запрос.Параметры.Вставить("СсылкаНаТом", СсылкаНаТом); + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Возврат Выборка.Количество = 0; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Templates/\320\234\320\260\320\272\320\265\321\202\320\236\321\202\321\207\320\265\321\202\320\260/Template.mxlx" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Templates/\320\234\320\260\320\272\320\265\321\202\320\236\321\202\321\207\320\265\321\202\320\260/Template.mxlx" new file mode 100644 index 00000000..c3252a9e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/Templates/\320\234\320\260\320\272\320\265\321\202\320\236\321\202\321\207\320\265\321\202\320\260/Template.mxlx" @@ -0,0 +1,126 @@ + + + + ru + ru + + ru + Русский + Русский + + + + 2 + + 0 + + 1 + + + + 1 + + 2 + + + + + 9bb67b5f-5e3e-459e-98c5-618e04892d9b + 1 + + 0 + + 3 + + + + + 0 + + true + + + + 1 + + 9bb67b5f-5e3e-459e-98c5-618e04892d9b + + + 4 + Описание + + + + + + 2 + + 5 + + + 6 + Название + Имя + + + + + 7 + Ошибка + + + + + true + 8 + 3 + 3 + + Заголовок + + Rows + 1 + 1 + -1 + -1 + 9bb67b5f-5e3e-459e-98c5-618e04892d9b + + + + Строка + + Rows + 2 + 2 + -1 + -1 + + + + + 342 + + + 534 + + + 383 + + + 0 + Parameter + + + 177 + + + Parameter + + + Wrap + Parameter + + + 72 + + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262.mdo" new file mode 100644 index 00000000..fd75a3ce --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262/\320\242\320\276\320\274\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\244\320\260\320\271\320\273\320\276\320\262.mdo" @@ -0,0 +1,283 @@ + + + + + + + + + + ТомаХраненияФайлов + + ru + Тома хранения файлов + + Каталоги на диске для хранения файлов + true + Catalog.ТомаХраненияФайлов.StandardAttribute.Description + Catalog.ТомаХраненияФайлов.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование + + + ShowError + Use + + + + + Use + Code + + ru + Код + + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Том хранения файлов + + 2 + true + 9 + 150 + String + Variable + true + true + AsDescription + InDialog + BothWays + Catalog.ТомаХраненияФайлов.Form.ФормаЭлемента + Catalog.ТомаХраненияФайлов.Form.ФормаСписка + + Комментарий + + ru + Комментарий + + + String + + + + ru + Описание тома + + true + + + + + + Use + Use + + + МаксимальныйРазмер + + ru + Предел, МБ + + + Number + + 10 + + + + ru + Максимальный размер всех файлов в томе в мегабайтах. + + + + + Use + Use + + + ПолныйПутьLinux + + ru + Полный путь linux + + + String + + + + ru + Полный путь в Linux + + + + + + + Use + Use + + + ПолныйПутьWindows + + ru + Полный путь windows + + + String + + + + ru + Полный путь в UNC формате + + + + + + + Use + Use + + + ПорядокЗаполнения + + ru + Порядок + + + Number + + 3 + true + + + + ru + Порядок заполнения томов файлами, +начиная с наименьшего значения. + + + + + Index + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + УдалениеЛишнихФайловИзТома + + ru + Удаление лишних файлов из тома + + PersonalComputer + MobileDevice + + + МакетОтчета + + ru + Макет отчета + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..44cb8082 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,904 @@ + + + + ГруппаНаименованиеИНастройки + 65 + + Наименование + 4 + true + true + + true + + + + Объект.Description + + + + OnChange + НаименованиеПриИзменении + + + НаименованиеРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + ru + Синхронизация файлов с облачным сервисом + + + + + ГруппаНастройки + 40 + + Сервис + 60 + + <key>ru</key> + <value>Сервис</value> + + true + true + + true + + + + Сервис + + + true + + OnChange + СервисПредставлениеПриИзменении + + + СервисРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + + СервисКонтекстноеМеню + 61 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + ru + Яндекс.Диск + + + Яндекс.Диск + + + + + ru + 4shared.com + + + 4shared.com + + + + + ru + Box + + + Box + + + + + ru + DropBox (через dropdav.com) + + + Dropbox + + + + + + КорневаяПапка + 37 + true + true + + true + + + + Объект.КорневаяПапка + + + + ru + Имя папки, в которой хранятся синхронизированные файлы. Должна быть создана в облаке до выполнения синхронизации. + + Button + + КорневаяПапкаРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + КорневаяПапкаКонтекстноеМеню + 38 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаЛогинПароль + 67 + + Логин + 31 + true + true + + true + + + + Логин + + + + ЛогинРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + + ЛогинКонтекстноеМеню + 32 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + Пароль + 34 + true + true + + true + + + + Пароль + + + + OnChange + ПарольПриИзменении + + + ПарольРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 35 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Логин, пароль</value> + + + ГруппаЛогинПарольРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройки</value> + + + ГруппаНастройкиРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наименование и настройки</value> + + + ГруппаНаименованиеИНастройкиРасширеннаяПодсказка + 66 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаАвторФайлов + 50 + + ВКачествеАвтораФайлов + 52 + + <key>ru</key> + <value>Автор новых и отредактированных файлов</value> + + true + true + + true + + + + ВКачествеАвтораФайлов + + + Top + + OnChange + ВКачествеАвтораФайловПриИзменении + + + ВКачествеАвтораФайловРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + ВКачествеАвтораФайловКонтекстноеМеню + 53 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Эта учетная запись + + + ПланОбмена + + + + + + ГруппаАвторПользователь + 55 + + ВКачествеАвтораФайловПользователь + 57 + + <key>ru</key> + <value>Выбранный пользователь</value> + + true + true + + true + + + + ВКачествеАвтораФайлов + + + None + + OnChange + ВКачествеАвтораФайловПользовательПриИзменении + + + ВКачествеАвтораФайловПользовательРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + ВКачествеАвтораФайловПользовательКонтекстноеМеню + 58 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Пользователь: + + + Пользователь + + + + + + АвторФайлов + 44 + true + true + + true + + + + Объект.АвторФайлов + + + None + + ru + Если файлы в облаке редактирует только один пользователь, то рекомендуется указать его в качестве автора новых и измененных файлов. + + Button + + АвторФайловРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + АвторФайловКонтекстноеМеню + 45 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Автор пользователь</value> + + + ГруппаАвторПользовательРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Автор новых и отредактированных файлов</value> + + + ГруппаАвторФайловРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаПроверитьНастройки + 63 + true + true + + true + + + ФормаПроверитьНастройкиРасширеннаяПодсказка + 64 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверитьНастройки + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.УчетныеЗаписиСинхронизацииФайлов + + + true + + + true + +
    true
    + true +
    + + Логин + + <key>ru</key> + <value>Логин</value> + + 3 + + String + + + + true + + + true + + ShowError + true + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 4 + + String + + + + true + + + true + + ShowError + true + + + ВКачествеАвтораФайлов + + <key>ru</key> + <value>В качестве автора файлов</value> + + 5 + + String + + + + true + + + true + + true + + + Сервис + + <key>ru</key> + <value>Сервис</value> + + 6 + + String + + + + true + + + true + + ShowError + true + + + АвтоНаименование + 7 + + Boolean + + + true + + + true + + + + ПарольИзменен + 2 + + Boolean + + + true + + + true + + + + ПроверитьНастройки + + <key>ru</key> + <value>Проверить настройки</value> + + 1 + + ru + Проверить настройки + + + true + + + + ПроверитьНастройки + + + DontUse + + + + + + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..702f9794 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,253 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Объект.АвторФайлов) Тогда + ВКачествеАвтораФайлов = "Пользователь"; + Элементы.АвторФайлов.Доступность = Истина; + Иначе + ВКачествеАвтораФайлов = "ПланОбмена"; + Элементы.АвторФайлов.Доступность = Ложь; + КонецЕсли; + + Если Не ПустаяСтрока(Объект.Сервис) Тогда + Если Объект.Сервис = "https://webdav.yandex.com" + Или Объект.Сервис = "https://webdav.yandex.ru" Тогда + Сервис = НСтр("ru = 'Яндекс.Диск'"); + ИначеЕсли Объект.Сервис = "https://webdav.4shared.com" Тогда + Сервис = "4shared.com" + ИначеЕсли Объект.Сервис = "https://dav.box.com/dav" Тогда + Сервис = "Box" + ИначеЕсли Объект.Сервис = "https://dav.dropdav.com" Тогда + Сервис = "Dropbox" + КонецЕсли; + КонецЕсли; + + АвтоНаименование = ПустаяСтрока(Объект.Наименование); + Если Не ПустаяСтрока(Объект.Наименование) Тогда + Элементы.ВКачествеАвтораФайлов.СписокВыбора[0].Представление = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ВКачествеАвтораФайлов.Заголовок, "(" + Объект.Наименование + ")"); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда + МодульЗапретРедактированияРеквизитовОбъектов = ОбщегоНазначения.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектов"); + МодульЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект); + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + + УстановитьПривилегированныйРежим(Истина); + ПараметрыУчетнойЗаписи = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка, "Логин, Пароль"); + УстановитьПривилегированныйРежим(Ложь); + + Логин = ПараметрыУчетнойЗаписи.Логин; + Пароль = ?(ЗначениеЗаполнено(ПараметрыУчетнойЗаписи.Пароль), ЭтотОбъект.УникальныйИдентификатор, ""); + + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Наименование.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + КонецЕсли + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если Не Отказ Тогда + + УстановитьПривилегированныйРежим(Истина); + + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Логин, "Логин"); + Если ПарольИзменен Тогда + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль); + КонецЕсли; + + УстановитьПривилегированныйРежим(Ложь); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + АвтоНаименование = ПустаяСтрока(Объект.Наименование); +КонецПроцедуры + +&НаКлиенте +Процедура СервисПредставлениеПриИзменении(Элемент) + + Если Сервис = "Яндекс.Диск" Тогда + Объект.Сервис = "https://webdav.yandex.com" + ИначеЕсли Сервис = "4shared.com" Тогда + Объект.Сервис = "https://webdav.4shared.com" + ИначеЕсли Сервис = "Box" Тогда + Объект.Сервис = "https://dav.box.com/dav" + ИначеЕсли Сервис = "Dropbox" Тогда + Объект.Сервис = "https://dav.dropdav.com" + Иначе + Объект.Сервис = ""; + КонецЕсли; + + Если АвтоНаименование Тогда + Если ЗначениеЗаполнено(Объект.Сервис) Тогда + Объект.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Синхронизация с %1'"), + Элементы.Сервис.СписокВыбора.НайтиПоЗначению(Сервис).Представление); + Иначе + Объект.Наименование = ""; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВКачествеАвтораФайловПриИзменении(Элемент) + + Объект.АвторФайлов = Неопределено; + Элементы.АвторФайлов.Доступность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПарольПриИзменении(Элемент) + + ПарольИзменен = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПроверитьНастройки(Команда) + + ОчиститьСообщения(); + + Если Объект.Ссылка.Пустая() Или Модифицированность Тогда + ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьНастройкиЗавершение", ЭтотОбъект); + ТекстВопроса = НСтр("ru = 'Для проверки настроек необходимо записать данные учетной записи. Продолжить?'"); + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("Продолжить", НСтр("ru = 'Продолжить'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки); + Возврат; + КонецЕсли; + + ПроверитьВозможностьСинхронизацииСОблачнымСервисом(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда) + + МодульЗапретРедактированияРеквизитовОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектовКлиент"); + МодульЗапретРедактированияРеквизитовОбъектовКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПроверитьНастройкиЗавершение(РезультатДиалога, ДополнительныеПараметры) Экспорт + + Если РезультатДиалога <> "Продолжить" Тогда + Возврат; + КонецЕсли; + + Если Не Записать() Тогда + Возврат; + КонецЕсли; + + ПроверитьВозможностьСинхронизацииСОблачнымСервисом(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьВозможностьСинхронизацииСОблачнымСервисом() + + СтруктураРезультата = Неопределено; + + ВыполнитьПроверкуПодключения(Объект.Ссылка, СтруктураРезультата); + + РезультатПротокол = СтруктураРезультата.РезультатПротокол; + РезультатТекст = СтруктураРезультата.РезультатТекст; + + Если СтруктураРезультата.Отказ Тогда + + ТекстПротокола = СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(РезультатПротокол); + Если Не ЗначениеЗаполнено(СтруктураРезультата.КодОшибки) Тогда + + РезультатДиагностики = ПроверитьСоединение(Объект.Сервис, ТекстПротокола); + ТекстОшибки = РезультатДиагностики.ОписаниеОшибки; + ТекстПротокола = РезультатДиагностики.ЖурналДиагностики; + + ИначеЕсли СтруктураРезультата.КодОшибки = 404 Тогда + ТекстОшибки = НСтр("ru = 'Проверьте правильность указанной корневой папки.'"); + ИначеЕсли СтруктураРезультата.КодОшибки = 401 Тогда + ТекстОшибки = НСтр("ru = 'Проверьте правильность введенных логина/пароля.'"); + Иначе + ТекстОшибки = НСтр("ru = 'Проверьте правильность введенных данных.'"); + КонецЕсли; + + ПоказатьПредупреждение(Неопределено, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Проверка параметров учетной записи завершилась с ошибками. + |%1 + | + |Технические подробности: + |%2'"), + ТекстОшибки, + ТекстПротокола)); + Иначе + ПоказатьПредупреждение(Неопределено, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Проверка параметров учетной записи завершилась успешно. + |%1'"), + РезультатТекст)); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьПроверкуПодключения(УчетнаяЗапись, СтруктураРезультата) + РаботаСФайламиСлужебный.ВыполнитьПроверкуПодключения(УчетнаяЗапись, СтруктураРезультата); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПроверитьСоединение(Сервис, ТекстПротокола) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда + МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета"); + Возврат МодульПолучениеФайловИзИнтернета.ДиагностикаСоединения(Сервис); + Иначе + + Возврат Новый Структура("ОписаниеОшибки, ЖурналДиагностики", + НСтр("ru = 'Проверьте соединение с сетью Интернет.'"), ТекстПротокола); + + КонецЕсли; + +КонецФункции + +&НаКлиенте +Процедура ВКачествеАвтораФайловПользовательПриИзменении(Элемент) + + Элементы.АвторФайлов.Доступность = Истина; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..4e5665b1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/Help/ru.html" @@ -0,0 +1,21 @@ + +

    Предназначен для хранения учетных записей синхронизации файлов.

    +

    Ввод новой учетной записи

    +
    • Для ввода новой учетной записи нажмите Создать. +
    • +
    • Напишите Наименование. +
    • +
    • В поле Сервис выберите из списка, с каким облачным сервисом будут синхронизироваться файлы данной учетной записи. +
    • +
    • Укажите Логин и Пароль - данные для доступа, полученные при регистрации на выбранном облачном сервисе. +
    • +
    • В поле Корневая папка напишите папку, в которой будут храниться все файлы для этой учетной записи. Ее необходимо создать самостоятельно на облачном сервисе. +
    • +
    • В разделе Автор новых и отредактированных файлов с помощью переключателя выберите, кто будет указываться в качестве автора файлов. +
      • По умолчанию выбрана Эта учетная запись. +
      • +
      • Если файлы в облаке редактирует только один пользователь, рекомендуется указать его в качестве автора новых и измененных файлов. +
        • В этом случае с помощью переключателя выберите Пользователь, с помощью кнопки  выберите тип пользователей, нажмите ОК. Затем выберите нужного пользователя из соответствующего списка.

    Проверка учетной записи

    +
    • С помощью кнопки Проверить настройки в окне учетной записи можно проконтролировать правильность заполнения данных учетной записи. В случае успешного завершения проверки выводятся данные о размере свободного места в облачном сервисе и объеме, занятом файлами.

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" new file mode 100644 index 00000000..ff6e0bcb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/ManagerModule.bsl" @@ -0,0 +1,37 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов + +// Возвращаемое значение: +// см. ЗапретРедактированияРеквизитовОбъектовПереопределяемый.ПриОпределенииЗаблокированныхРеквизитов.ЗаблокированныеРеквизиты. +// +Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт + + Результат = Новый Массив; + + Результат.Добавить("Сервис; СервисПредставление"); + Результат.Добавить("КорневаяПапка"); + + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" new file mode 100644 index 00000000..a1d6810f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262.mdo" @@ -0,0 +1,190 @@ + + + + + + + + + + УчетныеЗаписиСинхронизацииФайлов + + ru + Учетные записи синхронизации файлов + + true + Catalog.УчетныеЗаписиСинхронизацииФайлов.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Учетная запись синхронизации файлов + + 2 + true + 9 + 100 + String + Variable + true + true + AsDescription + InDialog + true + QuickChoice + Catalog.УчетныеЗаписиСинхронизацииФайлов.Form.ФормаЭлемента + + Сервис + + ru + Сервис + + + String + + 100 + + + + ru + Адрес сервера Webdav + + + + ShowError + + + + Use + Use + + + КорневаяПапка + + ru + Корневая папка + + + String + + 30 + + + + + ShowError + + + + Use + Use + + + АвторФайлов + + ru + Автор файлов + + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\320\276\320\274\320\276\321\211\320\275\320\270\320\272\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\320\276\320\274\320\276\321\211\320\275\320\270\320\272\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" new file mode 100644 index 00000000..80ed60cc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\320\276\320\274\320\276\321\211\320\275\320\270\320\272\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" @@ -0,0 +1,3300 @@ + + + + Страницы + 1 + + НастройкаУчетнойЗаписи + 32 + + НастройкаУчетнойЗаписиЗаголовок + 207 + + <key>ru</key> + <value>Введите настройки почты</value> + + true + true + + true + + + НастройкаУчетнойЗаписиЗаголовокРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + + НастройкаУчетнойЗаписиЗаголовокКонтекстноеМеню + 208 + true + true + + true + + true + + Label + true + + System.DefaultGUIFont + true + false + false + false + + + Left + + + + НеУдалосьПодключитьсяКартинкаИНадпись + 158 + + КартинкаПредупреждение + 160 + + <key>ru</key> + <value>Картинка вопрос</value> + + true + true + + true + + + КартинкаПредупреждениеРасширеннаяПодсказка + 162 + true + true + + true + + Label + true + true + + Left + + + + КартинкаПредупреждениеКонтекстноеМеню + 161 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + ГруппаСообщенияОбОшибках + 270 + + СообщенияОбОшибках + 238 + true + true + + true + + + + СообщенияОбОшибках + + + None + + СообщенияОбОшибкахРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + + СообщенияОбОшибкахКонтекстноеМеню + 239 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + + Opening + СообщенияОбОшибкахОткрытие + + 2 + true + true + false + true + true + true + true + true + true + + Style.FormBackColor + + + Style.FormBackColor + + + + + НужнаПомощь + 272 + + <key>ru</key> + <value>Нужна помощь?</value> + + true + true + + true + + + НужнаПомощьРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + + НужнаПомощьКонтекстноеМеню + 273 + true + true + + true + + true + + Label + true + true + Left + + + Click + НужнаПомощьНажатие + + true + Left + + + true + true + + true + + + ГруппаСообщенияОбОшибкахРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + НеУдалосьПодключитьсяКартинкаИНадписьРасширеннаяПодсказка + 159 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + Аутентификация + 200 + + АдресЭлектроннойПочты + 44 + + <key>ru</key> + <value>Адрес почты</value> + + true + true + + true + + + + АдресЭлектроннойПочты + + + + OnChange + АдресЭлектроннойПочтыПриИзменении + + + АдресЭлектроннойПочтыРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + + АдресЭлектроннойПочтыКонтекстноеМеню + 45 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + false + true + true + true + true + true + + + + Пароль + 47 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + + ПарольДляПолученияПисем + + + 1 + + OnChange + ПарольПриИзменении + + + ПарольРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 48 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ПарольНачалоВыбора + + 23 + true + true + false + true + true + true + + CommonPicture.ВводимыеСимволыСкрыты + + true + true + true + true + + + true + true + + true + + + АутентификацияРасширеннаяПодсказка + 201 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + + + + ИспользоватьУчетнуюЗапись + 189 + + ИспользоватьДляОтправки + 191 + + <key>ru</key> + <value>Для отправки писем</value> + + true + true + + true + + + + ИспользоватьДляОтправки + + + Right + + ИспользоватьДляОтправкиРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьДляОтправкиКонтекстноеМеню + 192 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ИспользоватьДляПолучения + 194 + + <key>ru</key> + <value>Для получения писем</value> + + true + true + + true + + + + ИспользоватьДляПолучения + + + Right + + ИспользоватьДляПолученияРасширеннаяПодсказка + 196 + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьДляПолученияКонтекстноеМеню + 195 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Почта будет использоваться</value> + + + ИспользоватьУчетнуюЗаписьРасширеннаяПодсказка + 190 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + true + Auto + Auto + + + + ДляКогоУчетнаяЗапись + 247 + + ВидУчетнойЗаписи + 249 + true + true + + true + + + + ВидУчетнойЗаписи + + + None + + ВидУчетнойЗаписиРасширеннаяПодсказка + 251 + true + true + + true + + Label + true + true + + Left + + + + ВидУчетнойЗаписиКонтекстноеМеню + 250 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Всеми пользователями (общая почта) + + + Общая + + + + + ru + Только мной + + + Персональная + + + + + true + true + + true + + + ДляКогоУчетнаяЗаписьРасширеннаяПодсказка + 248 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ИмяОтправителя + 202 + + ИмяОтправителяПисем + 151 + + <key>ru</key> + <value>Имя отправителя</value> + + true + true + + true + + + + ИмяОтправителяПисем + + + ShowBottom + + OnChange + ИмяОтправителяПисемПриИзменении + + + ИмяОтправителяПисемРасширеннаяПодсказка + 153 + + <key>ru</key> + <value>Например, Ваше имя или название организации.</value> + + true + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + + ИмяОтправителяПисемКонтекстноеМеню + 152 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + false + true + true + true + true + + + + ПояснениеКИмени + 204 + + <key>ru</key> + <value>Например, Ваше имя или название организации.</value> + + true + + true + + + ПояснениеКИмениРасширеннаяПодсказка + 206 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеКИмениКонтекстноеМеню + 205 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + ИмяОтправителяРасширеннаяПодсказка + 203 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройка учетной записи</value> + + + НастройкаУчетнойЗаписиРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + НастройкаСервераИсходящейПочты + 38 + + Протокол + 116 + + <key>ru</key> + <value>Тип учетной записи</value> + + true + true + + true + + + + Протокол + + + + OnChange + ПротоколПриИзменении + + + ПротоколРасширеннаяПодсказка + 118 + true + true + + true + + Label + true + true + + Left + + + + ПротоколКонтекстноеМеню + 117 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + false + true + true + true + true + true + + + IMAP + + + + + POP + + + + + + ПротоколИПортСервераВходящейПочты + 114 + + СерверВходящейПочты + 111 + + <key>ru</key> + <value>Сервер IMAP</value> + + true + true + + true + + + + СерверВходящейПочты + + + Top + + СерверВходящейПочтыРасширеннаяПодсказка + 113 + true + true + + true + + Label + true + true + + Left + + + + СерверВходящейПочтыКонтекстноеМеню + 112 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 22 + true + true + false + true + true + true + true + true + + + + ПортВходящейПочты + 119 + + <key>ru</key> + <value>Порт</value> + + true + true + + true + + + + ПортСервераВходящейПочты + + + Top + + ПортВходящейПочтыРасширеннаяПодсказка + 121 + true + true + + true + + Label + true + true + + Left + + + + ПортВходящейПочтыКонтекстноеМеню + 120 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ШифрованиеПриПолученииПочты + 265 + true + true + + true + + + + ШифрованиеПриПолученииПочты + + + Top + + OnChange + ШифрованиеПриПолученииПочтыПриИзменении + + + ШифрованиеПриПолученииПочтыРасширеннаяПодсказка + 267 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеПриПолученииПочтыКонтекстноеМеню + 266 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + STARTTLS + + + Авто + + + + + ru + SSL + + + SSL + + + + + true + true + + true + + + ПротоколИПортСервераВходящейПочтыРасширеннаяПодсказка + 115 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + НастройкиСервераИсходящейПочты + 89 + + СерверИсходящейПочты + 91 + + <key>ru</key> + <value>Сервер SMTP</value> + + true + true + + true + + + + СерверИсходящейПочты + + + Top + + СерверИсходящейПочтыРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + + СерверИсходящейПочтыКонтекстноеМеню + 92 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 22 + true + true + false + true + true + true + true + true + + + + ПортСервераИсходящейПочты + 94 + + <key>ru</key> + <value>Порт</value> + + true + true + + true + + + + ПортСервераИсходящейПочты + + + Top + + ПортСервераИсходящейПочтыРасширеннаяПодсказка + 96 + true + true + + true + + Label + true + true + + Left + + + + ПортСервераИсходящейПочтыКонтекстноеМеню + 95 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ШифрованиеПриОтправкеПочты + 262 + true + true + + true + + + + ШифрованиеПриОтправкеПочты + + + Top + + OnChange + ШифрованиеПриОтправкеПочтыПриИзменении + + + ШифрованиеПриОтправкеПочтыРасширеннаяПодсказка + 264 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеПриОтправкеПочтыКонтекстноеМеню + 263 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + STARTTLS + + + Авто + + + + + ru + SSL + + + SSL + + + + + true + true + + true + + + НастройкиСервераИсходящейПочтыРасширеннаяПодсказка + 90 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ОставлятьПисьмаНаСервере + 135 + + ОставлятьКопииПисемНаСервере + 137 + + <key>ru</key> + <value>Оставлять копии писем на сервере</value> + + true + true + + true + + + + ОставлятьКопииПисемНаСервере + + + Right + + OnChange + ОставлятьКопииПисемНаСервереПриИзменении + + + ОставлятьКопииПисемНаСервереРасширеннаяПодсказка + 139 + true + true + + true + + Label + true + true + + Left + + + + ОставлятьКопииПисемНаСервереКонтекстноеМеню + 138 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + НастройкаУдаленияПисем + 140 + + УдалятьПисьмаССервера + 244 + true + true + + true + + + + УдалятьПисьмаССервера + + + Right + + OnChange + УдалятьПисьмаССервераПриИзменении + + + УдалятьПисьмаССервераРасширеннаяПодсказка + 246 + true + true + + true + + Label + true + true + + Left + + + + УдалятьПисьмаССервераКонтекстноеМеню + 245 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПериодХраненияСообщенийНаСервере + 241 + true + true + + true + + + + ПериодХраненияСообщенийНаСервере + + + None + + ПериодХраненияСообщенийНаСервереРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + + ПериодХраненияСообщенийНаСервереКонтекстноеМеню + 242 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + true + + 1 + + + + + НадписьДней + 145 + + <key>ru</key> + <value>дней</value> + + true + true + + true + + + НадписьДнейРасширеннаяПодсказка + 147 + true + true + + true + + Label + true + true + + Left + + + + НадписьДнейКонтекстноеМеню + 146 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + НастройкаУдаленияПисемРасширеннаяПодсказка + 141 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + ОставлятьПисьмаНаСервереРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройка сервера исходящей почты</value> + + + НастройкаСервераИсходящейПочтыРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ПроверкаНастроекУчетнойЗаписи + 34 + + ПроверкаНастроекУчетнойЗаписиКартинкаИНадпись + 53 + + КартинкаДлительнаяОперация + 55 + true + true + + true + + + КартинкаДлительнаяОперацияРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + КартинкаДлительнаяОперацияКонтекстноеМеню + 56 + true + true + + true + + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + + + + + НадписьПроверкаНастроекУчетнойЗаписи + 58 + + <key>ru</key> + <value>Выполняется проверка настроек почты. +Это может занять несколько минут.</value> + + true + true + + true + + + НадписьПроверкаНастроекУчетнойЗаписиРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + + НадписьПроверкаНастроекУчетнойЗаписиКонтекстноеМеню + 59 + true + true + + true + + true + + Label + true + Center + + Left + + + true + true + + true + + + ПроверкаНастроекУчетнойЗаписиКартинкаИНадписьРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Проверка настроек учетной записи</value> + + + ПроверкаНастроекУчетнойЗаписиРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ПриПроверкеОбнаруженыОшибки + 275 + + КартинкаПриПроверкеОбнаруженыОшибки + 279 + + <key>ru</key> + <value>Картинка вопрос</value> + + true + true + + true + + + КартинкаПредупреждениеРасширеннаяПодсказка1 + 281 + true + true + + true + + Label + true + true + + Left + + + + КартинкаПредупреждениеКонтекстноеМеню1 + 280 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + ГруппаПриПроверкеОбнаруженыОшибки + 282 + + ТекстПриПроверкеОбнаруженыОшибки + 284 + true + true + + true + + + + СообщенияОбОшибках + + + None + + СообщенияОбОшибкахРасширеннаяПодсказка1 + 286 + true + true + + true + + Label + true + true + + Left + + + + СообщенияОбОшибкахКонтекстноеМеню1 + 285 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + + Opening + ТекстПриПроверкеОбнаруженыОшибкиОткрытие + + 7 + true + true + true + true + true + true + true + true + + Style.FormBackColor + + + Style.FormBackColor + + + + + НужнаПомощьПриПроверкеОбнаруженыОшибки + 287 + + <key>ru</key> + <value>Нужна помощь?</value> + + true + true + + true + + + НужнаПомощьРасширеннаяПодсказка1 + 289 + true + true + + true + + Label + true + true + + Left + + + + НужнаПомощьКонтекстноеМеню1 + 288 + true + true + + true + + true + + Label + true + true + Left + + + Click + НужнаПомощьНажатие + + true + Left + + + true + true + + true + + + ГруппаСообщенияОбОшибкахРасширеннаяПодсказка1 + 283 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>При проверке обнаружены ошибки</value> + + + ПриПроверкеОбнаруженыОшибкиРасширеннаяПодсказка + 276 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + + УчетнаяЗаписьУспешноНастроена + 36 + + УчетнаяЗаписьУспешноНастроенаЗаголовок + 235 + + <key>ru</key> + <value>Почта успешно настроена</value> + + true + + true + + + УчетнаяЗаписьУспешноНастроенаЗаголовокРасширеннаяПодсказка + 237 + true + true + + true + + Label + true + true + + Left + + + + УчетнаяЗаписьУспешноНастроенаЗаголовокКонтекстноеМеню + 236 + true + true + + true + + true + + Label + true + + System.DefaultGUIFont + true + false + false + false + + + Left + + + + УчетнаяЗаписьУспешноНастроенаКартинкаИНадпись + 64 + + КартинкаУспешно + 66 + + <key>ru</key> + <value>Картинка успешно</value> + + true + true + + true + + + КартинкаУспешноРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + + КартинкаУспешноКонтекстноеМеню + 67 + true + true + + true + + true + + true + true + + + CommonPicture.Успешно32 + + + + + НадписьУчетнаяЗаписьУспешноНастроена + 69 + + <key>ru</key> + <value>Настройка параметров почты +vasyapupkin@example.com завершена.</value> + + true + true + + true + + + НадписьУчетнаяЗаписьУспешноНастроенаРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + + НадписьУчетнаяЗаписьУспешноНастроенаКонтекстноеМеню + 70 + true + true + + true + + true + + Label + true + true + Center + + Left + + + true + true + + true + + + УчетнаяЗаписьУспешноНастроенаКартинкаИНадписьРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Учетная запись успешно настроена</value> + + + УчетнаяЗаписьУспешноНастроенаРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + СтраницыРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + КоманднаяПанель + 28 + + КоманднаяПанельЛеваяЧасть + 11 + + КнопкаНазад + 20 + true + true + + true + + + КнопкаНазадРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Назад + Auto + true + true + UserCmds + Auto + + + ФормаИзменитьФорму + 171 + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 172 + true + true + + true + + Label + true + true + + Left + + + 0:198ea630-fda2-4cda-8a23-f999f4c67ee6 + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + КоманднаяПанельЛеваяЧастьРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + КоманднаяПанельПраваяЧасть + 30 + + КнопкаПерейтиКНастройкам + 156 + true + true + + true + + + КнопкаПерейтиКНастройкамРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКНастройкам + Auto + true + true + UserCmds + Auto + + + КнопкаДалее + 22 + true + true + + true + + + КнопкаДалееРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Далее + Auto + true + true + true + UserCmds + Auto + + + КнопкаОтмена + 268 + true + true + + true + + + КнопкаОтменаРасширеннаяПодсказка + 269 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + + КоманднаяПанельПраваяЧастьРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + true + + КоманднаяПанельРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Bottom + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Close + CustomizeForm + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + Vertical + true + true + true + true + true + + АдресЭлектроннойПочты + + <key>ru</key> + <value>Адрес электронной почты</value> + + 1 + + String + + 255 + + + + true + + + true + + + + СпособНастройки + 3 + + String + + 13 + + + + true + + + true + + + + ТребуетсяВходНаСерверПередОтправкой + 4 + + Boolean + + + true + + + true + + + + ИмяПользователяДляОтправкиПисем + 5 + + String + + 100 + + + + true + + + true + + + + ПарольДляОтправкиПисем + 6 + + String + + 100 + + + + true + + + true + + + + СерверИсходящейПочты + + <key>ru</key> + <value>Сервер исходящей почты</value> + + 8 + + String + + 255 + + + + true + + + true + + + + ПортСервераИсходящейПочты + + <key>ru</key> + <value>Порт сервера исходящей почты</value> + + 9 + + Number + + 5 + true + + + + true + + + true + + + + ИспользоватьЗащищенноеСоединениеДляИсходящейПочты + 10 + + Boolean + + + true + + + true + + + + ИмяПользователяДляПолученияПисем + 11 + + String + + 100 + + + + true + + + true + + + + ПарольДляПолученияПисем + + <key>ru</key> + <value>Пароль для получения писем</value> + + 12 + + String + + 100 + + + + true + + + true + + + + СерверВходящейПочты + + <key>ru</key> + <value>Сервер входящей почты</value> + + 14 + + String + + 255 + + + + true + + + true + + + + Протокол + + <key>ru</key> + <value>Протокол</value> + + 15 + + String + + 4 + + + + true + + + true + + + + ПортСервераВходящейПочты + + <key>ru</key> + <value>Порт сервера входящей почты</value> + + 16 + + Number + + 5 + true + + + + true + + + true + + + + ИспользоватьЗащищенноеСоединениеДляВходящейПочты + 17 + + Boolean + + + true + + + true + + + + ДлительностьОжиданияСервера + 18 + + Number + + 3 + true + + + + true + + + true + + + + ОставлятьКопииПисемНаСервере + + <key>ru</key> + <value>Оставлять копии писем на сервере</value> + + 19 + + Boolean + + + true + + + true + + + + НазваниеУчетнойЗаписи + 21 + + String + + 50 + + + + true + + + true + + + + ИмяОтправителяПисем + + <key>ru</key> + <value>Имя отправителя писем</value> + + 22 + + String + + 100 + + + + true + + + true + + + + ПроверкаЗавершиласьСОшибками + 23 + + Boolean + + + true + + + true + + + + КонтекстныйРежим + 2 + + Boolean + + + true + + + true + + + + ОткрытьКарточкуУчетнойЗаписи + 24 + + Boolean + + + true + + + true + + + + ДлительностьОжиданияСервераПриОтправкеПисем + 26 + + Number + + 3 + true + + + + true + + + true + + + + НастройкиЗаполнены + 27 + + Boolean + + + true + + + true + + + + ИспользоватьДляОтправки + + <key>ru</key> + <value>Для отправки почты</value> + + 28 + + Boolean + + + true + + + true + + + + ИспользоватьДляПолучения + + <key>ru</key> + <value>Для получения почты</value> + + 29 + + Boolean + + + true + + + true + + + + УчетнаяЗаписьСсылка + 30 + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + true + + + true + + + + СообщенияОбОшибках + + <key>ru</key> + <value>Сообщения об ошибках</value> + + 31 + + String + + + + true + + + true + + + + ТребуетсяПодтверждениеЗакрытияФормы + 32 + + Boolean + + + true + + + true + + + + СсылкаНовойУчетнойЗаписи + 25 + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + true + + + true + + + + ИспользуютсяПрофилиБезопасности + 33 + + Boolean + + + true + + + true + + + + ПараметрыОбработчикаОжидания + 34 + + + true + + + true + + + + РезультатФоновогоЗадания + 35 + + + true + + + true + + + + ПериодХраненияСообщенийНаСервере + + <key>ru</key> + <value>Период хранения сообщений на сервере</value> + + 36 + + Number + + 3 + true + + + + true + + + true + + + + УдалятьПисьмаССервера + + <key>ru</key> + <value>Удалять письма с сервера через:</value> + + 37 + + Boolean + + + true + + + true + + + + ИдентификаторЗадания + 38 + + String + + + + true + + + true + + + + ВидУчетнойЗаписи + + <key>ru</key> + <value>Вид учетной записи</value> + + 39 + + String + + + + true + + + true + + + + ТребуетсяАвторизацияПриОтправкеПисем + 40 + + Boolean + + + true + + + true + + + + ШифрованиеПриОтправкеПочты + + <key>ru</key> + <value>Шифрование</value> + + 41 + + String + + + + true + + + true + + + + ШифрованиеПриПолученииПочты + + <key>ru</key> + <value>Шифрование</value> + + 42 + + String + + + + true + + + true + + + + Перенастройка + 7 + + Boolean + + + true + + + true + + + + Назад + + <key>ru</key> + <value>< Назад</value> + + 1 + + true + + + + Назад + + + DontUse + + + Далее + + <key>ru</key> + <value>Далее ></value> + + 2 + + true + + + + Далее + + + DontUse + + + ПерейтиКНастройкам + + <key>ru</key> + <value>Перейти к настройкам</value> + + 3 + + true + + + + ПерейтиКНастройкам + + + DontUse + + + Отмена + + <key>ru</key> + <value>Отмена</value> + + 4 + + ru + Отмена + + + true + + + + Отмена + + + DontUse + + + КонтекстныйРежим + + Boolean + + + + Перенастройка + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\320\276\320\274\320\276\321\211\320\275\320\270\320\272\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\320\276\320\274\320\276\321\211\320\275\320\270\320\272\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" new file mode 100644 index 00000000..be5dbad6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\320\276\320\274\320\276\321\211\320\275\320\270\320\272\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" @@ -0,0 +1,741 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.КнопкаПерейтиКНастройкам.Видимость = Ложь; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + ИспользуютсяПрофилиБезопасности = МодульРаботаВБезопасномРежиме.ИспользуютсяПрофилиБезопасности(); + Иначе + ИспользуютсяПрофилиБезопасности = Ложь; + КонецЕсли; + + Если ИспользуютсяПрофилиБезопасности Тогда + СпособНастройки = "Вручную"; + Иначе + СпособНастройки = "Автоматически"; + КонецЕсли; + + ДоступноПолучениеПисем = РаботаСПочтовымиСообщениямиСлужебный.НастройкиПодсистемы().ДоступноПолучениеПисем; + КонтекстныйРежим = Параметры.КонтекстныйРежим; + Перенастройка = Параметры.Перенастройка; + Элементы.ИспользоватьУчетнуюЗапись.Видимость = Не КонтекстныйРежим И ДоступноПолучениеПисем; + Элементы.Протокол.Доступность = ДоступноПолучениеПисем; + Элементы.ОставлятьПисьмаНаСервере.Видимость = ДоступноПолучениеПисем; + + Элементы.НастройкаУчетнойЗаписиЗаголовок.Заголовок = ?(КонтекстныйРежим, + НСтр("ru = 'Для отправки писем необходимо настроить почту'"), + НСтр("ru = 'Введите настройки почты'")); + + Элементы.НастройкаУчетнойЗаписиЗаголовок.Видимость = КонтекстныйРежим; + Заголовок = НСтр("ru = 'Настройка почты'"); + + ИспользоватьДляПолучения = Не КонтекстныйРежим И ДоступноПолучениеПисем; + ИспользоватьДляОтправки = Истина; + Элементы.Страницы.ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи; + + КлючСохраненияПоложенияОкна = ?(КонтекстныйРежим, "КонтекстныйРежим", "НеконтекстныйРежим"); + + Если Параметры.Свойство("Ключ") Тогда + УчетнаяЗаписьСсылка = Параметры.Ключ; + ТекстЗапроса = + "ВЫБРАТЬ + | УчетныеЗаписиЭлектроннойПочты.АдресЭлектроннойПочты КАК АдресЭлектроннойПочты, + | УчетныеЗаписиЭлектроннойПочты.ИмяПользователя КАК ИмяОтправителяПисем, + | УчетныеЗаписиЭлектроннойПочты.Наименование КАК НазваниеУчетнойЗаписи + |ИЗ + | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты + |ГДЕ + | УчетныеЗаписиЭлектроннойПочты.Ссылка = &Ссылка"; + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Ссылка", Параметры.Ключ); + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка); + КонецЕсли; + Иначе + СсылкаНовойУчетнойЗаписи = Справочники.УчетныеЗаписиЭлектроннойПочты.ПолучитьСсылку(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + КонтактнаяИнформацияОбъекта = МодульУправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта( + Пользователи.ТекущийПользователь(), Перечисления["ТипыКонтактнойИнформации"].АдресЭлектроннойПочты, , Ложь); + Для Каждого Контакт Из КонтактнаяИнформацияОбъекта Цикл + Адрес = Контакт.Представление; + Если Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоРеквизиту("АдресЭлектроннойПочты", Адрес).Пустая() Тогда + АдресЭлектроннойПочты = Адрес; + ТекущийЭлемент = Элементы.Пароль; + ИмяОтправителяПисем = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователи.ТекущийПользователь(), "Наименование"); + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(); + Элементы.ДляКогоУчетнаяЗапись.Видимость = ЭтоПолноправныйПользователь И Не КонтекстныйРежим; + ВидУчетнойЗаписи = ?(ЭтоПолноправныйПользователь, "Общая", "Персональная"); + Элементы.ИмяОтправителя.Видимость = Не КонтекстныйРежим; + + ТребуетсяАвторизацияПриОтправкеПисем = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + НастроитьЭлементыТекущейСтраницы() +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если Не ТребуетсяПодтверждениеЗакрытияФормы Тогда + Возврат; + КонецЕсли; + + Отказ = Истина; + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + ПодключитьОбработчикОжидания("ПоказатьВопросПередЗакрытиемФормы", 0.1, Истина); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПарольПриИзменении(Элемент) + ПарольДляОтправкиПисем = ПарольДляПолученияПисем; +КонецПроцедуры + +&НаКлиенте +Процедура ОставлятьКопииПисемНаСервереПриИзменении(Элемент) + ОбновитьДоступностьНастройкиДнейДоУдаления(); +КонецПроцедуры + +&НаКлиенте +Процедура УдалятьПисьмаССервераПриИзменении(Элемент) + ОбновитьДоступностьНастройкиДнейДоУдаления(); +КонецПроцедуры + +&НаКлиенте +Процедура АдресЭлектроннойПочтыПриИзменении(Элемент) + НастройкиЗаполнены = Ложь; + ТребуетсяПодтверждениеЗакрытияФормы = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ИмяОтправителяПисемПриИзменении(Элемент) + ТребуетсяПодтверждениеЗакрытияФормы = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ПротоколПриИзменении(Элемент) + УстановитьВидимостьЭлементов(); + Элементы.СерверВходящейПочты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Сервер %1'"), Протокол); +КонецПроцедуры + +&НаКлиенте +Процедура ШифрованиеПриОтправкеПочтыПриИзменении(Элемент) + ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = ШифрованиеПриОтправкеПочты = "SSL"; +КонецПроцедуры + +&НаКлиенте +Процедура ШифрованиеПриПолученииПочтыПриИзменении(Элемент) + ИспользоватьЗащищенноеСоединениеДляВходящейПочты = ШифрованиеПриПолученииПочты = "SSL"; +КонецПроцедуры + +&НаКлиенте +Процедура НужнаПомощьНажатие(Элемент) + + РаботаСПочтовымиСообщениямиКлиент.ПерейтиКДокументацииПоВводуУчетнойЗаписиЭлектроннойПочты(); + +КонецПроцедуры + +&НаКлиенте +Процедура СообщенияОбОшибкахОткрытие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Элементы.Страницы.ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки; + НастроитьЭлементыТекущейСтраницы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТекстПриПроверкеОбнаруженыОшибкиОткрытие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Элементы.Страницы.ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи; + НастроитьЭлементыТекущейСтраницы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте + +Процедура Далее(Команда) + + ПерейтиНаСледующуюСтраницу(); + +КонецПроцедуры + +&НаКлиенте +Процедура Назад(Команда) + + ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; + + ПредыдущаяСтраница = Неопределено; + Если ТекущаяСтраница = Элементы.НастройкаСервераИсходящейПочты Тогда + ПредыдущаяСтраница = Элементы.НастройкаУчетнойЗаписи; + ИначеЕсли ТекущаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи Или ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки Тогда + ПредыдущаяСтраница = Элементы.НастройкаУчетнойЗаписи; + КонецЕсли; + + Если ПредыдущаяСтраница <> Неопределено Тогда + Элементы.Страницы.ТекущаяСтраница = ПредыдущаяСтраница; + КонецЕсли; + + НастроитьЭлементыТекущейСтраницы() +КонецПроцедуры + +&НаКлиенте +Процедура Отмена(Команда) + Закрыть(Ложь); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПоказатьВопросПередЗакрытиемФормы() + ТекстВопроса = НСтр("ru = 'Введенные данные не записаны. Закрыть форму?'"); + ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытиеФормыПодтверждено", ЭтотОбъект); + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("Закрыть", НСтр("ru = 'Закрыть'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена, НСтр("ru = 'Не закрывать'")); + ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , КодВозвратаДиалога.Отмена, НСтр("ru = 'Настройка почты'")); +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытиеФормыПодтверждено(РезультатВопроса, ДополнительныеПараметры = Неопределено) Экспорт + + Если РезультатВопроса = КодВозвратаДиалога.Отмена Тогда + Возврат; + КонецЕсли; + + ТребуетсяПодтверждениеЗакрытияФормы = Ложь; + Закрыть(Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиНаСледующуюСтраницу() + + Отказ = Ложь; + ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; + + СледующаяСтраница = Неопределено; + Если ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи Или ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки Тогда + ПроверитьЗаполнениеНаСтраницеНастройкаУчетнойЗаписи(Отказ); + Если Не Отказ И Не НастройкиЗаполнены Тогда + ЗаполнитьНастройкиУчетнойЗаписи(); + КонецЕсли; + Если СпособНастройки = "Автоматически" Или ПроверкаЗавершиласьСОшибками Тогда + СледующаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи; + Иначе + Если ИспользоватьДляОтправки Или ИспользоватьДляПолучения Тогда + СледующаяСтраница = Элементы.НастройкаСервераИсходящейПочты; + Иначе + СледующаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи; + КонецЕсли; + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Элементы.НастройкаСервераИсходящейПочты Тогда + СледующаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи; + ИначеЕсли ТекущаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи Тогда + Если ПроверкаЗавершиласьСОшибками Тогда + СледующаяСтраница = Элементы.НастройкаУчетнойЗаписи; + Иначе + СледующаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена; + КонецЕсли; + КонецЕсли; + + Если Отказ Тогда + Возврат; + КонецЕсли; + + Если СледующаяСтраница = Неопределено Тогда + Закрыть(Истина); + Иначе + Элементы.Страницы.ТекущаяСтраница = СледующаяСтраница; + НастроитьЭлементыТекущейСтраницы(); + КонецЕсли; + + Если Элементы.Страницы.ТекущаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи Тогда + Если СпособНастройки = "Автоматически" Тогда + ПодключитьОбработчикОжидания("НастроитьПараметрыПодключенияАвтоматически", 0.1, Истина); + Иначе + ПодключитьОбработчикОжидания("ВыполнитьПроверкуНастроек", 0.1, Истина); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроверкуНастроек() + + ОповещениеОЗакрытии = Новый ОписаниеОповещения("ВыполнитьПроверкуНастроекЗапросНаРазрешенияВыполнен", ЭтотОбъект); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + Запрос = СоздатьЗапросНаИспользованиеВнешнихРесурсов(); + + МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); + МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов( + ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Запрос), ЭтотОбъект, ОповещениеОЗакрытии); + Иначе + ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, КодВозвратаДиалога.ОК); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроверкуНастроекЗапросНаРазрешенияВыполнен(РезультатЗапроса, ДополнительныеПараметры) Экспорт + Если Не РезультатЗапроса = КодВозвратаДиалога.ОК Тогда + Возврат; + КонецЕсли; + + ПроверитьНастройкиУчетнойЗаписи(); + Если ЗначениеЗаполнено(УчетнаяЗаписьСсылка) Тогда + ОповеститьОбИзменении(ТипЗнч(УчетнаяЗаписьСсылка)); + КонецЕсли; + ПерейтиНаСледующуюСтраницу(); +КонецПроцедуры + +&НаСервере +Функция СоздатьЗапросНаИспользованиеВнешнихРесурсов() + + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + + Возврат МодульРаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов( + Разрешения(), СсылкаНовойУчетнойЗаписи); + +КонецФункции + +&НаСервере +Функция Разрешения() + + Результат = Новый Массив; + + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + + Если ИспользоватьДляОтправки Тогда + Результат.Добавить( + МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса( + "SMTP", + СерверИсходящейПочты, + ПортСервераИсходящейПочты, + НСтр("ru = 'Электронная почта.'"))); + КонецЕсли; + + Если ИспользоватьДляПолучения Тогда + Результат.Добавить( + МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса( + Протокол, + СерверВходящейПочты, + ПортСервераВходящейПочты, + НСтр("ru = 'Электронная почта.'"))); + КонецЕсли; + + Возврат Результат; + +КонецФункции + + +&НаКлиенте +Процедура ПроверитьЗаполнениеНаСтраницеНастройкаУчетнойЗаписи(Отказ) + + ОчиститьСообщения(); + + Если ПустаяСтрока(АдресЭлектроннойПочты) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Введите адрес электронной почты'"), , "АдресЭлектроннойПочты", , Отказ); + ИначеЕсли Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(АдресЭлектроннойПочты, Истина) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Адрес электронной почты введен неверно'"), , "АдресЭлектроннойПочты", , Отказ); + КонецЕсли; + + Если ПустаяСтрока(ПарольДляПолученияПисем) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Необходимо ввести пароль'"), , "ПарольДляПолученияПисем", , Отказ); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьЭлементыТекущейСтраницы() + + ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; + + // КнопкаДалее + Если ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена Тогда + Если КонтекстныйРежим Тогда + ЗаголовокКнопкиДалее = НСтр("ru = 'Продолжить'"); + Иначе + ЗаголовокКнопкиДалее = НСтр("ru = 'Закрыть'"); + КонецЕсли; + Иначе + Если ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи + И ПроверкаЗавершиласьСОшибками Или ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки Тогда + ЗаголовокКнопкиДалее = НСтр("ru = 'Повторить'"); + ИначеЕсли ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи + И СпособНастройки = "Автоматически" Тогда + Если КонтекстныйРежим Или Перенастройка Тогда + ЗаголовокКнопкиДалее = НСтр("ru = 'Настроить'"); + Иначе + ЗаголовокКнопкиДалее = НСтр("ru = 'Создать'"); + КонецЕсли; + Иначе + ЗаголовокКнопкиДалее = НСтр("ru = 'Далее >'"); + КонецЕсли; + КонецЕсли; + Элементы.КнопкаДалее.Заголовок = ЗаголовокКнопкиДалее; + Элементы.КнопкаДалее.Доступность = ТекущаяСтраница <> Элементы.ПроверкаНастроекУчетнойЗаписи; + Элементы.КнопкаДалее.Видимость = ТекущаяСтраница <> Элементы.ПроверкаНастроекУчетнойЗаписи; + + // КнопкаНазад + Элементы.КнопкаНазад.Видимость = ТекущаяСтраница <> Элементы.НастройкаУчетнойЗаписи + И ТекущаяСтраница <> Элементы.УчетнаяЗаписьУспешноНастроена + И ТекущаяСтраница <> Элементы.ПроверкаНастроекУчетнойЗаписи; + + // КнопкаОтмена + Элементы.КнопкаОтмена.Видимость = ТекущаяСтраница <> Элементы.УчетнаяЗаписьУспешноНастроена; + + // КнопкаПерейтиКНастройкам + Элементы.КнопкаПерейтиКНастройкам.Видимость = Не ИспользуютсяПрофилиБезопасности И (ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи + И ПроверкаЗавершиласьСОшибками Или Не КонтекстныйРежим И Не Перенастройка И ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена); + + Если Не КонтекстныйРежим И ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена Тогда + Элементы.КнопкаПерейтиКНастройкам.Заголовок = НСтр("ru = 'Перейти к настройкам'"); + Иначе + Элементы.КнопкаПерейтиКНастройкам.Заголовок = НСтр("ru = 'Настроить вручную'"); + КонецЕсли; + + Если ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи Тогда + Элементы.НеУдалосьПодключитьсяКартинкаИНадпись.Видимость = ПроверкаЗавершиласьСОшибками; + КонецЕсли; + + Если ТекущаяСтраница = Элементы.НастройкаСервераИсходящейПочты Тогда + ОбновитьДоступностьНастройкиДнейДоУдаления(); + УстановитьВидимостьЭлементов(); + КонецЕсли; + + Если ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена Тогда + Элементы.НадписьУчетнаяЗаписьУспешноНастроена.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Настройка почты + |%1 успешно завершена.'"), АдресЭлектроннойПочты); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьДоступностьНастройкиДнейДоУдаления() + Элементы.УдалятьПисьмаССервера.Доступность = ОставлятьКопииПисемНаСервере; + Элементы.ПериодХраненияСообщенийНаСервере.Доступность = УдалятьПисьмаССервера; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьВидимостьЭлементов() + Элементы.ОставлятьПисьмаНаСервере.Видимость = Протокол = "POP"; +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиКНастройкам(Команда) + ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; + Если Не КонтекстныйРежим И ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена Тогда + ПоказатьЗначение(,УчетнаяЗаписьСсылка); + Закрыть(Истина); + Иначе + Если СпособНастройки = "Автоматически" Тогда + СпособНастройки = "Вручную"; + КонецЕсли; + Элементы.Страницы.ТекущаяСтраница = Элементы.НастройкаСервераИсходящейПочты; + НастроитьЭлементыТекущейСтраницы(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНастройкиУчетнойЗаписи() + ЗаполнитьЗначенияСвойств(ЭтотОбъект, НастройкиПоУмолчанию(АдресЭлектроннойПочты, ПарольДляПолученияПисем)); + Если ПустаяСтрока(НазваниеУчетнойЗаписи) Тогда + НазваниеУчетнойЗаписи = АдресЭлектроннойПочты; + КонецЕсли; + + НастройкиЗаполнены = Истина; + + ШифрованиеПриОтправкеПочты = ?(ИспользоватьЗащищенноеСоединениеДляИсходящейПочты, "SSL", "Авто"); + ШифрованиеПриПолученииПочты = ?(ИспользоватьЗащищенноеСоединениеДляВходящейПочты, "SSL", "Авто"); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция НастройкиПоУмолчанию(АдресЭлектроннойПочты, Пароль) + + Позиция = СтрНайти(АдресЭлектроннойПочты, "@"); + ИмяСервераВУчетнойЗаписи = Сред(АдресЭлектроннойПочты, Позиция + 1); + + Настройки = Новый Структура; + + Настройки.Вставить("ИмяПользователяДляПолученияПисем", АдресЭлектроннойПочты); + Настройки.Вставить("ИмяПользователяДляОтправкиПисем", АдресЭлектроннойПочты); + + Настройки.Вставить("ПарольДляОтправкиПисем", Пароль); + Настройки.Вставить("ПарольДляПолученияПисем", Пароль); + + Настройки.Вставить("Протокол", "IMAP"); + Настройки.Вставить("СерверВходящейПочты", "imap." + ИмяСервераВУчетнойЗаписи); + Настройки.Вставить("ПортСервераВходящейПочты", 993); + Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты", Истина); + + Настройки.Вставить("СерверИсходящейПочты", "smtp." + ИмяСервераВУчетнойЗаписи); + Настройки.Вставить("ПортСервераИсходящейПочты", 587); + Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты", Ложь); + + Настройки.Вставить("ДлительностьОжиданияСервера", 30); + Настройки.Вставить("ОставлятьКопииПисемНаСервере", Истина); + Настройки.Вставить("ПериодХраненияСообщенийНаСервере", 10); + + НастройкиIMAPПоУмолчанию = Справочники.УчетныеЗаписиЭлектроннойПочты.ВариантыНастройкиПодключенияКСерверуIMAP(АдресЭлектроннойПочты)[0]; + НастройкиSMTPПоУмолчанию = Справочники.УчетныеЗаписиЭлектроннойПочты.ВариантыНастройкиПодключенияКСерверуSMTP(АдресЭлектроннойПочты)[0]; + + ЗаполнитьЗначенияСвойств(Настройки, НастройкиIMAPПоУмолчанию); + ЗаполнитьЗначенияСвойств(Настройки, НастройкиSMTPПоУмолчанию); + + Возврат Настройки; +КонецФункции + +&НаСервере +Процедура ПроверитьНастройкиУчетнойЗаписи() + + + ПрофильИсходящейПочты = Неопределено; + Если ИспользоватьДляОтправки Тогда + ПрофильИсходящейПочты = ИнтернетПочтовыйПрофиль(Ложь); + КонецЕсли; + + ПрофильВходящейПочты = Неопределено; + Если ИспользоватьДляПолучения Тогда + ПрофильВходящейПочты = ИнтернетПочтовыйПрофиль(Истина); + КонецЕсли; + + РезультатПроверки = Справочники.УчетныеЗаписиЭлектроннойПочты.ПроверитьНастройкиПрофилей( + ПрофильИсходящейПочты, ПрофильВходящейПочты, АдресЭлектроннойПочты); + + СообщенияОбОшибках = РезультатПроверки.ОшибкиПодключения; + ПроверкаЗавершиласьСОшибками = ЗначениеЗаполнено(СообщенияОбОшибках); + + Если Не ПроверкаЗавершиласьСОшибками Тогда + Попытка + СоздатьУчетнуюЗапись(); + Исключение + ПроверкаЗавершиласьСОшибками = Истина; + СообщенияОбОшибках = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СоздатьУчетнуюЗапись() + + СистемнаяУчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты; + НастроитьСистемнуюУчетнуюЗапись = КонтекстныйРежим И ВидУчетнойЗаписи = "Общая" + И Не РаботаСПочтовымиСообщениями.УчетнаяЗаписьНастроена(СистемнаяУчетнаяЗапись) + И Справочники.УчетныеЗаписиЭлектроннойПочты.ИзменениеРазрешено(СистемнаяУчетнаяЗапись); + + Если НастроитьСистемнуюУчетнуюЗапись Тогда + УчетнаяЗаписьСсылка = СистемнаяУчетнаяЗапись; + КонецЕсли; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.УчетныеЗаписиЭлектроннойПочты"); + Если Не УчетнаяЗаписьСсылка.Пустая() Тогда + ЭлементБлокировки.УстановитьЗначение("Ссылка", УчетнаяЗаписьСсылка); + КонецЕсли; + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + Если УчетнаяЗаписьСсылка.Пустая() Тогда + УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СоздатьЭлемент(); + УчетнаяЗапись.УстановитьСсылкуНового(СсылкаНовойУчетнойЗаписи); + Иначе + УчетнаяЗапись = УчетнаяЗаписьСсылка.ПолучитьОбъект(); + КонецЕсли; + + ЗаполнитьЗначенияСвойств(УчетнаяЗапись, ЭтотОбъект); + УчетнаяЗапись.ИмяПользователя = ИмяОтправителяПисем; + УчетнаяЗапись.Пользователь = ИмяПользователяДляПолученияПисем; + УчетнаяЗапись.ПользовательSMTP = ИмяПользователяДляОтправкиПисем; + УчетнаяЗапись.ВремяОжидания = ДлительностьОжиданияСервера; + УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере = ОставлятьКопииПисемНаСервере; + УчетнаяЗапись.ПериодХраненияСообщенийНаСервере = ?(ОставлятьКопииПисемНаСервере И УдалятьПисьмаССервера И Протокол = "POP", ПериодХраненияСообщенийНаСервере, 0); + УчетнаяЗапись.ПротоколВходящейПочты = Протокол; + УчетнаяЗапись.Наименование = НазваниеУчетнойЗаписи; + УчетнаяЗапись.ПриОтправкеПисемТребуетсяАвторизация = ЗначениеЗаполнено(УчетнаяЗапись.ПользовательSMTP); + Если ВидУчетнойЗаписи = "Персональная" Тогда + УчетнаяЗапись.ВладелецУчетнойЗаписи = Пользователи.ТекущийПользователь(); + Иначе + УчетнаяЗапись.ВладелецУчетнойЗаписи = Справочники.Пользователи.ПустаяСсылка(); + КонецЕсли; + УчетнаяЗапись.ДополнительныеСвойства.Вставить("НеПроверятьИзменениеНастроек"); + + УчетнаяЗапись.Записать(); + УчетнаяЗаписьСсылка = УчетнаяЗапись.Ссылка; + ТребуетсяПодтверждениеЗакрытияФормы = Ложь; + + УстановитьПривилегированныйРежим(Истина); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(УчетнаяЗаписьСсылка, ПарольДляПолученияПисем); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(УчетнаяЗаписьСсылка, ПарольДляОтправкиПисем, "ПарольSMTP"); + УстановитьПривилегированныйРежим(Ложь); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Ошибка при создании учетной записи электронной почты'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +&НаСервере +Функция ИнтернетПочтовыйПрофиль(ДляПолучения = Ложь) + + Профиль = Новый ИнтернетПочтовыйПрофиль; + Если ДляПолучения Или ТребуетсяВходНаСерверПередОтправкой Тогда + Если Протокол = "IMAP" Тогда + Профиль.АдресСервераIMAP = СерверВходящейПочты; + Профиль.ИспользоватьSSLIMAP = ИспользоватьЗащищенноеСоединениеДляВходящейПочты; + Профиль.ПарольIMAP = ПарольДляПолученияПисем; + Профиль.ПользовательIMAP = ИмяПользователяДляПолученияПисем; + Профиль.ПортIMAP = ПортСервераВходящейПочты; + Иначе + Профиль.АдресСервераPOP3 = СерверВходящейПочты; + Профиль.ИспользоватьSSLPOP3 = ИспользоватьЗащищенноеСоединениеДляВходящейПочты; + Профиль.Пароль = ПарольДляПолученияПисем; + Профиль.Пользователь = ИмяПользователяДляПолученияПисем; + Профиль.ПортPOP3 = ПортСервераВходящейПочты; + КонецЕсли; + КонецЕсли; + + Если Не ДляПолучения Тогда + Профиль.POP3ПередSMTP = ТребуетсяВходНаСерверПередОтправкой; + Профиль.АдресСервераSMTP = СерверИсходящейПочты; + Профиль.ИспользоватьSSLSMTP = ИспользоватьЗащищенноеСоединениеДляИсходящейПочты; + Профиль.ПарольSMTP = ПарольДляОтправкиПисем; + Профиль.ПользовательSMTP = ИмяПользователяДляОтправкиПисем; + Профиль.ПортSMTP = ПортСервераИсходящейПочты; + КонецЕсли; + + Профиль.Таймаут = ДлительностьОжиданияСервера; + + Возврат Профиль; + +КонецФункции + +&НаКлиенте +Процедура НастроитьПараметрыПодключенияАвтоматически() + + СообщенияОбОшибках = НСтр("ru = 'Не удалось определить настройки подключения. + |Настройте параметры подключения вручную.'"); + + Если СтрНайти(НРег(АдресЭлектроннойПочты), "@gmail.com") > 0 Тогда + СообщенияОбОшибках = СообщенияОбОшибках + Символы.ПС + + НСтр("ru = 'См. также рекомендации по настройке почты Gmail: + |http://buh.ru/articles/documents/42429/#briefly_43166'"); + КонецЕсли; + + ПроверкаЗавершиласьСОшибками = Ложь; + + ДлительнаяОперация = НачатьПоискНастроекУчетнойЗаписи(); + + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ВыводитьОкноОжидания = Ложь; + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриЗавершенииПоискаНастроек", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОписаниеОповещения, ПараметрыОжидания); + +КонецПроцедуры + +&НаСервере +Функция НачатьПоискНастроекУчетнойЗаписи() + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Поиск настроек почтового сервера'"); + + Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Справочники.УчетныеЗаписиЭлектроннойПочты.ОпределитьНастройкиУчетнойЗаписи", + АдресЭлектроннойПочты, ПарольДляПолученияПисем, ИспользоватьДляОтправки, ИспользоватьДляПолучения); + +КонецФункции + +&НаКлиенте +Процедура ПриЗавершенииПоискаНастроек(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Результат.Статус = "Ошибка" Тогда + ПроверкаЗавершиласьСОшибками = Истина; + ПерейтиНаСледующуюСтраницу(); + Возврат; + КонецЕсли; + + НайденныеНастройки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); + + ПроверкаЗавершиласьСОшибками = ИспользоватьДляОтправки И Не НайденныеНастройки.ДляОтправки + Или ИспользоватьДляПолучения И Не НайденныеНастройки.ДляПолучения; + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, НайденныеНастройки); + ШифрованиеПриОтправкеПочты = ?(ИспользоватьЗащищенноеСоединениеДляИсходящейПочты, "SSL", "Авто"); + ШифрованиеПриПолученииПочты = ?(ИспользоватьЗащищенноеСоединениеДляВходящейПочты, "SSL", "Авто"); + + Если Не НайденныеНастройки.ПроверкаНастроекВыполнена Тогда + ПодключитьОбработчикОжидания("ВыполнитьПроверкуНастроек", 0.1, Истина); + Возврат; + КонецЕсли; + + Если Не ПроверкаЗавершиласьСОшибками Тогда + Попытка + СоздатьУчетнуюЗапись(); + Исключение + ПроверкаЗавершиласьСОшибками = Истина; + СообщенияОбОшибках = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + ОповеститьОбИзменении(СсылкаНовойУчетнойЗаписи); + КонецЕсли; + ПерейтиНаСледующуюСтраницу(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПарольНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + РаботаСПочтовымиСообщениямиКлиент.ПолеПароляНачалоВыбора(Элемент, ПарольДляПолученияПисем, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" new file mode 100644 index 00000000..e7d24f2d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" @@ -0,0 +1,200 @@ + + + + <key>ru</key> + <value>Введите пароль учетной записи</value> + + + Пароль + 1 + true + true + + true + + + + Пароль + + + + ПарольРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОК + 4 + true + true + + true + + + ФормаОКРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 6 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Close + CustomizeForm + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + 30 + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 1 + + String + + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Help/ru.html" new file mode 100644 index 00000000..a89868dc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Help/ru.html" @@ -0,0 +1 @@ +При изменении настроек уже введенной персональной учетной записи программа просит ввести пароль. Это сделано для того, чтобы никто (даже администратор) не мог получить доступ к персональной почте. \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" new file mode 100644 index 00000000..ee525ed1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" @@ -0,0 +1,29 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + Закрыть(Пароль); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" new file mode 100644 index 00000000..2408ef26 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" @@ -0,0 +1,697 @@ + + + + Страницы + 1 + + ВыполняетсяПроверкаНастроек + 153 + + КартинкаДлительнаяОперация + 160 + true + true + + true + + + КартинкаДлительнаяОперацияРасширеннаяПодсказка + 162 + true + true + + true + + Label + true + true + + Left + + + + КартинкаДлительнаяОперацияКонтекстноеМеню + 161 + true + true + + true + + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + + + + + НадписьПроверкаНастроекУчетнойЗаписи + 163 + + <key>ru</key> + <value>Выполняется проверка настроек почты. +Это может занять несколько минут.</value> + + true + true + + true + + + НадписьПроверкаНастроекУчетнойЗаписиРасширеннаяПодсказка + 165 + true + true + + true + + Label + true + true + + Left + + + + НадписьПроверкаНастроекУчетнойЗаписиКонтекстноеМеню + 164 + true + true + + true + + true + + Label + true + Center + + Left + + + true + true + + true + + + <key>ru</key> + <value>Выполняется проверка настроек</value> + + + ВыполняетсяПроверкаНастроекРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + ПриПроверкеОбнаруженыОшибки + 3 + + КартинкаПредупреждение + 13 + + <key>ru</key> + <value>Картинка вопрос</value> + + true + true + + true + + + КартинкаПредупреждениеРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + КартинкаПредупреждениеКонтекстноеМеню + 14 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + ГруппаСообщенияОбОшибках + 16 + + СообщенияОбОшибках + 18 + true + true + + true + + + + СообщенияОбОшибках + + + None + + СообщенияОбОшибкахРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + СообщенияОбОшибкахКонтекстноеМеню + 19 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 40 + 7 + true + true + true + true + true + true + true + + Style.FormBackColor + + + Style.FormBackColor + + + + + НужнаПомощь + 21 + + <key>ru</key> + <value>Нужна помощь?</value> + + true + true + + true + + + НужнаПомощьРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + НужнаПомощьКонтекстноеМеню + 22 + true + true + + true + + true + + Label + true + true + Left + + + Click + НужнаПомощьНажатие + + true + Left + + + true + true + + true + + + ГруппаСообщенияОбОшибкахРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>При проверке обнаружены ошибки</value> + + + ПриПроверкеОбнаруженыОшибкиРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + + ПроверкаУспешноВыполнена + 166 + + КартинкаУспешно + 173 + + <key>ru</key> + <value>Картинка успешно</value> + + true + true + + true + + + КартинкаУспешноРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + + КартинкаУспешноКонтекстноеМеню + 174 + true + true + + true + + true + + true + true + + + CommonPicture.Успешно32 + + + + + УчетнаяЗаписьУспешноНастроенаКартинкаИНадпись + 171 + + НадписьУчетнаяЗаписьУспешноНастроена + 176 + + <key>ru</key> + <value>Проверка настроек почты завершилась успешно:</value> + + true + true + + true + + + НадписьУчетнаяЗаписьУспешноНастроенаРасширеннаяПодсказка + 178 + true + true + + true + + Label + true + true + + Left + + + + НадписьУчетнаяЗаписьУспешноНастроенаКонтекстноеМеню + 177 + true + true + + true + + true + + Label + true + true + Center + + Left + + + + ВыполненныеПроверки + 181 + true + true + + true + + + + ВыполненныеПроверки + + + None + + ВыполненныеПроверкиРасширеннаяПодсказка + 183 + true + true + + true + + Label + true + true + + Left + + + + ВыполненныеПроверкиКонтекстноеМеню + 182 + true + true + + true + + true + + LabelField + Top + Enter + true + Left + true + + true + true + true + true + + + true + true + + true + + + УчетнаяЗаписьУспешноНастроенаКартинкаИНадписьРасширеннаяПодсказка + 172 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Проверка успешно выполнена</value> + + + ПроверкаУспешноВыполненаРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + true + true + + true + + + СтраницыРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаЗакрыть + 179 + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 180 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + CustomizeForm + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + СообщенияОбОшибках + + <key>ru</key> + <value>Сообщения об ошибках</value> + + 1 + + String + + + + true + + + true + + + + ВыполненныеПроверки + + <key>ru</key> + <value>Выполненные проверки</value> + + 2 + + String + + + + true + + + true + + + + УчетнаяЗапись + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + true + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" new file mode 100644 index 00000000..f1a86efc --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270/Module.bsl" @@ -0,0 +1,77 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.Страницы.ТекущаяСтраница = Элементы.ВыполняетсяПроверкаНастроек; + Элементы.ФормаЗакрыть.Заголовок = НСтр("ru = 'Отмена'"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + ПодключитьОбработчикОжидания("ВыполнитьПроверкуНастроек", 0.1, Истина) +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НужнаПомощьНажатие(Элемент) + РаботаСПочтовымиСообщениямиКлиент.ПерейтиКДокументацииПоВводуУчетнойЗаписиЭлектроннойПочты(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ВыполнитьПроверкуНастроек() + ДлительнаяОперация = НачатьВыполнениеНаСервере(); + ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект); + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ВыводитьОкноОжидания = Ложь; + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); +КонецПроцедуры + +&НаСервере +Функция НачатьВыполнениеНаСервере() + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор); + Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Справочники.УчетныеЗаписиЭлектроннойПочты.ПроверитьНастройкиУчетнойЗаписи", + Параметры.УчетнаяЗапись); +КонецФункции + +&НаКлиенте +Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Элементы.ФормаЗакрыть.Заголовок = НСтр("ru = 'Закрыть'"); + + Если Результат.Статус = "Ошибка" Тогда + ВызватьИсключение Результат.КраткоеПредставлениеОшибки; + КонецЕсли; + + РезультатПроверки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); + СообщенияОбОшибках = РезультатПроверки.ОшибкиПодключения; + ВыполненныеПроверки = РезультатПроверки.ВыполненныеПроверки; + Если ЗначениеЗаполнено(СообщенияОбОшибках) Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки; + Иначе + Элементы.Страницы.ТекущаяСтраница = Элементы.ПроверкаУспешноВыполнена; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..5c2a728f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,577 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + CopyToClipboard + ListSettings + OutputList + Refresh + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ВладелецУчетнойЗаписи + 26 + true + true + + true + + + + Список.ВладелецУчетнойЗаписи + + + + ВладелецУчетнойЗаписиРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + ВладелецУчетнойЗаписиКонтекстноеМеню + 27 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 14 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 15 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 17 + + СписокСтрокаПоискаРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 18 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 20 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 21 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 23 + + СписокУправлениеПоискомРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 24 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + + + + ПоказыватьПерсональныеУчетныеЗаписиПользователей + 29 + true + true + + true + + + + ПоказыватьПерсональныеУчетныеЗаписиПользователей + + + Right + + OnChange + ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении + + + ПоказыватьПерсональныеУчетныеЗаписиПользователейРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьПерсональныеУчетныеЗаписиПользователейКонтекстноеМеню + 30 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ФормаКоманднаяПанель + -1 + + ФормаВыбрать + 6 + true + true + + true + + + ФормаВыбратьExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ФормаИзменить + 7 + true + true + + true + + + ФормаИзменитьExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 8 + true + true + + true + + + ФормаСправкаExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.ИспользоватьДляОтправки + +
    true
    + + Catalog.УчетныеЗаписиЭлектроннойПочты + true + true + true + true + +
    + + ПоказыватьПерсональныеУчетныеЗаписиПользователей + + <key>ru</key> + <value>Показывать персональные учетные записи пользователей</value> + + 2 + + Boolean + + + true + + + true + + + + ПредлагатьНастройкуПочты + 3 + + Boolean + + + true + + + true + + + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..45144d6a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,81 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.ПоказыватьПерсональныеУчетныеЗаписиПользователей.Видимость = + Пользователи.ЭтоПолноправныйПользователь(); + + ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, + ПоказыватьПерсональныеУчетныеЗаписиПользователей, + Пользователи.ТекущийПользователь()); + + Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей; + + Если ЗначениеЗаполнено(Параметры.Отбор) Тогда + Отбор = Новый Структура; + Отбор.Вставить("ИспользоватьДляОтправки", Истина); + Отбор.Вставить("ИспользоватьДляПолучения", Истина); + + ЗаполнитьЗначенияСвойств(Отбор, Параметры.Отбор); + + ПредлагатьНастройкуПочты = РаботаСПочтовымиСообщениями.ДоступнаОтправкаПисем() + И РаботаСПочтовымиСообщениями.ДоступныеУчетныеЗаписи( + Отбор.ИспользоватьДляОтправки, Отбор.ИспользоватьДляПолучения, Истина).Количество() = 0; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении(Элемент) + + ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, + ПоказыватьПерсональныеУчетныеЗаписиПользователей, + ПользователиКлиент.ТекущийПользователь()); + + Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, ПоказыватьПерсональныеУчетныеЗаписиПользователей, ТекущийПользователь) + СписокПользователей = Новый Массив; + СписокПользователей.Добавить(ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка")); + СписокПользователей.Добавить(ТекущийПользователь); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ВладелецУчетнойЗаписи", СписокПользователей, ВидСравненияКомпоновкиДанных.ВСписке, , + Не ПоказыватьПерсональныеУчетныеЗаписиПользователей); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если ПредлагатьНастройкуПочты Тогда + ПодключитьОбработчикОжидания("НастроитьПочту", 0.1, Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьПочту() + + РаботаСПочтовымиСообщениямиКлиент.ПроверитьНаличиеУчетнойЗаписиДляОтправкиПочты(Неопределено); + +КонецПроцедуры + + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..88ab0c0a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,797 @@ + + + + ГруппаПользовательскихНастроек + 27 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 29 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + Наименование_КонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 30 + true + true + true + + + + ИмяПользователя + 6 + + <key>ru</key> + <value>Имя пользователя</value> + + true + true + + true + + + + Список.ИмяПользователя + + + + ИмяПользователяExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ИмяПользователя_КонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 20 + true + true + + + + АдресЭлектроннойПочты + 8 + + <key>ru</key> + <value>Адрес почты</value> + + true + true + + true + + + + Список.АдресЭлектроннойПочты + + + + АдресЭлектроннойПочтыExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + + АдресЭлектроннойПочты_КонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 20 + true + true + + + + ВладелецУчетнойЗаписи + 43 + true + true + + true + + + + Список.ВладелецУчетнойЗаписи + + + + ВладелецУчетнойЗаписиРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + + ВладелецУчетнойЗаписиКонтекстноеМеню + 44 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 24 + true + true + + + + Список.Ссылка + + + + СсылкаРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 25 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + Список_КоманднаяПанель + 3 + true + true + + true + + Left + true + + + OnActivateRow + СписокПриАктивизацииСтроки + + + true + true + + true + + СписокСтрокаПоиска + 31 + + СписокСтрокаПоискаРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 32 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 34 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 35 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 37 + + СписокУправлениеПоискомРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 38 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + Список_КонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
    + + Отборы + 49 + + ПоказыватьПерсональныеУчетныеЗаписиПользователей + 40 + + <key>ru</key> + <value>Показывать персональные</value> + + true + true + + true + + + + ПоказыватьПерсональныеУчетныеЗаписиПользователей + + + Right + + OnChange + ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении + + + ПоказыватьПерсональныеУчетныеЗаписиПользователейРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьПерсональныеУчетныеЗаписиПользователейКонтекстноеМеню + 41 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПоказыватьНедействительные + 46 + true + true + + true + + + + ПоказыватьНедействительные + + + Right + + OnChange + ПоказыватьНедействительныеПриИзменении + + + ПоказыватьНедействительныеРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьНедействительныеКонтекстноеМеню + 47 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Отборы</value> + + + ОтборыРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Форма_КоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + 1 + + DynamicList + + + true + + + true + + + + Список.Ref + + + + Список.Ссылка + +
    true
    + + ВЫБРАТЬ + СправочникУчетныеЗаписиЭлектроннойПочты.Ссылка КАК Ссылка, + СправочникУчетныеЗаписиЭлектроннойПочты.ПометкаУдаления КАК ПометкаУдаления, + СправочникУчетныеЗаписиЭлектроннойПочты.Наименование КАК Наименование, + СправочникУчетныеЗаписиЭлектроннойПочты.АдресЭлектроннойПочты КАК АдресЭлектроннойПочты, + СправочникУчетныеЗаписиЭлектроннойПочты.ВремяОжидания КАК ВремяОжидания, + СправочникУчетныеЗаписиЭлектроннойПочты.ИмяПользователя КАК ИмяПользователя, + СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьДляОтправки КАК ИспользоватьДляОтправки, + СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьДляПолучения КАК ИспользоватьДляПолучения, + СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьЗащищенноеСоединениеДляВходящейПочты КАК ИспользоватьЗащищенноеСоединениеДляВходящейПочты, + СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты КАК ИспользоватьЗащищенноеСоединениеДляИсходящейПочты, + СправочникУчетныеЗаписиЭлектроннойПочты.ОставлятьКопииСообщенийНаСервере КАК ОставлятьКопииСообщенийНаСервере, + СправочникУчетныеЗаписиЭлектроннойПочты.ПериодХраненияСообщенийНаСервере КАК ПериодХраненияСообщенийНаСервере, + СправочникУчетныеЗаписиЭлектроннойПочты.Пользователь КАК Пользователь, + СправочникУчетныеЗаписиЭлектроннойПочты.ПользовательSMTP КАК ПользовательSMTP, + СправочникУчетныеЗаписиЭлектроннойПочты.ПортСервераВходящейПочты КАК ПортСервераВходящейПочты, + СправочникУчетныеЗаписиЭлектроннойПочты.ПортСервераИсходящейПочты КАК ПортСервераИсходящейПочты, + СправочникУчетныеЗаписиЭлектроннойПочты.ПротоколВходящейПочты КАК ПротоколВходящейПочты, + СправочникУчетныеЗаписиЭлектроннойПочты.СерверВходящейПочты КАК СерверВходящейПочты, + СправочникУчетныеЗаписиЭлектроннойПочты.СерверИсходящейПочты КАК СерверИсходящейПочты, + СправочникУчетныеЗаписиЭлектроннойПочты.ТребуетсяВходНаСерверПередОтправкой КАК ТребуетсяВходНаСерверПередОтправкой, + СправочникУчетныеЗаписиЭлектроннойПочты.ОтправлятьСкрытыеКопииПисемНаЭтотАдрес КАК ОтправлятьСкрытыеКопииПисемНаЭтотАдрес, + СправочникУчетныеЗаписиЭлектроннойПочты.ВладелецУчетнойЗаписи КАК ВладелецУчетнойЗаписи, + СправочникУчетныеЗаписиЭлектроннойПочты.Предопределенный КАК Предопределенный, + СправочникУчетныеЗаписиЭлектроннойПочты.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + ЕСТЬNULL(Пользователи.Недействителен, ЛОЖЬ) КАК ВладелецНедействителен +ИЗ + Справочник.УчетныеЗаписиЭлектроннойПочты КАК СправочникУчетныеЗаписиЭлектроннойПочты + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи + ПО СправочникУчетныеЗаписиЭлектроннойПочты.ВладелецУчетнойЗаписи = Пользователи.Ссылка + Catalog.УчетныеЗаписиЭлектроннойПочты + true + true + true + true + true + +
    + + ПоказыватьПерсональныеУчетныеЗаписиПользователей + + <key>ru</key> + <value>Показывать персональные учетные записи пользователей</value> + + 2 + + Boolean + + + true + + + true + + + + ПоказыватьНедействительные + + <key>ru</key> + <value>Показывать недействительные</value> + + 3 + + Boolean + + + true + + + true + + + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..2d11e477 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,145 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Элементы.ПоказыватьПерсональныеУчетныеЗаписиПользователей.Видимость = Пользователи.ЭтоПолноправныйПользователь(); + + ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, + ПоказыватьПерсональныеУчетныеЗаписиПользователей, + Пользователи.ТекущийПользователь()); + + ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные); + Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей; + Элементы.ПоказыватьНедействительные.Доступность = ПоказыватьПерсональныеУчетныеЗаписиПользователей; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении(Элемент) + + ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, + ПоказыватьПерсональныеУчетныеЗаписиПользователей, + ПользователиКлиент.ТекущийПользователь()); + + Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей; + Элементы.ПоказыватьНедействительные.Доступность = ПоказыватьПерсональныеУчетныеЗаписиПользователей; + + ПоказыватьНедействительные = ПоказыватьНедействительные И ПоказыватьПерсональныеУчетныеЗаписиПользователей; + ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНедействительныеПриИзменении(Элемент) + ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); + КонецЕсли; +КонецПроцедуры + + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список); + КонецЕсли; +КонецПроцедуры + + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + + +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + + + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, ПоказыватьПерсональныеУчетныеЗаписиПользователей, ТекущийПользователь) + СписокПользователей = Новый Массив; + СписокПользователей.Добавить(ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка")); + СписокПользователей.Добавить(ТекущийПользователь); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ВладелецУчетнойЗаписи", СписокПользователей, ВидСравненияКомпоновкиДанных.ВСписке, , + Не ПоказыватьПерсональныеУчетныеЗаписиПользователей); +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные) + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ВладелецНедействителен", Ложь, ВидСравненияКомпоновкиДанных.Равно, , + Не ПоказыватьНедействительные); +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВладелецНедействителен"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..b83b6376 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,2451 @@ + + + + Шапка + 86 + + Наименование + 1 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Объект.Description + + + Left + + ru + Наименование учетной записи + + + НаименованиеРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + false + true + true + + + + АдресЭлектроннойПочты + 80 + + <key>ru</key> + <value>Адрес почты</value> + + true + true + + true + + + + Объект.АдресЭлектроннойПочты + + + + OnChange + АдресЭлектроннойПочтыПриИзменении + + + АдресЭлектроннойПочтыРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + + АдресЭлектроннойПочтыКонтекстноеМеню + 81 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + false + true + true + true + true + + + + ИмяОтправителяПисем + 83 + + <key>ru</key> + <value>Отправитель</value> + + true + true + + true + + + + Объект.ИмяПользователя + + + + ИмяОтправителяПисемРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + + ИмяОтправителяПисемКонтекстноеМеню + 84 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ШапкаРасширеннаяПодсказка + 87 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ИспользоватьУчетнуюЗапись + 88 + + ДляОтправки + 90 + + <key>ru</key> + <value>Для отправки писем</value> + + true + true + + true + + + + Объект.ИспользоватьДляОтправки + + + Right + + OnChange + ИспользованиеПриИзменении + + + ДляОтправкиРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + + ДляОтправкиКонтекстноеМеню + 91 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ДляПолучения + 93 + + <key>ru</key> + <value>Для получения писем</value> + + true + true + + true + + + + Объект.ИспользоватьДляПолучения + + + Right + + OnChange + ИспользованиеПриИзменении + + + ДляПолученияРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + + ДляПолученияКонтекстноеМеню + 94 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Почта используется</value> + + + ИспользоватьУчетнуюЗаписьРасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + true + Auto + Auto + + + + ГруппаДляКогоУчетнаяЗапись + 222 + + ДляКогоУчетнаяЗапись + 224 + + <key>ru</key> + <value>Для кого учетная запись</value> + + true + true + + true + + + + ВидУчетнойЗаписи + + + None + + OnChange + ДляКогоУчетнаяЗаписьПриИзменении + + + ДляКогоУчетнаяЗаписьРасширеннаяПодсказка + 226 + true + true + + true + + Label + true + true + + Left + + + + ДляКогоУчетнаяЗаписьКонтекстноеМеню + 225 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Всеми пользователями + + + Общая + + + + + ru + Одним пользователем: + + + Персональная + + + + + + ПользовательУчетнойЗаписи + 227 + + <key>ru</key> + <value>Владелец учетной записи</value> + + true + true + + true + + + + Объект.ВладелецУчетнойЗаписи + + + None + + OnChange + ПользовательУчетнойЗаписиПриИзменении + + + ПользовательУчетнойЗаписиРасширеннаяПодсказка + 229 + true + true + + true + + Label + true + true + + Left + + + + ПользовательУчетнойЗаписиКонтекстноеМеню + 228 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Для кого учетная запись</value> + + 60 + false + + ГруппаДляКогоУчетнаяЗаписьРасширеннаяПодсказка + 223 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + НастройкиСоединения + 96 + + Протокол + 108 + + <key>ru</key> + <value>Тип учетной записи</value> + + true + true + + true + + + + Объект.ПротоколВходящейПочты + + + + OnChange + ПротоколПриИзменении + + + ПротоколРасширеннаяПодсказка + 110 + true + true + + true + + Label + true + true + + Left + + + + ПротоколКонтекстноеМеню + 109 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 8 + true + true + false + true + true + true + true + true + + + IMAP + + + + + POP + + + + Style.ФонУправляющегоПоля + + 4 + + + + ЛогинПароль + 263 + + Логин + 102 + + <key>ru</key> + <value>Логин</value> + + true + true + + true + + + + Объект.Пользователь + + + + ЛогинРасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + + ЛогинКонтекстноеМеню + 103 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 25 + true + true + false + true + true + true + true + + + + Пароль + 105 + true + true + + true + + + + Пароль + + + + OnChange + ПарольПриИзменении + + + ПарольРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 106 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + EditTextChange + ПарольИзменениеТекстаРедактирования + + + StartChoice + ПарольНачалоВыбора + + true + true + false + true + true + true + + CommonPicture.ВводимыеСимволыСкрыты + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Логин пароль</value> + + + ЛогинПарольРасширеннаяПодсказка + 264 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ОставлятьПисьмаНаСервере + 185 + + ОставлятьКопииПисемНаСервере + 130 + + <key>ru</key> + <value>Оставлять копии писем на сервере</value> + + true + true + + true + + + + Объект.ОставлятьКопииСообщенийНаСервере + + + Right + + OnChange + ОставлятьКопииПисемНаСервереПриИзменении + + + ОставлятьКопииПисемНаСервереРасширеннаяПодсказка + 132 + true + true + + true + + Label + true + true + + Left + + + + ОставлятьКопииПисемНаСервереКонтекстноеМеню + 131 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + НастройкаПериодаХраненияПисем + 141 + + УдалятьПисьмаССервера + 214 + true + true + + true + + + + УдалятьПисьмаССервера + + + Right + + OnChange + УдалятьПисьмаССервераПриИзменении + + + УдалятьПисьмаССервераРасширеннаяПодсказка + 216 + true + true + + true + + Label + true + true + + Left + + + + УдалятьПисьмаССервераКонтекстноеМеню + 215 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаПериодХраненияСообщенийНаСервере + 267 + + ПериодХраненияСообщенийНаСервере + 133 + true + true + + true + + + + Объект.ПериодХраненияСообщенийНаСервере + + + None + + ПериодХраненияСообщенийНаСервереРасширеннаяПодсказка + 135 + true + true + + true + + Label + true + true + + Left + + + + ПериодХраненияСообщенийНаСервереКонтекстноеМеню + 134 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 1 + + + + + НадписьДней + 146 + + <key>ru</key> + <value>дней</value> + + true + true + + true + + + НадписьДнейРасширеннаяПодсказка + 148 + true + true + + true + + Label + true + true + + Left + + + + НадписьДнейКонтекстноеМеню + 147 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Период хранения сообщений на сервере</value> + + + ГруппаПериодХраненияСообщенийНаСервереРасширеннаяПодсказка + 268 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройка периода хранения писем</value> + + + НастройкаПериодаХраненияПисемРасширеннаяПодсказка + 142 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Оставлять письма на сервере</value> + + + ОставлятьПисьмаНаСервереРасширеннаяПодсказка + 186 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + НастройкиСервераВходящейПочты + 125 + + СерверВходящейПочты + 113 + + <key>ru</key> + <value>Сервер IMAP</value> + + true + true + + true + + + + Объект.СерверВходящейПочты + + + + OnChange + СерверВходящейПочтыПриИзменении + + + СерверВходящейПочтыРасширеннаяПодсказка + 115 + true + true + + true + + Label + true + true + + Left + + + + СерверВходящейПочтыКонтекстноеМеню + 114 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 22 + true + true + false + true + true + true + true + + + + ПортВходящейПочты + 122 + + <key>ru</key> + <value>Порт</value> + + true + true + + true + + + + Объект.ПортСервераВходящейПочты + + + + ПортВходящейПочтыРасширеннаяПодсказка + 124 + true + true + + true + + Label + true + true + + Left + + + + ПортВходящейПочтыКонтекстноеМеню + 123 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ШифрованиеПриПолученииПочты + 260 + true + true + + true + + + + ШифрованиеПриПолученииПочты + + + + OnChange + ШифрованиеПриПолученииПочтыПриИзменении + + + ШифрованиеПриПолученииПочтыРасширеннаяПодсказка + 262 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеПриПолученииПочтыКонтекстноеМеню + 261 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + STARTTLS + + + Авто + + + + + ru + SSL + + + SSL + + + + + true + true + + true + + + <key>ru</key> + <value>Настройки сервера входящей почты</value> + + 70 + + НастройкиСервераВходящейПочтыРасширеннаяПодсказка + 126 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + НастройкиСервераИсходящейПочты + 158 + + СерверИсходящейПочты + 174 + + <key>ru</key> + <value>Сервер SMTP</value> + + true + true + + true + + + + Объект.СерверИсходящейПочты + + + + OnChange + СерверИсходящейПочтыПриИзменении + + + СерверИсходящейПочтыРасширеннаяПодсказка + 176 + true + true + + true + + Label + true + true + + Left + + + + СерверИсходящейПочтыКонтекстноеМеню + 175 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 22 + true + true + false + true + true + true + true + + + + ПортСервераИсходящейПочты + 177 + + <key>ru</key> + <value>Порт</value> + + true + true + + true + + + + Объект.ПортСервераИсходящейПочты + + + + ПортСервераИсходящейПочтыРасширеннаяПодсказка + 179 + true + true + + true + + Label + true + true + + Left + + + + ПортСервераИсходящейПочтыКонтекстноеМеню + 178 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ШифрованиеПриОтправкеПочты + 255 + true + true + + true + + + + ШифрованиеПриОтправкеПочты + + + + OnChange + ШифрованиеПриОтправкеПочтыПриИзменении + + + ШифрованиеПриОтправкеПочтыРасширеннаяПодсказка + 257 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеПриОтправкеПочтыКонтекстноеМеню + 256 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + STARTTLS + + + Авто + + + + + ru + SSL + + + SSL + + + + + true + true + + true + + + <key>ru</key> + <value>Настройки сервера входящей почты</value> + + + НастройкиСервераИсходящейПочтыРасширеннаяПодсказка + 159 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ОтправлятьСкрытыеКопииПисемНаЭтотАдрес + 219 + true + true + + true + + + + Объект.ОтправлятьСкрытыеКопииПисемНаЭтотАдрес + + + Right + Button + + ОтправлятьСкрытыеКопииПисемНаЭтотАдресРасширеннаяПодсказка + 221 + + <key>ru</key> + <value>Рекомендуется включать при отсутствии штатных возможностей для хранения отправленных писем на почтовом сервере. +После включения флажка, чтобы не путать скрытые копии отправленных писем с обычными входящими письмами, +также рекомендуется настроить правило обработки (фильтрации) входящих писем в настройках ящика на почтовом сервере.</value> + + true + true + + true + + Label + true + true + + Left + + + + ОтправлятьСкрытыеКопииПисемНаЭтотАдресКонтекстноеМеню + 220 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ОтправкаПисем + 100 + + ГруппаТребуетсяАвторизация + 258 + + ТребуетсяАвторизацияПриОтправкеПисем + 230 + true + true + + true + + + + Объект.ПриОтправкеПисемТребуетсяАвторизация + + + Right + + OnChange + ТребуетсяАвторизацияПриОтправкеПисемПриИзменении + + + ТребуетсяАвторизацияПриОтправкеПисемРасширеннаяПодсказка + 232 + true + true + + true + + Label + true + true + + Left + + + + ТребуетсяАвторизацияПриОтправкеПисемКонтекстноеМеню + 231 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + АвторизацияПриОтправкеПисем + 192 + + Декорация1 + 248 + true + true + + true + + + Декорация1РасширеннаяПодсказка + 250 + true + true + + true + + Label + true + true + + Left + + + + Декорация1КонтекстноеМеню + 249 + true + true + + true + + true + + 1 + true + 1 + true + false + false + + + + СпособАвторизацииПриОтправкеПочты + 238 + true + true + + true + + + + СпособАвторизацииПриОтправкеПочты + + + None + + OnChange + СпособАвторизацииПриОтправкеПочтыПриИзменении + + + СпособАвторизацииПриОтправкеПочтыРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + + СпособАвторизацииПриОтправкеПочтыКонтекстноеМеню + 239 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + На сервере исходящей почты (SMTP) + + + SMTP + + + + + ru + На сервере входящей почты (POP) + + + POP + + + + + true + true + + true + + + <key>ru</key> + <value>Авторизация при отправке писем</value> + + + АвторизацияПриОтправкеПисемРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Настройки авторизации</value> + + + ГруппаТребуетсяАвторизацияРасширеннаяПодсказка + 259 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Отправка писем</value> + + + ОтправкаПисемРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + НужнаПомощь + 269 + + <key>ru</key> + <value>Нужна помощь?</value> + + true + true + + true + + + НужнаПомощьРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + + НужнаПомощьКонтекстноеМеню + 270 + true + true + + true + + true + + Label + true + true + Right + + + Click + НужнаПомощьНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Настройки подключения</value> + + + НастройкиСоединенияРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 208 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 217 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 218 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Picture + true + true + UserCmds + Auto + + + ФормаСтандартныеКоманды + 210 + true + true + + true + + + <key>ru</key> + <value>Форма стандартные команды</value> + + + ФормаСтандартныеКомандыРасширеннаяПодсказка + 211 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаПроверитьНастройки + 265 + true + true + + true + + + ФормаПроверитьНастройкиРасширеннаяПодсказка + 266 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверитьНастройки + Auto + true + true + UserCmds + Auto + + + ФормаОткрытьПомощникНастройки + 272 + true + true + + true + + + ФормаОткрытьПомощникНастройкиРасширеннаяПодсказка + 273 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПомощникНастройки + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 212 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + WriteAndClose + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.УчетныеЗаписиЭлектроннойПочты + + + true + + + true + +
    true
    + true +
    + + УдалятьПисьмаССервера + + <key>ru</key> + <value>Удалять письма с сервера через:</value> + + 2 + + Boolean + + + true + + + true + + true + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 3 + + String + + + + true + + + true + + true + + + ПарольИзменен + 6 + + Boolean + + + true + + + true + + + + ВидУчетнойЗаписи + + <key>ru</key> + <value>Вид учетной записи</value> + + 7 + + String + + + + true + + + true + + true + + + ПроверкаПароля + 9 + + String + + + + true + + + true + + + + ДоступноПолучениеПисем + 10 + + Boolean + + + true + + + true + + + + СпособАвторизацииПриОтправкеПочты + + <key>ru</key> + <value>Способ авторизации при отправке почты</value> + + 12 + + String + + + + true + + + true + + true + + + ШифрованиеПриОтправкеПочты + + <key>ru</key> + <value>Шифрование</value> + + 13 + + String + + + + true + + + true + + true + + + ШифрованиеПриПолученииПочты + + <key>ru</key> + <value>Шифрование</value> + + 14 + + String + + + + true + + + true + + true + + + РеквизитыТребующиеВводаПароляДляИзменения + 15 + + String + + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + ПроверитьНастройки + + <key>ru</key> + <value>Проверить настройки</value> + + 2 + + ru + Проверить настройки + + + true + + + + ПроверитьНастройки + + + Auto + + + ПомощникНастройки + + <key>ru</key> + <value>Перенастроить...</value> + + 3 + + ru + Помощник настройки + + + true + + + + ОткрытьПомощникНастройки + + + Auto + + + БлокироватьВладельца + + Boolean + + + + + + + 0:56b570b1-93b0-468a-9672-9c71113753f3 + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..4de2f945 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,82 @@ + +

    Описание свойств учетной записи электронной почты.

    +

    При вводе учетной записи большинство параметров проставляется программой по умолчанию в зависимости от настроек почтовых серверов учетной записи электронной почты.

    +

    Для системных учетных записей рекомендуется запомнить пароль, для того чтобы программа могла рассылать сообщения от такой учетной записи без участия пользователя. Тем не менее, решение о хранении паролей в информационной базе принимается в каждом случае индивидуально.

    +

    Основные сведения

    +
    • +
      Введите Наименование учетной записи. Необходимо сформулировать наименование так, чтобы оно кратко характеризовало учетную запись, отражало назначение данной учетной записи или ее владельца, например, "Служба техподдержки". Именно наименование будет появляться в различных списках.
      +
    • +
    • +
      Введите Адрес электронной почты учетной записи в формате User@Server.net.
      +
    • +
    • +
      Укажите Имя отправителя писем - имя владельца учетной записи, которое будет указываться в корреспонденции, при этом оно может отличаться от имени пользователя в программе, например, пользователь "Администратор", а имя его "Иван Иванович".

    Использование учетной записи

    +
    • +
      Укажите, как использовать учетную запись:
      +
      • +
        Включите флажок Для отправки писем;
        +
      • +
      • +
        Включите флажок Для получения писем.
    • +
    • +
      Укажите, для кого учетная запись:
      +

    Настройки подключения

    +

    Зависят от настроек почтового сервера.

    +

    Выберите Тип учетной записи:

    +

    В зависимости от выбранного типа учетной записи заполните остальные поля.

    +

    Настройки сервера IMAP

    +
    • Введите Логин учетной записи в формате User@Server.net. и Пароль учетной записи. +
    • +
    • Укажите Сервер IMAP, например, imap.Server.net, Порт, например, 993. +
      • С помощью переключателя укажите, когда будет производиться Шифрование: +
        • Авто; +
        • +
        • Всегда (SSL).
    • +
    • Укажите Сервер SMTP, например, smtp.Server.net, Порт, например, 465. +
      • С помощью переключателя укажите, когда будет производиться Шифрование: +
        • Авто; +
        • +
        • Всегда (SSL).
    • +
    • При необходимости включите флажок При отправке писем требуется авторизация на сервере исходящей почты (SMTP).

    Настройки сервера POP

    +
    • Укажите Логин учетной записи в формате User@Server.net, введите Пароль учетной записи. +
    • +
    • Включите флажок Оставлять копии писем на сервере, для того чтобы программа не удалила письма в папке "Входящие" почтового ящика электронной почты. По умолчанию флажок отключен, в этом случае все письма после получения будут удалены с почтового сервера. После этого становится доступным флажок: +
      • Определите срок хранения писем на почтовом сервере с помощью флажка Удалять письма с сервера через - например, через "10 дней".
    • +
    • Укажите Сервер POP, например, pop.Server.net, укажите Порт, например, 995. +
      • Выберите, когда производить Шифрование: +
        • +
          Авто;
          +
        • +
        • +

          Всегда (SSL).

    • +
    • +

      Укажите Сервер SMTP, например, smtp.Server.netПорт, например, 465.

      +
    • +
    • +

      С помощью переключателя укажите, когда будет производиться Шифрование:

      +
      • Авто; +
      • +
      • Всегда (SSL).
    • +
    • При необходимости включите флажок Отправлять скрытые копии писем на этот адрес. +
    • +
    • При необходимости включите флажок При отправке писем требуется авторизация, выберите с помощью переключателя: +
      • на сервере исходящей почты (SMTP); +
      • +
      • на сервере входящей почты (POP).

    Проверка настроек

    +
    • +

      Нажмите Проверить настройки для проверки введенных параметров учетной записи.

      +
    • +
    • +

      Программа отправляет стандартное почтовое сообщение и проверяет возможность соединения с сервером входящих почтовых сообщений (если учетная запись используется для получения почты). Также можно воспользоваться одноименной командой меню Еще.

    Изменение персональной учетной записи

    +

    +
    • В программе предусмотрена возможность вводить общие и персональные учетные записи электронной почты.
    • +
    • При изменении настроек уже введенной персональной учетной записи электронной почты программа просит ввести пароль. Это сделано для того, чтобы никто (даже администратор) не мог получить доступ к персональной почте.

    +

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..6bbaf86f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,650 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.БлокироватьВладельца Тогда + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + Объект.ИспользоватьДляОтправки = Истина; + Объект.ИспользоватьДляПолучения = ДоступноПолучениеПисем; + ЗаполнитьНастройки(); + КонецЕсли; + + Элементы.ИспользоватьУчетнуюЗапись.ОтображатьЗаголовок = ДоступноПолучениеПисем; + Элементы.ДляПолучения.Видимость = ДоступноПолучениеПисем; + + Если Не ДоступноПолучениеПисем Тогда + Элементы.ДляОтправки.Заголовок = НСтр("ru = 'Использовать для отправки писем'"); + КонецЕсли; + + Элементы.ГруппаДляКогоУчетнаяЗапись.Доступность = Пользователи.ЭтоПолноправныйПользователь(); + + РеквизитыТребующиеВводаПароляДляИзменения = Справочники.УчетныеЗаписиЭлектроннойПочты.РеквизитыТребующиеВводаПароляДляИзменения(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ПарольИзменен Тогда + УстановитьПривилегированныйРежим(Истина); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль, "ПарольSMTP"); + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + + РаботаСПочтовымиСообщениямиСлужебный.ОбновитьНастройкиСервераВосстановленияПочты(ТекущийОбъект.Ссылка); + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + Если ВидУчетнойЗаписи = "Персональная" И Не ЗначениеЗаполнено(Объект.ВладелецУчетнойЗаписи) Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Не выбран владелец учетной записи.'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.ВладелецУчетнойЗаписи"); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + ТекущийОбъект.ПользовательSMTP = ?(ТекущийОбъект.ПриОтправкеПисемТребуетсяАвторизация И Не Объект.ТребуетсяВходНаСерверПередОтправкой, ТекущийОбъект.Пользователь, ""); + ТекущийОбъект.ТребуетсяВходНаСерверПередОтправкой = ТекущийОбъект.ТребуетсяВходНаСерверПередОтправкой И ТекущийОбъект.ПриОтправкеПисемТребуетсяАвторизация; + ТекущийОбъект.ДополнительныеСвойства.Вставить("Пароль", ПроверкаПароля); +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + ОписаниеОповещения = Новый ОписаниеОповещения("ПередЗакрытиемПодтверждениеПолучено", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(ОписаниеОповещения, Отказ, ЗавершениеРаботы); +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + ЗаполнитьРеквизитыОбъекта(); + + ОбработчикиПередЗаписью = Новый Массив; + ОбработчикиПередЗаписью.Добавить(Новый ОписаниеОповещения("ПроверитьЗаполнениеПередЗаписью", ЭтотОбъект, ПараметрыЗаписи)); + ОбработчикиПередЗаписью.Добавить(Новый ОписаниеОповещения("ПроверитьРазрешенияПередЗаписью", ЭтотОбъект, ПараметрыЗаписи)); + ОбработчикиПередЗаписью.Добавить(Новый ОписаниеОповещения("ПроверитьПарольПередЗаписью", ЭтотОбъект, ПараметрыЗаписи)); + + ПодключитьОбработчикиПередЗаписью(ОбработчикиПередЗаписью, ЭтотОбъект, Отказ, ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_УчетнаяЗаписьЭлектроннойПочты",,Объект.Ссылка); + + Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда + Закрыть(); + КонецЕсли; + + Если ПараметрыЗаписи.Свойство("ПроверитьНастройки") Тогда + ПодключитьОбработчикОжидания("ВыполнитьПроверкуНастроек", 0.1, Истина); + КонецЕсли; + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + УстановитьВидНастройкиХраненияПисемНаСервере(); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + ЗаполнитьНастройки(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПротоколПриИзменении(Элемент) + + Если ПустаяСтрока(Объект.ПротоколВходящейПочты) Тогда + Объект.ПротоколВходящейПочты = "IMAP"; + КонецЕсли; + + Если Объект.ПротоколВходящейПочты = "IMAP" Тогда + Если СтрНачинаетсяС(Объект.СерверВходящейПочты, "pop.") Тогда + Объект.СерверВходящейПочты = "imap." + Сред(Объект.СерверВходящейПочты, 5); + КонецЕсли + Иначе + Если СтрНачинаетсяС(Объект.СерверВходящейПочты, "imap.") Тогда + Объект.СерверВходящейПочты = "pop." + Сред(Объект.СерверВходящейПочты, 6); + КонецЕсли; + КонецЕсли; + + Элементы.СерверВходящейПочты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Сервер %1'"), Объект.ПротоколВходящейПочты); + + ИспользуетсяПротоколPOP = Объект.ПротоколВходящейПочты = "POP"; + Элементы.ОставлятьПисьмаНаСервере.Видимость = ИспользуетсяПротоколPOP И ДоступноПолучениеПисем; + + УстановитьВидГруппыТребуетсяАвторизация(ЭтотОбъект, ИспользуетсяПротоколPOP); + + УстановитьПортВходящейПочты(); + УстановитьВидНастройкиХраненияПисемНаСервере(); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьВидГруппыТребуетсяАвторизация(Форма, ИспользуетсяПротоколPOP) + + Если ИспользуетсяПротоколPOP Тогда + Форма.Элементы.ТребуетсяАвторизацияПриОтправкеПисем.Заголовок = НСтр("ru = 'При отправке писем требуется авторизация'"); + Иначе + Форма.Элементы.ТребуетсяАвторизацияПриОтправкеПисем.Заголовок = НСтр("ru = 'При отправке писем требуется авторизация на сервере исходящей почты (SMTP)'"); + КонецЕсли; + + Форма.Элементы.АвторизацияПриОтправкеПисем.Видимость = ИспользуетсяПротоколPOP; + +КонецПроцедуры + +&НаКлиенте +Процедура СерверВходящейПочтыПриИзменении(Элемент) + Объект.СерверВходящейПочты = СокрЛП(НРег(Объект.СерверВходящейПочты)); +КонецПроцедуры + +&НаКлиенте +Процедура СерверИсходящейПочтыПриИзменении(Элемент) + Объект.СерверИсходящейПочты = СокрЛП(НРег(Объект.СерверИсходящейПочты)); +КонецПроцедуры + +&НаКлиенте +Процедура АдресЭлектроннойПочтыПриИзменении(Элемент) + Объект.АдресЭлектроннойПочты = СокрЛП(Объект.АдресЭлектроннойПочты); +КонецПроцедуры + +&НаКлиенте +Процедура ОставлятьКопииПисемНаСервереПриИзменении(Элемент) + УстановитьВидНастройкиХраненияПисемНаСервере(); +КонецПроцедуры + +&НаКлиенте +Процедура УдалятьПисьмаССервераПриИзменении(Элемент) + УстановитьВидНастройкиХраненияПисемНаСервере(); +КонецПроцедуры + +&НаКлиенте +Процедура ПарольПриИзменении(Элемент) + ПарольИзменен = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ПарольИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + Элементы.Пароль.КнопкаВыбора = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ПарольНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + РаботаСПочтовымиСообщениямиКлиент.ПолеПароляНачалоВыбора(Элемент, Пароль, СтандартнаяОбработка); +КонецПроцедуры + +&НаКлиенте +Процедура ДляКогоУчетнаяЗаписьПриИзменении(Элемент) + Элементы.ПользовательУчетнойЗаписи.Доступность = ВидУчетнойЗаписи = "Персональная"; + ОповеститьОбИзмененииВладельцаУчетнойЗаписи(); +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательУчетнойЗаписиПриИзменении(Элемент) + ОповеститьОбИзмененииВладельцаУчетнойЗаписи(); +КонецПроцедуры + +&НаКлиенте +Процедура ТребуетсяАвторизацияПриОтправкеПисемПриИзменении(Элемент) + Элементы.АвторизацияПриОтправкеПисем.Доступность = Объект.ПриОтправкеПисемТребуетсяАвторизация; + Элементы.АвторизацияПриОтправкеПисем.Видимость = Объект.ПротоколВходящейПочты = "POP"; +КонецПроцедуры + +&НаКлиенте +Процедура ШифрованиеПриОтправкеПочтыПриИзменении(Элемент) + Объект.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = ШифрованиеПриОтправкеПочты = "SSL"; + УстановитьПортИсходящейПочты(); +КонецПроцедуры + +&НаКлиенте +Процедура ШифрованиеПриПолученииПочтыПриИзменении(Элемент) + Объект.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = ШифрованиеПриПолученииПочты = "SSL"; + УстановитьПортВходящейПочты(); +КонецПроцедуры + +&НаКлиенте +Процедура СпособАвторизацииПриОтправкеПочтыПриИзменении(Элемент) + Объект.ТребуетсяВходНаСерверПередОтправкой = ?(СпособАвторизацииПриОтправкеПочты = "POP", Истина, Ложь); + УстановитьВидНастройкиХраненияПисемНаСервере(); +КонецПроцедуры + +&НаКлиенте +Процедура НужнаПомощьНажатие(Элемент) + + РаботаСПочтовымиСообщениямиКлиент.ПерейтиКДокументацииПоВводуУчетнойЗаписиЭлектроннойПочты(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИспользованиеПриИзменении(Элемент) + Элементы.ФормаПроверитьНастройки.Доступность = Объект.ИспользоватьДляОтправки Или Объект.ИспользоватьДляПолучения; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + Записать(Новый Структура("ЗаписатьИЗакрыть")); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьНастройки(Команда) + ВыполнитьПроверкуНастроек(); +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьПомощникНастройки(Команда) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриЗавершенииНастройки", ЭтотОбъект); + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("Ключ", Объект.Ссылка); + ПараметрыОткрытия.Вставить("Перенастройка", Истина); + ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПомощникНастройкиУчетнойЗаписи", + ПараметрыОткрытия, , , , , ОписаниеОповещения); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура УстановитьВидНастройкиХраненияПисемНаСервере() + + ИспользуетсяПротоколPOP = Объект.ПротоколВходящейПочты = "POP"; + Элементы.ОставлятьПисьмаНаСервере.Видимость = ИспользуетсяПротоколPOP И ДоступноПолучениеПисем; + Элементы.НастройкаПериодаХраненияПисем.Доступность = Объект.ОставлятьКопииСообщенийНаСервере; + Элементы.ПериодХраненияСообщенийНаСервере.Доступность = УдалятьПисьмаССервера; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПортВходящейПочты() + Если Объект.ПротоколВходящейПочты = "IMAP" Тогда + Если Объект.ПортСервераВходящейПочты = 995 Тогда + Объект.ПортСервераВходящейПочты = 993; + КонецЕсли; + Иначе + Если Объект.ПортСервераВходящейПочты = 993 Тогда + Объект.ПортСервераВходящейПочты = 995; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПортИсходящейПочты() + Если Объект.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты Тогда + Если Объект.ПортСервераИсходящейПочты = 587 Тогда + Объект.ПортСервераИсходящейПочты = 465; + КонецЕсли; + Иначе + Если Объект.ПортСервераИсходящейПочты = 465 Тогда + Объект.ПортСервераИсходящейПочты = 587; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытиемПодтверждениеПолучено(РезультатВопроса, ДополнительныеПараметры) Экспорт + Записать(Новый Структура("ЗаписатьИЗакрыть")); +КонецПроцедуры + +&НаКлиенте +Процедура ОповеститьОбИзмененииВладельцаУчетнойЗаписи() + Оповестить("ПриИзмененииВидаУчетнойЗаписиЭлектроннойПочты", ВидУчетнойЗаписи = "Персональная", ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьРеквизитыОбъекта() + + Если Не УдалятьПисьмаССервера Тогда + Объект.ПериодХраненияСообщенийНаСервере = 0; + КонецЕсли; + + Если Объект.ПротоколВходящейПочты = "IMAP" Тогда + Объект.ОставлятьКопииСообщенийНаСервере = Истина; + Объект.ПериодХраненияСообщенийНаСервере = 0; + КонецЕсли; + + Если ВидУчетнойЗаписи = "Общая" И ЗначениеЗаполнено(Объект.ВладелецУчетнойЗаписи) Тогда + Объект.ВладелецУчетнойЗаписи = Неопределено; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьЗаполнениеПередЗаписью(Отказ, ПараметрыЗаписи) Экспорт + + Если Не ПроверитьЗаполнение() Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьРазрешенияПередЗаписью(Отказ, ПараметрыЗаписи) Экспорт + + Отказ = Истина; + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПроверкиРазрешений", ЭтотОбъект, ПараметрыЗаписи); + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); + МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов( + ЗапросыНаИспользованиеВнешнихРесурсов(), ЭтотОбъект, ОписаниеОповещения); + Иначе + ВыполнитьОбработкуОповещения(ОписаниеОповещения, КодВозвратаДиалога.ОК); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьПарольПередЗаписью(Отказ, ПараметрыЗаписи) Экспорт + + Если Не ПроверкаПароляВыполнена(ПараметрыЗаписи) Тогда + Отказ = Истина; + ПроверкаПароля = ""; + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВводаПароля", ЭтотОбъект, ПараметрыЗаписи); + ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПроверкаДоступаКУчетнойЗаписи", , ЭтотОбъект, , , , ОписаниеОповещения); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ЗапросыНаИспользованиеВнешнихРесурсов() + + Запрос = Неопределено; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + Запрос = МодульРаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(Разрешения(), Объект.Ссылка); + КонецЕсли; + + Возврат ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Запрос); + +КонецФункции + +&НаСервере +Функция Разрешения() + + Результат = Новый Массив; + + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + + Если Объект.ИспользоватьДляОтправки Тогда + Результат.Добавить( + МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса( + "SMTP", + Объект.СерверИсходящейПочты, + Объект.ПортСервераИсходящейПочты, + НСтр("ru = 'Электронная почта.'"))); + КонецЕсли; + + Если Объект.ИспользоватьДляПолучения Тогда + Результат.Добавить( + МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса( + Объект.ПротоколВходящейПочты, + Объект.СерверВходящейПочты, + Объект.ПортСервераВходящейПочты, + НСтр("ru = 'Электронная почта.'"))); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ПослеПроверкиРазрешений(Результат, ПараметрыЗаписи) Экспорт + + Если Результат = КодВозвратаДиалога.ОК Тогда + ПараметрыЗаписи.Вставить("РазрешенияПолучены"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ПроверкаПароляВыполнена(ПараметрыЗаписи) + + Если Не ПараметрыЗаписи.Свойство("ПарольВведен") Тогда + ЗначенияРеквизитовПередЗаписью = Новый Структура(РеквизитыТребующиеВводаПароляДляИзменения); + ЗаполнитьЗначенияСвойств(ЗначенияРеквизитовПередЗаписью, Объект); + Возврат Не ТребуетсяПроверкаПароля(Объект.Ссылка, ЗначенияРеквизитовПередЗаписью); + КонецЕсли; + + Возврат Истина; + +КонецФункции + +&НаСервереБезКонтекста +Функция ТребуетсяПроверкаПароля(Ссылка, ЗначенияРеквизитов) + Возврат Справочники.УчетныеЗаписиЭлектроннойПочты.ТребуетсяПроверкаПароля(Ссылка, ЗначенияРеквизитов); +КонецФункции + +&НаКлиенте +Процедура ПослеВводаПароля(Пароль, ПараметрыЗаписи) Экспорт + + Если ТипЗнч(Пароль) = Тип("Строка") Тогда + ПроверкаПароля = Пароль; + ПараметрыЗаписи.Вставить("ПарольВведен"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроверкуНастроек() + Если Модифицированность Тогда + Записать(Новый Структура("ПроверитьНастройки")); + Иначе + РаботаСПочтовымиСообщениямиКлиент.ПроверитьНастройкиУчетнойЗаписи(Объект.Ссылка); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗавершенииНастройки(Результат, ДополнительныеПараметры) Экспорт + + Прочитать(); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьНастройки() + + ДоступноПолучениеПисем = РаботаСПочтовымиСообщениямиСлужебный.НастройкиПодсистемы().ДоступноПолучениеПисем; + Элементы.ОставлятьПисьмаНаСервере.Видимость = Объект.ПротоколВходящейПочты = "POP" И ДоступноПолучениеПисем; + + Элементы.СерверВходящейПочты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Сервер %1'"), Объект.ПротоколВходящейПочты); + + УдалятьПисьмаССервера = Объект.ПериодХраненияСообщенийНаСервере > 0; + Если Не УдалятьПисьмаССервера Тогда + Объект.ПериодХраненияСообщенийНаСервере = 10; + КонецЕсли; + + Если НЕ Объект.Ссылка.Пустая() Тогда + УстановитьПривилегированныйРежим(Истина); + ПарольУстановлен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка) <> ""; + УстановитьПривилегированныйРежим(Ложь); + Пароль = ?(ПарольУстановлен, ЭтотОбъект.УникальныйИдентификатор, ""); + + Если Не Справочники.УчетныеЗаписиЭлектроннойПочты.ИзменениеРазрешено(Объект.Ссылка) Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + КонецЕсли; + + Элементы.ФормаЗаписатьИЗакрыть.Доступность = Не ТолькоПросмотр; + + ЭтоПерсональнаяУчетнаяЗапись = ЗначениеЗаполнено(Объект.ВладелецУчетнойЗаписи); + Элементы.ПользовательУчетнойЗаписи.Доступность = ЭтоПерсональнаяУчетнаяЗапись; + ВидУчетнойЗаписи = ?(ЭтоПерсональнаяУчетнаяЗапись, "Персональная", "Общая"); + + ИспользуетсяПротоколPOP = Объект.ПротоколВходящейПочты = "POP"; + Элементы.АвторизацияПриОтправкеПисем.Доступность = Объект.ПриОтправкеПисемТребуетсяАвторизация; + УстановитьВидГруппыТребуетсяАвторизация(ЭтотОбъект, ИспользуетсяПротоколPOP); + + ШифрованиеПриОтправкеПочты = ?(Объект.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты, "SSL", "Авто"); + ШифрованиеПриПолученииПочты = ?(Объект.ИспользоватьЗащищенноеСоединениеДляВходящейПочты, "SSL", "Авто"); + + СпособАвторизацииПриОтправкеПочты = ?(Объект.ТребуетсяВходНаСерверПередОтправкой, "POP", "SMTP"); + Элементы.ФормаПроверитьНастройки.Доступность = Объект.ИспользоватьДляОтправки Или Объект.ИспользоватьДляПолучения; + Элементы.ФормаОткрытьПомощникНастройки.Доступность = Не Объект.Ссылка.Пустая() И Не ТолькоПросмотр; + + Элементы.Пароль.КнопкаВыбора = Ложь; + +КонецПроцедуры + +// Последовательно вызывает указанные обработчики в событии ПередЗаписью через обработчик ожидания. +&НаКлиенте +Процедура ПодключитьОбработчикиПередЗаписью(Обработчики, Форма, Отказ, ПараметрыЗаписи) + + Если Не ПараметрыЗаписи.Свойство("ОбработчикиПередЗаписью") Тогда + ПараметрыЗаписи.Вставить("ОбработчикиПередЗаписью", Новый Структура) + КонецЕсли; + + Для Каждого Обработчик Из Обработчики Цикл + Если Не ПараметрыЗаписи.ОбработчикиПередЗаписью.Свойство(Обработчик.ИмяПроцедуры) Тогда + ПараметрыЗаписи.ОбработчикиПередЗаписью.Вставить(Обработчик.ИмяПроцедуры, Ложь); + КонецЕсли; + КонецЦикла; + + Для Каждого Проверка Из ПараметрыЗаписи.ОбработчикиПередЗаписью Цикл + Если Проверка.Значение = Ложь Тогда + Отказ = Истина; + ОписаниеОповещения = Новый ОписаниеОповещения(Проверка.Ключ, Форма, ПараметрыЗаписи); + + ИмяПараметра = "СтандартныеПодсистемы.ОбработчикОжиданияПередЗаписьюВФорме"; + Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда + ПараметрыПриложения.Вставить(ИмяПараметра, Новый Массив); + КонецЕсли; + ПараметрыПриложения[ИмяПараметра].Добавить(ОписаниеОповещения); + + ПодключитьОбработчикОжидания("ВыполнитьПроверкуПередЗаписьюВФорме", 0.1, Истина); + Возврат; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроверкуПередЗаписьюВФорме() + + ИмяПараметра = "СтандартныеПодсистемы.ОбработчикОжиданияПередЗаписьюВФорме"; + Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда + ПараметрыПриложения.Вставить(ИмяПараметра, Новый Массив); + КонецЕсли; + ОбработчикиОжидания = ПараметрыПриложения[ИмяПараметра]; + + Если ОбработчикиОжидания.Количество() > 0 Тогда + ОписаниеОповещения = ОбработчикиОжидания[0]; + ИмяПроцедуры = ОбработчикиОжидания[0].ИмяПроцедуры; + Форма = ОбработчикиОжидания[0].Модуль; // РасширениеУправляемойФормыДляСправочника + ПараметрыЗаписи = ОбработчикиОжидания[0].ДополнительныеПараметры; + ОбработчикиОжидания.Удалить(0); + ПараметрыЗаписи.ОбработчикиПередЗаписью[ИмяПроцедуры] = Истина; + Отказ = Ложь; + ВыполнитьОбработкуОповещения(ОписаниеОповещения, Отказ); + Если Не Отказ Тогда + Форма.Записать(ПараметрыЗаписи); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Help/ru.html" new file mode 100644 index 00000000..a6c91a0f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/Help/ru.html" @@ -0,0 +1,29 @@ + +

    Предназначен для ведения учетных записей электронной почты, которые используются для получения и отправки электронных сообщений.

    +

    Список можно открыть соответствующей командой в разделе Администрирование - Органайзер

    +

    В списке выводится:

    +
    • Наименование учетной записи; +
    • Имя пользователя - указывается имя отправителя писем, оно может отличаться от имени пользователя в программе; +
    • Адрес электронной почты учетной записи в формате name@server.net

    Для учетных записей, получение и отправка с которых выполняется автоматически без участия пользователя, должен быть обязательно введен пароль. Также для корректной работы программы обязательно должна быть настроена системная учетная запись электронной почты.

    +

    Системная учетная запись электронной почты

    +
    • Программа поставляется с предопределенной учетной записью - системной учетной записью электронной почты. Она используется по умолчанию для рассылки различных уведомлений из программы, например, для автоматической отправки сообщений администратору по завершению обновления программы. Перед использованием этих возможностей необходимо настроить системную учетную запись. +
    • Настройка системной учетной записи производится по соответствующей команде в разделе Администрирование - Органайзер. Также можно Изменить ее в списке.

    Ввод учетной записи электронной почты

    +
    • При попытке сохранения программа проверяет введенные учетные записи электронной почты (пытается отослать пробное сообщение). Учетные записи, не прошедшие проверку, не сохраняются. +
    • Нажмите Создать, введите необходимые поля: +
      • Укажите Адрес почты учетной записи в формате name@server.net; +
      • Введите Пароль учетной записи; +
      • Установите с помощью флажков, как Использовать учетную запись: +
        • Для отправки почты; +
        • Для получения почты;
      • Укажите, Для кого учетная запись: +
        • Для всех; +
        • Только для меня.
      • Укажите Имя отправителя (Ваше имя или название организации); +
      • С помощью переключателя определите способ создания учетной записи: +
        • Определить параметры подключения автоматически (рекомендуется); +
          • Нажмите Создать. Программа предпримет попытку автоматической настройки и проверки учетной записи. Следуйте указаниям программы. При этом если при автоматической настройке произошел сбой, можно попытаться настроить параметры вручную. 
        • Настроить параметры подключения вручную;
      • +

        Нажмите Далее для заполнения остальных параметров, при этом программа проставляет рекомендуемые параметры для большинства почтовых серверов. Их требуется только проверить и попытаться сохранить учетную запись заново.

    Настройка учетной записи электронной почты

    +
    • Нажмите  Изменить, с помощью программы произведите необходимые настройки.

    Проверка учетной записи электронной почты

    +
    • +
      Выделите учетную запись в списке, нажмите Еще - Проверить учетную запись для проверки введенных параметров учетной записи. При этом отправляется стандартное почтовое отправление и проверяется возможность соединения с сервером входящих почтовых сообщений (если учетная запись используется для получения почты).
      +
    • +
      Если в учетной записи не прописан пароль, программа его запрашивает. При необходимости введите пароль.

    См. также: 

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..f19053c8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ManagerModule.bsl" @@ -0,0 +1,1336 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("ИспользоватьДляОтправки"); + Результат.Добавить("ИспользоватьДляПолучения"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ВЫБОР КОГДА ВладелецУчетнойЗаписи = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) ТОГДА + | ЗначениеРазрешено(Ссылка) + | ИНАЧЕ + | ЗначениеРазрешено(Ссылка, Отключено КАК Ложь) + | ИЛИ ЗначениеРазрешено(ВладелецУчетнойЗаписи, Отключено КАК Ложь) + | ИЛИ ЭтоАвторизованныйПользователь(ВладелецУчетнойЗаписи) + | КОНЕЦ + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ЗначениеРазрешено(ВладелецУчетнойЗаписи, ПустаяСсылка КАК Ложь)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Поля.Добавить("АдресЭлектроннойПочты"); + Поля.Добавить("Наименование"); + +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Данные.АдресЭлектроннойПочты) И СтрНайти(Данные.Наименование, Данные.АдресЭлектроннойПочты) = 0 Тогда + Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (%2)'"), + Данные.Наименование, Данные.АдресЭлектроннойПочты); + СтандартнаяОбработка = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, +// которые необходимо обновить на новую версию. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда + МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия"); + МодульВзаимодействия.ЗарегистрироватьУчетныеЗаписиЭлектроннойПочтыКОбработкеДляПереходаНаНовуюВерсию(Параметры); + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ + | УчетныеЗаписиЭлектроннойПочты.Ссылка + |ИЗ + | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты + |ГДЕ + | НЕ УчетныеЗаписиЭлектроннойПочты.ПриОтправкеПисемТребуетсяАвторизация + | И (УчетныеЗаписиЭлектроннойПочты.ПользовательSMTP <> """" + | ИЛИ УчетныеЗаписиЭлектроннойПочты.ТребуетсяВходНаСерверПередОтправкой)"; + + Запрос = Новый Запрос(ТекстЗапроса); + + Результат = Запрос.Выполнить().Выгрузить(); + МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + УчетныеЗаписи = Новый Массив; + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.УчетныеЗаписиЭлектроннойПочты"); + Пока Выборка.Следующий() Цикл + УчетныеЗаписи.Добавить(Выборка.Ссылка); + КонецЦикла; + + ТекстЗапроса = + "ВЫБРАТЬ + | УчетныеЗаписиЭлектроннойПочты.Ссылка КАК Ссылка + |ИЗ + | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты + |ГДЕ + | УчетныеЗаписиЭлектроннойПочты.Ссылка В(&УчетныеЗаписи)"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("УчетныеЗаписи", УчетныеЗаписи); + + Блокировка = Новый БлокировкаДанных; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда + МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия"); + МодульВзаимодействия.ПередУстановкойБлокировкиВОбработчикеОбновленияУчетныхЗаписейЭлектроннойПочты(Блокировка); + КонецЕсли; + Блокировка.Добавить("Справочник.УчетныеЗаписиЭлектроннойПочты"); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + ВладельцыУчетныхЗаписей = Новый Соответствие; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда + МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия"); + ВладельцыУчетныхЗаписей = МодульВзаимодействия.ВладельцыУчетныхЗаписейЭлектроннойПочты(УчетныеЗаписи); + КонецЕсли; + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + УчетнаяЗапись = Выборка.Ссылка.ПолучитьОбъект(); + УчетнаяЗапись.ДополнительныеСвойства.Вставить("НеПроверятьИзменениеНастроек"); + Если ВладельцыУчетныхЗаписей[Выборка.Ссылка] <> Неопределено Тогда + УчетнаяЗапись.ВладелецУчетнойЗаписи = ВладельцыУчетныхЗаписей[Выборка.Ссылка]; + КонецЕсли; + Если Не УчетнаяЗапись.ПриОтправкеПисемТребуетсяАвторизация + И (УчетнаяЗапись.ПользовательSMTP <> "" + Или УчетнаяЗапись.ТребуетсяВходНаСерверПередОтправкой) Тогда + УчетнаяЗапись.ПриОтправкеПисемТребуетсяАвторизация = Истина; + Если УчетнаяЗапись.ИспользоватьДляОтправки И УчетнаяЗапись.Пользователь <> УчетнаяЗапись.ПользовательSMTP Тогда + УчетнаяЗапись.Пользователь = УчетнаяЗапись.ПользовательSMTP; + УстановитьПривилегированныйРежим(Истина); + Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(УчетнаяЗапись.Ссылка, "Пароль,ПарольSMTP"); + Если Пароли.Пароль <> Пароли.ПарольSMTP Тогда + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(УчетнаяЗапись.Ссылка, Пароли.ПарольSMTP); + КонецЕсли; + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + КонецЕсли; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда + МодульВзаимодействия.ОчиститьПризнакПерсональнаяУчетнаяЗапись(УчетнаяЗапись.Ссылка); + КонецЕсли; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(УчетнаяЗапись); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление учетных записей'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; + КонецПопытки; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.УчетныеЗаписиЭлектроннойПочты"); + +КонецПроцедуры + +// Начальное заполнение + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "СистемнаяУчетнаяЗаписьЭлектроннойПочты"; + Элемент.Наименование = НСтр("ru = 'Системная учетная запись'", + ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.ИмяПользователя = НСтр("ru = '1С:Предприятие'", ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.ИспользоватьДляПолучения = Ложь; + Элемент.ИспользоватьДляОтправки = Ложь; + Элемент.ОставлятьКопииСообщенийНаСервере = Ложь; + Элемент.ПериодХраненияСообщенийНаСервере = 0; + Элемент.ВремяОжидания = 30; + Элемент.ПортСервераВходящейПочты = 110; + Элемент.ПортСервераИсходящейПочты = 25; + Элемент.ПротоколВходящейПочты = "POP"; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + + Если ВидФормы = "ФормаОбъекта" + И Не Параметры.Свойство("ЗначениеКопирования") + И ПравоДоступа("Редактирование", Метаданные.Справочники.УчетныеЗаписиЭлектроннойПочты) + И (Не Параметры.Свойство("Ключ") + Или Не РаботаСПочтовымиСообщениями.УчетнаяЗаписьНастроена(Параметры.Ключ, Ложь, Ложь) И ИзменениеРазрешено(Параметры.Ключ)) Тогда + + ВыбраннаяФорма = "ПомощникНастройкиУчетнойЗаписи"; + СтандартнаяОбработка = Ложь; + КонецЕсли; + +КонецПроцедуры + +Функция ИзменениеРазрешено(УчетнаяЗапись) Экспорт + Результат = ПравоДоступа("Редактирование", Метаданные.Справочники.УчетныеЗаписиЭлектроннойПочты); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + Результат = Результат И МодульУправлениеДоступом.ИзменениеРазрешено(УчетнаяЗапись); + КонецЕсли; + Возврат Результат; +КонецФункции + +Функция РазрешенияУчетныхЗаписей(УчетнаяЗапись = Неопределено) Экспорт + + Результат = Новый Соответствие; + + ТекстЗапроса = + "ВЫБРАТЬ + | УчетныеЗаписиЭлектроннойПочты.ПротоколВходящейПочты КАК Протокол, + | УчетныеЗаписиЭлектроннойПочты.СерверВходящейПочты КАК Сервер, + | УчетныеЗаписиЭлектроннойПочты.ПортСервераВходящейПочты КАК Порт, + | УчетныеЗаписиЭлектроннойПочты.Ссылка + |ПОМЕСТИТЬ СервераЭлектроннойПочты + |ИЗ + | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты + |ГДЕ + | УчетныеЗаписиЭлектроннойПочты.ПротоколВходящейПочты <> """" + | И УчетныеЗаписиЭлектроннойПочты.ПометкаУдаления = ЛОЖЬ + | И УчетныеЗаписиЭлектроннойПочты.ИспользоватьДляПолучения = ИСТИНА + | И УчетныеЗаписиЭлектроннойПочты.СерверВходящейПочты <> """" + | И УчетныеЗаписиЭлектроннойПочты.ПортСервераВходящейПочты > 0 + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ""SMTP"", + | УчетныеЗаписиЭлектроннойПочты.СерверИсходящейПочты, + | УчетныеЗаписиЭлектроннойПочты.ПортСервераИсходящейПочты, + | УчетныеЗаписиЭлектроннойПочты.Ссылка + |ИЗ + | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты + |ГДЕ + | УчетныеЗаписиЭлектроннойПочты.ПометкаУдаления = ЛОЖЬ + | И УчетныеЗаписиЭлектроннойПочты.ИспользоватьДляОтправки = ИСТИНА + | И УчетныеЗаписиЭлектроннойПочты.СерверИсходящейПочты <> """" + | И УчетныеЗаписиЭлектроннойПочты.ПортСервераИсходящейПочты > 0 + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | СервераЭлектроннойПочты.Ссылка КАК Ссылка, + | СервераЭлектроннойПочты.Протокол КАК Протокол, + | СервераЭлектроннойПочты.Сервер КАК Сервер, + | СервераЭлектроннойПочты.Порт КАК Порт + |ИЗ + | СервераЭлектроннойПочты КАК СервераЭлектроннойПочты + |ГДЕ + | &Ссылка = НЕОПРЕДЕЛЕНО + | + |СГРУППИРОВАТЬ ПО + | СервераЭлектроннойПочты.Протокол, + | СервераЭлектроннойПочты.Сервер, + | СервераЭлектроннойПочты.Порт, + | СервераЭлектроннойПочты.Ссылка + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | СервераЭлектроннойПочты.Ссылка, + | СервераЭлектроннойПочты.Протокол, + | СервераЭлектроннойПочты.Сервер, + | СервераЭлектроннойПочты.Порт + |ИЗ + | СервераЭлектроннойПочты КАК СервераЭлектроннойПочты + |ГДЕ + | СервераЭлектроннойПочты.Ссылка = &Ссылка + | + |СГРУППИРОВАТЬ ПО + | СервераЭлектроннойПочты.Протокол, + | СервераЭлектроннойПочты.Сервер, + | СервераЭлектроннойПочты.Порт, + | СервераЭлектроннойПочты.Ссылка + |ИТОГИ ПО + | Ссылка"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Ссылка", УчетнаяЗапись); + + МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); + + УчетныеЗаписи = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + Пока УчетныеЗаписи.Следующий() Цикл + Разрешения = Новый Массив; + НастройкиУчетнойЗаписи = УчетныеЗаписи.Выбрать(); + Пока НастройкиУчетнойЗаписи.Следующий() Цикл + Разрешения.Добавить( + МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса( + НастройкиУчетнойЗаписи.Протокол, + НастройкиУчетнойЗаписи.Сервер, + НастройкиУчетнойЗаписи.Порт, + НСтр("ru = 'Электронная почта.'"))); + КонецЦикла; + Результат.Вставить(УчетныеЗаписи.Ссылка, Разрешения); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ОпределитьИменаПочтовыхСерверовДомена(Домен) + + Результат = Новый Массив; + + ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина; + ПараметрыЗапускаПрограммы.КодировкаИсполнения = "OEM"; + + ШаблонКоманды = "nslookup -type=mx %1"; + + СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКоманды, Домен); + + РезультатЗапуска = ФайловаяСистема.ЗапуститьПрограмму(СтрокаКоманды, ПараметрыЗапускаПрограммы); + Если РезультатЗапуска.КодВозврата = 0 Тогда + Ответ = РезультатЗапуска.ПотокВывода + Символы.ПС + РезультатЗапуска.ПотокОшибок; + + Для Каждого Строка Из СтрРазделить(Ответ, Символы.ПС, Ложь) Цикл + Если СтрНайти(Строка, "mail exchanger") > 0 Тогда + ЧастиСтроки = СтрРазделить(Строка, " ", Ложь); + ИмяСервера = ЧастиСтроки[ЧастиСтроки.ВГраница()]; + ИмяСервера = СтрСоединить(СтрРазделить(ИмяСервера, ".", Ложь), "."); + Результат.Добавить(ИмяСервера); + КонецЕсли; + КонецЦикла; + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ОпределитьНастройкиУчетнойЗаписи(АдресЭлектроннойПочты, Пароль, ДляОтправки, ДляПолучения) Экспорт + + НастройкиПочтовыхСерверов = Неопределено; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда + МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета"); + ЗагруженныйФайл = МодульПолучениеФайловИзИнтернета.СкачатьФайлНаСервере("https://downloads.v8.1c.ru/content/common/settings/mailservers.json"); + Если ЗагруженныйФайл.Статус Тогда + ЧтениеJSON = Новый ЧтениеJSON(); + ЧтениеJSON.ОткрытьФайл(ЗагруженныйФайл.Путь); + НастройкиПочтовыхСерверов = ПрочитатьJSON(ЧтениеJSON, Истина); + ЧтениеJSON.Закрыть(); + КонецЕсли; + КонецЕсли; + + НайденныеНастройки = Неопределено; + Если НастройкиПочтовыхСерверов <> Неопределено Тогда + СтруктураАдреса = ОбщегоНазначенияКлиентСервер.СтруктураURI(АдресЭлектроннойПочты); + НайденныеНастройки = НастройкиПочтовыхСерверов[СтруктураАдреса.Хост]; + Если ТипЗнч(НайденныеНастройки) = Тип("Строка") Тогда + НайденныеНастройки = НастройкиПочтовыхСерверов[НайденныеНастройки]; + КонецЕсли; + + Если НайденныеНастройки = Неопределено Тогда + ИменаСерверов = ОпределитьИменаПочтовыхСерверовДомена(СтруктураАдреса.Хост); + Для Каждого ИмяСервера Из ИменаСерверов Цикл + УровниДомена = СтрРазделить(ИмяСервера, ".", Ложь); + Пока УровниДомена.Количество() > 1 Цикл + Хост = СтрСоединить(УровниДомена, "."); + + НайденныеНастройки = НастройкиПочтовыхСерверов[Хост]; + Если ТипЗнч(НайденныеНастройки) = Тип("Строка") Тогда + НайденныеНастройки = НастройкиПочтовыхСерверов[НайденныеНастройки]; + КонецЕсли; + + Если ТипЗнч(НайденныеНастройки) = Тип("Соответствие") Тогда + Прервать; + Иначе + НайденныеНастройки = Неопределено; + КонецЕсли; + + УровниДомена.Удалить(0); + КонецЦикла; + + Если ТипЗнч(НайденныеНастройки) = Тип("Соответствие") Тогда + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Возврат ПодобратьНастройкиПочты(АдресЭлектроннойПочты, Пароль, ДляОтправки, ДляПолучения, НайденныеНастройки); + +КонецФункции + +Функция ПодобратьНастройкиПочты(АдресЭлектроннойПочты, Пароль, ДляОтправки, ДляПолучения, ИзвестныеНастройкиПочтовогоСервера) + + Профиль = Неопределено; + Если ЗначениеЗаполнено(ИзвестныеНастройкиПочтовогоСервера) Тогда + Профиль = СформироватьПрофиль(ИзвестныеНастройкиПочтовогоСервера, АдресЭлектроннойПочты, Пароль); + КонецЕсли; + + НастройкиПолучены = Профиль <> Неопределено; + + НайденныйПрофильSMTP = ?(НастройкиПолучены И ЗначениеЗаполнено(Профиль.АдресСервераSMTP), Профиль, Неопределено); + НайденныйПрофильIMAP = ?(НастройкиПолучены И ЗначениеЗаполнено(Профиль.АдресСервераIMAP), Профиль, Неопределено); + НайденныйПрофильPOP = ?(НастройкиПолучены И НайденныйПрофильIMAP = Неопределено И ЗначениеЗаполнено(Профиль.АдресСервераPOP3), Профиль, Неопределено); + + Если Не НастройкиПолучены Тогда + Если ДляОтправки Тогда + НайденныйПрофильSMTP = ОпределитьНастройкиSMTP(АдресЭлектроннойПочты, Пароль); + КонецЕсли; + + Если ДляОтправки Или ДляПолучения Тогда + НайденныйПрофильIMAP = ОпределитьНастройкиIMAP(АдресЭлектроннойПочты, Пароль); + Если НайденныйПрофильIMAP = Неопределено И ДляПолучения Тогда + НайденныйПрофильPOP = ОпределитьНастройкиPOP(АдресЭлектроннойПочты, Пароль); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Результат = Новый Структура; + + Если НайденныйПрофильIMAP <> Неопределено Тогда + Результат.Вставить("ИмяПользователяДляПолученияПисем", НайденныйПрофильIMAP.ПользовательIMAP); + Результат.Вставить("ПарольДляПолученияПисем", НайденныйПрофильIMAP.ПарольIMAP); + Результат.Вставить("Протокол", "IMAP"); + Результат.Вставить("СерверВходящейПочты", НайденныйПрофильIMAP.АдресСервераIMAP); + Результат.Вставить("ПортСервераВходящейПочты", НайденныйПрофильIMAP.ПортIMAP); + Результат.Вставить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты", НайденныйПрофильIMAP.ИспользоватьSSLIMAP); + КонецЕсли; + + Если НайденныйПрофильPOP <> Неопределено Тогда + Результат.Вставить("ИмяПользователяДляПолученияПисем", НайденныйПрофильPOP.Пользователь); + Результат.Вставить("ПарольДляПолученияПисем", НайденныйПрофильPOP.Пароль); + Результат.Вставить("Протокол", "POP"); + Результат.Вставить("СерверВходящейПочты", НайденныйПрофильPOP.АдресСервераPOP3); + Результат.Вставить("ПортСервераВходящейПочты", НайденныйПрофильPOP.ПортPOP3); + Результат.Вставить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты", НайденныйПрофильPOP.ИспользоватьSSLPOP3); + КонецЕсли; + + Если НайденныйПрофильSMTP <> Неопределено Тогда + Результат.Вставить("ИмяПользователяДляОтправкиПисем", НайденныйПрофильSMTP.ПользовательSMTP); + Результат.Вставить("ПарольДляОтправкиПисем", НайденныйПрофильSMTP.ПарольSMTP); + Результат.Вставить("СерверИсходящейПочты", НайденныйПрофильSMTP.АдресСервераSMTP); + Результат.Вставить("ПортСервераИсходящейПочты", НайденныйПрофильSMTP.ПортSMTP); + Результат.Вставить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты", НайденныйПрофильSMTP.ИспользоватьSSLSMTP); + КонецЕсли; + + Результат.Вставить("ДляПолучения", НайденныйПрофильIMAP <> Неопределено Или НайденныйПрофильPOP <> Неопределено); + Результат.Вставить("ДляОтправки", НайденныйПрофильSMTP <> Неопределено); + Результат.Вставить("ПроверкаНастроекВыполнена", Не НастройкиПолучены); + + Возврат Результат; + +КонецФункции + +Функция СформироватьПрофиль(ИзвестныеНастройки, АдресЭлектроннойПочты, Пароль) + + СтруктураАдреса = ОбщегоНазначенияКлиентСервер.СтруктураURI(АдресЭлектроннойПочты); + + Профиль = Новый ИнтернетПочтовыйПрофиль; + Для Каждого Подключение Из ИзвестныеНастройки["Services"] Цикл + Если Подключение["Protocol"] = "SMTP" И Не ЗначениеЗаполнено(Профиль.АдресСервераSMTP) Тогда + Если Подключение["SMTPAuthentication"] = "Enabled" Или Подключение["SMTPAuthentication"] = Неопределено Тогда + Профиль.ПользовательSMTP = ?(Подключение["LoginFormat"] = "username", СтруктураАдреса.Логин, АдресЭлектроннойПочты); + Профиль.ПарольSMTP = Пароль; + КонецЕсли; + Профиль.ИспользоватьSSLSMTP = Подключение["Encryption"] = "SSL"; + Профиль.АдресСервераSMTP = Подключение["Host"]; + Профиль.ПортSMTP = Подключение["Port"]; + Профиль.POP3ПередSMTP = Подключение["SMTPAuthentication"] = "POPBeforeSMTP"; + КонецЕсли; + + Если Подключение["Protocol"] = "IMAP" И Не ЗначениеЗаполнено(Профиль.АдресСервераIMAP) Тогда + Профиль.ИспользоватьSSLIMAP = Подключение["Encryption"] = "SSL"; + Профиль.ПользовательIMAP = ?(Подключение["LoginFormat"] = "username", СтруктураАдреса.Логин, АдресЭлектроннойПочты); + Профиль.ПарольIMAP = Пароль; + Профиль.АдресСервераIMAP = Подключение["Host"]; + Профиль.ПортIMAP = Подключение["Port"]; + КонецЕсли; + + Если Подключение["Protocol"] = "POP3" И Не ЗначениеЗаполнено(Профиль.АдресСервераPOP3) Тогда + Профиль.ИспользоватьSSLPOP3 = Подключение["Encryption"] = "SSL"; + Профиль.Пользователь = ?(Подключение["LoginFormat"] = "username", СтруктураАдреса.Логин, АдресЭлектроннойПочты); + Профиль.Пароль = Пароль; + Профиль.АдресСервераPOP3 = Подключение["Host"]; + Профиль.ПортPOP3 = Подключение["Port"]; + КонецЕсли; + КонецЦикла; + + Возврат Профиль; + +КонецФункции + +Функция ОпределитьНастройкиPOP(АдресЭлектроннойПочты, Пароль) + Для Каждого Профиль Из ПрофилиPOP(АдресЭлектроннойПочты, Пароль) Цикл + СообщениеСервера = ПроверитьПодключениеКСерверуВходящейПочты(Профиль, ПротоколИнтернетПочты.POP3); + + Если ОшибкаАутентификации(СообщениеСервера) Тогда + Для Каждого ИмяПользователя Из ВариантыИмениПользователя(АдресЭлектроннойПочты) Цикл + УстановитьИмяПользователя(Профиль, ИмяПользователя); + СообщениеСервера = ПроверитьПодключениеКСерверуВходящейПочты(Профиль, ПротоколИнтернетПочты.POP3); + Если Не ОшибкаАутентификации(СообщениеСервера) Тогда + Прервать; + КонецЕсли; + КонецЦикла; + Если ОшибкаАутентификации(СообщениеСервера) Тогда + Прервать; + КонецЕсли; + КонецЕсли; + + Если ПодключениеВыполнено(СообщениеСервера) Тогда + Возврат Профиль; + КонецЕсли; + КонецЦикла; + + Возврат Неопределено; +КонецФункции + +Функция ОпределитьНастройкиIMAP(АдресЭлектроннойПочты, Пароль) + Для Каждого Профиль Из ПрофилиIMAP(АдресЭлектроннойПочты, Пароль) Цикл + СообщениеСервера = ПроверитьПодключениеКСерверуВходящейПочты(Профиль, ПротоколИнтернетПочты.IMAP); + + Если ОшибкаАутентификации(СообщениеСервера) Тогда + Для Каждого ИмяПользователя Из ВариантыИмениПользователя(АдресЭлектроннойПочты) Цикл + УстановитьИмяПользователя(Профиль, ИмяПользователя); + СообщениеСервера = ПроверитьПодключениеКСерверуВходящейПочты(Профиль, ПротоколИнтернетПочты.IMAP); + Если Не ОшибкаАутентификации(СообщениеСервера) Тогда + Прервать; + КонецЕсли; + КонецЦикла; + Если ОшибкаАутентификации(СообщениеСервера) Тогда + Прервать; + КонецЕсли; + КонецЕсли; + + Если ПодключениеВыполнено(СообщениеСервера) Тогда + Возврат Профиль; + КонецЕсли; + КонецЦикла; + + Возврат Неопределено; +КонецФункции + +Функция ОпределитьНастройкиSMTP(АдресЭлектроннойПочты, Пароль) + Для Каждого Профиль Из ПрофилиSMTP(АдресЭлектроннойПочты, Пароль) Цикл + СообщениеСервера = ПроверитьПодключениеКСерверуИсходящейПочты(Профиль, АдресЭлектроннойПочты); + + Если ОшибкаАутентификации(СообщениеСервера) Тогда + Для Каждого ИмяПользователя Из ВариантыИмениПользователя(АдресЭлектроннойПочты) Цикл + УстановитьИмяПользователя(Профиль, ИмяПользователя); + СообщениеСервера = ПроверитьПодключениеКСерверуИсходящейПочты(Профиль, АдресЭлектроннойПочты); + Если Не ОшибкаАутентификации(СообщениеСервера) Тогда + Прервать; + КонецЕсли; + КонецЦикла; + Если ОшибкаАутентификации(СообщениеСервера) Тогда + Прервать; + КонецЕсли; + КонецЕсли; + + Если ПодключениеВыполнено(СообщениеСервера) Тогда + Возврат Профиль; + КонецЕсли; + КонецЦикла; + + Возврат Неопределено; +КонецФункции + +Функция ПрофилиPOP(АдресЭлектроннойПочты, Пароль) + Результат = Новый Массив; + НастройкиПрофиля = НастройкиПоУмолчанию(АдресЭлектроннойПочты, Пароль); + + Для Каждого ВариантНастройкиПодключения Из ВариантыНастройкиПодключенияКСерверуPOP(АдресЭлектроннойПочты) Цикл + Профиль = Новый ИнтернетПочтовыйПрофиль; + ЗаполнитьЗначенияСвойств(НастройкиПрофиля, ВариантНастройкиПодключения); + ЗаполнитьЗначенияСвойств(Профиль, ИнтернетПочтовыйПрофиль(НастройкиПрофиля, ПротоколИнтернетПочты.POP3)); + Результат.Добавить(Профиль); + КонецЦикла; + + Возврат Результат; +КонецФункции + +Функция ПрофилиIMAP(АдресЭлектроннойПочты, Пароль) + Результат = Новый Массив; + НастройкиПрофиля = НастройкиПоУмолчанию(АдресЭлектроннойПочты, Пароль); + + Для Каждого ВариантНастройкиПодключения Из ВариантыНастройкиПодключенияКСерверуIMAP(АдресЭлектроннойПочты) Цикл + ЗаполнитьЗначенияСвойств(НастройкиПрофиля, ВариантНастройкиПодключения); + Профиль = ИнтернетПочтовыйПрофиль(НастройкиПрофиля, ПротоколИнтернетПочты.IMAP); + Результат.Добавить(Профиль); + КонецЦикла; + + Возврат Результат; +КонецФункции + +Функция ПрофилиSMTP(АдресЭлектроннойПочты, Пароль) + Результат = Новый Массив; + НастройкиПрофиля = НастройкиПоУмолчанию(АдресЭлектроннойПочты, Пароль); + + Для Каждого ВариантНастройкиПодключения Из ВариантыНастройкиПодключенияКСерверуSMTP(АдресЭлектроннойПочты) Цикл + Профиль = Новый ИнтернетПочтовыйПрофиль; + ЗаполнитьЗначенияСвойств(НастройкиПрофиля, ВариантНастройкиПодключения); + ЗаполнитьЗначенияСвойств(Профиль, ИнтернетПочтовыйПрофиль(НастройкиПрофиля, ПротоколИнтернетПочты.SMTP)); + Результат.Добавить(Профиль); + КонецЦикла; + + Возврат Результат; +КонецФункции + +Функция ОшибкаАутентификации(СообщениеСервера) + Возврат СтрНайти(НРег(СообщениеСервера), "auth") > 0 + Или СтрНайти(НРег(СообщениеСервера), "password") > 0 + Или СтрНайти(НРег(СообщениеСервера), "credentials") > 0; +КонецФункции + +Функция ПодключениеВыполнено(СообщениеСервера) + Возврат ПустаяСтрока(СообщениеСервера); +КонецФункции + +Процедура УстановитьИмяПользователя(Профиль, ИмяПользователя) + Если Не ПустаяСтрока(Профиль.Пользователь) Тогда + Профиль.Пользователь = ИмяПользователя; + КонецЕсли; + Если Не ПустаяСтрока(Профиль.ПользовательIMAP) Тогда + Профиль.ПользовательIMAP = ИмяПользователя; + КонецЕсли; + Если Не ПустаяСтрока(Профиль.ПользовательSMTP) Тогда + Профиль.ПользовательSMTP = ИмяПользователя; + КонецЕсли; +КонецПроцедуры + +Функция НастройкиПоУмолчанию(АдресЭлектроннойПочты, Пароль) + + Позиция = СтрНайти(АдресЭлектроннойПочты, "@"); + ИмяСервераВУчетнойЗаписи = Сред(АдресЭлектроннойПочты, Позиция + 1); + + Настройки = Новый Структура; + + Настройки.Вставить("ИмяПользователяДляПолученияПисем", АдресЭлектроннойПочты); + Настройки.Вставить("ИмяПользователяДляОтправкиПисем", АдресЭлектроннойПочты); + + Настройки.Вставить("ПарольДляОтправкиПисем", Пароль); + Настройки.Вставить("ПарольДляПолученияПисем", Пароль); + + Настройки.Вставить("Протокол", "POP"); + Настройки.Вставить("СерверВходящейПочты", "pop." + ИмяСервераВУчетнойЗаписи); + Настройки.Вставить("ПортСервераВходящейПочты", 995); + Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты", Истина); + + Настройки.Вставить("СерверИсходящейПочты", "smtp." + ИмяСервераВУчетнойЗаписи); + Настройки.Вставить("ПортСервераИсходящейПочты", 465); + Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты", Истина); + Настройки.Вставить("ТребуетсяВходНаСерверПередОтправкой", Ложь); + + Настройки.Вставить("ДлительностьОжиданияСервера", 30); + Настройки.Вставить("ОставлятьКопииПисемНаСервере", Истина); + Настройки.Вставить("УдалятьПисьмаССервераЧерез", 0); + + Возврат Настройки; + +КонецФункции + +Функция ПроверитьПодключениеКСерверуВходящейПочты(Профиль, Протокол) + + ИнтернетПочта = Новый ИнтернетПочта; + + ТекстОшибки = ""; + Попытка + ИнтернетПочта.Подключиться(Профиль, Протокол); + Исключение + ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + + ИнтернетПочта.Отключиться(); + + Если Протокол = ПротоколИнтернетПочты.POP3 Тогда + ТекстДляЖурнала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1:%2%3 (%4)" + Символы.ПС + "%5", + Профиль.АдресСервераPOP3, + Профиль.ПортPOP3, + ?(Профиль.ИспользоватьSSLPOP3, "/SSL", ""), + Профиль.Пользователь, + ?(ПустаяСтрока(ТекстОшибки), НСтр("ru = 'OK'"), ТекстОшибки)); + Иначе + ТекстДляЖурнала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1:%2%3 (%4)" + Символы.ПС + "%5", + Профиль.АдресСервераIMAP, + Профиль.ПортIMAP, + ?(Профиль.ИспользоватьSSLIMAP, "/SSL", ""), + Профиль.ПользовательIMAP, + ?(ПустаяСтрока(ТекстОшибки), НСтр("ru = 'OK'"), ТекстОшибки)); + КонецЕсли; + + ЗаписьЖурналаРегистрации(СобытиеПроверкаПодключенияКПочтовомуСерверу(), + УровеньЖурналаРегистрации.Информация, , , ТекстДляЖурнала); + + Возврат ТекстОшибки; + +КонецФункции + +Функция ПроверитьПодключениеКСерверуИсходящейПочты(Профиль, АдресЭлектроннойПочты) + + Тема = НСтр("ru = 'Тестовое сообщение 1С:Предприятие'"); + Тело = НСтр("ru = 'Это сообщение отправлено подсистемой электронной почты 1С:Предприятие'"); + ИмяОтправителяПисем = НСтр("ru = '1С:Предприятие'"); + + Письмо = Новый ИнтернетПочтовоеСообщение; + Письмо.Тема = Тема; + + Получатель = Письмо.Получатели.Добавить(АдресЭлектроннойПочты); + Получатель.ОтображаемоеИмя = ИмяОтправителяПисем; + + Письмо.ИмяОтправителя = ИмяОтправителяПисем; + Письмо.Отправитель.ОтображаемоеИмя = ИмяОтправителяПисем; + Письмо.Отправитель.Адрес = АдресЭлектроннойПочты; + + Текст = Письмо.Тексты.Добавить(Тело); + Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; + + ИнтернетПочта = Новый ИнтернетПочта; + + ТекстОшибки = ""; + Попытка + ИнтернетПочта.Подключиться(Профиль); + ИнтернетПочта.Послать(Письмо); + Исключение + ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + + ИнтернетПочта.Отключиться(); + + ТекстДляЖурнала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1:%2%3 (%4)" + Символы.ПС + "%5", + Профиль.АдресСервераSMTP, + Профиль.ПортSMTP, + ?(Профиль.ИспользоватьSSLSMTP, "/SSL", ""), + Профиль.ПользовательSMTP, + ?(ПустаяСтрока(ТекстОшибки), НСтр("ru = 'OK'"), ТекстОшибки)); + + ЗаписьЖурналаРегистрации(СобытиеПроверкаПодключенияКПочтовомуСерверу(), + УровеньЖурналаРегистрации.Информация, , , ТекстДляЖурнала); + + Возврат ТекстОшибки; + +КонецФункции + +Функция ИнтернетПочтовыйПрофиль(НастройкиПрофиля, Протокол) + + ДляПолучения = Протокол <> ПротоколИнтернетПочты.SMTP; + + Профиль = Новый ИнтернетПочтовыйПрофиль; + Если ДляПолучения Или НастройкиПрофиля.ТребуетсяВходНаСерверПередОтправкой Тогда + Если Протокол = ПротоколИнтернетПочты.IMAP Тогда + Профиль.АдресСервераIMAP = НастройкиПрофиля.СерверВходящейПочты; + Профиль.ИспользоватьSSLIMAP = НастройкиПрофиля.ИспользоватьЗащищенноеСоединениеДляВходящейПочты; + Профиль.ПарольIMAP = НастройкиПрофиля.ПарольДляПолученияПисем; + Профиль.ПользовательIMAP = НастройкиПрофиля.ИмяПользователяДляПолученияПисем; + Профиль.ПортIMAP = НастройкиПрофиля.ПортСервераВходящейПочты; + Иначе + Профиль.АдресСервераPOP3 = НастройкиПрофиля.СерверВходящейПочты; + Профиль.ИспользоватьSSLPOP3 = НастройкиПрофиля.ИспользоватьЗащищенноеСоединениеДляВходящейПочты; + Профиль.Пароль = НастройкиПрофиля.ПарольДляПолученияПисем; + Профиль.Пользователь = НастройкиПрофиля.ИмяПользователяДляПолученияПисем; + Профиль.ПортPOP3 = НастройкиПрофиля.ПортСервераВходящейПочты; + КонецЕсли; + КонецЕсли; + + Если Не ДляПолучения Тогда + Профиль.POP3ПередSMTP = НастройкиПрофиля.ТребуетсяВходНаСерверПередОтправкой; + Профиль.АдресСервераSMTP = НастройкиПрофиля.СерверИсходящейПочты; + Профиль.ИспользоватьSSLSMTP = НастройкиПрофиля.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты; + Профиль.ПарольSMTP = НастройкиПрофиля.ПарольДляОтправкиПисем; + Профиль.ПользовательSMTP = НастройкиПрофиля.ИмяПользователяДляОтправкиПисем; + Профиль.ПортSMTP = НастройкиПрофиля.ПортСервераИсходящейПочты; + КонецЕсли; + + Профиль.Таймаут = НастройкиПрофиля.ДлительностьОжиданияСервера; + + Возврат Профиль; + +КонецФункции + +Функция ВариантыИмениПользователя(АдресЭлектроннойПочты) + + Позиция = СтрНайти(АдресЭлектроннойПочты, "@"); + ИмяПользователяВУчетнойЗаписи = Лев(АдресЭлектроннойПочты, Позиция - 1); + + Результат = Новый Массив; + Результат.Добавить(ИмяПользователяВУчетнойЗаписи); + + Возврат Результат; + +КонецФункции + +Функция ВариантыНастройкиПодключенияКСерверуIMAP(АдресЭлектроннойПочты) Экспорт + + Позиция = СтрНайти(АдресЭлектроннойПочты, "@"); + ИмяСервераВУчетнойЗаписи = Сред(АдресЭлектроннойПочты, Позиция + 1); + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("СерверВходящейПочты"); + Результат.Колонки.Добавить("ПортСервераВходящейПочты"); + Результат.Колонки.Добавить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты"); + + // icloud.com + Если ИмяСервераВУчетнойЗаписи = "icloud.com" Тогда + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "imap.mail.me.com"; + ВариантНастройки.ПортСервераВходящейПочты = 993; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + Возврат Результат; + КонецЕсли; + + // outlook.com + Если ИмяСервераВУчетнойЗаписи = "outlook.com" Тогда + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "imap-mail.outlook.com"; + ВариантНастройки.ПортСервераВходящейПочты = 993; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + Возврат Результат; + КонецЕсли; + + // Стандартные настройки, подходящие для ящиков gmail, yandex и mail.ru + // имя сервера с префиксом "imap.", защищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "imap." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 993; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + + // Имя сервера с префиксом "mail.", защищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "mail." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 993; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + + // Имя сервера без префикса "imap.", защищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 993; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + + // Имя сервера с префиксом "imap.", незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "imap." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 143; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Ложь; + + // Имя сервера с префиксом "mail.", незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "mail." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 143; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Ложь; + + // Имя сервера без префикса "imap.", незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 143; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Ложь; + + Возврат Результат; + +КонецФункции + +Функция ВариантыНастройкиПодключенияКСерверуPOP(АдресЭлектроннойПочты) + + Позиция = СтрНайти(АдресЭлектроннойПочты, "@"); + ИмяСервераВУчетнойЗаписи = Сред(АдресЭлектроннойПочты, Позиция + 1); + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("СерверВходящейПочты"); + Результат.Колонки.Добавить("ПортСервераВходящейПочты"); + Результат.Колонки.Добавить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты"); + + // Стандартные настройки, подходящие для ящиков gmail, yandex и mail.ru + // имя сервера с префиксом "pop.", защищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "pop." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 995; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + + // Имя сервера с префиксом "pop3.", защищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "pop3." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 995; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + + // Имя сервера с префиксом "mail.", защищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "mail." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 995; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + + // Имя сервера без префиксов, защищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 995; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Истина; + + // Имя сервера с префиксом "pop.", незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "pop." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 110; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Ложь; + + // Имя сервера с префиксом "pop3", незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "pop3." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 110; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Ложь; + + // Имя сервера с префиксом "mail.", незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = "mail." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 110; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Ложь; + + // Имя сервера без префиксов, незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверВходящейПочты = ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераВходящейПочты = 110; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = Ложь; + + Возврат Результат; + +КонецФункции + +Функция ВариантыНастройкиПодключенияКСерверуSMTP(АдресЭлектроннойПочты) Экспорт + + Позиция = СтрНайти(АдресЭлектроннойПочты, "@"); + ИмяСервераВУчетнойЗаписи = Сред(АдресЭлектроннойПочты, Позиция + 1); + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("СерверИсходящейПочты"); + Результат.Колонки.Добавить("ПортСервераИсходящейПочты"); + Результат.Колонки.Добавить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты"); + + // icloud.com + Если ИмяСервераВУчетнойЗаписи = "icloud.com" Тогда + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = "smtp.mail.me.com"; + ВариантНастройки.ПортСервераИсходящейПочты = 587; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь; + Возврат Результат; + КонецЕсли; + + // outlook.com + Если ИмяСервераВУчетнойЗаписи = "outlook.com" Тогда + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = "smtp-mail.outlook.com"; + ВариантНастройки.ПортСервераИсходящейПочты = 587; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь; + Возврат Результат; + КонецЕсли; + + // Стандартные настройки, подходящие для ящиков gmail, yandex и mail.ru + // имя сервера с префиксом "smtp.", защищенное соединение, порт 465. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = "smtp." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 465; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Истина; + + // Имя сервера с префиксом "mail.", защищенное соединение, порт 465. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = "mail." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 465; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Истина; + + // Имя сервера без префиксов, защищенное соединение, порт 465. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 465; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Истина; + + // Имя сервера с префиксом "smtp.", защищенное (STARTTLS) соединение, порт 587. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = "smtp." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 587; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь; + + // Имя сервера с префиксом "mail.", защищенное (STARTTLS) соединение, порт 587. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = "mail." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 587; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь; + + // Имя сервера без префиксов, защищенное (STARTTLS) соединение, порт 587. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 587; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь; + + // Имя сервера с префиксом "smtp.", незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = "smtp." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 25; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь; + + // Имя сервера с префиксом "mail.", незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = "mail." + ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 25; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь; + + // Имя сервера без префиксов, незащищенное соединение. + ВариантНастройки = Результат.Добавить(); + ВариантНастройки.СерверИсходящейПочты = ИмяСервераВУчетнойЗаписи; + ВариантНастройки.ПортСервераИсходящейПочты = 25; + ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь; + + Возврат Результат; + +КонецФункции + +Функция РеквизитыТребующиеВводаПароляДляИзменения() Экспорт + + Возврат "ИспользоватьДляОтправки,ИспользоватьДляПолучения,СерверВходящейПочты,СерверИсходящейПочты,ВладелецУчетнойЗаписи,ИспользоватьЗащищенноеСоединениеДляВходящейПочты,ИспользоватьЗащищенноеСоединениеДляИсходящейПочты,Пользователь,ПользовательSMTP"; + +КонецФункции + +Функция ТребуетсяПроверкаПароля(Ссылка, ЗначенияРеквизитовПередЗаписью) Экспорт + + Если Ссылка.Пустая() Тогда + Возврат Ложь; + КонецЕсли; + + СписокРеквизитов = РеквизитыТребующиеВводаПароляДляИзменения(); + ЗаписанныеЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, СписокРеквизитов); + + Результат = ЗначениеЗаполнено(ЗаписанныеЗначенияРеквизитов.ВладелецУчетнойЗаписи); + Если Результат Тогда + ДоИзменения = Новый Структура(СписокРеквизитов); + ЗаполнитьЗначенияСвойств(ДоИзменения, ЗаписанныеЗначенияРеквизитов); + ПослеИзменения = Новый Структура(СписокРеквизитов); + ЗаполнитьЗначенияСвойств(ПослеИзменения, ЗначенияРеквизитовПередЗаписью); + Результат = ОбщегоНазначения.ЗначениеВСтрокуXML(ДоИзменения) <> ОбщегоНазначения.ЗначениеВСтрокуXML(ПослеИзменения); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ПроверитьВозможностьПодключенияКПочтовомуСерверу(Знач УчетнаяЗапись, Знач ВходящаяПочта) Экспорт + + УстановитьОтключениеБезопасногоРежима(Истина); + Профиль = РаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(УчетнаяЗапись, ВходящаяПочта); + + Если ВходящаяПочта Тогда + Протокол = ПротоколИнтернетПочты.POP3; + Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УчетнаяЗапись, "ПротоколВходящейПочты") = "IMAP" Тогда + Протокол = ПротоколИнтернетПочты.IMAP; + КонецЕсли; + ТекстОшибки = ПроверитьПодключениеКСерверуВходящейПочты(Профиль, Протокол); + Иначе + Адрес = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УчетнаяЗапись, "АдресЭлектроннойПочты"); + ТекстОшибки = ПроверитьПодключениеКСерверуИсходящейПочты(Профиль, Адрес); + КонецЕсли; + + Возврат ТекстОшибки; + +КонецФункции + +Функция ПроверитьНастройкиУчетнойЗаписи(УчетнаяЗапись) Экспорт + + НастройкиУчетнойЗаписи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(УчетнаяЗапись, + "ИспользоватьДляОтправки,ИспользоватьДляПолучения,АдресЭлектроннойПочты"); + + ПрофильИсходящейПочты = Неопределено; + ПрофильВходящейПочты = Неопределено; + + УстановитьОтключениеБезопасногоРежима(Истина); + Если НастройкиУчетнойЗаписи.ИспользоватьДляОтправки Тогда + ПрофильИсходящейПочты = РаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(УчетнаяЗапись, Ложь); + КонецЕсли; + Если НастройкиУчетнойЗаписи.ИспользоватьДляПолучения Тогда + ПрофильВходящейПочты = РаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(УчетнаяЗапись, Истина); + КонецЕсли; + УстановитьОтключениеБезопасногоРежима(Ложь); + + АдресЭлектроннойПочты = НастройкиУчетнойЗаписи.АдресЭлектроннойПочты; + + Возврат ПроверитьНастройкиПрофилей(ПрофильИсходящейПочты, ПрофильВходящейПочты, АдресЭлектроннойПочты); + +КонецФункции + +Функция ПроверитьНастройкиПрофилей(ПрофильИсходящейПочты, ПрофильВходящейПочты, АдресЭлектроннойПочты) Экспорт + + ТекстСообщения = Новый Массив; + ТехническиеПодробности = Новый Массив; + ВыполненныеПроверки = Новый Массив; + + ОшибкаАутентификации = Ложь; + ТребуетсяПроверкаНастроекИсходящейПочты = Ложь; + ТребуетсяПроверкаНастроекВходящейПочты = Ложь; + + Если ПрофильИсходящейПочты <> Неопределено Тогда + ТекстОшибки = ПроверитьПодключениеКСерверуИсходящейПочты(ПрофильИсходящейПочты, АдресЭлектроннойПочты); + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ТехническиеПодробности.Добавить(ТекстОшибки); + + ОшибкаАутентификации = ОшибкаАутентификации(ТекстОшибки); + Если ОшибкаАутентификации(ТекстОшибки) Тогда + ТекстСообщения.Добавить(НСтр("ru = 'Отправка тестового сообщения не выполнена: не удалось авторизоваться.'")); + Иначе + ТекстСообщения.Добавить(НСтр("ru = 'Отправка тестового сообщения не выполнена.'")); + ТребуетсяПроверкаНастроекИсходящейПочты = Истина; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда + МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета"); + ДиагностикаСоединения = МодульПолучениеФайловИзИнтернета.ДиагностикаСоединения(ПрофильИсходящейПочты.АдресСервераSMTP); + ТехническиеПодробности.Добавить(ДиагностикаСоединения.ЖурналДиагностики); + КонецЕсли; + КонецЕсли; + Иначе + ВыполненныеПроверки.Добавить("- " + НСтр("ru = 'Выполнена отправка тестового сообщения.'")); + КонецЕсли; + + КонецЕсли; + + Если ПрофильВходящейПочты <> Неопределено Тогда + Протокол = ?(ЗначениеЗаполнено(ПрофильВходящейПочты.АдресСервераIMAP), ПротоколИнтернетПочты.IMAP, ПротоколИнтернетПочты.POP3); + ТекстОшибки = ПроверитьПодключениеКСерверуВходящейПочты(ПрофильВходящейПочты, Протокол); + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ТехническиеПодробности.Добавить(ТекстОшибки); + + ОшибкаАутентификации = ОшибкаАутентификации(ТекстОшибки); + Если ОшибкаАутентификации(ТекстОшибки) Тогда + ТекстСообщения.Добавить(НСтр("ru = 'Подключение к серверу входящей почты не выполнено: не удалось авторизоваться.'")); + Иначе + ТекстСообщения.Добавить(НСтр("ru = 'Подключение к серверу входящей почты не выполнено.'")); + ТребуетсяПроверкаНастроекВходящейПочты = Истина; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда + МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета"); + СерверВходящейПочты = ?(Протокол = ПротоколИнтернетПочты.IMAP, ПрофильВходящейПочты.АдресСервераIMAP, ПрофильВходящейПочты.АдресСервераPOP3); + ДиагностикаСоединения = МодульПолучениеФайловИзИнтернета.ДиагностикаСоединения(СерверВходящейПочты); + ТехническиеПодробности.Добавить(ДиагностикаСоединения.ЖурналДиагностики); + КонецЕсли; + КонецЕсли; + Иначе + ВыполненныеПроверки.Добавить("- " + НСтр("ru = 'Выполнено подключение к серверу входящей почты.'")); + КонецЕсли; + + КонецЕсли; + + ТехническиеПодробности.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Адрес почты: %1'"), АдресЭлектроннойПочты)); + + ТехническиеПодробности.Добавить(ОписаниеНастроек(ПрофильИсходящейПочты, ПрофильВходящейПочты)); + + ТехническиеПодробности.Добавить(ИнформацияОПрограмме()); + + ОшибкиПодключения = ""; + + Если ЗначениеЗаполнено(ТекстСообщения) Тогда + ЧастиАдреса = СтрРазделить(АдресЭлектроннойПочты, "@", Истина); + ДоменноеИмя = ЧастиАдреса[ЧастиАдреса.ВГраница()]; + ТекстСообщения = СтрСоединить(ТекстСообщения, Символы.ПС); + + ТехническиеПодробности = СтрСоединить(ТехническиеПодробности, Символы.ПС + Символы.ПС); + + Рекомендации = Новый Массив; + Если ОшибкаАутентификации Тогда + Рекомендации.Добавить(НСтр("ru = 'Проверьте правильность ввода логина и пароля, а также выбранный способ авторизации.'")); + КонецЕсли; + Если ТребуетсяПроверкаНастроекИсходящейПочты Тогда + Рекомендации.Добавить(НСтр("ru = 'Проверьте настройки подключения к серверу исходящей почты.'")); + КонецЕсли; + Если ТребуетсяПроверкаНастроекВходящейПочты Тогда + Рекомендации.Добавить(НСтр("ru = 'Проверьте настройки подключения к серверу входящей почты.'")); + КонецЕсли; + Если ТребуетсяПроверкаНастроекИсходящейПочты Или ТребуетсяПроверкаНастроекВходящейПочты Тогда + Рекомендации.Добавить(НСтр("ru = 'Обратитесь к администратору локальной сети.'")); + КонецЕсли; + + Рекомендации = СтрСоединить(Рекомендации, Символы.ПС); + + ОшибкиПодключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 + | + |%2 + | + |Обратитесь к администратору почтового сервера ""%3"". + | + |============================ + | + |Информация для техподдержки: + | + |%4'"), ТекстСообщения, Рекомендации, ДоменноеИмя, ТехническиеПодробности); + КонецЕсли; + + ВыполненныеПроверки = СтрСоединить(ВыполненныеПроверки, Символы.ПС); + + Если ЗначениеЗаполнено(ОшибкиПодключения) Тогда + ЗаписьЖурналаРегистрации(НСтр("ru = 'Проверка настроек почты'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Предупреждение, , , ОшибкиПодключения); + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("ВыполненныеПроверки", ВыполненныеПроверки); + Результат.Вставить("ОшибкиПодключения", ОшибкиПодключения); + + Возврат Результат; + +КонецФункции + +Функция ОписаниеНастроек(ПрофильИсходящейПочты, ПрофильВходящейПочты) + + ОписаниеНастроек = Новый Массив; + + СписокСвойствIMAP = "АдресСервераIMAP,ПортIMAP,ИспользоватьSSLIMAP,ПользовательIMAP"; + СписокСвойствPOP3 = "АдресСервераPOP3,ПортPOP3,ИспользоватьSSLPOP3,Пользователь"; + СписокСвойствSMTP = "АдресСервераSMTP,ПортSMTP,ИспользоватьSSLSMTP,ПользовательSMTP,POP3ПередSMTP"; + + Профиль = Новый ИнтернетПочтовыйПрофиль(); + Если ПрофильВходящейПочты <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(Профиль, ПрофильВходящейПочты); + Профиль.ПортIMAP = ПрофильВходящейПочты.ПортIMAP; + КонецЕсли; + + Если ПрофильИсходящейПочты <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(Профиль, ПрофильИсходящейПочты, , СписокСвойствPOP3); + Профиль.ПортIMAP = ПрофильИсходящейПочты.ПортIMAP; + КонецЕсли; + + Если ЗначениеЗаполнено(Профиль.АдресСервераSMTP) Тогда + Настройки = Новый Массив; + Для Каждого ИмяСвойства Из СтрРазделить(СписокСвойствSMTP, ",", Ложь) Цикл + Настройки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1=""%2""'"), ИмяСвойства, Профиль[ИмяСвойства])); + КонецЦикла; + ОписаниеНастроек.Добавить(СтрСоединить(Настройки, ", ")); + КонецЕсли; + + Если ЗначениеЗаполнено(Профиль.АдресСервераIMAP) Тогда + Настройки = Новый Массив; + Для Каждого ИмяСвойства Из СтрРазделить(СписокСвойствIMAP, ",", Ложь) Цикл + Настройки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1=""%2""'"), ИмяСвойства, Профиль[ИмяСвойства])); + КонецЦикла; + ОписаниеНастроек.Добавить(СтрСоединить(Настройки, ", ")); + КонецЕсли; + + Если ЗначениеЗаполнено(Профиль.АдресСервераPOP3) Тогда + Настройки = Новый Массив; + Для Каждого ИмяСвойства Из СтрРазделить(СписокСвойствPOP3, ",", Ложь) Цикл + Настройки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1=""%2""'"), ИмяСвойства, Профиль[ИмяСвойства])); + КонецЦикла; + ОписаниеНастроек.Добавить(СтрСоединить(Настройки, ", ")); + КонецЕсли; + + Возврат СтрСоединить(ОписаниеНастроек, Символы.ПС); + +КонецФункции + +Функция ИнформацияОПрограмме() + + СистемнаяИнформация = Новый СистемнаяИнформация; + + Результат = Новый Массив; + Результат.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Операционная система: %1'"), СистемнаяИнформация.ВерсияОС)); + Результат.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Платформа: %1 (%2)'"), + СистемнаяИнформация.ВерсияПриложения, СистемнаяИнформация.ТипПлатформы)); + Результат.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Конфигурация: %1 (%2)'"), + ?(ЗначениеЗаполнено(Метаданные.Синоним), Метаданные.Синоним, Метаданные.Имя), Метаданные.Версия)); + + Результат.Добавить(Символы.ПС + НСтр("ru = 'Расширения:'")); + + УстановитьПривилегированныйРежим(Истина); + Для Каждого Расширение Из РасширенияКонфигурации.Получить() Цикл + Если Расширение.Активно Тогда + Результат.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (%2)'"), + ?(ЗначениеЗаполнено(Расширение.Синоним), Расширение.Синоним, Расширение.Имя), Расширение.Версия)); + КонецЕсли; + КонецЦикла; + УстановитьПривилегированныйРежим(Ложь); + + Возврат СтрСоединить(Результат, Символы.ПС); + +КонецФункции + +Функция СобытиеПроверкаПодключенияКПочтовомуСерверу() + Возврат НСтр("ru = 'Проверка подключения к почтовому серверу'", ОбщегоНазначения.КодОсновногоЯзыка()); +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..eb7b7b31 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/ObjectModule.bsl" @@ -0,0 +1,173 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) + + ЗаполнитьОбъектЗначениямиПоУмолчанию(); + +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если Не ИспользоватьДляОтправки И Не ИспользоватьДляПолучения Тогда + ПроверяемыеРеквизиты.Очистить(); + ПроверяемыеРеквизиты.Добавить("Наименование"); + Возврат; + КонецЕсли; + + МассивНепроверяемыхРеквизитов = Новый Массив; + + Если Не ИспользоватьДляОтправки Тогда + МассивНепроверяемыхРеквизитов.Добавить("СерверИсходящейПочты"); + КонецЕсли; + + Если Не ИспользоватьДляПолучения И ПротоколВходящейПочты = "POP" Тогда + МассивНепроверяемыхРеквизитов.Добавить("СерверВходящейПочты"); + КонецЕсли; + + Если Не ПустаяСтрока(АдресЭлектроннойПочты) И Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(АдресЭлектроннойПочты, Истина) Тогда + ОбщегоНазначения.СообщитьПользователю( + НСтр("ru = 'Почтовый адрес заполнен неверно.'"), ЭтотОбъект, "АдресЭлектроннойПочты"); + МассивНепроверяемыхРеквизитов.Добавить("АдресЭлектроннойПочты"); + Отказ = Истина; + КонецЕсли; + + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов); + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища(Ссылка); + УстановитьПривилегированныйРежим(Ложь); +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Пользователь <> СокрЛП(Пользователь) Тогда + Пользователь = СокрЛП(Пользователь); + КонецЕсли; + + Если ПользовательSMTP <> СокрЛП(ПользовательSMTP) Тогда + ПользовательSMTP = СокрЛП(ПользовательSMTP); + КонецЕсли; + + Если Не ДополнительныеСвойства.Свойство("НеПроверятьИзменениеНастроек") И Не Ссылка.Пустая() Тогда + ТребуетсяПроверкаПароля = Справочники.УчетныеЗаписиЭлектроннойПочты.ТребуетсяПроверкаПароля(Ссылка, ЭтотОбъект); + Если ТребуетсяПроверкаПароля Тогда + ПроверкаПароля = Неопределено; + Если Не ДополнительныеСвойства.Свойство("Пароль", ПроверкаПароля) Или Не ПарольВведенВерно(ПроверкаПароля) Тогда + ТекстСообщенияОбОшибке = НСтр("ru = 'Не подтвержден пароль для изменения настроек учетной записи.'"); + ВызватьИсключение ТекстСообщенияОбОшибке; + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + УчетнаяЗаписьДляВосстановленияПароля = РаботаСПочтовымиСообщениямиСлужебный.НастройкиУчетнойЗаписиДляВосстановленияПароля(); + + Если УчетнаяЗаписьДляВосстановленияПароля.Используется + И УчетнаяЗаписьДляВосстановленияПароля.УчетнаяЗаписьПочты = Ссылка Тогда + + Если Пользователи.ЭтоПолноправныйПользователь() Тогда + + УстановитьПривилегированныйРежим(Истина); + ПарольSMTP = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Ссылка, "ПарольSMTP"); + УстановитьПривилегированныйРежим(Ложь); + + Настройки = ПользователиСлужебный.НастройкиВосстановленияПароля(); + + Если Настройки <> Неопределено Тогда + + Настройки.АдресСервераSMTP = СерверИсходящейПочты; + Настройки.ИмяОтправителя = ИмяПользователя; + Настройки.ИспользоватьSSL = ИспользоватьЗащищенноеСоединениеДляИсходящейПочты; + Настройки.ПарольSMTP = ПарольSMTP; + Настройки.ПользовательSMTP = ПользовательSMTP; + Настройки.ПортSMTP = ПортСервераИсходящейПочты; + + ПользователиСлужебный.УстановитьНастройкиВосстановленияПароля(Настройки); + КонецЕсли; + + Иначе + ВызватьИсключение НСтр("ru='Настройки почты используются для восстановления пароля и + |могут быть изменены только администратором.'"); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗаполнитьОбъектЗначениямиПоУмолчанию() + + ИмяПользователя = НСтр("ru = '1С:Предприятие'"); + ИспользоватьДляПолучения = Ложь; + ИспользоватьДляОтправки = Ложь; + ОставлятьКопииСообщенийНаСервере = Ложь; + ПериодХраненияСообщенийНаСервере = 0; + ВремяОжидания = 30; + ПортСервераВходящейПочты = 110; + ПортСервераИсходящейПочты = 25; + ПротоколВходящейПочты = "POP"; + + Если Предопределенный Тогда + Наименование = НСтр("ru = 'Системная учетная запись'"); + КонецЕсли; + +КонецПроцедуры + +Функция ПарольВведенВерно(ПроверкаПароля) + УстановитьПривилегированныйРежим(Истина); + Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Ссылка, "Пароль,ПарольSMTP"); + УстановитьПривилегированныйРежим(Ложь); + + ПроверяемыеПароли = Новый Массив; + Если ЗначениеЗаполнено(Пароли.Пароль) Тогда + ПроверяемыеПароли.Добавить(Пароли.Пароль); + КонецЕсли; + Если ЗначениеЗаполнено(Пароли.ПарольSMTP) Тогда + ПроверяемыеПароли.Добавить(Пароли.ПарольSMTP); + КонецЕсли; + + Для Каждого ПроверяемыйПароль Из ПроверяемыеПароли Цикл + Если ПроверкаПароля <> ПроверяемыйПароль Тогда + Возврат Ложь; + КонецЕсли; + КонецЦикла; + + Возврат Истина; +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" new file mode 100644 index 00000000..b9d2367e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\243\321\207\320\265\321\202\320\275\321\213\320\265\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" @@ -0,0 +1,639 @@ + + + + + + + + + + УчетныеЗаписиЭлектроннойПочты + + ru + Настройки почты + + АПК:58 + true + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Наименование учетной записи + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + true + + + ru + + + Managed + Use + + ru + Настройка почты + + 2 + true + 50 + String + AsDescription + + + СистемнаяУчетнаяЗаписьЭлектроннойПочты + Системная учетная запись + + + + + + InDialog + BothWays + Catalog.УчетныеЗаписиЭлектроннойПочты.Form.ФормаЭлемента + Catalog.УчетныеЗаписиЭлектроннойПочты.Form.ФормаСписка + Catalog.УчетныеЗаписиЭлектроннойПочты.Form.ФормаВыбора + + АдресЭлектроннойПочты + + ru + Адрес электронной почты + + + String + + 255 + + + + ru + Адрес электронной почты в формате пользователь@сервер + + + + ShowError + + + + Use + Use + + + ВремяОжидания + + ru + Время ожидания сервера (сек) + + + Number + + 3 + + + + ru + Время ожидания сервера до разрыва соединения + + + + ShowError + true + + 30 + + Use + Use + + + ИмяПользователя + + ru + Имя пользователя + + Имя отправителя + + String + + 100 + + + + ru + Имя отправителя почтовых сообщений. Например, "Иван Петров". + + + + + + + Index + Use + Use + + + ИспользоватьДляОтправки + + ru + Использовать для отправки + + + Boolean + + + ru + Использовать учетную запись для отправки почтовых сообщений + + + + + Index + Use + Use + + + ИспользоватьДляПолучения + + ru + Использовать для получения + + + Boolean + + + ru + Использовать учетную запись для получения почтовых сообщений + + + + + Index + Use + Use + + + ИспользоватьЗащищенноеСоединениеДляВходящейПочты + + ru + Использовать защищенное соединение для входящей почты + + + Boolean + + + ru + Использовать шифрование соединения (SSL) + + + + + Use + Use + + + ИспользоватьЗащищенноеСоединениеДляИсходящейПочты + + ru + Использовать защищенное соединение для исходящей почты + + + Boolean + + + ru + Использовать шифрование соединения (SSL) + + + + + Use + Use + + + ОставлятьКопииСообщенийНаСервере + + ru + Оставлять копии сообщений на сервере + + + Boolean + + + ru + Требуется оставлять копии сообщений на сервере + + + + + Use + Use + + + ПериодХраненияСообщенийНаСервере + + ru + Период хранения сообщений на сервере + + + Number + + 3 + true + + + + ru + Число дней, которое должны храниться сообщения на сервере. Вычисляется как разница между текущей датой и датой получения (если письма хранятся в ИБ), или датой отправки (если письма не хранятся в ИБ) + + + + + 0 + + Use + Use + + + Пользователь + + ru + Пользователь + + + String + + 100 + + + + ru + Имя пользователя для доступа к почте (логин) + + + + + + + Use + Use + + + ПользовательSMTP + + ru + Пользователь SMTP + + + String + + 100 + + + + ru + Имя пользователя для доступа к почте (логин) + + + + + + + Use + Use + + + ПортСервераВходящейПочты + + ru + Порт сервера входящей почты + + + Number + + 5 + + + + ru + Номер порта + + + + + 0 + + Use + Use + + + ПортСервераИсходящейПочты + + ru + Порт сервера исходящей почты + + + Number + + 5 + + + + ru + Номер порта + + + + + 0 + + Use + Use + + + ПротоколВходящейПочты + + ru + Протокол входящей почты + + + String + + 4 + + + + ru + Протокол сервера входящей почты: POP или IMAP. + + + + Use + + + + Use + Use + + + СерверВходящейПочты + + ru + Сервер входящей почты + + + String + + 300 + + + + ru + Имя хоста сервера входящей почты + + + + ShowError + + + + Use + Use + + + СерверИсходящейПочты + + ru + Сервер исходящей почты + + + String + + 300 + + + + ru + Имя хоста сервера исходящей почты + + + + ShowError + + + + Use + Use + + + ТребуетсяВходНаСерверПередОтправкой + + ru + Требуется вход на сервер перед отправкой + + + Boolean + + + ru + Установите этот флажок, если для аутентификации на SMTP сервере требуется успешное подключение к POP3 серверу. + + + + + Use + Use + + + ОтправлятьСкрытыеКопииПисемНаЭтотАдрес + + ru + Отправлять скрытые копии писем на этот адрес + + + Boolean + + + ru + Если включен, то в получатели скрытых копий всех исходящих писем будет добавляться этот почтовый адрес. +Рекомендуется включать при отсутствии штатных возможностей для хранения отправленных писем на почтовом сервере. + + + + + Use + Use + + + ВладелецУчетнойЗаписи + + ru + Владелец почты + + АПК:58 + + CatalogRef.Пользователи + + + ru + Владелец персональной учетной записи электронной почты + + + + + Use + Use + + + ПриОтправкеПисемТребуетсяАвторизация + + ru + При отправке писем требуется авторизация + + + Boolean + + + + + Use + Use + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ПомощникНастройкиУчетнойЗаписи + + ru + Помощник настройки учетной записи + + PersonalComputer + MobileDevice + + + ПроверкаДоступаКУчетнойЗаписи + + ru + Проверка доступа к учетной записи + + + + ru + + + PersonalComputer + MobileDevice + + + ПроверкаНастроекУчетнойЗаписи + + ru + Проверка настроек почты + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Commands/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Commands/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/CommandModule.bsl" new file mode 100644 index 00000000..ad3c08c0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Commands/\320\222\320\265\321\200\321\201\320\270\320\270\320\244\320\260\320\271\320\273\320\260/CommandModule.bsl" @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Файл", ПараметрКоманды); + ПараметрыФормы.Вставить("УникальныйИдентификаторКарточкиФайла", + ПараметрыВыполненияКоманды.Источник.УникальныйИдентификатор); + + ОткрытьФорму("Справочник.ВерсииФайлов.Форма.ВерсииФайла", ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Commands/\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Commands/\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" new file mode 100644 index 00000000..342f86d7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Commands/\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОткрытьФорму( + "Справочник.Файлы.Форма.Файлы", + , + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Form.form" new file mode 100644 index 00000000..9cc0826a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Form.form" @@ -0,0 +1,6151 @@ + + + + <key>ru</key> + <value>Файлы</value> + + + ГруппаПользовательскихНастроек + 349 + VeryLow + true + true + + true + + + <key>ru</key> + <value>Настройки</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 350 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + ГруппаПапкиИФайлыОбщая + 406 + VeryLow + + ГруппаПапкиИФайлы + 29 + VeryHigh + + Папки + 24 + + <key>ru</key> + <value>Папки</value> + + true + true + + true + + + Папки + + false + None + Delete + ListSettings + OutputList + Refresh + + ПапкиНаименование + 27 + + <key>ru</key> + <value>Папки</value> + + true + true + + true + + + + Папки.Description + + + + ПапкиНаименованиеРасширеннаяПодсказка + 184 + true + true + + true + + Label + true + true + + Left + + + + ПапкиНаименованиеКонтекстноеМеню + 28 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + ПапкиСсылка + 262 + true + true + + + + Папки.Ref + + + + ПапкиСсылкаРасширеннаяПодсказка + 264 + true + true + + true + + Label + true + true + + Left + + + + ПапкиСсылкаКонтекстноеМеню + 263 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ПапкиКоманднаяПанель + 26 + true + true + + true + + Left + true + + + DragCheck + ПапкиПроверкаПеретаскивания + + + OnActivateRow + ПапкиПриАктивизацииСтроки + + + Drag + ПапкиПеретаскивание + + + OnChange + ПапкиПриИзменении + + + true + true + + true + + ПапкиСтрокаПоиска + 359 + + ПапкиСтрокаПоискаРасширеннаяПодсказка + 361 + true + true + + true + + Label + true + true + + Left + + + + ПапкиСтрокаПоискаКонтекстноеМеню + 360 + true + true + + true + + true + + + true + + + + true + true + + true + + ПапкиСостояниеПросмотра + 362 + + ПапкиСостояниеПросмотраРасширеннаяПодсказка + 364 + true + true + + true + + Label + true + true + + Left + + + + ПапкиСостояниеПросмотраКонтекстноеМеню + 363 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПапкиУправлениеПоиском + 365 + + ПапкиУправлениеПоискомРасширеннаяПодсказка + 367 + true + true + + true + + Label + true + true + + Left + + + + ПапкиУправлениеПоискомКонтекстноеМеню + 366 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПапкиExtendedTooltip + 183 + true + true + + true + + Label + true + true + + Left + + + + ПапкиКонтекстноеМеню + 25 + + ПапкиКонтекстноеМенюСоздать + 140 + VeryHigh + + <key>ru</key> + <value>Создать новую папку</value> + + true + true + + true + + + ПапкиКонтекстноеМенюСоздатьРасширеннаяПодсказка + 176 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.Create + Auto + true + true + UserCmds + + StdPicture.CreateFolder + + Auto + + + ПапкиКонтекстноеМенюИзменить + 248 + VeryHigh + true + true + + true + + + ПапкиКонтекстноеМенюИзменитьРасширеннаяПодсказка + 249 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюСкопировать + 250 + VeryHigh + true + true + + true + + + ПапкиКонтекстноеМенюСкопироватьРасширеннаяПодсказка + 251 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюУстановитьПометкуУдаления + 234 + VeryHigh + true + true + + true + + + ПапкиКонтекстноеМенюУстановитьПометкуУдаленияРасширеннаяПодсказка + 235 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюСтандартные + 139 + Usual + + ПапкиКонтекстноеМенюПеренестиЭлемент + 252 + true + true + + true + + + ПапкиКонтекстноеМенюПеренестиЭлементРасширеннаяПодсказка + 253 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.MoveItem + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюУровеньВверх + 254 + true + true + + true + + + ПапкиКонтекстноеМенюУровеньВверхРасширеннаяПодсказка + 255 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.LevelUp + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюУровеньВниз + 256 + true + true + + true + + + ПапкиКонтекстноеМенюУровеньВнизРасширеннаяПодсказка + 257 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.LevelDown + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюНайти + 258 + true + true + + true + + + ПапкиКонтекстноеМенюНайтиРасширеннаяПодсказка + 259 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюОтменитьПоиск + 260 + true + true + + true + + + ПапкиКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 261 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Стандартные команды</value> + + + ПапкиКонтекстноеМенюСтандартныеExtendedTooltip + 177 + true + true + + true + + Label + true + true + + Left + + + + Item.Папки + + + + ПапкиКонтекстноеМенюГруппаИмпорт + 114 + Low + + ПапкиКонтекстноеМенюИмпортПапки + 82 + true + true + + true + + false + + ПапкиКонтекстноеМенюИмпортПапкиРасширеннаяПодсказка + 181 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИмпортПапки + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюЭкспортПапки + 64 + true + true + + true + + false + + ПапкиКонтекстноеМенюЭкспортПапкиРасширеннаяПодсказка + 182 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЭкспортПапки + Auto + true + true + UserCmds + Auto + + + ПапкиКонтекстноеМенюНастроитьСинхронизацию + 394 + true + true + + true + + + ПапкиКонтекстноеМенюНастроитьСинхронизациюРасширеннаяПодсказка + 395 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НастроитьСинхронизацию + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Папки контекстное меню группа импорт</value> + + + ПапкиКонтекстноеМенюГруппаИмпортРасширеннаяПодсказка + 179 + true + true + + true + + Label + true + true + + Left + + + + + + ПапкиКонтекстноеМенюКопироватьВБуферОбмена + 141 + VeryLow + true + true + + true + + + ПапкиКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Папки.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Tree + true + true + 17 + true + 10 + true + 4 + true + MultiRow + 1 + 1 + AutoUse + Auto + Auto + ExpandTopLevel + true + true + true + true + + Папки.ИндексКартинки + + + CommonPicture.Папки + + + Style.BorderColor + + None + None + None + SelectionPresentation + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + + + + ГруппаФайлыИПоиск + 396 + VeryHigh + + ГруппаПояснениеОблачногоСервиса + 414 + VeryHigh + + ДекорацияКартинкаОблачногоСервиса + 416 + + <key>ru</key> + <value>Декорация картинка облачного сервиса</value> + + true + true + + true + + + ДекорацияКартинкаОблачногоСервисаРасширеннаяПодсказка + 418 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияКартинкаОблачногоСервисаКонтекстноеМеню + 417 + true + true + + true + + true + + true + + + CommonPicture.ПапкаОблачногоСервиса + + + + + ДекорацияПояснение + 419 + + <key>ru</key> + <value>Работа с файлами этой папки ведется в облачном сервисе <link 1>%</>1. +</value> + + true + true + + true + + Button + + ДекорацияПояснениеРасширеннаяПодсказка + 421 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПояснениеКонтекстноеМеню + 420 + true + true + + true + + true + + true + Label + true + + Left + + + + ДекорацияКартинкаОшибкаСинхронизации + 422 + + <key>ru</key> + <value>Неудачная синхронизация файлов</value> + + true + true + + true + + + ДекорацияКартинкаОшибкаСинхронизацииРасширеннаяПодсказка + 424 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияКартинкаОшибкаСинхронизацииКонтекстноеМеню + 423 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + ДекорацияДатаСинхронизации + 425 + + <key>ru</key> + <value>Синхронизировано: %2 </value> + + true + true + + true + + + ru + Последняя синхронизация файлов не удалась из-за возможных проблем с облачным сервисом, подключением к интернету или других проблем. Подробнее см. Журнал регистрации. + + Button + + ДекорацияДатаСинхронизацииРасширеннаяПодсказка + 427 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияДатаСинхронизацииКонтекстноеМеню + 426 + true + true + + true + + true + + true + Label + true + true + + + URLProcessing + ДекорацияДатаСинхронизацииОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Пояснение облачного сервиса</value> + + + ГруппаПояснениеОблачногоСервисаРасширеннаяПодсказка + 415 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Center + true + true + Auto + Auto + + + + Список + 6 + + <key>ru</key> + <value>Файлы</value> + + true + true + + true + + + Список + + true + false + None + Delete + ListSettings + OutputList + Refresh + None + + СписокНомерКартинкиПодписанЗашифрован + 117 + VeryLow + + <key>ru</key> + <value>Номер картинки подписан зашифрован</value> + + true + true + + true + + + + Список.НомерКартинкиПодписанЗашифрован + + + None + + ru + Наличие электронной подписи или шифрования + + + СписокНомерКартинкиПодписанЗашифрованРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + + СписокНомерКартинкиПодписанЗашифрованКонтекстноеМеню + 118 + true + true + + true + + true + + PictureField + Enter + true + + CommonPicture.ПодписанЗашифрованЗаголовок + + Left + true + + 2 + true + true + true + + CommonPicture.ПодписанЗашифрованСостояния + + + + + СписокГруппаИмяКартинкаОписание + 310 + VeryHigh + + СписокИндексКартинки + 7 + VeryHigh + + <key>ru</key> + <value>Индекс картинки</value> + + true + true + + true + + + + Список.ИндексКартинки + + + None + None + + СписокИндексКартинкиРасширеннаяПодсказка + 212 + true + true + + true + + Label + true + true + + Left + + + + СписокИндексКартинкиКонтекстноеМеню + 5 + true + true + + true + + true + + PictureField + Enter + true + Left + true + Left + + 2 + true + 1 + true + true + + CommonPicture.КоллекцияПиктограммФайлов + + + 1 + + + + + СписокНаименование + 9 + VeryHigh + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + СписокНаименованиеРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + + СписокНаименованиеКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 20 + true + true + true + true + true + + Style.BorderColor + + + + + СписокОписание + 269 + VeryHigh + + <key>ru</key> + <value>Описание</value> + + true + true + + true + + + + Список.Описание + + + None + + ru + Краткое описание файла + + + СписокОписаниеРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + + СписокОписаниеКонтекстноеМеню + 270 + true + true + + true + + true + + InputField + true + Enter + true + true + Left + true + + 5 + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Группа имя картинка описание</value> + + None + + СписокГруппаИмяКартинкаОписаниеРасширеннаяПодсказка + 311 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + СписокВажныеРеквизиты + 277 + Usual + + СписокДатаИзменения + 143 + VeryLow + + <key>ru</key> + <value>Дата изменения</value> + + true + true + + true + + + + Список.ДатаИзменения + + + + СписокДатаИзмененияРасширеннаяПодсказка + 224 + true + true + + true + + Label + true + true + + Left + + + + СписокДатаИзмененияКонтекстноеМеню + 144 + true + true + + true + + true + + LabelField + true + Enter + true + Left + true + + 15 + true + true + false + + + + СписокОтредактировал + 411 + VeryLow + + <key>ru</key> + <value>Отредактировал</value> + + true + true + + true + + + + Список.Отредактировал + + + + СписокОтредактировалРасширеннаяПодсказка + 413 + true + true + + true + + Label + true + true + + Left + + + + СписокОтредактировалКонтекстноеМеню + 412 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Важные реквизиты</value> + + None + + СписокВажныеРеквизитыРасширеннаяПодсказка + 278 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + СписокТекущаяВерсияРазмер + 88 + VeryLow + + <key>ru</key> + <value>Размер (КБ)</value> + + true + true + + true + + + + Список.ТекущаяВерсияРазмер + + + + ru + Размер файла в килобайтах + + + СписокТекущаяВерсияРазмерРасширеннаяПодсказка + 219 + true + true + + true + + Label + true + true + + Left + + + + СписокТекущаяВерсияРазмерКонтекстноеМеню + 89 + true + true + + true + + true + + LabelField + true + Enter + true + Left + true + + 10 + true + true + false + + ru + ЧЦ=10; ЧН=0 + + + + + СписокАвтор + 279 + VeryLow + true + true + + true + + + + Список.Автор + + + + СписокАвторРасширеннаяПодсказка + 281 + true + true + + true + + Label + true + true + + Left + + + + СписокАвторКонтекстноеМеню + 280 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 15 + true + true + false + true + true + true + true + + + + СписокДатаСоздания + 282 + VeryLow + true + true + + + + Список.ДатаСоздания + + + + СписокДатаСозданияРасширеннаяПодсказка + 284 + true + true + + true + + Label + true + true + + Left + + + + СписокДатаСозданияКонтекстноеМеню + 283 + true + true + + true + + true + + LabelField + true + Enter + true + Left + true + + 15 + true + true + false + + + + СписокРедактирует + 272 + Usual + true + true + + + + Список.Редактирует + + + + СписокРедактируетРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + + СписокРедактируетКонтекстноеМеню + 273 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + СписокСсылка + 115 + VeryLow + true + true + + + + Список.Ref + + + + СписокСсылкаРасширеннаяПодсказка + 223 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 116 + true + true + + true + + true + + LabelField + true + Enter + true + Left + true + + 1 + true + true + + + None + + СписокКоманднаяПанель + 23 + true + true + + true + + Left + true + + + DragCheck + СписокПроверкаПеретаскивания + + + Selection + СписокВыбор + + + BeforeAddRow + СписокПередНачаломДобавления + + + OnActivateRow + СписокПриАктивизацииСтроки + + + Drag + СписокПеретаскивание + + + BeforeRowChange + СписокПередНачаломИзменения + + + OnChange + СписокПриИзменении + + + true + true + + true + + СписокСтрокаПоиска + 368 + + СписокСтрокаПоискаРасширеннаяПодсказка + 370 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 369 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 371 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 373 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 372 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 374 + + СписокУправлениеПоискомРасширеннаяПодсказка + 376 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 375 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 208 + true + true + + true + + Label + true + + Left + + + + СписокКонтекстноеМеню + 4 + + СписокКонтекстноеМенюСоздать + 96 + VeryHigh + + <key>ru</key> + <value>Добавить</value> + + true + true + + true + + false + + СписокКонтекстноеМенюСоздатьРасширеннаяПодсказка + 185 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюИзменить + 242 + VeryHigh + + <key>ru</key> + <value>Открыть карточку</value> + + true + true + + true + + + СписокКонтекстноеМенюИзменитьРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюПеренестиВПапку + 83 + VeryHigh + true + true + + true + + false + + СписокКонтекстноеМенюПеренестиВПапкуРасширеннаяПодсказка + 195 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПеренестиВПапку + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюГруппаКомандОсновные + 306 + High + + СписокКонтекстноеМенюОткрыть + 65 + true + true + + true + + false + + СписокКонтекстноеМенюОткрытьРасширеннаяПодсказка + 187 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьФайл + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюЗанять + 68 + true + true + + true + + false + + СписокКонтекстноеМенюЗанятьРасширеннаяПодсказка + 190 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Занять + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюРедактировать + 66 + true + true + + true + + false + + СписокКонтекстноеМенюРедактироватьРасширеннаяПодсказка + 188 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Редактировать + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюСохранитьИзменения + 70 + true + true + + false + + СписокКонтекстноеМенюСохранитьИзмененияРасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьИзменения + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюЗакончитьРедактирование + 67 + + <key>ru</key> + <value>Закончить редактирование</value> + + true + true + + true + + false + + СписокКонтекстноеМенюЗакончитьРедактированиеРасширеннаяПодсказка + 189 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗакончитьРедактирование + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюПечать + 390 + true + true + + true + + + СписокКонтекстноеМенюПечатьРасширеннаяПодсказка + 391 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Печать + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюОтправить + 392 + true + true + + true + + + СписокКонтекстноеМенюОтправитьРасширеннаяПодсказка + 393 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отправить + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Основные команды</value> + + + СписокКонтекстноеМенюГруппаКомандОсновныеРасширеннаяПодсказка + 307 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование + 130 + Usual + + СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодпись + 357 + + СписокКонтекстноеМенюПодписать + 132 + true + true + + true + + + СписокКонтекстноеМенюПодписатьРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подписать + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюДобавитьПодписьИзФайла + 134 + true + true + + true + + + СписокКонтекстноеМенюДобавитьПодписьИзФайлаРасширеннаяПодсказка + 203 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьЭПИзФайла + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюСохранитьВместеСПодписью + 135 + true + true + + true + + + СписокКонтекстноеМенюСохранитьВместеСПодписьюРасширеннаяПодсказка + 204 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьВместеСПодписью + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Контекстное меню группа команд электронная подпись</value> + + + СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьРасширеннаяПодсказка + 358 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюГруппаКомандШифрование + 136 + + СписокКонтекстноеМенюЗашифровать + 137 + true + true + + true + + + СписокКонтекстноеМенюЗашифроватьРасширеннаяПодсказка + 206 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Зашифровать + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюРасшифровать + 138 + true + true + + true + + + СписокКонтекстноеМенюРасшифроватьРасширеннаяПодсказка + 207 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Расшифровать + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Шифрование</value> + + + ru + Форма группа шифрование + + + СписокКонтекстноеМенюГруппаКомандШифрованиеРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Электронная подпись и шифрование</value> + + + СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрованиеРасширеннаяПодсказка + 200 + true + true + + true + + Label + true + true + + Left + + + Popup + + + CommonPicture.ПодписанЗашифрованЗаголовок + + Auto + + + + СписокКонтекстноеМенюГруппаКомандДополнительные + 308 + Low + + СписокКонтекстноеМенюСкопировать + 244 + true + true + + true + + + СписокКонтекстноеМенюСкопироватьРасширеннаяПодсказка + 245 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюУстановитьПометкуУдаления + 246 + true + true + + true + + + СписокКонтекстноеМенюУстановитьПометкуУдаленияРасширеннаяПодсказка + 247 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюУдалить + 444 + true + true + + true + + + СписокКонтекстноеМенюУдалитьРасширеннаяПодсказка + 445 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Удалить + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюСохранитьКак + 72 + true + true + + true + + false + + СписокКонтекстноеМенюСохранитьКакРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюОсвободить + 69 + + <key>ru</key> + <value>Отменить редактирование</value> + + true + true + + true + + false + + СписокКонтекстноеМенюОсвободитьРасширеннаяПодсказка + 194 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Освободить + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюОбновитьИзФайлаНаДиске + 91 + true + true + + true + + false + + СписокКонтекстноеМенюОбновитьИзФайлаНаДискеРасширеннаяПодсказка + 196 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьИзФайлаНаДиске + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюОткрытьКаталогФайла + 71 + true + true + + true + + false + + СписокКонтекстноеМенюОткрытьКаталогФайлаРасширеннаяПодсказка + 192 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьКаталогФайла + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Контекстное меню группа команд дополнительные</value> + + + СписокКонтекстноеМенюГруппаКомандДополнительныеРасширеннаяПодсказка + 309 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюГруппаИмпорт + 343 + + СписокКонтекстноеМенюИмпортФайлов + 345 + true + true + + true + + false + + СписокКонтекстноеМенюИмпортФайловРасширеннаяПодсказка + 346 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИмпортФайлов + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Контекстное меню группа импорт</value> + + + СписокКонтекстноеМенюГруппаИмпортРасширеннаяПодсказка + 344 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюГруппаСтандартныхКоманд + 95 + VeryLow + true + true + + true + + + <key>ru</key> + <value>Контекстное меню группа стандартных команд</value> + + + СписокКонтекстноеМенюГруппаСтандартныхКомандРасширеннаяПодсказка + 186 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + true + true + + true + + + Tree + true + true + true + true + 6 + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + Style.BorderColor + + None + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + true + + ГруппаПользовательскихНастроек + +
    + true + true + + true + + + <key>ru</key> + <value>Файлы</value> + + 55 + + ГруппаФайлыИПоискРасширеннаяПодсказка + 397 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + +
    + + АдресДанныхФайла + 385 + true + + true + + + + АдресДанныхФайла + + + None + + АдресДанныхФайлаРасширеннаяПодсказка + 387 + true + true + + true + + Label + true + true + + Left + + + + АдресДанныхФайлаКонтекстноеМеню + 386 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + true + true + true + true + AutoSize + + ru + Выберите файл для предварительного просмотра + + + + true + true + + true + + + <key>ru</key> + <value>Папки и файлы</value> + + + ГруппаПапкиИФайлыРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + +
    + true + true + + true + + + <key>ru</key> + <value>Папки и файлы</value> + + + ГруппаПапкиИФайлыОбщаяРасширеннаяПодсказка + 407 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + +
    + + ФормаКоманднаяПанель + -1 + + ФормаПодменюСоздать + 228 + VeryHigh + + ФормаСоздатьИзФайла + 87 + + <key>ru</key> + <value>Файл с диска...</value> + + true + true + + true + + false + + ФормаСоздатьИзФайлаРасширеннаяПодсказка + 148 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьФайл + Auto + true + true + UserCmds + Auto + + + ФормаСоздатьИзШаблона + 230 + true + true + + true + + + ФормаСоздатьИзШаблонаРасширеннаяПодсказка + 231 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьФайлПоШаблону + Auto + true + true + UserCmds + Auto + + + ФормаСоздатьСоСканера + 232 + true + true + + true + + + ФормаСоздатьСоСканераРасширеннаяПодсказка + 233 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьФайлСоСканера + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавить</value> + + + ФормаПодменюСоздатьРасширеннаяПодсказка + 229 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.CreateListItem + + Auto + + + + ФормаГруппаИмпорт + 436 + Usual + + ФормаИмпортФайлов + 347 + High + true + true + + true + + false + + ФормаИмпортФайловРасширеннаяПодсказка + 348 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИмпортФайлов + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаИмпортПапки + 377 + High + true + true + + true + + + ФормаИмпортПапкиРасширеннаяПодсказка + 378 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИмпортПапки + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Импорт</value> + + + ФормаГруппаИмпортРасширеннаяПодсказка + 437 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаСоздатьПапку + 86 + VeryLow + + <key>ru</key> + <value>Создать папку</value> + + true + true + + true + + false + + ФормаСоздатьПапкуРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьПапку + Picture + true + true + UserCmds + + StdPicture.CreateFolder + + Auto + + + ФормаИзменить + 238 + VeryHigh + + <key>ru</key> + <value>Открыть карточку</value> + + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 239 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Change + Auto + true + true + UserCmds + AdditionalInContextMenu + + + ФормаПеренестиВПапку + 84 + Usual + true + true + + true + + false + + ФормаПеренестиВПапкуРасширеннаяПодсказка + 159 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПеренестиВПапку + Auto + true + true + UserCmds + AdditionalInContextMenu + InAdditionalSubmenu + + + ФормаГруппаКомандОсновные + 302 + Usual + + ФормаОткрыть + 73 + true + true + + true + + false + + ФормаОткрытьРасширеннаяПодсказка + 151 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьФайл + true + true + UserCmds + AdditionalInContextMenu + + + ФормаЗанять + 77 + true + true + + true + + false + + ФормаЗанятьРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Занять + Auto + true + true + UserCmds + AdditionalInContextMenu + InAdditionalSubmenu + + + ФормаРедактировать + 75 + true + true + + true + + false + + ФормаРедактироватьРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Редактировать + true + true + UserCmds + Auto + + + ФормаСохранитьИзменения + 79 + true + true + + false + + ФормаСохранитьИзмененияРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьИзменения + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаЗакончитьРедактирование + 76 + true + true + + true + + false + + ФормаЗакончитьРедактированиеРасширеннаяПодсказка + 153 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗакончитьРедактирование + Auto + true + true + UserCmds + Auto + + + Печать + 383 + + <key>ru</key> + <value>Печать</value> + + true + true + + true + + + ПечатьРасширеннаяПодсказка + 384 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Печать + Auto + true + true + UserCmds + Auto + + + Отправить + 379 + true + true + + true + + + ОтправитьРасширеннаяПодсказка + 380 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отправить + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма группа команд основные</value> + + + ФормаГруппаКомандОсновныеРасширеннаяПодсказка + 303 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаГлобальныеКоманды + 323 + Usual + true + true + + true + + + <key>ru</key> + <value>Глобальные команды</value> + + None + + ФормаГлобальныеКомандыРасширеннаяПодсказка + 324 + true + true + + true + + Label + true + true + + Left + + + + FormCommandPanelGlobalCommands + + + + ФормаГруппаКомандЭлектроннаяПодписьИШифрование + 129 + VeryLow + + ФормаГруппаКомандЭлектроннаяПодпись + 355 + + ФормаПодписать + 120 + true + true + + true + + + ФормаПодписатьExtendedTooltip + 163 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подписать + Auto + true + true + UserCmds + Auto + + + ФормаДобавитьПодписьИзФайла + 127 + true + true + + true + + + ФормаДобавитьПодписьИзФайлаРасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьЭПИзФайла + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьВместеСПодписью + 128 + true + true + + true + + + ФормаСохранитьВместеСПодписьюРасширеннаяПодсказка + 165 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьВместеСПодписью + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма группа команд электронная подпись</value> + + + ФормаГруппаКомандЭлектроннаяПодписьРасширеннаяПодсказка + 356 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаГруппаКомандШифрование + 124 + + ФормаЗашифровать + 123 + true + true + + true + + + ФормаЗашифроватьExtendedTooltip + 167 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Зашифровать + Auto + true + true + UserCmds + Auto + + + ФормаРасшифровать + 125 + true + true + + true + + + ФормаРасшифроватьExtendedTooltip + 168 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Расшифровать + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Шифрование</value> + + + ФормаГруппаКомандШифрованиеРасширеннаяПодсказка + 166 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Электронная подпись и шифрование</value> + + + ru + Команды электронной подписи и шифрования + + + ФормаГруппаКомандЭлектроннаяПодписьИШифрованиеРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + Popup + + + CommonPicture.ПодписанЗашифрованЗаголовок + + Picture + + + + ФормаГруппаКомандДополнительные + 434 + VeryLow + true + true + + true + + + <key>ru</key> + <value>Форма группа команд дополнительные</value> + + + ФормаГруппаКомандДополнительныеРасширеннаяПодсказка + 435 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаГруппаКомандПоиска + 321 + Low + + ФормаНайти + 317 + true + + true + + + ФормаНайтиРасширеннаяПодсказка + 318 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ФормаОтменитьПоиск + 319 + true + + true + + + ФормаОтменитьПоискРасширеннаяПодсказка + 320 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды поиска</value> + + None + + ФормаГруппаКомандПоискаРасширеннаяПодсказка + 322 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаГруппаДополнительно + 315 + Low + + ФормаСкопировать + 236 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 237 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьКак + 81 + true + true + + true + + false + + ФормаСохранитьКакРасширеннаяПодсказка + 158 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОсвободить + 78 + + <key>ru</key> + <value>Отменить редактирование</value> + + true + true + + true + + false + + ФормаОсвободитьРасширеннаяПодсказка + 156 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Освободить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОбновитьИзФайлаНаДиске + 90 + true + true + + true + + false + + ФормаОбновитьИзФайлаНаДискеРасширеннаяПодсказка + 160 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьИзФайлаНаДиске + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОткрытьКаталогФайла + 80 + true + true + + true + + false + + ФормаОткрытьКаталогФайлаРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьКаталогФайла + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + Сравнить + 428 + true + true + + true + + + СравнитьРасширеннаяПодсказка + 429 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Сравнить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаГруппаУдаление + 438 + + ФормаУстановитьПометкуУдаления + 240 + true + true + + true + + + ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка + 241 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ФормаУдалить + 440 + true + true + + true + + + ФормаУдалитьРасширеннаяПодсказка + 441 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Удалить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма группа удаление</value> + + + ФормаГруппаУдалениеРасширеннаяПодсказка + 439 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + ru + Дополнительные команды + + None + + ФормаГруппаДополнительноРасширеннаяПодсказка + 316 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ФормаГруппаНастройки + 430 + VeryLow + + ФормаОбновитьСписок + 142 + true + true + + true + + + ФормаОбновитьСписокExtendedTooltip + 171 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаИспользоватьИерархию + 99 + true + true + + true + + false + + ФормаИспользоватьИерархиюРасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИспользоватьИерархию + Picture + true + true + UserCmds + true + + CommonPicture.ИерархическийСписок + + Auto + InAdditionalSubmenu + + + ФормаГруппаНастройкаСписка + 329 + + ФормаНастройкаСписка + 331 + true + true + + true + + + ФормаНастройкаСпискаРасширеннаяПодсказка + 332 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.ListSettings + Auto + true + true + UserCmds + Auto + + + ФормаЗагрузитьНастройкиДинамическогоСписка + 333 + true + true + + true + + + ФормаЗагрузитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 334 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.LoadDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьНастройкиДинамическогоСписка + 335 + true + true + + true + + + ФормаСохранитьНастройкиДинамическогоСпискаРасширеннаяПодсказка + 336 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.SaveDynamicListSettings + Auto + true + true + UserCmds + Auto + + + ФормаСтандартныеНастройкиДинамическогоСписка + 337 + true + true + + true + + + ФормаСтандартныеНастройкиДинамическогоСпискаРасширеннаяПодсказка + 338 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.DynamicListStandardSettings + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Настройка списка</value> + + + ФормаГруппаНастройкаСпискаРасширеннаяПодсказка + 330 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаВывестиСписок + 339 + true + true + + true + + + ФормаВывестиСписокРасширеннаяПодсказка + 340 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + + ФормаИзменитьФорму + 341 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 342 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Настройки</value> + + + ФормаГруппаНастройкиРасширеннаяПодсказка + 431 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ГруппаКомандФормы + 381 + Low + true + true + + true + + + <key>ru</key> + <value>Команды формы</value> + + + ГруппаКомандФормыРасширеннаяПодсказка + 382 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + Предпросмотр + 388 + Low + true + true + + true + + + ПредпросмотрРасширеннаяПодсказка + 389 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Предпросмотр + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПоказыватьПомеченныеФайлы + 442 + true + true + + true + + + ПоказыватьПомеченныеФайлыРасширеннаяПодсказка + 443 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьПомеченныеФайлы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПоказыватьСлужебныеФайлы + 432 + VeryLow + true + true + + true + + + ПоказыватьСлужебныеФайлыРасширеннаяПодсказка + 433 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьСлужебныеФайлы + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСправка + 147 + VeryLow + true + true + + true + + + ФормаСправкаExtendedTooltip + 172 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + ChoiceProcessing + ОбработкаВыбора + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + Create + Delete + Refresh + Use + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.Автор + + + Список.ВладелецФайла + + + Список.ДатаИзменения + + + Список.Зашифрован + + + Список.Кодировка + + + Список.ПодписанЭП + + + Список.Расширение + + + Список.Редактирует + + + Список.Служебный + + + Список.ФайлРедактируетТекущийПользователь + + + Список.ФайлРедактируется + + + Список.ХранитьВерсии + +
    true
    + + ВЫБРАТЬ + Файлы.Редактирует, + Файлы.ДатаСоздания, + Файлы.УдалитьТекущаяВерсияНомерВерсии, + ВЫРАЗИТЬ(Файлы.Размер / 1024 КАК ЧИСЛО(10, 0)) КАК ТекущаяВерсияРазмер, + Файлы.Автор, + Файлы.Расширение КАК Расширение, + ВЫБОР + КОГДА Файлы.ПометкаУдаления = ИСТИНА + ТОГДА Файлы.ИндексКартинки + 1 + ИНАЧЕ Файлы.ИндексКартинки + КОНЕЦ КАК ИндексКартинки, + Файлы.Наименование, + ПОДСТРОКА(Файлы.Описание, 0, 140) КАК Описание, + Файлы.Ссылка, + Файлы.ПометкаУдаления, + Файлы.ХранитьВерсии, + Файлы.ВладелецФайла, + Файлы.Изменил КАК Отредактировал, + ВЫБОР + КОГДА Файлы.Редактирует = &ТекущийПользователь + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ФайлРедактируетТекущийПользователь, + ВЫБОР + КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ФайлРедактируется, + Файлы.ПодписанЭП КАК ПодписанЭП, + Файлы.Зашифрован КАК Зашифрован, + ВЫБОР + КОГДА Файлы.ПодписанЭП + И Файлы.Зашифрован + ТОГДА 2 + КОГДА Файлы.Зашифрован + ТОГДА 1 + КОГДА Файлы.ПодписанЭП + ТОГДА 0 + ИНАЧЕ -1 + КОНЕЦ КАК НомерКартинкиПодписанЗашифрован, + ДОБАВИТЬКДАТЕ(Файлы.ДатаМодификацииУниверсальная, СЕКУНДА, &СекундДоМестногоВремени) КАК ДатаИзменения, + Файлы.Служебный КАК Служебный, + КодировкиФайлов.Кодировка +ИЗ + Справочник.Файлы КАК Файлы + ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КодировкиФайлов КАК КодировкиФайлов + ПО Файлы.ТекущаяВерсия = КодировкиФайлов.Файл +ГДЕ + (Файлы.ВладелецФайла = &Владелец + ИЛИ НЕ &ИспользоватьИерархию + И Файлы.ВладелецФайла ССЫЛКА Справочник.ПапкиФайлов) + Catalog.Файлы + true + true + true + true + true + +
    + + Папки + + <key>ru</key> + <value>Папки</value> + + 3 + + DynamicList + + + true + + + true + + + + Папки.ДатаСинхронизации + + + + Папки.Description + + + Папки.Href + + + Папки.Ref + + + Папки.ИндексКартинки + + + Папки.ПапкаСинхронизируется + + + Папки.Синхронизирован + + + Папки.УчетнаяЗапись + + + Папки.УчетнаяЗаписьDescription + + + Папки.УчетнаяЗаписьСервис + + + ВЫБРАТЬ + ПапкиФайлов.Ссылка, + ПапкиФайлов.ПометкаУдаления, + ПапкиФайлов.Предопределенный, + ПапкиФайлов.Родитель, + ПапкиФайлов.Код, + ПапкиФайлов.Наименование, + ПапкиФайлов.Описание, + ПапкиФайлов.Ответственный, + ПапкиФайлов.ДатаСоздания, + ПапкиФайлов.Представление, + ВЫБОР + КОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.Файл = ПапкиФайлов.Ссылка + ТОГДА 2 + КОГДА ПапкиФайлов.ПометкаУдаления = ИСТИНА + ТОГДА 1 + ИНАЧЕ 0 + КОНЕЦ КАК ИндексКартинки, + ВЫБОР + КОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.Файл = ПапкиФайлов.Ссылка + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ПапкаСинхронизируется, + СтатусыСинхронизацииФайловСОблачнымСервисом.Href, + СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись.Наименование, + СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись.Сервис, + СтатусыСинхронизацииФайловСОблачнымСервисом.ДатаСинхронизацииНачало, + СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись КАК УчетнаяЗапись, + СтатусыСинхронизацииФайловСОблачнымСервисом.Синхронизирован +ИЗ + Справочник.ПапкиФайлов КАК ПапкиФайлов + ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыСинхронизацииФайловСОблачнымСервисом КАК СтатусыСинхронизацииФайловСОблачнымСервисом + ПО ПапкиФайлов.Ссылка = СтатусыСинхронизацииФайловСОблачнымСервисом.Файл + Catalog.ПапкиФайлов + true + true + true + true + true + + + + СтрокаПоиска + 2 + + String + + + + true + + + true + + + + ПапкаПриОткрытии + 4 + + CatalogRef.ПапкиФайлов + + + true + + + true + + + + ИспользоватьИерархию + 5 + + Boolean + + + true + + + true + + + ИспользоватьИерархию + + + + ПредыдущийАдресФайла + 6 + + String + + + + true + + + true + + + + ИзменениеПапок + 7 + + Boolean + + + true + + + true + + + + ИзменениеФайлов + 8 + + Boolean + + + true + + + true + + + + ДобавлениеФайлов + 9 + + Boolean + + + true + + + true + + + + ПометкаУдаленияФайлов + 10 + + Boolean + + + true + + + true + + + + ТекущаяПапка + 11 + + + true + + + true + + + + АдресДанныхФайла + + <key>ru</key> + <value>Адрес данных файла</value> + + 12 + + String + + + + true + + + true + + + + Предпросмотр + 13 + + Boolean + + + true + + + true + + + + РасширенияПоддерживающиеПредпросмотр + 14 + + ValueList + + + true + + + true + + + + + + + ТипСправочникаСФайлами + 15 + + + true + + + true + + + + ПараметрыОтправки + 16 + + + true + + + true + + + + ИспользоватьСинхронизациюФайлов + 17 + + Boolean + + + true + + + true + + + + ФайлыРедактируютсяВОблачномСервисе + 18 + + Boolean + + + true + + + true + + + + КоличествоЗанятыхФайлов + 19 + + Number + + 10 + + + + true + + + true + + + + ИмпортФайлов + + <key>ru</key> + <value>Загрузить файлы...</value> + + 1 + + ru + Загрузить файлы + + + true + + + + ИмпортФайловВыполнить + + + DontUse + + + ЭкспортПапки + + <key>ru</key> + <value>Сохранить папку...</value> + + 7 + + ru + Экспорт папки + + + true + + + StdPicture.Write + + + + ЭкспортПапкиВыполнить + + + + Папки + + + + ДобавитьФайл + + <key>ru</key> + <value>Из файла на диске ...</value> + + 3 + + ru + Создать файл из файла на диске + + + true + + + + ДобавитьФайл + + + DontUse + + + СоздатьПапку + + <key>ru</key> + <value>Создать новую папку</value> + + 4 + + ru + Создать новую папку (Ins) + + + true + + + StdPicture.CreateFolder + + + + СоздатьПапкуВыполнить + + + DontUse + + + ЗакончитьРедактирование + + <key>ru</key> + <value>Закончить</value> + + 5 + + ru + Сохранить и освободить файл в информационной базе + + + true + + + CommonPicture.ЗакончитьРедактированиеФайла + + + + ЗакончитьРедактирование + + + Text + + Список + + + + Занять + + <key>ru</key> + <value>Занять</value> + + 6 + + ru + Пометить файл как занятый для редактирования + + + true + + + CommonPicture.ЗанятьФайл + + + + Занять + + + TextPicture + + Список + + + + Освободить + + <key>ru</key> + <value>Освободить</value> + + 8 + + ru + Освободить занятый файл + + + true + + + CommonPicture.ОсвободитьФайл + + + + Освободить + + + TextPicture + + Список + + + + ОткрытьКаталогФайла + + <key>ru</key> + <value>Открыть каталог файла</value> + + 9 + + ru + Открыть каталог файла + + + true + + + + ОткрытьКаталогФайла + + + TextPicture + + Список + + + + ОткрытьФайл + + <key>ru</key> + <value>Просмотреть</value> + + 10 + + ru + Открыть файл для просмотра + + + true + + + CommonPicture.ОткрытьВыбранныйФайл + + + + ОткрытьФайлВыполнить + + + TextPicture + + Список + + + + Редактировать + + <key>ru</key> + <value>Редактировать</value> + + 11 + + ru + Занять файл и открыть для редактирования + + + true + + F4 + + CommonPicture.РедактироватьФайл + + + + Редактировать + + + TextPicture + + Список + + + + СохранитьИзменения + + <key>ru</key> + <value>Сохранить изменения</value> + + 12 + + ru + Сохранить измененный файл в информационной базе + + + true + + + CommonPicture.ОпубликоватьФайл + + + + СохранитьИзменения + + + TextPicture + + Список + + + + СохранитьКак + + <key>ru</key> + <value>Сохранить как...</value> + + 13 + + ru + Сохранить файл на диск или другое устройство + + + true + + + CommonPicture.СохранитьФайлКак + + + + СохранитьКак + + + TextPicture + + Список + + + + ИмпортПапки + + <key>ru</key> + <value>Загрузить папку...</value> + + 14 + + ru + Загрузить папку + + + true + + + + ИмпортПапки + + + DontUse + + + ПеренестиВПапку + + <key>ru</key> + <value>Перенести в папку</value> + + 15 + + ru + Перенести в папку + + + true + + + + ПеренестиВПапку + + + + Список + + + + ОбновитьИзФайлаНаДиске + + <key>ru</key> + <value>Обновить из файла на диске...</value> + + 16 + + ru + Обновить из файла на диске + + + true + + + CommonPicture.ОбновитьФайлИзФайлаНаДиске + + + + ОбновитьИзФайлаНаДиске + + + Text + + Список + + + + ИспользоватьИерархию + + <key>ru</key> + <value>Использовать иерархию</value> + + 17 + + ru + Использовать иерархию + + + true + + + + ИспользоватьИерархию + + + DontUse + + + Подписать + + <key>ru</key> + <value>Подписать...</value> + + 18 + + ru + Подписать + + + true + + + CommonPicture.ПодписанЭП + + + + Подписать + + + + Список + + + + Зашифровать + + <key>ru</key> + <value>Зашифровать...</value> + + 19 + + ru + Зашифровать + + + true + + + CommonPicture.Зашифрован + + + + Зашифровать + + + + Список + + + + Расшифровать + + <key>ru</key> + <value>Расшифровать...</value> + + 20 + + ru + Расшифровать + + + true + + + + Расшифровать + + + + Список + + + + ДобавитьЭПИзФайла + + <key>ru</key> + <value>Добавить электронную подпись из файла...</value> + + 22 + + ru + Добавить электронную подпись из файла + + + true + + + + ДобавитьПодписьИзФайла + + + + Список + + + + СохранитьВместеСПодписью + + <key>ru</key> + <value>Сохранить вместе с электронной подписью...</value> + + 23 + + ru + Сохранить вместе с электронной подписью + + + true + + + + СохранитьВместеСПодписью + + + + Список + + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 21 + + ru + Обновить + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + DontUse + + + ДобавитьФайлПоШаблону + + <key>ru</key> + <value>По шаблону...</value> + + 24 + + ru + Добавить файл по шаблону + + + true + + + + ДобавитьФайлПоШаблону + + + DontUse + + + ДобавитьФайлСоСканера + + <key>ru</key> + <value>Со сканера...</value> + + 25 + + ru + Добавить файл со сканера + + + true + + + + ДобавитьФайлСоСканера + + + DontUse + + + Отправить + + <key>ru</key> + <value>Отправить</value> + + 26 + + ru + Отправить + + + true + + + CommonPicture.ОтправитьЭлектронноеПисьмо + + + + Отправить + + + TextPicture + + Список + + + + Печать + + <key>ru</key> + <value>Печать</value> + + 27 + + ru + Печать + + + true + + + StdPicture.Print + + + + Печать + + + TextPicture + + Список + + + + Предпросмотр + + <key>ru</key> + <value>Предпросмотр</value> + + 28 + + ru + Предпросмотр + + + true + + + + Предпросмотр + + + DontUse + + + НастроитьСинхронизацию + + <key>ru</key> + <value>Синхронизация с облаком ...</value> + + 29 + + ru + Настроить синхронизацию + + + true + + + + НастроитьСинхронизацию + + + FunctionalOption.ИспользоватьСинхронизациюФайлов + DontUse + + + Сравнить + + <key>ru</key> + <value>Сравнить файлы...</value> + + 2 + + ru + Сравнить файлы + + + true + + + + Сравнить + + + DontUse + + + ПоказыватьСлужебныеФайлы + + <key>ru</key> + <value>Показывать служебные файлы</value> + + 30 + + ru + Показывать служебные файлы + + + true + + + + ПоказыватьСлужебныеФайлы + + + Auto + + + ПоказыватьПомеченныеФайлы + + <key>ru</key> + <value>Показывать помеченные файлы</value> + + 31 + + ru + Показывать помеченные файлы + + + true + + + + ПоказыватьПомеченныеФайлы + + + Auto + + + Удалить + + <key>ru</key> + <value>Удалить</value> + + 32 + + ru + Удалить данные файла + + + true + + + StdPicture.DeleteDirectly + + + + Удалить + + + + Список + + + + + + + 0 + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Help/ru.html" new file mode 100644 index 00000000..e1fb534d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Help/ru.html" @@ -0,0 +1,71 @@ + +

    В программе существует возможность хранить файлы в информационной базе без привязки к конкретному объекту. Список предназначен для управления этими файлами.

    +

    Работа со списком организована аналогично работе в Проводнике Windows.

    +

    Левая часть списка содержит иерархическую структуру папок. В списке имеются предопределенные папки, которые нельзя удалить, например, папка Шаблоны файлов.

    +

    В правой части располагается список файлов в выбранной папке. С помощью команд контекстного меню или меню Еще в список можно Добавлять новые файлы и папки, Копировать, Изменять или Помечать их на удаление.

    +

    Для работы с реквизитами файла (автор, наименование, описание и т.д.) используется карточка (Еще - Открыть карточку), а для работы с самим файлом (Просмотреть или Редактировать файл) - соответствующее приложение, установленное на компьютере.

    +

    При редактировании файла его предыдущая версия автоматически сохраняется в информационной базе (эта настройка установлена по умолчанию, отменять не рекомендуется, т.к. если файл был испорчен во время редактирования, в этом случае имеется возможность вернуться к одной из его предыдущих версий).

    +

    Зеленым цветом отображаются файлы, занятые Вами для редактирования, а серым цветом - файлы, занятые другими пользователями программы.

    +

    В списке выводится:

    +
    •  - наличие электронной подписи или шифрования. +
    • Наименование - полное наименование файла. Значок рядом с наименованием указывает тип файла. В этой же колонке выводится описание - подробное описание файла. +
    • Автор - пользователь, который добавил файл. +
    • Дата изменения - дата и время добавления версии файла в базу.

    С помощью команды Еще - Дополнительно - Изменить форму можно добавить дополнительные поля, например:

    +
      +
    • Отредактировал - пользователь, который добавил версию файла. +
    • Текущая версия - код текущей версии и т.д.

    Добавление файлов

    +

    Для добавления нового файла в программу:

    +
    • +
      Выберите нужную папку;
      +
    • +
      Нажмите Добавить (клавишу Insert);
      +
    • +
      Выберите способ создания:
      +
      • +
        Файл с диска
        +
        • +
          Для того чтобы прикрепить к объекту или поместить в папку уже имеющийся на компьютере файл, укажите путь к файлу на диске, нажмите кнопку Открыть.
          +
        • +
          После этого программа сохранит файл, автоматически создаст и откроет Карточку файла.
      • +
        По шаблону
        +
        • +
          Выделите шаблон файла в списке выбора, затем нажмите кнопку Выбрать.
          +
        • +
          Программой будет автоматически создана и открыта Карточка файла.
      • +
        Со сканера
        +
        • +
          Вариант создания файла Со сканера становится доступным, если к компьютеру подключен сканер (более подробно см. документацию к сканеру) и на компьютере подключена компонента для работы со сканером. Также необходимо настроить сканирование.
          +
        • +
          Если все условия соблюдены и настройки выполнены, можно получить файл со сканера.
          +
        • +
          Для этого необходимоследовать инструкциям Помощника сканирования.
          +
        • +
          После того как документ отсканирован, выполните команду Принять, после этого файлу автоматически присваивается код и создается карточка файла, которая выводится на экран. В поле Наименование также автоматически проставляется код. Отредактируйте нужные поля, нажмите Записать и закрыть, для того чтобы сохранить карточку файла.

    Шаблоны файлов

    +
    • Программа поставляется с предопределенной папкой Шаблоны файлов. В папке можно разместить файлы, которые будут использоваться при создании новых файлов в качестве шаблона. Например, в эту папку можно поместить файл-заготовку с текстом договора и в дальнейшем использовать его при создании договоров для конкретных контрагентов. +
    • Для того чтобы поместить в папку новый шаблон, откройте папку Шаблоны файлов, нажмите Добавить, с помощью переключателя выберите Файл с диска. Затем выберите нужный файл. +
    • Программа автоматически создает и выводит на просмотр карточку файла. Заполните описание шаблона, поле Папка по умолчанию заполнено - Шаблоны файлов.

    Размещение файлов в папках

    +
    • В списке можно  Создать необходимое количество папок и хранить в них файлы, непривязанные к конкретным объектам программы. +
      • Создать папку можно также с помощью соответствующей команды меню Еще или контекстного меню по правой кнопке мыши. +
      • Заполните необходимые поля.
    • Файлы можно перемещать в различные папки списка с помощью перетаскивания мышью. Также для выделенных файлов можно воспользоваться командой Еще - Перенести в папку. +
    • С помощью мыши можно также перетаскивать папки, подчиняя их друг другу.

    Права доступа к папкам

    +
    • Папкам можно назначать различные права доступа. +
      • Права доступа к папкам файлов настраиваются администратором программы или пользователем, имеющим право на управление правами той или иной папки. +
      • Для настройки прав доступа воспользуйтесь соответствующей командой панели навигации папки.

    Загрузка файлов

    +
    • С помощью команды меню Еще или контекстного меню по правой кнопке мыши Загрузить файлы можно разместить в одной из папок списка файлы с жесткого или сетевого диска. +
    • В открывшемся Проводнике Windows укажите путь к файлу, нажмите Открыть. +
    • Заполните необходимые для загрузки сведения.

    Загрузка папок

    +
    • +
      Для того чтобы поместить папку с жесткого или сетевого диска в одну из папок списка Файлы, выберите папку, выполните команду меню Еще или контекстного меню по правой кнопке мыши Загрузить папку.
      +
    • +
      В открывшемся Проводнике Windows укажите путь к папке, нажмите Выбор папки.
      +
    • +
      Заполните необходимые для загрузки сведения.

    Загрузка файлов и папок с помощью перетаскивания мышью

    +
    • +
      Если нужно загрузить один или несколько файлов (папок), можно использовать перетаскивание мышью - просто перетащите файл (папку) или несколько выбранных файлов (папок) мышкой из Проводника Windows в нужную папку списка файлов программы.
      +
    • +
      Один файл сразу записывается в список файлов, автоматически создается карточка файла.
      +
    • +
      При перетаскивании нескольких файлов, папки или нескольких папок заполните необходимые сведения.

    Выгрузка папок

    +
    • Команда Сохранить папку (расположена в контекстном меню папки) позволяет скопировать выбранную папку с файлами на жесткий диск. При этом копируются только активные версии файлов.

    Управление просмотром списка файлов

    +
    • С помощью команды Еще - Настройки - Использовать иерархию можно изменить вид списка и увидеть все файлы, находящиеся в разных папках, в одном списке.

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Module.bsl" new file mode 100644 index 00000000..dacbf7b3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\260\320\271\320\273\321\213/Module.bsl" @@ -0,0 +1,1611 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УсловноеОформление.Элементы.Очистить(); + РаботаСФайламиСлужебный.ЗаполнитьУсловноеОформлениеСпискаФайлов(Список); + РаботаСФайламиСлужебный.ЗаполнитьУсловноеОформлениеСпискаПапок(Папки); + РаботаСФайламиСлужебный.ДобавитьОтборыВСписокФайлов(Список); + + Элементы.ПоказыватьСлужебныеФайлы.Видимость = Пользователи.ЭтоПолноправныйПользователь(); + + Если Параметры.Свойство("Папка") И Параметры.Папка <> Неопределено Тогда + ПапкаПриОткрытии = Параметры.Папка; + Иначе + ПапкаПриОткрытии = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить("Файлы", "ТекущаяПапка"); + Если ПапкаПриОткрытии = Неопределено Тогда // Попытка загрузки настроек, сохраненных в предыдущих версиях. + ПапкаПриОткрытии = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить("ХранилищеФайлов", "ТекущаяПапка"); + КонецЕсли; + КонецЕсли; + + Если ПапкаПриОткрытии = Справочники.ПапкиФайлов.ПустаяСсылка() Или ПапкаПриОткрытии = Неопределено Тогда + ПапкаПриОткрытии = Справочники.ПапкиФайлов.Шаблоны; + КонецЕсли; + + Если Параметры.Свойство("ПараметрыОтправки") Тогда + ПараметрыОтправки = Параметры.ПараметрыОтправки; + Иначе + ПараметрыОтправки = РаботаСФайламиСлужебный.ПодготовитьСтруктуруПараметровОтправки(); + КонецЕсли; + + Элементы.Папки.ТекущаяСтрока = ПапкаПриОткрытии; + + ТекущийПользователь = Пользователи.АвторизованныйПользователь(); + Если ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда + РаботаСФайламиСлужебный.ИзменитьФормуДляВнешнегоПользователя(ЭтотОбъект, Истина); + КонецЕсли; + + Список.Параметры.УстановитьЗначениеПараметра( + "Владелец", ПапкаПриОткрытии); + Список.Параметры.УстановитьЗначениеПараметра( + "ТекущийПользователь", ТекущийПользователь); + + ПустыеПользователи = Новый Массив; + ПустыеПользователи.Добавить(Неопределено); + ПустыеПользователи.Добавить(Справочники.Пользователи.ПустаяСсылка()); + ПустыеПользователи.Добавить(Справочники.ВнешниеПользователи.ПустаяСсылка()); + ПустыеПользователи.Добавить(Справочники.УчетныеЗаписиСинхронизацииФайлов.ПустаяСсылка()); + Список.Параметры.УстановитьЗначениеПараметра( + "ПустыеПользователи", ПустыеПользователи); + + ПоказыватьКолонкуРазмер = РаботаСФайламиСлужебный.ПолучитьПоказыватьКолонкуРазмер(); + Если ПоказыватьКолонкуРазмер = Ложь Тогда + Элементы.СписокТекущаяВерсияРазмер.Видимость = Ложь; + КонецЕсли; + + ИспользоватьИерархию = Истина; + УстановитьИерархию(ИспользоватьИерархию); + + ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере(); + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, НастройкиПравПапки(Элементы.Папки.ТекущаяСтрока)); + + ИспользоватьПредпросмотр = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( + "Файлы", + "Предпросмотр"); + + Если ИспользоватьПредпросмотр <> Неопределено Тогда + Предпросмотр = ИспользоватьПредпросмотр; + Элементы.АдресДанныхФайла.Видимость = ИспользоватьПредпросмотр; + Элементы.Предпросмотр.Пометка = ИспользоватьПредпросмотр; + КонецЕсли; + + РасширенияПоддерживающиеПредпросмотр = РаботаСФайламиСлужебный.СписокРасширенийДляПредпросмотра(); + + Элементы.ГруппаПояснениеОблачногоСервиса.Видимость = Ложь; + ИспользоватьСинхронизациюФайлов = ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюФайлов"); + + Элементы.ПапкиКонтекстноеМенюНастроитьСинхронизацию.Видимость = ПравоДоступа("Редактирование", Метаданные.Справочники.УчетныеЗаписиСинхронизацииФайлов); + Элементы.Сравнить.Видимость = Не ОбщегоНазначения.ЭтоLinuxКлиент() + И Не ОбщегоНазначения.ЭтоВебКлиент(); + + ДатаУниверсальная = ТекущаяДатаСеанса(); + Список.Параметры.УстановитьЗначениеПараметра("СекундДоМестногоВремени", + МестноеВремя(ДатаУниверсальная, ЧасовойПоясСеанса()) - ДатаУниверсальная); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Папки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто; + Элементы.ФормаПодменюСоздать.Отображение = ОтображениеКнопки.Картинка; + Элементы.ФормаСоздатьСоСканера.Заголовок = НСтр("ru = 'С камеры устройства...'"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Элементы.ФормаСоздатьСоСканера.Видимость = РаботаСФайламиСлужебныйКлиент.ДоступнаКомандаСканировать(); + + УстановитьДоступностьФайловыхКоманд(); + +#Если МобильныйКлиент Тогда + УстановитьЗаголовокДереваПапок(); +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант") + И (ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи") + Или ВРег(Источник) = ВРег("ИспользоватьШифрование")) Тогда + + ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.3, Истина); + Возврат; + ИначеЕсли ИмяСобытия = "Запись_ПапкиФайлов" Тогда + Элементы.Папки.Обновить(); + Элементы.Список.Обновить(); + + Если Источник <> Неопределено Тогда + Элементы.Папки.ТекущаяСтрока = Источник; + КонецЕсли; + ИначеЕсли ИмяСобытия = "Запись_Файл" + И ТипЗнч(Источник) <> Тип("Массив") Тогда + + Элементы.Список.Обновить(); + Если ТипЗнч(Параметр) = Тип("Структура") И Параметр.Свойство("Файл") Тогда + Элементы.Список.ТекущаяСтрока = Параметр.Файл; + ИначеЕсли Источник <> Неопределено Тогда + Элементы.Список.ТекущаяСтрока = Источник; + КонецЕсли; + + КонецЕсли; + + УстановитьДоступностьФайловыхКоманд(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ПапкиФайлов.Форма.ФормаВыбора") Тогда + + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; + КонецЕсли; + + ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки; + РаботаСФайламиСлужебныйКлиент.ПеренестиФайлыВПапку(ВыделенныеСтроки, ВыбранноеЗначение); + + Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл + Оповестить("Запись_Файл", Новый Структура("Событие", "ДанныеФайлаИзменены"), ВыделеннаяСтрока); + КонецЦикла; + + Элементы.Список.Обновить(); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + УстановитьИерархию(Настройки["ИспользоватьИерархию"]); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ДекорацияДатаСинхронизацииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + Если НавигационнаяСсылкаФорматированнойСтроки = "OpenJournal" Тогда + + СтандартнаяОбработка = Ложь; + ПараметрыОтбора = ДанныеОтбораЖурналаРегистрации(Элементы.Папки.ТекущиеДанные.УчетнаяЗапись); + ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ПараметрыОтбора, ЭтотОбъект); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + Если ТипЗнч(ВыбраннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + + КакОткрывать = РаботаСФайламиСлужебныйКлиент.ПерсональныеНастройкиРаботыСФайлами().ДействиеПоДвойномуЩелчкуМыши; + + Если КакОткрывать = "ОткрыватьКарточку" Тогда + ПоказатьЗначение(, ВыбраннаяСтрока); + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ВыбраннаяСтрока, + Неопределено, УникальныйИдентификатор, Неопределено, ПредыдущийАдресФайла); + + ПараметрыОбработчика = Новый Структура; + ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла); + Обработчик = Новый ОписаниеОповещения("СписокВыборПослеВыбораРежимаРедактирования", ЭтотОбъект, ПараметрыОбработчика); + + РаботаСФайламиСлужебныйКлиент.ВыбратьРежимИРедактироватьФайл(Обработчик, ДанныеФайла, Не ДанныеФайла.Служебный); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если Элементы.Папки.ТекущаяСтрока = Неопределено Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + Если Элементы.Папки.ТекущаяСтрока.Пустая() Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + ВладелецФайла = Элементы.Папки.ТекущаяСтрока; + ФайлОснование = Элементы.Список.ТекущаяСтрока; + + Отказ = Истина; + + Если Копирование Тогда + РаботаСФайламиКлиент.СкопироватьФайл(ВладелецФайла, ФайлОснование); + Иначе + РаботаСФайламиСлужебныйКлиент.ДобавитьФайл(Неопределено, ВладелецФайла, ЭтотОбъект, 2, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + Если ФайлыРедактируютсяВОблачномСервисе Тогда + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + ПараметрыПеретаскивания.Значение = Неопределено; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + СтандартнаяОбработка = Ложь; + ПеретаскиваниеВПапку(Неопределено, ПараметрыПеретаскивания.Значение, ПараметрыПеретаскивания.Действие); +КонецПроцедуры + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + Если Элементы.Список.ТекущиеДанные <> Неопределено Тогда + НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Элементы.Список.ТекущиеДанные.Ссылка); + КонецЕсли; + ОбработкаОжиданияУстановитьДоступностьФайловыхКоманд(); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПриИзменении(Элемент) + + Оповестить("Запись_Файл", Новый Структура("Событие", "ДанныеФайлаИзменены"), Элемент.ВыделенныеСтроки); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПапки + +&НаКлиенте +Процедура ПапкиПриАктивизацииСтроки(Элемент) + + ПодключитьОбработчикОжидания("УстановитьДоступностьКомандПриИзмененииПапки", 0.1, Истина); + + Если ИспользоватьСинхронизациюФайлов Тогда + ПодключитьОбработчикОжидания("УстановитьВидимостьПоясненияСинхронизацииФайлов", 0.1, Истина); + КонецЕсли; + +#Если МобильныйКлиент Тогда + ПодключитьОбработчикОжидания("УстановитьЗаголовокДереваПапок", 0.1, Истина); + ТекущийЭлемент = Элементы.Список; +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ПапкиПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ПапкиПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + СтандартнаяОбработка = Ложь; + ПеретаскиваниеВПапку(Строка, ПараметрыПеретаскивания.Значение, ПараметрыПеретаскивания.Действие); +КонецПроцедуры + +&НаКлиенте +Процедура ПапкиПриИзменении(Элемент) + Элементы.Список.Обновить(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ИмпортФайловВыполнить() + + Обработчик = Новый ОписаниеОповещения("ИмпортФайловПослеУстановкиРасширения", ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Обработчик); + +КонецПроцедуры + +&НаКлиенте +Процедура ИмпортПапки(Команда) + + Обработчик = Новый ОписаниеОповещения("ИмпортПапкиПослеУстановкиРасширения", ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Обработчик); + +КонецПроцедуры + +&НаКлиенте +Процедура ЭкспортПапкиВыполнить() + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПапкаЭкспорта", Элементы.Папки.ТекущаяСтрока); + + Обработчик = Новый ОписаниеОповещения("ЭкспортПапкиПослеУстановкиРасширения", ЭтотОбъект, ПараметрыФормы); + РаботаСФайламиСлужебныйКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Обработчик); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьФайл(Команда) + + РаботаСФайламиСлужебныйКлиент.ДобавитьФайлИзФайловойСистемы(Элементы.Папки.ТекущаяСтрока, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьФайлПоШаблону(Команда) + + ПараметрыДобавления = Новый Структура; + ПараметрыДобавления.Вставить("ОбработчикРезультата", Неопределено); + ПараметрыДобавления.Вставить("ВладелецФайла", Элементы.Папки.ТекущаяСтрока); + ПараметрыДобавления.Вставить("ФормаВладелец", ЭтотОбъект); + ПараметрыДобавления.Вставить("НеОткрыватьКарточкуПослеСозданияИзФайла", Истина); + РаботаСФайламиСлужебныйКлиент.ДобавитьНаОсновеШаблона(ПараметрыДобавления); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьФайлСоСканера(Команда) + + ПараметрыДобавления = Новый Структура; + ПараметрыДобавления.Вставить("ОбработчикРезультата", Неопределено); + ПараметрыДобавления.Вставить("ВладелецФайла", Элементы.Папки.ТекущаяСтрока); + ПараметрыДобавления.Вставить("ФормаВладелец", ЭтотОбъект); + ПараметрыДобавления.Вставить("НеОткрыватьКарточкуПослеСозданияИзФайла", Истина); + ПараметрыДобавления.Вставить("ЭтоФайл", Истина); + РаботаСФайламиСлужебныйКлиент.ДобавитьСоСканера(ПараметрыДобавления); + +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьПапкуВыполнить() + + ПараметрыСозданияПапки = Новый Структура("Родитель", Элементы.Папки.ТекущаяСтрока); + ОткрытьФорму("Справочник.ПапкиФайлов.ФормаОбъекта", ПараметрыСозданияПапки, Элементы.Папки); + +КонецПроцедуры + +&НаКлиенте +Процедура ИспользоватьИерархию(Команда) + + ИспользоватьИерархию = Не ИспользоватьИерархию; + Если ИспользоватьИерархию И (Элементы.Список.ТекущиеДанные <> Неопределено) Тогда + + Если Элементы.Список.ТекущиеДанные.Свойство("ВладелецФайла") Тогда + Элементы.Папки.ТекущаяСтрока = Элементы.Список.ТекущиеДанные.ВладелецФайла; + Иначе + Элементы.Папки.ТекущаяСтрока = Неопределено; + КонецЕсли; + + Список.Параметры.УстановитьЗначениеПараметра("Владелец", Элементы.Папки.ТекущаяСтрока); + КонецЕсли; + УстановитьИерархию(ИспользоватьИерархию); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФайлВыполнить() + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(Элементы.Список.ТекущаяСтрока, + Неопределено, УникальныйИдентификатор, Неопределено, ПредыдущийАдресФайла); + РаботаСФайламиКлиент.ОткрытьФайл(ДанныеФайла, Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура Редактировать(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.РедактироватьСОповещением(Обработчик, Элементы.Список.ТекущаяСтрока); + +КонецПроцедуры + +&НаКлиенте +Функция ФайловыеКомандыДоступны() + + Возврат РаботаСФайламиСлужебныйКлиент.ФайловыеКомандыДоступны(Элементы); + +КонецФункции + +&НаКлиенте +Процедура ЗакончитьРедактирование(Команда) + + МассивФайлов = Новый Массив; + Для Каждого ЭлементСписка Из Элементы.Список.ВыделенныеСтроки Цикл + ДанныеСтроки = Элементы.Список.ДанныеСтроки(ЭлементСписка); + + Если НЕ ДанныеСтроки.ФайлРедактируется + ИЛИ НЕ ДанныеСтроки.ФайлРедактируетТекущийПользователь Тогда + Продолжить; + КонецЕсли; + МассивФайлов.Добавить(ДанныеСтроки.Ссылка); + КонецЦикла; + + Если МассивФайлов.Количество() > 1 Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("МассивФайлов", МассивФайлов); + ПараметрыФормы.Вставить("ВозможностьСоздаватьВерсииФайлов", Истина); + ПараметрыФормы.Вставить("Редактирует", ДанныеСтроки.Редактирует); + + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ФормаЗавершениеРедактирования", ПараметрыФормы, ЭтотОбъект); + ИначеЕсли МассивФайлов.Количество() = 1 Тогда + Обработчик = Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект); + ПараметрыОбновленияФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОбновленияФайла(Обработчик, ДанныеСтроки.Ссылка, УникальныйИдентификатор); + РаботаСФайламиСлужебныйКлиент.ЗакончитьРедактированиеСОповещением(ПараметрыОбновленияФайла); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Занять(Команда) + + Если НЕ ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + КоличествоФайлов = Элементы.Список.ВыделенныеСтроки.Количество(); + + Если КоличествоФайлов = 1 Тогда + Обработчик = Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.ЗанятьСОповещением(Обработчик, Элементы.Список.ТекущаяСтрока); + ИначеЕсли КоличествоФайлов > 1 Тогда + МассивФайлов = Новый Массив; + Для Каждого ЭлементСписка Из Элементы.Список.ВыделенныеСтроки Цикл + ДанныеСтроки = Элементы.Список.ДанныеСтроки(ЭлементСписка); + + Если ЗначениеЗаполнено(ДанныеСтроки.Редактирует) Тогда + Продолжить; + КонецЕсли; + МассивФайлов.Добавить(ДанныеСтроки.Ссылка); + КонецЦикла; + Обработчик = Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект, МассивФайлов); + РаботаСФайламиСлужебныйКлиент.ЗанятьСОповещением(Обработчик, МассивФайлов); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Освободить(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + РаботаСФайламиСлужебныйКлиент.ОсвободитьФайлы(Элементы.Список); + УстановитьДоступностьФайловыхКоманд(); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьИзменения(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект); + + РаботаСФайламиСлужебныйКлиент.СохранитьИзмененияФайлаСОповещением( + Обработчик, + Элементы.Список.ТекущаяСтрока, + УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьКаталогФайла(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(Элементы.Список.ТекущаяСтрока, + Неопределено, УникальныйИдентификатор, Неопределено, ПредыдущийАдресФайла); + РаботаСФайламиКлиент.ОткрытьКаталогФайла(ДанныеФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьКак(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляСохранения( + Элементы.Список.ТекущаяСтрока, , УникальныйИдентификатор); + РаботаСФайламиСлужебныйКлиент.СохранитьКак(Неопределено, ДанныеФайла, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайлаНаДиске(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаИРабочийКаталог(Элементы.Список.ТекущаяСтрока); + РаботаСФайламиСлужебныйКлиент.ОбновитьИзФайлаНаДискеСОповещением(Неопределено, ДанныеФайла, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; + + ПараметрыОткрытияФормы = Новый Структура("Ключ, ПараметрыОтправки", Элемент.ТекущаяСтрока, ПараметрыОтправки); + ОткрытьФорму("Справочник.Файлы.Форма.ФормаЭлемента", ПараметрыОткрытияФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура ПеренестиВПапку(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Выбор папки'")); + ПараметрыФормы.Вставить("ТекущаяПапка", Элементы.Папки.ТекущаяСтрока); + ПараметрыФормы.Вставить("РежимВыбора", Истина); + + ОткрытьФорму("Справочник.ПапкиФайлов.ФормаВыбора", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура Подписать(Команда) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПодписатьЗавершение", ЭтотОбъект); + ДополнительныеПараметры = Новый Структура("ОбработкаРезультата", ОписаниеОповещения); + РаботаСФайламиКлиент.ПодписатьФайл(Элементы.Список.ТекущаяСтрока, УникальныйИдентификатор, ДополнительныеПараметры); + +КонецПроцедуры + +&НаКлиенте +Процедура Зашифровать(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + ОбъектСсылка = Элементы.Список.ТекущаяСтрока; + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИКоличествоВерсий(ОбъектСсылка); + + ПараметрыОбработчика = Новый Структура; + ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла); + ПараметрыОбработчика.Вставить("ОбъектСсылка", ОбъектСсылка); + Обработчик = Новый ОписаниеОповещения("ЗашифроватьПослеШифрованияНаКлиенте", ЭтотОбъект, ПараметрыОбработчика); + + РаботаСФайламиСлужебныйКлиент.Зашифровать(Обработчик, ДанныеФайла, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура Расшифровать(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + ОбъектСсылка = Элементы.Список.ТекущаяСтрока; + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИКоличествоВерсий(ОбъектСсылка); + + ПараметрыОбработчика = Новый Структура; + ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла); + ПараметрыОбработчика.Вставить("ОбъектСсылка", ОбъектСсылка); + Обработчик = Новый ОписаниеОповещения("РасшифроватьПослеРасшифровкиНаКлиенте", ЭтотОбъект, ПараметрыОбработчика); + + РаботаСФайламиСлужебныйКлиент.Расшифровать( + Обработчик, + ДанныеФайла.Ссылка, + УникальныйИдентификатор, + ДанныеФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьПодписьИзФайла(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + РаботаСФайламиСлужебныйКлиент.ДобавитьПодписьИзФайла( + Элементы.Список.ТекущаяСтрока, + УникальныйИдентификатор, + Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект)); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьВместеСПодписью(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + РаботаСФайламиСлужебныйКлиент.СохранитьФайлВместеСПодписью( + Элементы.Список.ТекущаяСтрока, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура Обновить(Команда) + + Элементы.Папки.Обновить(); + Элементы.Список.Обновить(); + + ПодключитьОбработчикОжидания("УстановитьДоступностьКомандПриИзмененииПапки", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Отправить(Команда) + + ПриОтправкеФайловПочтой(ПараметрыОтправки, Элементы.Список.ВыделенныеСтроки, Элементы.Папки.ТекущиеДанные.Ссылка , УникальныйИдентификатор); + + РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте( + Элементы.Список.ВыделенныеСтроки, УникальныйИдентификатор, ПараметрыОтправки, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Печать(Команда) + + Если Не ФайловыеКомандыДоступны() Тогда + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Печать файлов возможна только в Windows.'")); + Возврат; + КонецЕсли; + + ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки; + Если ВыделенныеСтроки.Количество() > 0 Тогда + РаботаСФайламиКлиент.НапечататьФайлы(ВыделенныеСтроки, ЭтотОбъект.УникальныйИдентификатор); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Предпросмотр(Команда) + + Предпросмотр = Не Предпросмотр; + Элементы.Предпросмотр.Пометка = Предпросмотр; + УстановитьВидимостьПредпросмотра(Предпросмотр); + СохранитьВариантПредпросмотра("Файлы", Предпросмотр); + + #Если ВебКлиент Тогда + ОбновитьПредпросмотр(); + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьСинхронизацию(Команда) + + НастройкаСинхронизации = ПараметрыНастройкиСинхронизации(Элементы.Папки.ТекущиеДанные.Ссылка); + + Если ЗначениеЗаполнено(НастройкаСинхронизации.УчетнаяЗапись) Тогда + ТипЗначения = Тип("РегистрСведенийКлючЗаписи.НастройкиСинхронизацииФайлов"); + ПараметрыЗаписи = Новый Массив(1); + ПараметрыЗаписи[0] = НастройкаСинхронизации; + + КлючЗаписи = Новый(ТипЗначения, ПараметрыЗаписи); + + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("Ключ", КлючЗаписи); + Иначе + НастройкаСинхронизации.Вставить("ЭтоФайл", Истина); + ПараметрыЗаписи = НастройкаСинхронизации; + КонецЕсли; + + ОткрытьФорму("РегистрСведений.НастройкиСинхронизацииФайлов.Форма.ПростаяФормаЗаписиНастройки", ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура Сравнить(Команда) + ЧислоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество(); + + Если ЧислоВыделенныхСтрок = 2 ИЛИ ЧислоВыделенныхСтрок = 1 Тогда + Если ЧислоВыделенныхСтрок = 2 Тогда + Ссылка1 = Элементы.Список.ВыделенныеСтроки[0]; + Ссылка2 = Элементы.Список.ВыделенныеСтроки[1]; + ИначеЕсли ЧислоВыделенныхСтрок = 1 Тогда + Ссылка1 = Элементы.Список.ТекущиеДанные.Ссылка; + Ссылка2 = Элементы.Список.ТекущиеДанные.РодительскаяВерсия; + КонецЕсли; + + Расширение = НРег(Элементы.Список.ТекущиеДанные.Расширение); + + РаботаСФайламиСлужебныйКлиент.СравнитьФайлы(УникальныйИдентификатор, Ссылка1, Ссылка2, Расширение); + + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьСлужебныеФайлы(Команда) + + Элементы.ПоказыватьСлужебныеФайлы.Пометка = + РаботаСФайламиСлужебныйКлиент.ПоказыватьСлужебныеФайлыНажатие(Список); + +КонецПроцедуры + +&НаКлиенте +Процедура Удалить(Команда) + + Если Элементы.Список.ТекущаяСтрока = Неопределено Тогда + Возврат; + КонецЕсли; + + РаботаСФайламиСлужебныйКлиент.УдалитьДанные( + Новый ОписаниеОповещения("ПослеУдаленияДанных", ЭтотОбъект), + Элементы.Список.ТекущиеДанные.Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПомеченныеФайлы(Команда) + + РаботаСФайламиСлужебныйКлиент.ИзменитьОтборПоПометкеУдаления(Список.Отбор, Элементы.ПоказыватьПомеченныеФайлы); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ИмпортФайловПослеУстановкиРасширения(Результат, ПараметрыВыполнения) Экспорт + Если НЕ Результат Тогда + РаботаСФайламиСлужебныйКлиент.ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами(Неопределено); + Возврат; + КонецЕсли; + + ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + ДиалогОткрытияФайла.ПолноеИмяФайла = ""; + ДиалогОткрытияФайла.Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'"); + ДиалогОткрытияФайла.МножественныйВыбор = Истина; + ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите файлы'"); + Если Не ДиалогОткрытияФайла.Выбрать() Тогда + Возврат; + КонецЕсли; + + МассивИменФайлов = Новый Массив; + Для Каждого ИмяФайла Из ДиалогОткрытияФайла.ВыбранныеФайлы Цикл + МассивИменФайлов.Добавить(ИмяФайла); + КонецЦикла; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПапкаДляДобавления", Элементы.Папки.ТекущаяСтрока); + ПараметрыФормы.Вставить("МассивИменФайлов", МассивИменФайлов); + + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ФормаИмпортаФайлов", ПараметрыФормы); +КонецПроцедуры + +&НаКлиенте +Процедура ИмпортПапкиПослеУстановкиРасширения(Результат, ПараметрыВыполнения) Экспорт + + Если НЕ Результат Тогда + РаботаСФайламиСлужебныйКлиент.ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами(Неопределено); + Возврат; + КонецЕсли; + + ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); + ДиалогОткрытияФайла.ПолноеИмяФайла = ""; + ДиалогОткрытияФайла.Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'"); + ДиалогОткрытияФайла.МножественныйВыбор = Ложь; + ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите каталог'"); + Если Не ДиалогОткрытияФайла.Выбрать() Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПапкаДляДобавления", Элементы.Папки.ТекущаяСтрока); + ПараметрыФормы.Вставить("КаталогНаДиске", ДиалогОткрытияФайла.Каталог); + + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ФормаИмпортаПапки", ПараметрыФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура ЭкспортПапкиПослеУстановкиРасширения(Результат, ПараметрыФормы) Экспорт + + Если НЕ Результат Тогда + РаботаСФайламиСлужебныйКлиент.ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами(Неопределено); + Возврат; + КонецЕсли; + + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ФормаЭкспортаПапки", ПараметрыФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура ПеретаскиваниеВПапку(ПапкаДляДобавления, ЗначениеПеретаскивания, Действие) + Если ПапкаДляДобавления = Неопределено Тогда + ПапкаДляДобавления = Элементы.Папки.ТекущаяСтрока; + Если ПапкаДляДобавления = Неопределено Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + ТипЗначения = ТипЗнч(ЗначениеПеретаскивания); + Если ТипЗначения = Тип("Файл") Тогда + Если ПапкаДляДобавления.Пустая() Тогда + Возврат; + КонецЕсли; + Если ЗначениеПеретаскивания.ЭтоФайл() Тогда + ПараметрыДобавления = Новый Структура; + ПараметрыДобавления.Вставить("ОбработчикРезультата", Неопределено); + ПараметрыДобавления.Вставить("ПолноеИмяФайла", ЗначениеПеретаскивания.ПолноеИмя); + ПараметрыДобавления.Вставить("ВладелецФайла", ПапкаДляДобавления); + ПараметрыДобавления.Вставить("ФормаВладелец", ЭтотОбъект); + ПараметрыДобавления.Вставить("ИмяСоздаваемогоФайла", Неопределено); + ПараметрыДобавления.Вставить("НеОткрыватьКарточкуПослеСозданияИзФайла", Истина); + РаботаСФайламиСлужебныйКлиент.ДобавитьИзФайловойСистемыСРасширением(ПараметрыДобавления); + Иначе + МассивИменФайлов = Новый Массив; + МассивИменФайлов.Добавить(ЗначениеПеретаскивания.ПолноеИмя); + РаботаСФайламиСлужебныйКлиент.ОткрытьФормуПеретаскиванияИзвне(ПапкаДляДобавления, МассивИменФайлов); + КонецЕсли; + ИначеЕсли ТипЗнч(ЗначениеПеретаскивания) = Тип("Массив") Тогда + ИндексПапки = ЗначениеПеретаскивания.Найти(ПапкаДляДобавления); + Если ИндексПапки <> Неопределено Тогда + ЗначениеПеретаскивания.Удалить(ИндексПапки); + КонецЕсли; + + Если ЗначениеПеретаскивания.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ТипЗначения = ТипЗнч(ЗначениеПеретаскивания[0]); + Если ТипЗначения = Тип("Файл") Тогда + Если ПапкаДляДобавления.Пустая() Тогда + Возврат; + КонецЕсли; + + МассивИменФайлов = Новый Массив; + Для Каждого ФайлПринятый Из ЗначениеПеретаскивания Цикл + МассивИменФайлов.Добавить(ФайлПринятый.ПолноеИмя); + КонецЦикла; + РаботаСФайламиСлужебныйКлиент.ОткрытьФормуПеретаскиванияИзвне(ПапкаДляДобавления, МассивИменФайлов); + + ИначеЕсли ТипЗначения = Тип("СправочникСсылка.Файлы") Тогда + Если ПапкаДляДобавления.Пустая() Тогда + Возврат; + КонецЕсли; + Если Действие = ДействиеПеретаскивания.Копирование Тогда + + РаботаСФайламиСлужебныйВызовСервера.СкопироватьФайлы( + ЗначениеПеретаскивания, + ПапкаДляДобавления); + + Элементы.Папки.Обновить(); + Элементы.Список.Обновить(); + + Если ЗначениеПеретаскивания.Количество() = 1 Тогда + ОповещениеЗаголовок = НСтр("ru = 'Файл скопирован.'"); + ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Файл ""%1"" + |скопирован в папку ""%2""'"), + ЗначениеПеретаскивания[0], + Строка(ПапкаДляДобавления)); + Иначе + ОповещениеЗаголовок = НСтр("ru = 'Файлы скопированы.'"); + ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Файлы (%1 шт.) скопированы в папку ""%2""'"), + ЗначениеПеретаскивания.Количество(), + Строка(ПапкаДляДобавления)); + КонецЕсли; + ПоказатьОповещениеПользователя(ОповещениеЗаголовок, , ОповещениеТекст, БиблиотекаКартинок.Информация32); + Иначе + + ВладелецУстановлен = РаботаСФайламиСлужебныйВызовСервера.УстановитьВладельцаФайла(ЗначениеПеретаскивания, ПапкаДляДобавления); + Если ВладелецУстановлен <> Истина Тогда + Возврат; + КонецЕсли; + + Элементы.Папки.Обновить(); + Элементы.Список.Обновить(); + + Если ЗначениеПеретаскивания.Количество() = 1 Тогда + ОповещениеЗаголовок = НСтр("ru = 'Файл перенесен.'"); + ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Файл ""%1"" + |перенесен в папку ""%2""'"), + Строка(ЗначениеПеретаскивания[0]), + Строка(ПапкаДляДобавления)); + Иначе + ОповещениеЗаголовок = НСтр("ru = 'Файлы перенесены.'"); + ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Файлы (%1 шт.) перенесены в папку ""%2""'"), + Строка(ЗначениеПеретаскивания.Количество()), + Строка(ПапкаДляДобавления)); + КонецЕсли; + ПоказатьОповещениеПользователя(ОповещениеЗаголовок, , ОповещениеТекст, БиблиотекаКартинок.Информация32); + КонецЕсли; + + ИначеЕсли ТипЗначения = Тип("СправочникСсылка.ПапкиФайлов") Тогда + НайденоЗацикливание = Ложь; + РодительСменен = РаботаСФайламиСлужебныйВызовСервера.СменитьРодителяПапок(ЗначениеПеретаскивания, ПапкаДляДобавления, НайденоЗацикливание); + Если РодительСменен <> Истина Тогда + Если НайденоЗацикливание = Истина Тогда + Если ЗначениеПеретаскивания.Количество() = 1 Тогда + ТекстСообщения = НСтр("ru = 'Перемещение невозможно. + |Папка ""%1"" является дочерней для перемещаемой папки ""%2"".'"); + Иначе + ТекстСообщения = НСтр("ru = 'Перемещение невозможно. + |Папка ""%1"" является дочерней для одной из перемещаемых папок.'"); + КонецЕсли; + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ПапкаДляДобавления, ЗначениеПеретаскивания[0]); + ПоказатьПредупреждение(, ТекстСообщения); + КонецЕсли; + Возврат; + КонецЕсли; + + Элементы.Папки.Обновить(); + Элементы.Список.Обновить(); + + Если ЗначениеПеретаскивания.Количество() = 1 Тогда + Элементы.Папки.ТекущаяСтрока = ЗначениеПеретаскивания[0]; + ОповещениеЗаголовок = НСтр("ru = 'Папка перенесена.'"); + ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Папка ""%1"" + |перенесена в папку ""%2""'"), + Строка(ЗначениеПеретаскивания[0]), + Строка(ПапкаДляДобавления)); + Иначе + ОповещениеЗаголовок = НСтр("ru = 'Папки перенесены.'"); + ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Папки (%1 шт.) перенесены в папку ""%2""'"), + Строка(ЗначениеПеретаскивания.Количество()), + Строка(ПапкаДляДобавления)); + КонецЕсли; + ПоказатьОповещениеПользователя(ОповещениеЗаголовок, , ОповещениеТекст, БиблиотекаКартинок.Информация32); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗашифроватьПослеШифрованияНаКлиенте(Результат, ПараметрыВыполнения) Экспорт + Если Не Результат.Успех Тогда + Возврат; + КонецЕсли; + + ИмяРабочегоКаталога = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя(); + + МассивФайловВРабочемКаталогеДляУдаления = Новый Массив; + + ЗашифроватьСервер( + Результат.МассивДанныхДляЗанесенияВБазу, + Результат.МассивОтпечатков, + МассивФайловВРабочемКаталогеДляУдаления, + ИмяРабочегоКаталога, + ПараметрыВыполнения.ОбъектСсылка); + + РаботаСФайламиСлужебныйКлиент.ИнформироватьОШифровании( + МассивФайловВРабочемКаталогеДляУдаления, + ПараметрыВыполнения.ДанныеФайла.Владелец, + ПараметрыВыполнения.ОбъектСсылка); + + УстановитьДоступностьФайловыхКоманд(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеУдаленияДанных(Результат, ДополнительныеПараметры) Экспорт + + Элементы.Список.Обновить(); + +КонецПроцедуры + +&НаСервере +Процедура ЗашифроватьСервер(МассивДанныхДляЗанесенияВБазу, МассивОтпечатков, + МассивФайловВРабочемКаталогеДляУдаления, + ИмяРабочегоКаталога, ОбъектСсылка) + + Зашифровать = Истина; + РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании( + ОбъектСсылка, + Зашифровать, + МассивДанныхДляЗанесенияВБазу, + Неопределено, // УникальныйИдентификатор + ИмяРабочегоКаталога, + МассивФайловВРабочемКаталогеДляУдаления, + МассивОтпечатков); + +КонецПроцедуры + +&НаКлиенте +Процедура РасшифроватьПослеРасшифровкиНаКлиенте(Результат, ПараметрыВыполнения) Экспорт + + Если Результат = Ложь Или Не Результат.Успех Тогда + Возврат; + КонецЕсли; + + ИмяРабочегоКаталога = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя(); + + РасшифроватьСервер( + Результат.МассивДанныхДляЗанесенияВБазу, + ИмяРабочегоКаталога, + ПараметрыВыполнения.ОбъектСсылка); + + РаботаСФайламиСлужебныйКлиент.ИнформироватьОРасшифровке( + ПараметрыВыполнения.ДанныеФайла.Владелец, + ПараметрыВыполнения.ОбъектСсылка); + + УстановитьДоступностьФайловыхКоманд(); + +КонецПроцедуры + +&НаСервере +Процедура РасшифроватьСервер(МассивДанныхДляЗанесенияВБазу, + ИмяРабочегоКаталога, ОбъектСсылка) + + Зашифровать = Ложь; + МассивОтпечатков = Новый Массив; + МассивФайловВРабочемКаталогеДляУдаления = Новый Массив; + + РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании( + ОбъектСсылка, + Зашифровать, + МассивДанныхДляЗанесенияВБазу, + Неопределено, // УникальныйИдентификатор + ИмяРабочегоКаталога, + МассивФайловВРабочемКаталогеДляУдаления, + МассивОтпечатков); + +КонецПроцедуры + +&НаКлиенте +Процедура ПодписатьЗавершение(Результат, ПараметрыВыполнения) Экспорт + + УстановитьДоступностьФайловыхКоманд(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьДоступностьКомандПриИзмененииПапки() + + Если Элементы.Папки.ТекущаяСтрока <> ТекущаяПапка Тогда + ТекущаяПапка = Элементы.Папки.ТекущаяСтрока; + ЗаполнитьЗначенияСвойств(ЭтотОбъект, НастройкиПравПапки(Элементы.Папки.ТекущаяСтрока)); + Элементы.ФормаСоздатьПапку.Доступность = ИзменениеПапок; + Элементы.ПапкиКонтекстноеМенюСоздать.Доступность = ИзменениеПапок; + Элементы.ПапкиКонтекстноеМенюСкопировать.Доступность = ИзменениеПапок; + Элементы.ПапкиКонтекстноеМенюУстановитьПометкуУдаления.Доступность = ИзменениеПапок; + Элементы.ПапкиКонтекстноеМенюПеренестиЭлемент.Доступность = ИзменениеПапок; + КонецЕсли; + + Если Элементы.Папки.ТекущаяСтрока = Неопределено Или Элементы.Папки.ТекущаяСтрока.Пустая() Тогда + + Элементы.ФормаПодменюСоздать.Доступность = Ложь; + + Элементы.ФормаСоздатьИзФайла.Доступность = Ложь; + Элементы.ФормаСоздатьИзШаблона.Доступность = Ложь; + Элементы.ФормаСоздатьСоСканера.Доступность = Ложь; + + Элементы.ФормаСкопировать.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюСкопировать.Доступность = Ложь; + + Элементы.ФормаУстановитьПометкуУдаления.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюУстановитьПометкуУдаления.Доступность = Ложь; + + Элементы.СписокКонтекстноеМенюСоздать.Доступность = Ложь; + + Элементы.ФормаИмпортФайлов.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюИмпортФайлов.Доступность = Ложь; + + Элементы.ПапкиКонтекстноеМенюИмпортПапки.Доступность = Ложь; + Иначе + Элементы.ФормаПодменюСоздать.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.ФормаСоздатьИзФайла.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.ФормаСоздатьИзШаблона.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.ФормаСоздатьСоСканера.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюСоздать.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.ФормаСоздатьПапку.Доступность = Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.ФормаИмпортПапки.Доступность = Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.ФормаПеренестиВПапку.Доступность = Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.ФормаОсвободить.Доступность = Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюПеренестиВПапку.Доступность = Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюОсвободить.Доступность = Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.ФормаСкопировать.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.СписокКонтекстноеМенюУстановитьПометкуУдаления.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.ФормаУстановитьПометкуУдаления.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.ФормаСкопировать.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюСкопировать.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.ФормаУстановитьПометкуУдаления.Доступность = ПометкаУдаленияФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюУстановитьПометкуУдаления.Доступность = ПометкаУдаленияФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.ФормаИмпортФайлов.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюИмпортФайлов.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.ПапкиКонтекстноеМенюИмпортПапки.Доступность = ДобавлениеФайлов И Не ФайлыРедактируютсяВОблачномСервисе; + КонецЕсли; + + Если Элементы.Папки.ТекущаяСтрока <> Неопределено Тогда + ПодключитьОбработчикОжидания("ОбработкаОжиданияПапкиПриАктивизацииСтроки", 0.2, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьВидимостьПоясненияСинхронизацииФайлов() + + ФайлыРедактируютсяВОблачномСервисе = Ложь; + + Если Элементы.Папки.ТекущаяСтрока = Неопределено Или Элементы.Папки.ТекущаяСтрока.Пустая() Тогда + + Элементы.ГруппаПояснениеОблачногоСервиса.Видимость = Ложь; + + Иначе + + Элементы.ГруппаПояснениеОблачногоСервиса.Видимость = Элементы.Папки.ТекущиеДанные.ПапкаСинхронизируется; + ФайлыРедактируютсяВОблачномСервисе = Элементы.Папки.ТекущиеДанные.ПапкаСинхронизируется; + + Если Элементы.Папки.ТекущиеДанные.ПапкаСинхронизируется Тогда + + АдресПапкиВОблачномСервисе = РаботаСФайламиСлужебныйКлиентСервер.АдресВОблачномСервисе( + Элементы.Папки.ТекущиеДанные.УчетнаяЗаписьСервис, Элементы.Папки.ТекущиеДанные.Href); + + Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока( + НСтр("ru = 'Работа с файлами ведется в облачном сервисе %2.'"), + АдресПапкиВОблачномСервисе, Элементы.Папки.ТекущиеДанные.УчетнаяЗаписьНаименование); + + СведенияОСинхронизации = СведенияОСинхронизации(Элементы.Папки.ТекущиеДанные.Ссылка); + Если ЗначениеЗаполнено(СведенияОСинхронизации) Тогда + Элементы.ДекорацияКартинкаОшибкаСинхронизации.Видимость = НЕ СведенияОСинхронизации.Синхронизирован; + Элементы.ДекорацияДатаСинхронизации.ОтображениеПодсказки = ?(СведенияОСинхронизации.Синхронизирован, ОтображениеПодсказки.Нет, ОтображениеПодсказки.Кнопка); + Элементы.ДекорацияДатаСинхронизации.Видимость = Истина; + + Элементы.ДекорацияДатаСинхронизации.Заголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока( + НСтр("ru = 'Синхронизировано: %1'"), + Формат(СведенияОСинхронизации.ДатаСинхронизации, "ДЛФ=DD")); + + Иначе + + Элементы.ДекорацияКартинкаОшибкаСинхронизации.Видимость = Ложь; + Элементы.ДекорацияДатаСинхронизации.ОтображениеПодсказки = ОтображениеПодсказки.Нет; + Элементы.ДекорацияДатаСинхронизации.Видимость = Ложь; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗаголовокДереваПапок() + + Элементы.Папки.Заголовок = ?(Элементы.Папки.ТекущиеДанные = Неопределено, "", + Элементы.Папки.ТекущиеДанные.Наименование); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СведенияОСинхронизации(ВладелецФайла) + + Возврат РаботаСФайламиСлужебный.СведенияОСинхронизации(ВладелецФайла); + +КонецФункции + +&НаКлиенте +Процедура ОбработкаОжиданияПапкиПриАктивизацииСтроки() + + Если Элементы.Папки.ТекущаяСтрока <> Список.Параметры.Элементы.Найти("Владелец").Значение Тогда + // Обновляется правый список и доступность команд по настройкам прав. + // Вызов процедуры обработчика ПриАктивизацииСтроки таблицы Список выполняется платформой. + ОбновитьИСохранитьПараметрыСпискаФайлов(); + Иначе + // Вызов процедуры обработчика ПриАктивизацииСтроки таблицы Список выполняется программно. + ОбработкаОжиданияУстановитьДоступностьФайловыхКоманд(); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция НастройкиПравПапки(Папка) + + НастройкиПрав = Новый Структура; + + Если НЕ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + Значение = ЗначениеЗаполнено(Папка); + НастройкиПрав.Вставить("ИзменениеПапок", Истина); + НастройкиПрав.Вставить("ИзменениеФайлов", Значение); + НастройкиПрав.Вставить("ДобавлениеФайлов", Значение); + НастройкиПрав.Вставить("ПометкаУдаленияФайлов", Значение); + Возврат НастройкиПрав; + КонецЕсли; + + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + + НастройкиПрав.Вставить("ИзменениеПапок", + МодульУправлениеДоступом.ЕстьПраво("ИзменениеПапок", Папка)); + + НастройкиПрав.Вставить("ИзменениеФайлов", + МодульУправлениеДоступом.ЕстьПраво("ИзменениеФайлов", Папка)); + + НастройкиПрав.Вставить("ДобавлениеФайлов", + МодульУправлениеДоступом.ЕстьПраво("ДобавлениеФайлов", Папка)); + + НастройкиПрав.Вставить("ПометкаУдаленияФайлов", + МодульУправлениеДоступом.ЕстьПраво("ПометкаУдаленияФайлов", Папка)); + + Возврат НастройкиПрав; + +КонецФункции + +&НаСервереБезКонтекста +Функция ДанныеФайла(Знач ПрисоединенныйФайл, Знач ИдентификаторФормы = Неопределено, Знач ПолучатьСсылкуНаДвоичныеДанные = Истина) + + Возврат РаботаСФайлами.ДанныеФайла(ПрисоединенныйФайл, ИдентификаторФормы, ПолучатьСсылкуНаДвоичныеДанные); + +КонецФункции + +&НаКлиенте +Процедура ОбработкаОжиданияУстановитьДоступностьФайловыхКоманд() + + УстановитьДоступностьФайловыхКоманд(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьДоступностьФайловыхКоманд(Результат = Неопределено, ПараметрыВыполнения = Неопределено) Экспорт + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено + И ТипЗнч(Элементы.Список.ТекущаяСтрока) <> Тип("СтрокаГруппировкиДинамическогоСписка") Тогда + УстановитьДоступностьКоманд(ТекущиеДанные); + Иначе + СделатьКомандыНедоступными(); + КонецЕсли; + ПодключитьОбработчикОжидания("ОбновитьПредпросмотр", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура СделатьКомандыНедоступными() + + Элементы.ФормаЗакончитьРедактирование.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюЗакончитьРедактирование.Доступность = Ложь; + + Элементы.ФормаСохранитьИзменения.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюСохранитьИзменения.Доступность = Ложь; + + Элементы.ФормаОсвободить.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюОсвободить.Доступность = Ложь; + + Элементы.ФормаЗанять.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюЗанять.Доступность = Ложь; + + Элементы.ФормаРедактировать.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюРедактировать.Доступность = Ложь; + + Элементы.ФормаПеренестиВПапку.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюПеренестиВПапку.Доступность = Ложь; + + Элементы.ФормаПодписать.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюПодписать.Доступность = Ложь; + + Элементы.ФормаСохранитьВместеСПодписью.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюСохранитьВместеСПодписью.Доступность = Ложь; + + Элементы.ФормаЗашифровать.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюЗашифровать.Доступность = Ложь; + + Элементы.ФормаРасшифровать.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюРасшифровать.Доступность = Ложь; + + Элементы.ФормаДобавитьПодписьИзФайла.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюДобавитьПодписьИзФайла.Доступность = Ложь; + + Элементы.ФормаОбновитьИзФайлаНаДиске.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюОбновитьИзФайлаНаДиске.Доступность = Ложь; + + Элементы.ФормаСохранитьКак.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюСохранитьКак.Доступность = Ложь; + + Элементы.ФормаОткрытьКаталогФайла.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюОткрытьКаталогФайла.Доступность = Ложь; + + Элементы.ФормаОткрыть.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюОткрыть.Доступность = Ложь; + + Элементы.Печать.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюПечать.Доступность = Ложь; + + Элементы.Отправить.Доступность = Ложь; + + Элементы.ФормаУстановитьПометкуУдаления.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюУстановитьПометкуУдаления.Доступность = Ложь; + + Элементы.ФормаУдалить.Доступность = Ложь; + Элементы.СписокКонтекстноеМенюУдалить.Доступность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьДоступностьКоманд(ДанныеКоманд) + + Служебный = ДанныеКоманд.Служебный; + Зашифрован = ДанныеКоманд.Зашифрован; + ПодписанЭП = ДанныеКоманд.ПодписанЭП; + Редактирует = ДанныеКоманд.Редактирует; + АвторТекущийПользователь = ДанныеКоманд.Автор = ПользователиКлиент.АвторизованныйПользователь(); + РедактируетТекущийПользователь = ДанныеКоманд.ФайлРедактируетТекущийПользователь; + + РедактируетДругой = ЗначениеЗаполнено(Редактирует) И НЕ РедактируетТекущийПользователь; + + Элементы.ФормаЗакончитьРедактирование.Доступность = ИзменениеФайлов И РедактируетТекущийПользователь; + Элементы.СписокКонтекстноеМенюЗакончитьРедактирование.Доступность = ИзменениеФайлов И РедактируетТекущийПользователь; + + Элементы.ФормаСохранитьИзменения.Доступность = ИзменениеФайлов И РедактируетТекущийПользователь; + Элементы.СписокКонтекстноеМенюСохранитьИзменения.Доступность = ИзменениеФайлов И РедактируетТекущийПользователь; + + Элементы.ФормаОсвободить.Доступность = ИзменениеФайлов И ЗначениеЗаполнено(Редактирует) И Не ФайлыРедактируютсяВОблачномСервисе;; + Элементы.СписокКонтекстноеМенюОсвободить.Доступность = ИзменениеФайлов И ЗначениеЗаполнено(Редактирует) И Не ФайлыРедактируютсяВОблачномСервисе;; + + Элементы.ФормаЗанять.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует) И НЕ ПодписанЭП И НЕ Служебный; + Элементы.СписокКонтекстноеМенюЗанять.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует) И НЕ ПодписанЭП И НЕ Служебный; + + Элементы.ФормаРедактировать.Доступность = ИзменениеФайлов И НЕ ПодписанЭП И НЕ РедактируетДругой И НЕ Служебный; + Элементы.СписокКонтекстноеМенюРедактировать.Доступность = ИзменениеФайлов И НЕ ПодписанЭП И НЕ РедактируетДругой И НЕ Служебный; + + Элементы.ФормаПеренестиВПапку.Доступность = ИзменениеФайлов И НЕ ПодписанЭП И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюПеренестиВПапку.Доступность = ИзменениеФайлов И НЕ ПодписанЭП И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.ФормаПодписать.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует); + Элементы.СписокКонтекстноеМенюПодписать.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует); + + Элементы.ФормаСохранитьВместеСПодписью.Доступность = ПодписанЭП; + Элементы.СписокКонтекстноеМенюСохранитьВместеСПодписью.Доступность = ПодписанЭП; + + Элементы.ФормаЗашифровать.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует) И НЕ Зашифрован И НЕ Служебный; + Элементы.СписокКонтекстноеМенюЗашифровать.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует) И НЕ Зашифрован И НЕ Служебный; + + Элементы.ФормаРасшифровать.Доступность = ИзменениеФайлов И Зашифрован; + Элементы.СписокКонтекстноеМенюРасшифровать.Доступность = ИзменениеФайлов И Зашифрован; + + Элементы.ФормаДобавитьПодписьИзФайла.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует); + Элементы.СписокКонтекстноеМенюДобавитьПодписьИзФайла.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует); + + Элементы.ФормаОбновитьИзФайлаНаДиске.Доступность = ИзменениеФайлов И Не ПодписанЭП И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюОбновитьИзФайлаНаДиске.Доступность = ИзменениеФайлов И Не ПодписанЭП И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.ФормаСохранитьКак.Доступность = Истина; + Элементы.СписокКонтекстноеМенюСохранитьКак.Доступность = Истина; + + Элементы.ФормаОткрытьКаталогФайла.Доступность = Истина; + Элементы.СписокКонтекстноеМенюОткрытьКаталогФайла.Доступность = Истина; + + Элементы.ФормаОткрыть.Доступность = Истина; + Элементы.СписокКонтекстноеМенюОткрыть.Доступность = Истина; + + Элементы.Печать.Доступность = Истина; + Элементы.СписокКонтекстноеМенюПечать.Доступность = Истина; + + Элементы.Отправить.Доступность = Истина; + Элементы.СписокКонтекстноеМенюОтправить.Доступность = Истина; + + Элементы.ФормаУстановитьПометкуУдаления.Доступность = ИзменениеФайлов; + Элементы.СписокКонтекстноеМенюУстановитьПометкуУдаления.Доступность = ИзменениеФайлов; + + Элементы.ФормаУдалить.Доступность = ИзменениеФайлов + И АвторТекущийПользователь + И Не ЗначениеЗаполнено(Редактирует) + И Не ФайлыРедактируютсяВОблачномСервисе; + + Элементы.СписокКонтекстноеМенюУдалить.Доступность = ИзменениеФайлов + И АвторТекущийПользователь + И Не ЗначениеЗаполнено(Редактирует) + И Не ФайлыРедактируютсяВОблачномСервисе; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьИерархию(Отметка) + + Если Отметка = Неопределено Тогда + Возврат; + КонецЕсли; + + Элементы.ФормаИспользоватьИерархию.Пометка = Отметка; + Если Отметка = Истина Тогда + Элементы.Папки.Видимость = Истина; + Иначе + Элементы.Папки.Видимость = Ложь; + КонецЕсли; + Список.Параметры.УстановитьЗначениеПараметра("ИспользоватьИерархию", Отметка); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокВыборПослеВыбораРежимаРедактирования(Результат, ПараметрыВыполнения) Экспорт + РезультатОткрыть = "Открыть"; + РезультатРедактировать = "Редактировать"; + + Если Результат = РезультатРедактировать Тогда + Обработчик = Новый ОписаниеОповещения("СписокВыборПослеРедактированияФайла", ЭтотОбъект, ПараметрыВыполнения); + РаботаСФайламиСлужебныйКлиент.РедактироватьФайл(Обработчик, ПараметрыВыполнения.ДанныеФайла); + ИначеЕсли Результат = РезультатОткрыть Тогда + РаботаСФайламиКлиент.ОткрытьФайл(ПараметрыВыполнения.ДанныеФайла, Ложь); + КонецЕсли; +КонецПроцедуры + +// Параметры: +// ПараметрыВыполнения - Структура: +// * ДанныеФайла - см. РаботаСФайлами.ДанныеФайла +// +&НаКлиенте +Процедура СписокВыборПослеРедактированияФайла(Результат, ПараметрыВыполнения) Экспорт + + ОповеститьОбИзменении(ПараметрыВыполнения.ДанныеФайла.Ссылка); + + УстановитьДоступностьФайловыхКоманд(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененияИспользованияПодписанияИлиШифрования() + + ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере(); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере() + + РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СохранитьВариантПредпросмотра(ТипСправочникаСФайлами, Предпросмотр) + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ТипСправочникаСФайлами, "Предпросмотр", Предпросмотр); +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ПриОтправкеФайловПочтой(ПараметрыОтправки, Знач ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор) + РаботаСФайламиПереопределяемый.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор); +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьВидимостьПредпросмотра(ИспользоватьПредпросмотр) + + Элементы.АдресДанныхФайла.Видимость = ИспользоватьПредпросмотр; + Элементы.Предпросмотр.Пометка = ИспользоватьПредпросмотр; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьПредпросмотр() + + Если Не Предпросмотр Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено И РасширенияПоддерживающиеПредпросмотр.НайтиПоЗначению(ТекущиеДанные.Расширение) <> Неопределено Тогда + + Попытка + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ТекущиеДанные.Ссылка, Неопределено, УникальныйИдентификатор,, АдресДанныхФайла); + АдресДанныхФайла = ДанныеФайла.СсылкаНаДвоичныеДанныеФайла; + Исключение + // Если файла не существует, то будет вызвано исключение. + АдресДанныхФайла = Неопределено; + ТекстНевыбраннойКартинки = НСтр("ru = 'Предварительный просмотр недоступен по причине:'") + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + + Иначе + + АдресДанныхФайла = Неопределено; + ТекстНевыбраннойКартинки = НСтр("ru = 'Нет данных для предварительного просмотра'"); + + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(АдресДанныхФайла) Тогда + Элементы.АдресДанныхФайла.ТекстНевыбраннойКартинки = ТекстНевыбраннойКартинки; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПараметрыНастройкиСинхронизации(ВладелецФайла) + + ТипВладельцаФайла = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Тип("СправочникСсылка.Файлы")); + + Отбор = Новый Структура( + "ВладелецФайла, ТипВладельцаФайла, УчетнаяЗапись", + ВладелецФайла, + ТипВладельцаФайла, + Справочники.УчетныеЗаписиСинхронизацииФайлов.ПустаяСсылка()); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | НастройкиСинхронизацииФайлов.ВладелецФайла, + | НастройкиСинхронизацииФайлов.ТипВладельцаФайла, + | НастройкиСинхронизацииФайлов.УчетнаяЗапись + |ИЗ + | РегистрСведений.НастройкиСинхронизацииФайлов КАК НастройкиСинхронизацииФайлов + |ГДЕ + | НастройкиСинхронизацииФайлов.ВладелецФайла = &ВладелецФайла + | И НастройкиСинхронизацииФайлов.ТипВладельцаФайла = &ТипВладельцаФайла"; + + Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайла); + Запрос.УстановитьПараметр("ТипВладельцаФайла", ТипВладельцаФайла); + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Отбор.УчетнаяЗапись = ВыборкаДетальныеЗаписи.УчетнаяЗапись; + КонецЦикла; + КонецЕсли; + + Возврат Отбор; + +КонецФункции + +&НаСервере +Процедура ОбновитьИСохранитьПараметрыСпискаФайлов() + + ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить( + "Файлы", + "ТекущаяПапка", + Элементы.Папки.ТекущаяСтрока); + + Список.Параметры.УстановитьЗначениеПараметра("Владелец", Элементы.Папки.ТекущаяСтрока); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ДанныеОтбораЖурналаРегистрации(УчетнаяЗаписьСервис) + Возврат РаботаСФайламиСлужебный.ДанныеОтбораЖурналаРегистрации(УчетнаяЗаписьСервис); +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..5c0b7a3c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,1650 @@ + + + + <key>ru</key> + <value>Выбор файла</value> + + + ГруппаПользовательскихНастроек + 85 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 86 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + ГруппаСписки + 29 + + Папки + 11 + + <key>ru</key> + <value>Папки</value> + + true + true + + true + + + Папки + + false + None + + КартинкаИНаименованиеПапок + 36 + + ПапкиИндексКартинки + 37 + + <key>ru</key> + <value>Индекс картинки</value> + + true + true + + true + + + + Папки.ИндексКартинки + + + + ПапкиИндексКартинкиРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + + ПапкиИндексКартинкиКонтекстноеМеню + 38 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + true + true + true + true + + CommonPicture.Папки + + + + + ПапкиНаименование + 14 + + <key>ru</key> + <value>Папка</value> + + true + true + + true + + + + Папки.Description + + + + ПапкиНаименованиеРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + ПапкиНаименованиеКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 10 + true + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + <key>ru</key> + <value>Картинка и наименование папок</value> + + + КартинкаИНаименованиеПапокExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ПапкиСсылка + 66 + true + true + + + + Папки.Ref + + + + ПапкиСсылкаРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + + ПапкиСсылкаКонтекстноеМеню + 67 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + None + + ПапкиКоманднаяПанель + 13 + true + true + + true + + Left + true + + + OnActivateRow + ПапкиПриАктивизацииСтроки + + + true + true + + true + + ПапкиСтрокаПоиска + 87 + + ПапкиСтрокаПоискаРасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + + ПапкиСтрокаПоискаКонтекстноеМеню + 88 + true + true + + true + + true + + + true + + + + true + true + + true + + ПапкиСостояниеПросмотра + 90 + + ПапкиСостояниеПросмотраРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + + ПапкиСостояниеПросмотраКонтекстноеМеню + 91 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПапкиУправлениеПоиском + 93 + + ПапкиУправлениеПоискомРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + + ПапкиУправлениеПоискомКонтекстноеМеню + 94 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПапкиExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + + ПапкиКонтекстноеМеню + 12 + true + true + + true + + true + + Tree + true + true + true + 23 + true + true + true + Row + 1 + 1 + AutoUse + Auto + Auto + true + true + true + true + + Style.BorderColor + + None + None + None + SelectionPresentation + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + Список + 2 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + Copy + Delete + SetDeletionMark + + СписокНомерКартинкиПодписанЗашифрован + 41 + VeryLow + + <key>ru</key> + <value>Номер картинки</value> + + true + true + + true + + + + Список.НомерКартинкиПодписанЗашифрован + + + None + + ru + Наличие электронной подписи или шифрования + + + СписокНомерКартинкиПодписанЗашифрованРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + + СписокНомерКартинкиПодписанЗашифрованКонтекстноеМеню + 42 + true + true + + true + + true + + PictureField + Enter + true + + CommonPicture.ПодписанЗашифрованЗаголовок + + Left + true + + 2 + true + true + true + true + + CommonPicture.ПодписанЗашифрованСостояния + + + + + СписокГруппаКартинкаИНаименование + 34 + VeryHigh + + СписокИндексКартинки + 25 + true + true + + true + + + + Список.ИндексКартинки + + + None + + СписокИндексКартинкиРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + + СписокИндексКартинкиКонтекстноеМеню + 26 + true + true + + true + + true + + PictureField + Enter + true + Left + true + Left + + 2 + true + 1 + true + true + true + + CommonPicture.КоллекцияПиктограммФайлов + + + 1 + + + + + СписокНаименование + 5 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + СписокНаименованиеРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + СписокНаименованиеКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + true + Left + true + Left + + 15 + true + true + true + true + true + + Style.BorderColor + + + + + СписокОписание + 31 + true + true + + true + + + + Список.Описание + + + None + + СписокОписаниеРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + + СписокОписаниеКонтекстноеМеню + 32 + true + true + + true + + true + + InputField + Enter + true + true + Left + true + + 15 + true + 1 + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Группа картинка и наименование</value> + + + СписокГруппаКартинкаИНаименованиеРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + СписокАвтор + 21 + Usual + true + true + + true + + + + Список.Автор + + + + СписокАвторРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + СписокАвторКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 15 + true + true + false + true + true + true + + Style.BorderColor + + + + + СписокДатаСоздания + 23 + Usual + true + true + + true + + + + Список.ДатаСоздания + + + + СписокДатаСозданияРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + + СписокДатаСозданияКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 15 + true + true + false + true + true + true + + Style.BorderColor + + + + + СписокСсылка + 39 + VeryLow + true + true + + + + Список.Ref + + + + СписокСсылкаРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 40 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + None + + СписокКоманднаяПанель + 4 + true + true + + true + + Left + true + + + BeforeAddRow + СписокПередНачаломДобавления + + + BeforeDeleteRow + СписокПередУдалением + + + true + true + + true + + СписокСтрокаПоиска + 96 + + СписокСтрокаПоискаРасширеннаяПодсказка + 98 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 97 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 99 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 100 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 102 + + СписокУправлениеПоискомРасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 103 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 3 + + СписокКонтекстноеМенюВыбрать + 71 + true + true + + true + + + СписокКонтекстноеМенюВыбратьРасширеннаяПодсказка + 72 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Choose + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюИзменить + 75 + + <key>ru</key> + <value>Открыть карточку</value> + + true + true + + true + + + СписокКонтекстноеМенюИзменитьРасширеннаяПодсказка + 76 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюНайти + 77 + true + true + + true + + + СписокКонтекстноеМенюНайтиРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюОтменитьПоиск + 79 + true + true + + true + + + СписокКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + true + true + + true + + + HierarchicalList + true + true + 67 + true + true + true + true + Row +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + + Style.BorderColor + + None + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
    + true + true + + true + + + <key>ru</key> + <value>Списки</value> + + + ГруппаСпискиExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + +
    + Top + + ФормаКоманднаяПанель + -1 + + Выбрать + 35 + VeryLow + true + true + + true + + false + + ВыбратьExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + ДобавитьФайл + 64 + VeryHigh + + <key>ru</key> + <value>Добавить файл</value> + + true + true + + true + + + ДобавитьФайлExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьФайл + true + true + UserCmds + Auto + + + Изменить + 33 + VeryLow + + <key>ru</key> + <value>Открыть карточку</value> + + true + true + + true + + false + + ИзменитьExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ИзменитьФорму + 69 + VeryLow + true + true + + true + + + ИзменитьФормуРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + Обновить + 81 + VeryLow + true + true + + true + + + ОбновитьРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Refresh + Auto + true + true + UserCmds + Auto + + + Справка + 30 + VeryLow + true + true + + true + + false + + СправкаExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + Delete + SetDeletionMark + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.ПодписанЭП + +
    true
    + + ВЫБРАТЬ + Файлы.Ссылка, + Файлы.ПометкаУдаления, + Файлы.Предопределенный, + Файлы.Автор, + Файлы.ДатаСоздания, + Файлы.ХранитьВерсии, + Файлы.Редактирует, + Файлы.ТекущаяВерсия, + Файлы.ИндексКартинки, + Файлы.Описание, + Файлы.Наименование, + Файлы.ВладелецФайла, + Файлы.ПодписанЭП, + Файлы.Зашифрован, + ВЫБОР + КОГДА Файлы.ПодписанЭП + И Файлы.Зашифрован + ТОГДА 2 + КОГДА Файлы.Зашифрован + ТОГДА 1 + КОГДА Файлы.ПодписанЭП + ТОГДА 0 + ИНАЧЕ -1 + КОНЕЦ КАК НомерКартинкиПодписанЗашифрован, + Файлы.Расширение +ИЗ + Справочник.Файлы КАК Файлы +ГДЕ + Файлы.ВладелецФайла = &Владелец + И Файлы.ПометкаУдаления = ЛОЖЬ + Catalog.Файлы + true + true + true + true + +
    + + Папки + + <key>ru</key> + <value>Папки</value> + + 2 + + DynamicList + + + true + + + true + + + Папки.Ref + + + ВЫБРАТЬ + СправочникПапкиФайловПереопределяемый.Ссылка, + СправочникПапкиФайловПереопределяемый.ПометкаУдаления, + СправочникПапкиФайловПереопределяемый.Предопределенный, + СправочникПапкиФайловПереопределяемый.Родитель, + СправочникПапкиФайловПереопределяемый.Код, + СправочникПапкиФайловПереопределяемый.Наименование, + СправочникПапкиФайловПереопределяемый.Описание, + СправочникПапкиФайловПереопределяемый.Ответственный, + СправочникПапкиФайловПереопределяемый.ДатаСоздания, + Выбор + Когда ПометкаУдаления = Истина Тогда 1 + Иначе 0 + Конец как ИндексКартинки +ИЗ + Справочник.ПапкиФайлов КАК СправочникПапкиФайловПереопределяемый + Catalog.ПапкиФайлов + true + true + true + true + true + + + + РежимВыбораШаблона + 3 + + Boolean + + + true + + + true + + + + ДобавитьФайл + + <key>ru</key> + <value>Добавить файл</value> + + 1 + + true + + + StdPicture.CreateListItem + + + + ДобавитьФайл + + + Picture + DontUse + + + ВладелецФайла + + + + ВыборШаблона + + Boolean + + + + ТекущаяСтрока + + + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..72615429 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,26 @@ + +

    Предназначен для выбора шаблона файла. Выбор осуществляется из папки Шаблоны файлов.

    +

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

    +

    Открывается из списков Файлы или Присоединенные файлы по команде Создать - По шаблону.

    +

    Список состоит из двух частей: слева папка Шаблоны файлов, справа - список шаблонов файлов, которые в ней находятся. Список состоит из колонок:

    +
    • +
       - наличие электронной подписи или шифрования;
      +
    • Наименование - формат и имя файла. Также выводится описание файла; +
    • +
      Автор - пользователь, который создал файл;
      +
    • +
      Дата создания - дата и время ввода файла в программу.

    Создание файла из шаблона

    +
    • +
      Выделите нужный шаблон в списке, нажмите Выбрать. Также можно воспользоваться двойным щелчком мыши.
      +
    • +

      Программа автоматически создает и выводит на просмотр карточку файла. Заполните необходимые поля, нажмите Записать и закрыть.

    Добавление шаблона файлов

    +
    • Для того чтобы поместить в папку Шаблоны новый шаблон, нажмите Добавить файл, с помощью переключателя выберите: +
    • Из файла на диске. Затем выберите нужный файл. +
    • Со сканера. Следуйте инструкциям Помощника сканирования. +
    • Программа автоматически создает и выводит на просмотр карточку файла. Заполните описание шаблона, поле Папка по умолчанию заполнено - Шаблоны файлов.

    Просмотр сведений о файле

    +
    • +
      Нажмите Еще - Открыть карточку, для того чтобы просмотреть карточку файла.

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..9561d0d2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,215 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Параметры.ВладелецФайла) Тогда + Список.Параметры.УстановитьЗначениеПараметра( + "Владелец", Параметры.ВладелецФайла); + + Если ТипЗнч(Параметры.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда + Элементы.Папки.ТекущаяСтрока = Параметры.ВладелецФайла; + Элементы.Папки.ВыделенныеСтроки.Очистить(); + Элементы.Папки.ВыделенныеСтроки.Добавить(Элементы.Папки.ТекущаяСтрока); + Иначе + Элементы.Папки.Видимость = Ложь; + КонецЕсли; + Иначе + Если Параметры.ВыборШаблона Тогда + + ОпределитьВозможностьДобавлениеШаблоновФайлов(); + + РежимВыбораШаблона = Параметры.ВыборШаблона; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Папки, "Ссылка", Справочники.ПапкиФайлов.Шаблоны, + ВидСравненияКомпоновкиДанных.ВИерархии, , Истина); + + Элементы.Папки.ТекущаяСтрока = Справочники.ПапкиФайлов.Шаблоны; + Элементы.Папки.ВыделенныеСтроки.Очистить(); + Элементы.Папки.ВыделенныеСтроки.Добавить(Элементы.Папки.ТекущаяСтрока); + КонецЕсли; + + Список.Параметры.УстановитьЗначениеПараметра("Владелец", Элементы.Папки.ТекущаяСтрока); + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.ТекущаяСтрока) Тогда + Элементы.Папки.ТекущаяСтрока = Параметры.ТекущаяСтрока; + КонецЕсли; + + ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере(); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Папки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_Файл" И Параметр.Свойство("ЭтоНовый") И Параметр.ЭтоНовый Тогда + + Если Параметр <> Неопределено Тогда + ВладелецФайла = Неопределено; + Если Параметр.Свойство("Владелец", ВладелецФайла) Тогда + Если ВладелецФайла = Элементы.Папки.ТекущаяСтрока Тогда + Элементы.Список.Обновить(); + + ФайлСозданный = Неопределено; + Если Параметр.Свойство("Файл", ФайлСозданный) Тогда + Элементы.Список.ТекущаяСтрока = ФайлСозданный; + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Элементы.Список.Обновить(); + + КонецЕсли; + + Если ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант") + И ( ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи") + Или ВРег(Источник) = ВРег("ИспользоватьШифрование")) Тогда + + ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.3, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + +#Если МобильныйКлиент Тогда + УстановитьЗаголовокДереваПапок(); +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПапки + +&НаКлиенте +Процедура ПапкиПриАктивизацииСтроки(Элемент) + + ПодключитьОбработчикОжидания("ОбработкаОжидания", 0.2, Истина); + +#Если МобильныйКлиент Тогда + ПодключитьОбработчикОжидания("УстановитьЗаголовокДереваПапок", 0.1, Истина); + ТекущийЭлемент = Элементы.Список; +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + Если Не Копирование Тогда + ДобавитьФайлВПрограмму(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ДобавитьФайл(Команда) + + ДобавитьФайлВПрограмму(); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьФайлВПрограмму() + + Если РежимВыбораШаблона Тогда + + РаботаСФайламиСлужебныйКлиент.ДобавитьФайлИзФайловойСистемы(Элементы.Папки.ТекущаяСтрока, ЭтотОбъект); + + Иначе + + ЗначениеПараметраКД = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Владелец")); + Если ЗначениеПараметраКД = Неопределено Тогда + ВладелецФайла = Неопределено; + Иначе + ВладелецФайла = ЗначениеПараметраКД.Значение; + КонецЕсли; + РаботаСФайламиСлужебныйКлиент.ДобавитьФайл(Неопределено, ВладелецФайла, ЭтотОбъект); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Процедура обновляет список Файлов. +&НаКлиенте +Процедура ОбработкаОжидания() + + Если Элементы.Папки.ТекущаяСтрока <> Неопределено Тогда + Список.Параметры.УстановитьЗначениеПараметра("Владелец", Элементы.Папки.ТекущаяСтрока); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененияИспользованияПодписанияИлиШифрования() + + ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗаголовокДереваПапок() + + Элементы.Папки.Заголовок = ?(Элементы.Папки.ТекущиеДанные = Неопределено, "", + Элементы.Папки.ТекущиеДанные.Наименование); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере() + + РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект,, Истина); + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьВозможностьДобавлениеШаблоновФайлов() + + Перем ЕстьПравоДобавлениеФайлов, МодульУправлениеДоступом; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + ЕстьПравоДобавлениеФайлов = МодульУправлениеДоступом.ЕстьПраво("ДобавлениеФайлов", Справочники.ПапкиФайлов.Шаблоны); + Иначе + ЕстьПравоДобавлениеФайлов = ПравоДоступа("Добавление", Метаданные.Справочники.Файлы) И ПравоДоступа("Чтение", Метаданные.Справочники.ПапкиФайлов); + КонецЕсли; + + Если Не ЕстьПравоДобавлениеФайлов Тогда + Элементы.ДобавитьФайл.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Form.form" new file mode 100644 index 00000000..0c39c444 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Form.form" @@ -0,0 +1,305 @@ + + + + <key>ru</key> + <value>Добавление нового файла</value> + + + РежимСоздания + 2 + + <key>ru</key> + <value>Добавить</value> + + true + true + + true + + + + РежимСоздания + + + Top + + РежимСозданияExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + РежимСозданияКонтекстноеМеню + 3 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + Left + + 1 + + + ru + Файл с диска + + + 2 + + + + + ru + По шаблону + + + 1 + + + + + + ОсновнаяКоманднаяПанель + 1 + + ДобавитьФайл + 4 + + <key>ru</key> + <value>Добавить</value> + + true + true + + true + + false + + ДобавитьФайлРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьФайл + Auto + true + true + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + Auto + + + Отмена + 8 + true + true + + true + + false + + ОтменаExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + + Справка + 9 + true + true + + true + + false + + СправкаExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ОсновнаяКоманднаяПанельExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + Form + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + + РежимСоздания + + <key>ru</key> + <value>Режим создания</value> + + 1 + + Number + + 1 + true + + + + true + + + true + + + + СоздатьФайл + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + Создать файл + + + true + + + + СоздатьФайлВыполнить + + + DontUse + + + ГруппаСоздания + + CatalogRef.ПапкиФайлов + + + + ДоступнаКомандаСканировать + + Boolean + + + + РежимСоздания + + Number + + 1 + true + + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Help/ru.html" new file mode 100644 index 00000000..9ab3ab5a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Help/ru.html" @@ -0,0 +1,11 @@ + +

    Предназначена для выбора способа создания нового файла.

    +

    Выводится по кнопке Insert или команде Добавить контекстного меню по правой кнопке мыши из списка файлов или списка присоединенных файлов.

    +

    Способы создания нового файла

    +

    Выберите с помощью переключателя:

    +
    • Из шаблона -новый файл будет создан на основе выбранного шаблона; +
    • Из файла на диске - новый файл будет создан из существующего на локальном или сетевом диске файла; +
    • Со сканера - предусмотрена возможность создать новый файл, получив графический файл со сканера (этот вариант доступен, если к компьютеру подключен сканер). Для загрузки файлов со сканера необходимо также настроить сканирование.

    Нажмите кнопку Создать для перехода к добавлению файла.

    +

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Module.bsl" new file mode 100644 index 00000000..415b73c0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\276\320\262\320\276\320\263\320\276/Module.bsl" @@ -0,0 +1,33 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + РежимСоздания = Параметры.РежимСоздания; + + Если Параметры.ДоступнаКомандаСканировать Тогда + Если Параметры.ДоступнаКомандаСканировать Тогда + Элементы.РежимСоздания.СписокВыбора.Добавить(3, НСтр("ru = 'Со сканера'")); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СоздатьФайлВыполнить() + Закрыть(РежимСоздания); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Form.form" new file mode 100644 index 00000000..15f4cf0a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Form.form" @@ -0,0 +1,1262 @@ + + + + <key>ru</key> + <value>Загрузка файлов </value> + + + ГруппаФайлы + 19 + + Заголовок + 26 + + НадписьФайлы + 27 + + <key>ru</key> + <value>Файлы</value> + + true + true + + true + + + + НадписьФайлы + + + + НадписьФайлыExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + + НадписьФайлыКонтекстноеМеню + 28 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + ЗаголовокExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ДеревоФайлов + 31 + true + true + + true + + + ДеревоФайлов + + false + None + + КартинкаИНаименование + 40 + + ДеревоФайловПометка + 41 + true + true + + true + + + + ДеревоФайлов.Пометка + + + + OnChange + ДеревоФайловПометкаПриИзменении + + + ДеревоФайловПометкаExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + + ДеревоФайловПометкаКонтекстноеМеню + 42 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ДеревоФайловИндексКартинки + 38 + true + true + + true + + + + ДеревоФайлов.ИндексКартинки + + + + ДеревоФайловИндексКартинкиExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + + ДеревоФайловИндексКартинкиКонтекстноеМеню + 39 + true + true + + true + + true + + PictureField + EnterOnInput + true + Left + true + + true + true + true + true + + CommonPicture.КоллекцияПиктограммФайлов + + + + + ДеревоФайловИмяФайла + 34 + true + true + + true + + + + ДеревоФайлов.ИмяФайла + + + + ДеревоФайловИмяФайлаExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + + ДеревоФайловИмяФайлаКонтекстноеМеню + 35 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + КартинкаИНаименованиеExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + None + + ДеревоФайловКоманднаяПанель + 33 + true + true + + true + + Left + true + + + true + true + + true + + ДеревоФайловСтрокаПоиска + 66 + + ДеревоФайловСтрокаПоискаРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + + ДеревоФайловСтрокаПоискаКонтекстноеМеню + 67 + true + true + + true + + true + + + true + + + + true + true + + true + + ДеревоФайловСостояниеПросмотра + 69 + + ДеревоФайловСостояниеПросмотраРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + + ДеревоФайловСостояниеПросмотраКонтекстноеМеню + 70 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДеревоФайловУправлениеПоиском + 72 + + ДеревоФайловУправлениеПоискомРасширеннаяПодсказка + 74 + true + true + + true + + Label + true + true + + Left + + + + ДеревоФайловУправлениеПоискомКонтекстноеМеню + 73 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДеревоФайловExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + + ДеревоФайловКонтекстноеМеню + 32 + true + true + + true + + true + + Tree + true + 6 + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + None + None + None + + true + true + + true + + + ГруппаФайлыРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ПапкаДляДобавления + 14 + + <key>ru</key> + <value>Папка</value> + + true + true + + true + + + + ПапкаДляДобавления + + + + ПапкаДляДобавленияExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + ПапкаДляДобавленияКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + УдалятьПослеДобавления + 3 + true + true + + true + + + + УдалятьФайлыПослеДобавления + + + Right + + УдалятьПослеДобавленияExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + УдалятьПослеДобавленияКонтекстноеМеню + 10 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + Left + + + + РеквизитыФайлов + 25 + + Описание + 2 + + <key>ru</key> + <value>Описание для создаваемых файлов</value> + + true + true + + true + + + + Комментарий + + + + ОписаниеExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 2 + true + true + true + true + true + true + + Style.BorderColor + + + + + ХранитьВерсии + 21 + true + true + + true + + + + ХранитьВерсии + + + Right + + ХранитьВерсииExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + + ХранитьВерсииКонтекстноеМеню + 22 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + Left + + + true + true + + true + + + РеквизитыФайловExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ГруппаКодировка + 43 + + ДекорацияКодировка + 44 + + <key>ru</key> + <value>Кодировка текстовых файлов:</value> + + true + true + + true + + + ДекорацияКодировкаExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияКодировкаКонтекстноеМеню + 45 + true + true + + true + + true + + Label + true + + Left + + + + ВыбратьКодировку + 46 + true + true + + true + + + ВыбратьКодировкуExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ВыбратьКодировку + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ГруппаКодировкаExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ОсновнаяКоманднаяПанель + 1 + + Добавить + 4 + true + true + + true + + false + + ДобавитьExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗагрузитьФайлы + Auto + true + true + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + Auto + + + Отмена + 20 + true + true + + true + + false + + ОтменаExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + Auto + + true + true + + true + + + ОсновнаяКоманднаяПанельExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + Form + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + ChoiceProcessing + ОбработкаВыбора + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + + Комментарий + + <key>ru</key> + <value>Комментарий</value> + + 3 + + String + + + + true + + + true + + + + УдалятьФайлыПослеДобавления + + <key>ru</key> + <value>Удалять файлы после добавления</value> + + 4 + + Boolean + + + true + + + true + + + + Рекурсивно + 7 + + Boolean + + + true + + + true + + + + ХранитьВерсии + + <key>ru</key> + <value>Хранить версии</value> + + 5 + + Boolean + + + true + + + true + + + + НадписьФайлы + + <key>ru</key> + <value>Надпись файлы</value> + + 8 + + String + + + + true + + + true + + + + СписокИменФайлов + 6 + + ValueList + + + true + + + true + + + + + + + ДеревоФайлов + + <key>ru</key> + <value>Дерево файлов</value> + + 9 + + ValueTree + + + true + + + true + + + ИмяФайла + + <key>ru</key> + <value>Имя файла</value> + + 1 + + String + + + + true + + + true + + + + ПолныйПуть + 2 + + String + + + + true + + + true + + + + ИндексКартинки + + <key>ru</key> + <value>Индекс картинки</value> + + 3 + + Number + + 10 + + + + true + + + true + + + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 4 + + Boolean + + + true + + + true + + + + + ПапкаДляДобавления + + <key>ru</key> + <value>Папка для добавления</value> + + 2 + + CatalogRef.ПапкиФайлов + + + true + + + true + + + + КодировкаПредставление + 10 + + String + + + + true + + + true + + + + КодировкаТекстаФайла + 11 + + String + + + + true + + + true + + + + ЗагрузитьФайлы + + <key>ru</key> + <value>Загрузить файлы</value> + + 1 + + ru + Загрузка файлов + + + true + + + + ЗагрузитьФайлы + + + DontUse + + + ВыбратьКодировку + + <key>ru</key> + <value>Выбрать кодировку</value> + + 2 + + ru + Выбрать кодировку + + + true + + + + ВыбратьКодировку + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..6467611d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,33 @@ + +

    Предназначена для загрузки файлов и папок в список файлов с помощью перетаскивания мышью.

    +

    Загрузка файлов и папок с помощью перетаскивания мышью

    +
    • +
      Если нужно загрузить один или несколько файлов (папок), можно использовать перетаскивание мышью - просто перетащите файл (папку) или несколько выбранных файлов (папок) мышкой из Проводника Windows в нужную папку списка файлов программы.
      +
    • +
      Один файл сразу помещается в список файлов, автоматически создается карточка файла.
      +
    • +
      +
      При перетаскивании нескольких файлов, папки или нескольких папок необходимо заполнить сведения:
      +
      • +
        +
        Файлы, которые перетаскивались мышью для загрузки, выводятся в виде списка. Папки, которые перетаскивались мышью для загрузки, выводятся в виде дерева. При этом можно раскрыть каждую папку и просмотреть файлы, которые в нее входят.
        +
        • +
          +
          С помощью флажков можно указать папки и файлы, которые будут загружены в программу.
      • В поле Папка автоматически проставляется выбранная папка в списке файлов, в которую будет загружены файлы с диска на компьютере. При необходимости можно  выбрать из списка другую папку; +
      • +
        Для экономии места на диске включите флажок Удалять файлы после добавления (по умолчанию выключен);
        +
      • +
        Напишите Описание для создаваемых файлов;
        +
      • +
        Включите флажок, для того чтобы Хранить версии (рекомендуется, по умолчанию флажок включен);
        +
      • +
        Для текстовых файлов можно Выбрать кодировку из списка.
    • +
      Для подтверждения нажмите Загрузить файлы.

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..7ed63a8d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\265\321\200\320\265\321\202\320\260\321\201\320\272\320\270\320\262\320\260\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,232 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ПапкаДляДобавления = Параметры.ПапкаДляДобавления; + + Для Каждого путьФайла Из Параметры.МассивИменФайлов Цикл + СписокИменФайлов.Добавить(путьФайла); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + +#Если ВебКлиент Тогда + ТекстПредупреждения = + НСтр("ru = 'В веб-клиенте импорт файлов недоступен. Используйте команду ""Добавить"" в списке файлов.'"); + ПоказатьПредупреждение(, ТекстПредупреждения); + Отказ = Истина; + Возврат; +#КонецЕсли + + ХранитьВерсии = Истина; + ТолькоКаталоги = Истина; + + Для Каждого ПутьФайла Из СписокИменФайлов Цикл + ЗаполнитьСписокФайлов(ПутьФайла, ДеревоФайлов.ПолучитьЭлементы(), Истина, ТолькоКаталоги); + КонецЦикла; + + Если ТолькоКаталоги Тогда + Заголовок = НСтр("ru = 'Загрузка папок'"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.РаботаСФайлами.Форма.ВыборКодировки") Тогда + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + КодировкаТекстаФайла = ВыбранноеЗначение.Значение; + КодировкаПредставление = ВыбранноеЗначение.Представление; + УстановитьПредставлениеКомандыКодировки(КодировкаПредставление); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоФайлов + +&НаКлиенте +Процедура ДеревоФайловПометкаПриИзменении(Элемент) + ЭлементДанных = ДеревоФайлов.НайтиПоИдентификатору(Элементы.ДеревоФайлов.ТекущаяСтрока); + УстановитьПометку(ЭлементДанных, ЭлементДанных.Пометка); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗагрузитьФайлы() + + ОчиститьСообщения(); + + ПоляНеЗаполнены = Ложь; + + ПсевдоФайловаяСистема = Новый Соответствие; // Соответствие путь к директории - файлы и папки в ней. + + ВыбранныеФайлы = Новый СписокЗначений; + Для Каждого файлВложенный Из ДеревоФайлов.ПолучитьЭлементы() Цикл + Если файлВложенный.Пометка = Истина Тогда + ВыбранныеФайлы.Добавить(файлВложенный.ПолныйПуть); + КонецЕсли; + КонецЦикла; + + Для Каждого ФайлВложенный Из ДеревоФайлов.ПолучитьЭлементы() Цикл + ЗаполнитьФайловуюСистему(ПсевдоФайловаяСистема, ФайлВложенный); + КонецЦикла; + + Если ВыбранныеФайлы.Количество() = 0 Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Нет файлов для добавления.'"), , "ВыбранныеФайлы"); + ПоляНеЗаполнены = Истина; + КонецЕсли; + + Если ПапкаДляДобавления.Пустая() Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Укажите папку.'"), , "ПапкаДляДобавления"); + ПоляНеЗаполнены = Истина; + КонецЕсли; + + Если ПоляНеЗаполнены = Истина Тогда + Возврат; + КонецЕсли; + + ПараметрыВыполнения = РаботаСФайламиСлужебныйКлиент.ПараметрыИмпортаФайлов(); + ПараметрыВыполнения.ОбработчикРезультата = Новый ОписаниеОповещения("ДобавитьВыполнитьПослеИмпорта", ЭтотОбъект); + ПараметрыВыполнения.Владелец = ПапкаДляДобавления; + ПараметрыВыполнения.ВыбранныеФайлы = ВыбранныеФайлы; + ПараметрыВыполнения.Комментарий = Комментарий; + ПараметрыВыполнения.ХранитьВерсии = ХранитьВерсии; + ПараметрыВыполнения.УдалятьФайлыПослеДобавления = УдалятьФайлыПослеДобавления; + ПараметрыВыполнения.Рекурсивно = Истина; + ПараметрыВыполнения.ИдентификаторФормы = УникальныйИдентификатор; + ПараметрыВыполнения.ПсевдоФайловаяСистема = ПсевдоФайловаяСистема; + ПараметрыВыполнения.Кодировка = КодировкаТекстаФайла; + РаботаСФайламиСлужебныйКлиент.ВыполнитьИмпортФайлов(ПараметрыВыполнения); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьКодировку(Команда) + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ТекущаяКодировка", КодировкаТекстаФайла); + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ВыборКодировки", ПараметрыФормы, ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ДобавитьВыполнитьПослеИмпорта(Результат, ПараметрыВыполнения) Экспорт + Закрыть(); + Если Результат <> Неопределено Тогда + Оповестить("Запись_ПапкиФайлов", Новый Структура, Результат.ПапкаДляДобавленияТекущая); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьСписокФайлов(ПутьФайла, Знач ЭлементыДерева, ЭлементВерхнегоУровня, ТолькоКаталоги = Неопределено) + + ФайлПеренесенный = Новый Файл(ПутьФайла); + + НовыйЭлемент = ЭлементыДерева.Добавить(); + НовыйЭлемент.ПолныйПуть = ФайлПеренесенный.ПолноеИмя; + НовыйЭлемент.ИмяФайла = ФайлПеренесенный.Имя; + НовыйЭлемент.Пометка = Истина; + + Если ФайлПеренесенный.ЭтоКаталог() Тогда + НовыйЭлемент.ИндексКартинки = 2; // папка + Иначе + НовыйЭлемент.ИндексКартинки = РаботаСФайламиСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(ФайлПеренесенный.Расширение); + КонецЕсли; + + Если ФайлПеренесенный.ЭтоКаталог() Тогда + + Путь = ФайлПеренесенный.ПолноеИмя + ПолучитьРазделительПути(); + + НайденныеФайлы = НайтиФайлы(Путь, ПолучитьМаскуВсеФайлы()); + + ФайлСортированные = Новый Массив; + + // папки сперва + Для Каждого ФайлВложенный Из НайденныеФайлы Цикл + Если ФайлВложенный.ЭтоКаталог() Тогда + ФайлСортированные.Добавить(ФайлВложенный.ПолноеИмя); + КонецЕсли; + КонецЦикла; + + // потом файлы + Для Каждого ФайлВложенный Из НайденныеФайлы Цикл + Если НЕ ФайлВложенный.ЭтоКаталог() Тогда + ФайлСортированные.Добавить(ФайлВложенный.ПолноеИмя); + КонецЕсли; + КонецЦикла; + + Для Каждого ФайлВложенный Из ФайлСортированные Цикл + ЗаполнитьСписокФайлов(ФайлВложенный, НовыйЭлемент.ПолучитьЭлементы(), Ложь); + КонецЦикла; + + Иначе + + Если ЭлементВерхнегоУровня Тогда + ТолькоКаталоги = Ложь; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьФайловуюСистему(ПсевдоФайловаяСистема, ЭлементДерева) + Если ЭлементДерева.Пометка = Истина Тогда + ДочерниеЭлементы = ЭлементДерева.ПолучитьЭлементы(); + Если ДочерниеЭлементы.Количество() <> 0 Тогда + + ФайлыИПодпапки = Новый Массив; + Для Каждого ФайлВложенный Из ДочерниеЭлементы Цикл + ЗаполнитьФайловуюСистему(ПсевдоФайловаяСистема, ФайлВложенный); + + Если ФайлВложенный.Пометка = Истина Тогда + ФайлыИПодпапки.Добавить(ФайлВложенный.ПолныйПуть); + КонецЕсли; + КонецЦикла; + + ПсевдоФайловаяСистема.Вставить(ЭлементДерева.ПолныйПуть, ФайлыИПодпапки); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +// Рекурсивно ставит пометку всем дочерним элементам. +&НаКлиенте +Процедура УстановитьПометку(ЭлементДерева, Пометка) + ДочерниеЭлементы = ЭлементДерева.ПолучитьЭлементы(); + + Для Каждого ФайлВложенный Из ДочерниеЭлементы Цикл + ФайлВложенный.Пометка = Пометка; + УстановитьПометку(ФайлВложенный, Пометка); + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура УстановитьПредставлениеКомандыКодировки(Представление) + + Команды.ВыбратьКодировку.Заголовок = Представление; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Attributes/\320\237\320\260\320\277\320\272\320\270/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..65337326 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,1250 @@ + + + + <key>ru</key> + <value>Подбор файлов</value> + + + ГруппаПользовательскихНастроек + 61 + High + true + true + + true + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + ГруппаСписки + 29 + + Папки + 11 + + <key>ru</key> + <value>Папки</value> + + true + true + + true + + + Папки + + false + Top + + КартинкаИНаименованиеПапок + 36 + + ПапкиИндексКартинки + 37 + + <key>ru</key> + <value>Индекс картинки</value> + + true + true + + true + + + + Папки.ИндексКартинки + + + + ПапкиИндексКартинкиРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + ПапкиИндексКартинкиКонтекстноеМеню + 38 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + true + true + true + true + + CommonPicture.Папки + + + + + ПапкиНаименование + 14 + + <key>ru</key> + <value>Папка</value> + + true + true + + true + + + + Папки.Description + + + + ПапкиНаименованиеРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + + ПапкиНаименованиеКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + true + true + + true + + + КартинкаИНаименованиеПапокExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ПапкиСсылка + 58 + true + true + + + + Папки.Ref + + + + ПапкиСсылкаРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + + ПапкиСсылкаКонтекстноеМеню + 59 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ПапкиКоманднаяПанель + 13 + true + true + + true + + Left + true + + + OnActivateRow + ПапкиПриАктивизацииСтроки + + + true + true + + true + + ПапкиSearchString + 65 + + ПапкиSearchStringExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + + ПапкиSearchStringContextMenu + 66 + true + true + + true + + true + + + true + + + + true + true + + true + + ПапкиViewStatus + 68 + + ПапкиViewStatusExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + + ПапкиViewStatusContextMenu + 69 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПапкиSearchControl + 71 + + ПапкиSearchControlExtendedTooltip + 73 + true + true + + true + + Label + true + true + + Left + + + + ПапкиSearchControlContextMenu + 72 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПапкиExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + + ПапкиКонтекстноеМеню + 12 + true + true + + true + + true + + Tree + true + true + true + 22 + true + true + true + Row + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + true + + Style.BorderColor + + None + None + None + SelectionPresentation + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + Список + 2 + true + true + + true + + + Список + + true + false + None + + КартинкаИНаименование + 34 + VeryHigh + + СписокИндексКартинки + 25 + true + true + + true + + + + Список.ИндексКартинки + + + None + None + + СписокИндексКартинкиРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + + СписокИндексКартинкиКонтекстноеМеню + 26 + true + true + + true + + true + + PictureField + Enter + true + Left + true + Left + + 2 + true + 1 + true + true + true + + CommonPicture.КоллекцияПиктограммФайлов + + + 1 + + + + + СписокНаименование + 5 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + true + + СписокНаименованиеРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + СписокНаименованиеКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + true + Left + true + Left + + 20 + true + true + true + true + true + + Style.BorderColor + + + + + СписокОписание + 31 + true + true + + true + + + + Список.Описание + + + None + + СписокОписаниеРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + СписокОписаниеКонтекстноеМеню + 32 + true + true + + true + + true + + InputField + Enter + true + true + Left + true + + 15 + true + true + false + true + true + true + + + true + true + + true + + + КартинкаИНаименованиеExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + СписокАвтор + 21 + Usual + true + true + + true + + + + Список.Автор + + + + СписокАвторРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + + СписокАвторКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 14 + true + true + false + true + true + true + + Style.BorderColor + + + + + СписокДатаСоздания + 23 + Usual + true + true + + true + + + + Список.ДатаСоздания + + + + СписокДатаСозданияРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + + СписокДатаСозданияКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 15 + true + true + false + true + true + true + + Style.BorderColor + + + + + СписокСсылка + 41 + VeryLow + true + true + + + + Список.Ref + + + + СписокСсылкаРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + СписокСсылкаКонтекстноеМеню + 42 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + None + + СписокКоманднаяПанель + 4 + true + true + + true + + Left + true + + + ValueChoice + СписокВыборЗначения + + + true + true + + true + + СписокSearchString + 74 + + СписокSearchStringExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 75 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 77 + + СписокViewStatusExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 78 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 80 + + СписокSearchControlExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 81 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 3 + true + true + + true + + + HierarchicalList + true + true + true + 65 + true + true + true + true + Row +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + + Style.BorderColor + + None + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
    + true + true + + true + + 10 + + ГруппаСпискиExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + +
    + + ФормаКоманднаяПанель + -1 + + Выбрать + 39 + true + true + + true + + false + + ВыбратьExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Choose + Auto + true + true + true + UserCmds + Auto + + + Справка + 40 + true + true + + true + + false + + СправкаExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + CancelSearch + Change + Copy + Create + CustomizeForm + Delete + Find + ListSettings + OutputList + Refresh + SetDeletionMark + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
    true
    + + ВЫБРАТЬ + Файлы.Ссылка, + Файлы.ПометкаУдаления, + Файлы.Предопределенный, + Файлы.Наименование, + Файлы.Автор, + Файлы.ДатаСоздания, + Файлы.ХранитьВерсии, + Файлы.Редактирует, + Файлы.ТекущаяВерсия, + Файлы.ИндексКартинки, + Файлы.Описание, + Файлы.ВладелецФайла +ИЗ + Справочник.Файлы КАК Файлы +ГДЕ + Файлы.ВладелецФайла = &Владелец + И Файлы.ПометкаУдаления = Ложь + Catalog.Файлы + true + true + true + true + true + +
    + + Папки + + <key>ru</key> + <value>Папки</value> + + 2 + + DynamicList + + + true + + + true + + + Папки.Ref + + + ВЫБРАТЬ + СправочникПапкиФайловПереопределяемый.Ссылка, + СправочникПапкиФайловПереопределяемый.ПометкаУдаления, + СправочникПапкиФайловПереопределяемый.Предопределенный, + СправочникПапкиФайловПереопределяемый.Родитель, + СправочникПапкиФайловПереопределяемый.Код, + СправочникПапкиФайловПереопределяемый.Наименование, + СправочникПапкиФайловПереопределяемый.Описание, + СправочникПапкиФайловПереопределяемый.Ответственный, + СправочникПапкиФайловПереопределяемый.ДатаСоздания, + Выбор + Когда ПометкаУдаления = Истина Тогда 1 + Иначе 0 + Конец как ИндексКартинки +ИЗ + Справочник.ПапкиФайлов КАК СправочникПапкиФайловПереопределяемый + Catalog.ПапкиФайлов + true + true + true + true + true + + + + ВладелецФайла + + + + ВыборШаблона + + Boolean + + + + + + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..c2fb39b2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,14 @@ + +

    Предназначена для подбора файлов.

    +

    Список состоит из двух частей: слева список папок , справа - список файлов в выбранной папке. Список состоит из колонок:

    +
    • +
      Наименование - имя файла, также приводится описание - подробные сведения о файле;
      +
    • +
      Автор - пользователь, который добавил файл в программу;
      +
    • +
      Дата создания - дата и время добавленя файла в программу.

    Выделите в списке несколько файлов, нажмите Выбрать.

    +

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..4dbd278f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\264\320\261\320\276\321\200\320\260/Module.bsl" @@ -0,0 +1,109 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Параметры.ВладелецФайла) Тогда + Список.Параметры.УстановитьЗначениеПараметра( + "Владелец", Параметры.ВладелецФайла); + + Если ТипЗнч(Параметры.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда + Элементы.Папки.ТекущаяСтрока = Параметры.ВладелецФайла; + Элементы.Папки.ВыделенныеСтроки.Очистить(); + Элементы.Папки.ВыделенныеСтроки.Добавить(Элементы.Папки.ТекущаяСтрока); + Иначе + Элементы.Папки.Видимость = Ложь; + КонецЕсли; + Иначе + Если Параметры.ВыборШаблона Тогда + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Папки, "Ссылка", Справочники.ПапкиФайлов.Шаблоны, + ВидСравненияКомпоновкиДанных.ВИерархии, , Истина); + + Элементы.Папки.ТекущаяСтрока = Справочники.ПапкиФайлов.Шаблоны; + Элементы.Папки.ВыделенныеСтроки.Очистить(); + Элементы.Папки.ВыделенныеСтроки.Добавить(Элементы.Папки.ТекущаяСтрока); + КонецЕсли; + + Список.Параметры.УстановитьЗначениеПараметра("Владелец", Элементы.Папки.ТекущаяСтрока); + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Папки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + +#Если МобильныйКлиент Тогда + УстановитьЗаголовокДереваПапок(); +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПапки + +&НаКлиенте +Процедура ПапкиПриАктивизацииСтроки(Элемент) + + ПодключитьОбработчикОжидания("ОбработкаОжидания", 0.2, Истина); + +#Если МобильныйКлиент Тогда + ПодключитьОбработчикОжидания("УстановитьЗаголовокДереваПапок", 0.1, Истина); + ТекущийЭлемент = Элементы.Список; +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + ФайлСсылка = Элементы.Список.ТекущаяСтрока; + + Параметр = Новый Структура; + Параметр.Вставить("ФайлСсылка", ФайлСсылка); + + ОповеститьОВыборе(Параметр); + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбработкаОжидания() + + Если Элементы.Папки.ТекущаяСтрока <> Неопределено Тогда + Список.Параметры.УстановитьЗначениеПараметра("Владелец", Элементы.Папки.ТекущаяСтрока); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗаголовокДереваПапок() + + Элементы.Папки.Заголовок = ?(Элементы.Папки.ТекущиеДанные = Неопределено, "", + Элементы.Папки.ТекущиеДанные.Наименование); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..60a04bbd --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,5573 @@ + + + + КоманднаяПанель + 281 + + ФормаЗакрыть + 239 + VeryHigh + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + + ФормаЗаписатьИЗакрыть + 178 + VeryHigh + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 179 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СтандартнаяЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 180 + Usual + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 181 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СтандартнаяЗаписать + true + true + UserCmds + Auto + + + ФормаСкопировать + 219 + Usual + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 220 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаПоказатьВСписке + 149 + Usual + true + true + + true + + + ФормаПоказатьВСпискеРасширеннаяПодсказка + 150 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьВСписке + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаПеречитать + 221 + Usual + true + true + + true + + + ФормаПеречитатьРасширеннаяПодсказка + 222 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Reread + Auto + true + true + UserCmds + Auto + + + ПодменюПечать + 213 + Usual + + Печать + 215 + true + true + + true + + + ПечатьРасширеннаяПодсказка + 216 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Печать + Auto + true + true + UserCmds + Auto + + + ПечатьСоШтампом + 217 + true + true + + true + + + ПечатьСоШтампомРасширеннаяПодсказка + 218 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПечатьСоШтампом + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Печать</value> + + + ПодменюПечатьРасширеннаяПодсказка + 214 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ФормаГлобальныеКоманды + 98 + VeryLow + true + true + + true + + + <key>ru</key> + <value>Форма глобальные команды</value> + + + ru + Общие команды работы с файлами + + None + + ФормаГлобальныеКомандыРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + + FormCommandPanelGlobalCommands + + + + ФормаОтправить + 211 + Usual + true + true + + true + + + ФормаОтправитьРасширеннаяПодсказка + 212 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отправить + Auto + true + true + UserCmds + Auto + + + ФормаГруппаКомандЭлектроннаяПодписьИШифрование + 17 + VeryLow + + ФормаГруппаКомандЭлектроннаяПодпись + 129 + + ФормаПодписатьФайлЭП + 19 + true + true + + true + + + ФормаПодписатьФайлЭПРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подписать + Auto + true + true + UserCmds + Auto + + + ФормаДобавитьЭПИзФайла + 20 + true + true + + true + + + ФормаДобавитьЭПИзФайлаРасширеннаяПодсказка + 72 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьЭПИзФайла + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьВместеСЭП + 21 + true + true + + true + + + ФормаСохранитьВместеСЭПРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьВместеСЭП + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма группа команд электронная подпись</value> + + + ФормаГруппаКомандЭлектроннаяПодписьРасширеннаяПодсказка + 130 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаГруппаКомандШифрование + 18 + + ФормаЗашифровать + 22 + true + true + + true + + + ФормаЗашифроватьExtendedTooltip + 75 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Зашифровать + Auto + true + true + UserCmds + Auto + + + ФормаРасшифровать + 23 + true + true + + true + + + ФормаРасшифроватьExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Расшифровать + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма группа команд шифрование</value> + + + ФормаГруппаКомандШифрованиеРасширеннаяПодсказка + 74 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Электронная подпись и шифрование</value> + + + ru + Команды работы с электронной подписью и шифрованием + + + ФормаГруппаКомандЭлектроннаяПодписьИШифрованиеРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + Popup + + + CommonPicture.ПодписанЗашифрованЗаголовок + + Picture + + + + ФормаГруппаУдаление + 283 + + ФормаСтандартныеУстановитьПометкуУдаления + 5 + High + true + true + + true + + + ФормаСтандартныеУстановитьПометкуУдаленияExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СтандартныеУстановитьПометкуУдаления + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаУдалить + 287 + true + true + + true + + + ФормаУдалитьРасширеннаяПодсказка + 288 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Удалить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма группа удаление</value> + + + ФормаГруппаУдалениеРасширеннаяПодсказка + 284 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаГруппаДополнительныеКоманды + 100 + VeryHigh + + ФормаСохранитьКак + 12 + true + true + + true + + + ФормаСохранитьКакExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаЗанять + 237 + true + true + + true + + + ФормаЗанятьРасширеннаяПодсказка + 238 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Занять + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОсвободить + 16 + true + true + + true + + + ФормаОсвободитьExtendedTooltip + 66 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Освободить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОбновитьИзФайлаНаДиске + 24 + true + true + + true + + + ФормаОбновитьИзФайлаНаДискеExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьИзФайлаНаДиске + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОткрытьКаталогФайла + 13 + true + true + + true + + + ФормаОткрытьКаталогФайлаExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьКаталогФайла + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма группа дополнительные команды</value> + + + ru + Дополнительные команды + + None + + ФормаГруппаДополнительныеКомандыРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 282 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ГруппаПояснениеОблачногоСервиса + 223 + VeryHigh + + ДекорацияКартинкаОблачногоСервиса + 225 + + <key>ru</key> + <value>Декорация картинка облачного сервиса</value> + + true + true + + true + + + ДекорацияКартинкаОблачногоСервисаРасширеннаяПодсказка + 227 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияКартинкаОблачногоСервисаКонтекстноеМеню + 226 + true + true + + true + + true + + true + true + + + CommonPicture.ПапкаОблачногоСервиса + + + + + ДекорацияПояснение + 228 + + <key>ru</key> + <value>Файл доступен только для просмотра, работа с ним ведется в облачном сервисе %1. </value> + + true + true + + true + + + ДекорацияПояснениеРасширеннаяПодсказка + 230 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПояснениеКонтекстноеМеню + 229 + true + true + + true + + true + + true + Label + true + + Left + Center + + + + ДекорацияКартинкаСтатусСинхронизации + 231 + + <key>ru</key> + <value>Неудачная синхронизация файла</value> + + true + true + + true + + + ДекорацияКартинкаСтатусСинхронизацииРасширеннаяПодсказка + 233 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияКартинкаСтатусСинхронизацииКонтекстноеМеню + 232 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + ДекорацияДатаСинхронизации + 234 + + <key>ru</key> + <value>Синхронизирован: %2</value> + + true + true + + true + + + ДекорацияДатаСинхронизацииРасширеннаяПодсказка + 236 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияДатаСинхронизацииКонтекстноеМеню + 235 + true + true + + true + + true + + true + Label + true + true + + + URLProcessing + ДекорацияДатаСинхронизацииОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Пояснение облачного сервиса</value> + + true + + ГруппаПояснениеОблачногоСервисаРасширеннаяПодсказка + 224 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Center + true + true + + Style.ToolTipBackColor + + Auto + Auto + + + + ДекорацияПояснениеСлужебный + 241 + VeryHigh + + <key>ru</key> + <value>Служебный файл доступен только для просмотра.</value> + + true + true + + true + + + ДекорацияПояснениеСлужебныйРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПояснениеСлужебныйКонтекстноеМеню + 242 + true + true + + true + + true + + Label + true + true + + Left + Center + + Style.ToolTipBackColor + + + + + ГруппаОбщаяИнформация + 29 + + ГруппаОбщиеДанныеИХарактеристики + 244 + + ГруппаОбщиеДанные + 156 + + Наименование + 102 + VeryHigh + true + true + + true + + + + Объект.Description + + + + ru + Имя файла (без расширения) + + + НаименованиеРасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 103 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Описание + 105 + VeryLow + true + true + + true + + + + Объект.Описание + + + Left + + ru + Краткое описание файла + + + ОписаниеРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 106 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 2 + true + true + true + true + true + + ru + Краткое пояснение. Для редактирования содержимого файла нажмите кнопку Редактировать. + + + + true + true + + true + + + <key>ru</key> + <value>Общие данные</value> + + + ru + Общие данные файла + + + ГруппаОбщиеДанныеРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаХарактеристикиФайла + 254 + + ДатаСозданияФайла + 256 + + <key>ru</key> + <value>Создан</value> + + true + true + + true + + + + Объект.ДатаСоздания + + + + ru + Дата добавления файла в список + + + ДатаСозданияФайлаРасширеннаяПодсказка + 258 + true + true + + true + + Label + true + true + + Left + + + + ДатаСозданияФайлаКонтекстноеМеню + 257 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДатаМодификацииФайла + 259 + + <key>ru</key> + <value>Изменен</value> + + true + true + + true + + + + ДатаМодификации + + + + ru + Дата изменения данных файла (местное время) + + + ДатаМодификацииФайлаРасширеннаяПодсказка + 261 + true + true + + true + + Label + true + true + + Left + + + + ДатаМодификацииФайлаКонтекстноеМеню + 260 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаРазмерСДекорациейФайла + 262 + + РазмерФайла + 264 + + <key>ru</key> + <value>Размер</value> + + true + true + + true + + + + Объект.Размер + + + + ru + Размер файла + + + РазмерФайлаРасширеннаяПодсказка + 266 + true + true + + true + + Label + true + true + + Left + + + + РазмерФайлаКонтекстноеМеню + 265 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДекорацияБайтХарактеристики + 267 + + <key>ru</key> + <value>байт</value> + + true + true + + true + + + ДекорацияБайтХарактеристикиРасширеннаяПодсказка + 269 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияБайтХарактеристикиКонтекстноеМеню + 268 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Размер с декорацией</value> + + + ГруппаРазмерСДекорациейФайлаРасширеннаяПодсказка + 263 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаРасширениеФайла + 270 + + РасширениеФайла + 272 + true + true + + true + + + + Объект.Расширение + + + + ru + Расширение файла + + + РасширениеФайлаРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + + РасширениеФайлаКонтекстноеМеню + 273 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ИндексКартинкиФайла + 275 + true + true + + true + + + + Объект.ИндексКартинки + + + None + + ИндексКартинкиФайлаРасширеннаяПодсказка + 277 + true + true + + true + + Label + true + true + + Left + + + + ИндексКартинкиФайлаКонтекстноеМеню + 276 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + 2 + true + 1 + true + + CommonPicture.КоллекцияПиктограммФайлов + + + 1 + + + + true + true + + true + + + <key>ru</key> + <value>Расширение</value> + + + ГруппаРасширениеФайлаРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Center + true + true + Auto + Auto + + + + КодировкаФайла + 278 + true + true + + true + + + + Кодировка + + + + КодировкаФайлаРасширеннаяПодсказка + 280 + true + true + + true + + Label + true + true + + Left + + + + КодировкаФайлаКонтекстноеМеню + 279 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + + true + + + <key>ru</key> + <value>Дополнительные сведения</value> + + + ГруппаХарактеристикиФайлаРасширеннаяПодсказка + 255 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Общие данные и характеристики</value> + + + ГруппаОбщиеДанныеИХарактеристикиРасширеннаяПодсказка + 245 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаКоманды + 158 + VeryHigh + + ФормаОткрытьФайлДляПросмотра + 11 + true + true + + true + + + ФормаОткрытьФайлДляПросмотраExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОткрытьФайлДляПросмотра + PictureAndText + true + true + UserCmds + Auto + + + Редактировать + 160 + true + true + + true + + + РедактироватьРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Редактировать + Auto + true + true + UserCmds + Auto + + + ЗакончитьРедактирование + 162 + true + true + + true + + + ЗакончитьРедактированиеРасширеннаяПодсказка + 163 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ЗакончитьРедактирование + Auto + true + true + UserCmds + Auto + + + СохранитьИзменения + 164 + true + true + + true + + + СохранитьИзмененияРасширеннаяПодсказка + 165 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.СохранитьИзменения + Auto + true + true + UserCmds + Auto + + + СохранитьКак + 166 + true + true + + true + + + СохранитьКакРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.СохранитьКак + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды</value> + + + ГруппаКомандыРасширеннаяПодсказка + 159 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Общая информация</value> + + + ru + Общая информация о файле + + + ГруппаОбщаяИнформацияExtendedTooltip + 77 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаДополнительныеДанныеСтраницы + 25 + + ГруппаСведенияОФайле + 26 + + ГруппаСведенияЧасть1 + 30 + + Автор + 108 + true + true + + true + + + + Объект.Автор + + + + ru + Пользователь, который добавил файл в список + + + АвторРасширеннаяПодсказка + 110 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 109 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + Изменил + 111 + true + true + + true + + + + Объект.Изменил + + + + ru + Последний пользователь, который отредактировал файл + + + ИзменилРасширеннаяПодсказка + 113 + true + true + + true + + Label + true + true + + Left + + + + ИзменилКонтекстноеМеню + 112 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаРедактирует + 201 + + Редактирует + 203 + true + true + + true + + + + Объект.Редактирует + + + + РедактируетРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + + РедактируетКонтекстноеМеню + 204 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + ДатаЗаема + 206 + + <key>ru</key> + <value>с</value> + + true + true + + true + + + + Объект.ДатаЗаема + + + + ДатаЗаемаРасширеннаяПодсказка + 208 + true + true + + true + + Label + true + true + + Left + + + + ДатаЗаемаКонтекстноеМеню + 207 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Редактирует</value> + + + ГруппаРедактируетРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ВладелецФайла + 173 + + <key>ru</key> + <value>Размещение</value> + + true + true + + true + + + + Объект.ВладелецФайла + + + + OnChange + ВладелецПриИзменении + + + ВладелецФайлаРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + + ВладелецФайлаКонтекстноеМеню + 174 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + ShowInInputField + true + true + true + + + + ХранитьВерсии + 168 + true + true + + true + + + + Объект.ХранитьВерсии + + + Right + + ХранитьВерсииРасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + + ХранитьВерсииКонтекстноеМеню + 169 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Основные сведения</value> + + + ГруппаСведенияЧасть1ExtendedTooltip + 80 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаСведенияЧасть2 + 31 + + ДатаСоздания + 126 + + <key>ru</key> + <value>Создан</value> + + true + true + + true + + + + Объект.ДатаСоздания + + + + ru + Дата добавления файла в список + + + ДатаСозданияРасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + + ДатаСозданияКонтекстноеМеню + 127 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДатаМодификации + 123 + + <key>ru</key> + <value>Изменен</value> + + true + true + + true + + + + ДатаМодификации + + + + ru + Дата изменения данных файла (местное время) + + + ДатаМодификацииРасширеннаяПодсказка + 125 + true + true + + true + + Label + true + true + + Left + + + + ДатаМодификацииКонтекстноеМеню + 124 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаРазмерСДекорацией + 196 + + Размер + 120 + + <key>ru</key> + <value>Размер</value> + + true + true + + true + + + + Объект.Размер + + + + ru + Размер файла + + + РазмерРасширеннаяПодсказка + 122 + true + true + + true + + Label + true + true + + Left + + + + РазмерКонтекстноеМеню + 121 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДекорацияБайт + 198 + + <key>ru</key> + <value>байт</value> + + true + true + + true + + + ДекорацияБайтРасширеннаяПодсказка + 200 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияБайтКонтекстноеМеню + 199 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Размер с декорацией</value> + + + ГруппаРазмерСДекорациейРасширеннаяПодсказка + 197 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаРасширение + 182 + + Расширение + 114 + true + true + + true + + + + Объект.Расширение + + + + ru + Расширение файла + + + РасширениеРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + + РасширениеКонтекстноеМеню + 115 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + ИндексКартинки + 184 + true + true + + true + + + + Объект.ИндексКартинки + + + None + + ИндексКартинкиРасширеннаяПодсказка + 186 + true + true + + true + + Label + true + true + + Left + + + + ИндексКартинкиКонтекстноеМеню + 185 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + 2 + true + 1 + true + + CommonPicture.КоллекцияПиктограммФайлов + + + 1 + + + + true + true + + true + + + <key>ru</key> + <value>Расширение</value> + + + ru + Расширение файла + + + ГруппаРасширениеРасширеннаяПодсказка + 183 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Center + true + true + Auto + Auto + + + + Кодировка + 187 + true + true + + true + + + + Кодировка + + + + КодировкаРасширеннаяПодсказка + 189 + true + true + + true + + Label + true + true + + Left + + + + КодировкаКонтекстноеМеню + 188 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Дополнительные сведения</value> + + + ГруппаСведенияЧасть2ExtendedTooltip + 81 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Сведения о файле</value> + + + ru + Информация о файле + + + ГруппаСведенияОФайлеExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + ГруппаЭлектронныеПодписи + 27 + + ЭлектронныеПодписи + 32 + + <key>ru</key> + <value>Электронные подписи</value> + + true + true + + true + + + ЭлектронныеПодписи + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SelectAll + SortListAsc + SortListDesc + + ЭлектронныеПодписиКомуВыданСертификат + 35 + true + true + + true + + + + ЭлектронныеПодписи.КомуВыданСертификат + + + + ЭлектронныеПодписиКомуВыданСертификатРасширеннаяПодсказка + 90 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиКомуВыданСертификатКонтекстноеМеню + 36 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ЭлектронныеПодписиДатаПодписи + 37 + true + true + + true + + + + ЭлектронныеПодписи.ДатаПодписи + + + + ЭлектронныеПодписиДатаПодписиРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиДатаПодписиКонтекстноеМеню + 38 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ЭлектронныеПодписиКомментарий + 39 + true + true + + true + + + + ЭлектронныеПодписи.Комментарий + + + + ЭлектронныеПодписиКомментарийРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиКомментарийКонтекстноеМеню + 40 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ЭлектронныеПодписиПроверка + 154 + + ЭлектронныеПодписиСтатус + 41 + true + true + + true + + + + ЭлектронныеПодписи.Статус + + + + ЭлектронныеПодписиСтатусРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиСтатусКонтекстноеМеню + 42 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 10 + true + true + true + true + true + true + + + + ЭлектронныеПодписиОписаниеОшибки + 193 + true + true + + true + + + + ЭлектронныеПодписи.ОписаниеОшибки + + + None + + ЭлектронныеПодписиОписаниеОшибкиРасширеннаяПодсказка + 195 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиОписаниеОшибкиКонтекстноеМеню + 194 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ЭлектронныеПодписиДатаПроверкиПодписи + 151 + true + true + + true + + + + ЭлектронныеПодписи.ДатаПроверкиПодписи + + + + ЭлектронныеПодписиДатаПроверкиПодписиРасширеннаяПодсказка + 153 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиДатаПроверкиПодписиКонтекстноеМеню + 152 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 10 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Электронные подписи проверка</value> + + + ЭлектронныеПодписиПроверкаРасширеннаяПодсказка + 155 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ЭлектронныеПодписиКоманднаяПанель + 34 + + ЭлектронныеПодписиПодписать + 43 + VeryHigh + true + true + + true + + + ЭлектронныеПодписиПодписатьРасширеннаяПодсказка + 83 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подписать + Auto + true + true + UserCmds + Auto + + + ЭлектронныеПодписиОткрыть + 44 + VeryLow + true + true + + true + + + ЭлектронныеПодписиОткрытьРасширеннаяПодсказка + 84 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьПодпись + Auto + true + true + UserCmds + Auto + + + ЭлектронныеПодписиПроверить + 46 + VeryLow + true + true + + true + + + ЭлектронныеПодписиПроверитьРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверитьЭП + Auto + true + true + UserCmds + Auto + + + ЭлектронныеПодписиПроверитьВсе + 47 + VeryLow + true + true + + true + + + ЭлектронныеПодписиПроверитьВсеРасширеннаяПодсказка + 86 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверитьВсе + Auto + true + true + UserCmds + Auto + + + ЭлектронныеПодписиУдалить + 45 + VeryLow + true + true + + true + + + ЭлектронныеПодписиУдалитьРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УдалитьЭП + Auto + true + true + UserCmds + Auto + + + ЭлектронныеПодписиСохранить + 48 + VeryLow + true + true + + true + + + ЭлектронныеПодписиСохранитьРасширеннаяПодсказка + 87 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьПодпись + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + Selection + ЭлектронныеПодписиВыбор + + + true + true + + true + + ЭлектронныеПодписиСтрокаПоиска + 131 + + ЭлектронныеПодписиСтрокаПоискаРасширеннаяПодсказка + 133 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиСтрокаПоискаКонтекстноеМеню + 132 + true + true + + true + + true + + + true + + + + true + true + + true + + ЭлектронныеПодписиСостояниеПросмотра + 134 + + ЭлектронныеПодписиСостояниеПросмотраРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиСостояниеПросмотраКонтекстноеМеню + 135 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ЭлектронныеПодписиУправлениеПоиском + 137 + + ЭлектронныеПодписиУправлениеПоискомРасширеннаяПодсказка + 139 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиУправлениеПоискомКонтекстноеМеню + 138 + true + true + + true + + true + + SearchControlAddition + + true + + + + ЭлектронныеПодписиРасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + + ЭлектронныеПодписиКонтекстноеМеню + 33 + true + true + + true + + true + + true + true + true + true + true + 1 + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + None + None + None + +
    + + Инструкция + 190 + + <key>ru</key> + <value>Типичные проблемы при работе с программами электронной подписи и их решение</value> + + true + true + + true + + + ИнструкцияРасширеннаяПодсказка + 192 + true + true + + true + + Label + true + true + + Left + + + + ИнструкцияКонтекстноеМеню + 191 + true + true + + true + + true + + Label + true + + + Click + ИнструкцияНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Электронные подписи</value> + + None + + ГруппаЭлектронныеПодписиРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
    + + ГруппаСертификатыШифрования + 28 + + СертификатыШифрования + 49 + + <key>ru</key> + <value>Сертификаты</value> + + true + true + + true + + + СертификатыШифрования + + None + Change + + ru + Сертификаты + + + СертификатыШифрованияПредставление + 55 + true + true + + true + + + + СертификатыШифрования.Представление + + + + СертификатыШифрованияПредставлениеExtendedTooltip + 97 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияПредставлениеКонтекстноеМеню + 56 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СертификатыШифрованияКоманднаяПанель + 51 + + СертификатыШифрованияОткрыть + 54 + true + true + + true + + + СертификатыШифрованияОткрытьРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьСертификатШифрования + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + Selection + СертификатыШифрованияВыбор + + + true + true + + true + + СертификатыШифрованияСтрокаПоиска + 140 + + СертификатыШифрованияСтрокаПоискаРасширеннаяПодсказка + 142 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияСтрокаПоискаКонтекстноеМеню + 141 + true + true + + true + + true + + + true + + + + true + true + + true + + СертификатыШифрованияСостояниеПросмотра + 143 + + СертификатыШифрованияСостояниеПросмотраРасширеннаяПодсказка + 145 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияСостояниеПросмотраКонтекстноеМеню + 144 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СертификатыШифрованияУправлениеПоиском + 146 + + СертификатыШифрованияУправлениеПоискомРасширеннаяПодсказка + 148 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияУправлениеПоискомКонтекстноеМеню + 147 + true + true + + true + + true + + SearchControlAddition + + true + + + + СертификатыШифрованияExtendedTooltip + 96 + true + true + + true + + Label + true + true + + Left + + + + СертификатыШифрованияКонтекстноеМеню + 50 + true + true + + true + + true + + true + true + true + 1 + true + MultiRow + Row + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + None + None + None + + + true + true + + true + + + <key>ru</key> + <value>Разрешено расшифровывать</value> + + None + + ГруппаСертификатыШифрованияРасширеннаяПодсказка + 94 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + ГруппаДополнительныеРеквизиты + 171 + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + ГруппаДополнительныеРеквизитыРасширеннаяПодсказка + 172 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Дополнительные данные страницы</value> + + + ru + Дополнительные данные + + + ГруппаДополнительныеДанныеСтраницыExtendedTooltip + 78 + true + true + + true + + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + ГруппаДополнительныеДанныеСтраницыПриСменеСтраницы + + TabsOnTop + Auto + +
    + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + Delete + SetDeletionMark + ShowInList + Write + WriteAndClose + true + Vertical + true + true + true + true + true + + + ГруппаКоманды + + + + + КоманднаяПанель + + + + ДатаМодификации + + <key>ru</key> + <value>Дата модификации</value> + + 1 + + Date + + + + true + + + true + + true + + + ЗначениеКопирования + 2 + + AnyRef + + + true + + + true + + + + ИмяСправочника + 3 + + String + + + + true + + + true + + + + ТекущийПользователь + 4 + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + true + + + true + + + + ЭлектронныеПодписи + + <key>ru</key> + <value>Электронные подписи</value> + + 6 + + ValueTable + + + true + + + true + + + КомуВыданСертификат + + <key>ru</key> + <value>Автор подписи</value> + + 1 + + String + + + + true + + + true + + + + ДатаПодписи + + <key>ru</key> + <value>Дата подписи</value> + + 2 + + Date + + + + true + + + true + + + + Комментарий + + <key>ru</key> + <value>Комментарий</value> + + 3 + + String + + + + true + + + true + + + + Статус + + <key>ru</key> + <value>Статус</value> + + 4 + + String + + + + true + + + true + + + + Объект + 5 + + AnyRef + + + true + + + true + + + + АдресПодписи + 6 + + String + + + + true + + + true + + + + Отпечаток + 7 + + String + + + + true + + + true + + + + ПодписьВерна + 8 + + Boolean + + + true + + + true + + + + УстановившийПодпись + 11 + + CatalogRef.Пользователи + + + true + + + true + + + + АдресСертификата + 9 + + String + + + + true + + + true + + + + ДатаПроверкиПодписи + + <key>ru</key> + <value>Дата проверки</value> + + 10 + + Date + + + + true + + + true + + + + ПорядковыйНомер + 12 + + Number + + + + true + + + true + + + + ОписаниеОшибки + + <key>ru</key> + <value>Описание ошибки</value> + + 13 + + String + + + + true + + + true + + + + + СертификатыШифрования + + <key>ru</key> + <value>Сертификаты шифрования</value> + + 7 + + ValueTable + + + true + + + true + + + Отпечаток + 1 + + String + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + АдресСертификата + 3 + + String + + + + true + + + true + + + + ПорядковыйНомер + 4 + + Number + + 10 + + + + true + + + true + + + + + ОписаниеКолонокТаблицыПодписей + 8 + + + true + + + true + + + + ФайлБылСоздан + 9 + + Boolean + + + true + + + true + + + + ФайлРедактируетсяВОблаке + 12 + + Boolean + + + true + + + true + + + + Объект + 13 + + CatalogObject.Файлы + + + true + + + true + +
    true
    + true +
    + + ВозможностьСоздаватьВерсииФайлов + 14 + + Boolean + + + true + + + true + + + + Кодировка + + <key>ru</key> + <value>Кодировка</value> + + 15 + + String + + + + true + + + true + + + + НаименованиеДоЗаписи + 16 + + String + + + + true + + + true + + + + ПараметрыОтправки + 17 + + + true + + + true + + + + УчетнаяЗапись + 18 + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + + + true + + + true + + + + ИзменениеФайлов + 5 + + Boolean + + + true + + + true + + + + СтандартнаяЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать объект и закрыть форму + + + true + + + StdPicture.WriteAndClose + + + + СтандартнаяЗаписатьИЗакрыть + + + Text + DontUse + + + СтандартнаяЗаписать + + <key>ru</key> + <value>Записать</value> + + 2 + + ru + Записать файл + + + true + + Ctrl+S + + StdPicture.Write + + + + СтандартнаяЗаписать + + + DontUse + + + СтандартныеУстановитьПометкуУдаления + + <key>ru</key> + <value>Пометить на удаление / Снять пометку</value> + + 5 + + ru + Пометить на удаление / Снять пометку + + + true + + + StdPicture.MarkToDelete + + + + СтандартныеУстановитьПометкуУдаления + + + DontUse + + + Подписать + + <key>ru</key> + <value>Подписать...</value> + + 7 + + ru + Подписать файл + + + true + + + + Подписать + + + TextPicture + DontUse + + + ОткрытьФайлДляПросмотра + + <key>ru</key> + <value>Просмотреть</value> + + 9 + + ru + Открыть файл для просмотра + + + true + + + CommonPicture.ОткрытьВыбранныйФайл + + + + ОткрытьФайлДляПросмотра + + + TextPicture + DontUse + + + СохранитьКак + + <key>ru</key> + <value>Сохранить как...</value> + + 10 + + ru + Сохранить файл на диск или другое устройство + + + true + + + CommonPicture.СохранитьФайлКак + + + + СохранитьКак + + + TextPicture + DontUse + + + ОткрытьКаталогФайла + + <key>ru</key> + <value>Открыть каталог файла</value> + + 11 + + ru + Открыть каталог файла + + + true + + + + ОткрытьКаталогФайла + + + DontUse + + + Редактировать + + <key>ru</key> + <value>Редактировать</value> + + 12 + + ru + Занять файл и открыть для редактирования + + + true + + F4 + + CommonPicture.РедактироватьФайл + + + + Редактировать + + + TextPicture + DontUse + + + ЗакончитьРедактирование + + <key>ru</key> + <value>Закончить редактирование</value> + + 13 + + ru + Сохранить и освободить файл в информационной базе + + + true + + + CommonPicture.ЗакончитьРедактированиеФайла + + + + ЗакончитьРедактирование + + + TextPicture + DontUse + + + Освободить + + <key>ru</key> + <value>Отменить редактирование</value> + + 14 + + ru + Освободить занятый файл + + + true + + + CommonPicture.ОсвободитьФайл + + + + Освободить + + + TextPicture + DontUse + + + ДобавитьЭПИзФайла + + <key>ru</key> + <value>Добавить электронную подпись из файла...</value> + + 6 + + ru + Добавить электронную подпись из файла + + + true + + + + ДобавитьЭПИзФайла + + + DontUse + + + Зашифровать + + <key>ru</key> + <value>Зашифровать...</value> + + 8 + + ru + Зашифровать + + + true + + + CommonPicture.Зашифрован + + + + Зашифровать + + + DontUse + + + Расшифровать + + <key>ru</key> + <value>Расшифровать...</value> + + 15 + + ru + Расшифровать + + + true + + + + Расшифровать + + + DontUse + + + СохранитьВместеСЭП + + <key>ru</key> + <value>Сохранить вместе с электронной подписью...</value> + + 16 + + ru + Сохранить файл на диск или другое устройство вместе с электронной подписью + + + true + + + + СохранитьВместеСЭП + + + DontUse + + + ОбновитьИзФайлаНаДиске + + <key>ru</key> + <value>Обновить из файла на диске...</value> + + 17 + + ru + Обновить из файла на диске + + + true + + + + ОбновитьИзФайлаНаДиске + + + Text + DontUse + + + ОткрытьПодпись + + <key>ru</key> + <value>Открыть</value> + + 18 + + ru + Открыть подпись + + + true + + + + КомандаЭПСписокОткрытьПодпись + + + DontUse + + + ПроверитьЭП + + <key>ru</key> + <value>Проверить</value> + + 19 + + ru + Проверить выделенные подписи + + + true + + + + ПроверитьЭП + + + true + DontUse + + + УдалитьЭП + + <key>ru</key> + <value>Удалить</value> + + 20 + + ru + Удалить выделенные подписи + + + true + + + + УдалитьЭП + + + DontUse + + + ПроверитьВсе + + <key>ru</key> + <value>Проверить все</value> + + 21 + + ru + Проверить все подписи + + + true + + + + ПроверитьВсе + + + true + DontUse + + + СохранитьПодпись + + <key>ru</key> + <value>Сохранить...</value> + + 22 + + ru + Сохранить подпись в файл + + + true + + + + СохранитьПодпись + + + DontUse + + + ОткрытьСертификатШифрования + + <key>ru</key> + <value>Открыть сертификат</value> + + 23 + + ru + Открыть сертификат + + + true + + + + ОткрытьСертификатШифрования + + + DontUse + + + ПоказатьВСписке + + <key>ru</key> + <value>Показать в списке</value> + + 24 + + ru + Показать в списке + + + true + + + StdPicture.ShowInList + + + + ПоказатьВСписке + + + DontUse + + + СохранитьИзменения + + <key>ru</key> + <value>Сохранить изменения</value> + + 25 + + ru + Сохранить измененный файл в информационной базе + + + true + + + CommonPicture.ОпубликоватьФайл + + + + СохранитьИзменения + + + TextPicture + true + DontUse + + + Отправить + + <key>ru</key> + <value>Отправить</value> + + 26 + + ru + Отправить + + + true + + + CommonPicture.ОтправитьЭлектронноеПисьмо + + + + Отправить + + + TextPicture + DontUse + + + Печать + + <key>ru</key> + <value>Сразу на принтер</value> + + 27 + + ru + Сразу на принтер + + + true + + + StdPicture.Print + + + + Печать + + + TextPicture + DontUse + + + ПечатьСоШтампом + + <key>ru</key> + <value>Со штампом электронной подписи...</value> + + 28 + + ru + Печать со штампом электронной подписи + + + true + + + + ПечатьСоШтампом + + + DontUse + + + Занять + + <key>ru</key> + <value>Занять</value> + + 3 + + ru + Пометить файл как занятый для редактирования + + + true + + + CommonPicture.ЗанятьФайл + + + + Занять + + + TextPicture + true + DontUse + + + Удалить + + <key>ru</key> + <value>Удалить</value> + + 4 + + ru + Удалить данные файла + + + true + + + StdPicture.DeleteDirectly + + + + Удалить + + + Auto + + 2:02023637-7868-4a5f-8576-835a76e0c9ba + + + + Ключ + + AnyRef + + true + + + ЗначениеКопирования + + AnyRef + + true + + + ЭтоНовый + + Boolean + + + + ПрисоединенныйФайл + + AnyRef + + true + + + ИмяСправочникаХранилищаФайлов + + String + + + + + ВладелецФайла + + AnyRef + + + + РежимСоздания + + String + + + + + ПараметрыОтправки + + + + + + 0:346cb8b7-a20e-4a06-823e-26dfb2e3e741 + Added + FormNavigationPanelGoTo + 0 + + true + + + + 0 + Added + FormNavigationPanelGoTo + 1 + + true + + + + InformationRegister.ДвоичныеДанныеФайлов.StandardCommand.OpenByValue.Файл + FormNavigationPanelGoTo + 2 + + + + 0:52e0ede7-de57-4640-b432-96e56131f277 + Added + FormNavigationPanelGoTo + 3 + + true + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
    diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..c91de344 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,66 @@ + +

    Предназначена для просмотра сведений о присоединенном файле.

    +

    Открывается из списка присоединенных файлов с помощью команды Еще - Открыть карточку (клавиши F2).

    +

    Сведения о файле

    +
    • Наименование - полное имя файла. Автоматически заполняется программой во время присоединения файла и создания карточки файла, можно изменить; +
    • Описание - напишите подробные сведения о файле; +
    • Автор - пользователь, который добавил файл в базу; +
    • Создан - дата добавления файла в базу; +
    • Отредактировал - последний пользователь, который отредактировал файл; +
    • Изменен - дата изменения данных файла (местное время); +
    • +
      Размещение - наименование и дата документа, к которому присоединен файл. Можно просмотреть документ;
      +
    • +
      +
      Размер - размер данных файла;
      +
    • +
      Расширение - расширение (формат) файла.

    Редактирование присоединенного файла

    +
    • +
      +
      В тонком клиенте редактирование файлов табличных документов (формата .mxl) осуществляется во встроенной форме редактора табличных документов. В веб-клиенте необходимо загрузить приложение для редактирования этих файлов. Подробнее об особенностях редактирования табличных документов в веб-клиенте см. здесь.
      +
    • +
      +
      Для редактирования файлов других форматов на компьютере должны быть установлены соответствующие приложения, например, для редактирования файлов в формате Microsoft Word должно быть установлено это приложение.
      +
    • С помощью кнопки Просмотреть можно открыть файл внешним приложением для просмотра или редактирования, в зависимости от того, помечен или нет файл как занятый другим пользователем для редактирования. +
    • +
      +
      Команда Еще - Редактировать открывает файл в режиме редактирования, а также производит захват файла в программе. Захваченный файл будет недоступен для редактирования другим пользователям программы и помечается в списке зеленым цветом.
      +
    • +
      Команда Еще - Закончить редактирование освобождает файл, сохраняет его в программе и снимает пометку занятости для редактирования. После окончания редактирования сохраните файл, закройте внешнее приложение.
      +
    • +
      +
      +
      Команда Еще - Отменить редактирование освобождает файл, не сохраняя произведенные в нем изменения в программе, и снимает пометку занятости для редактирования. Эта команда может быть полезна, если необходимо отказаться от результатов редактирования файла (например, при редактировании в файл были внесены нежелательные изменения или ошибки).

    Сохранение файла

    +
    • +
      С помощью команды Еще - Сохранить как можно сохранить файл в указанный каталог на жестком или сетевом диске.
      +
    • +
      Соответствующей командой меню Еще можно Открыть каталог файла в Проводнике Windows;

    Обновление файла

    +
    • С помощью команды Еще - Обновить из файла на диске можно обновить файл из оригинального файла на диске (из которого изначально был создан файл в программе).

    Электронная подпись и шифрование

    +

    При использовании электронной подписи становится доступным выпадающее меню Еще - Электронная подпись и шифрование, которое содержит команды для работы с электронной подписью файлов:

    +
    • +
      Подписать - создает электронную подпись для файла. Перед созданием электронной подписи программа предлагает выбрать сертификат электронной подписи из имеющихся на компьютере. Выбор сертификата можно сделать и во время персональных настроек программы. Подписанный файл становится недоступным для редактирования и отображается в списках со значком .
      +
    • +
      Добавить электронную подпись из файла - добавляет подпись к файлу. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
      +
    • +
      Сохранить вместе с электронной подписью - сохраняет подпись в файл на диске. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
      +
    • +
      Зашифровать - по команде происходит шифрование файла. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Зашифрованный файл в списках отображается со значком .
      +
    • +

      Расшифровать - по команде происходит расшифровка файла. Для расшифровки нужно ввести пароль к закрытому ключу.

    При использовании электронной подписи и шифрования становятся доступными вкладки:

    +

    Электронные подписи

    +

    На вкладке размещаются сведения об электронной подписи файла:

    +
    • Автор подписи - пользователь, который подписал файл; +
    • Дата подписи - дата подписания файла; +
    • Комментарий - напишите дополнительные сведения о подписи; +
    • Статус, Дата проверки - истинность подписи и дата ее проверки.

    С помощью кнопок панели навигации можно:

    +
    • Подписать файл; +
    • Открыть - открыть окно с основными свойствами сертификата электронной подписи выделенного файла: кому и кем выдан, назначение и срок действия сертификата, на основе которого создана подпись; +
    • Проверить, изменялся ли кем-либо подписанный файл, с помощью одного или всех сертификатов электронной подписи. Для этого выделите одну или несколько подписей. Если электронная подпись хранимого файла не соответствует какому-либо сертификату электронной подписи, то такая электронная подпись после проверки будет выделена в списке красным цветом, а в колонке Статус у такой электронной подписи будет указано Не верна. +
    • Проверить все - проверить все подписи; +
    • Сохранить электронную подпись в файл на диск; +
    • Удалить у файла электронную подпись.

    Разрешено расшифровывать

    +
    • +
      На вкладке размещаются сведения о шифровании файла:
      +
    • +
      В списке на этой вкладке отображаются сертификаты, с помощью которых зашифрован файл. Двойным щелчком мыши или с помощью соответствующей кнопки можно Открыть сертификат электронной подписи и просмотреть его основные свойства: кому и кем выдан, назначение и срок действия сертификата.

    См. также:

    + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..733d430e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,1649 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + РаботаСФайламиСлужебный.ФормаЭлементаПриСозданииНаСервере( + ЭтотОбъект, Отказ, СтандартнаяОбработка, Параметры, ТолькоПросмотр); + + ПараметрыОтправки = ?(ЗначениеЗаполнено(Параметры.ПараметрыОтправки), + Параметры.ПараметрыОтправки, РаботаСФайламиСлужебный.ПодготовитьСтруктуруПараметровОтправки()); + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты"); + ДополнительныеПараметры.Вставить("Объект", Объект); + ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина); + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + + УстановитьДоступностьКнопок(ЭтотОбъект, Элементы); + + ДоступнаПечатьСоШтампом = + ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") + И ЭтотОбъект.Объект.Расширение = "mxl" + И ЭтотОбъект.Объект.ПодписанЭП; + + Элементы.ПечатьСоШтампом.Видимость = ДоступнаПечатьСоШтампом; + Если Не ДоступнаПечатьСоШтампом Тогда + Элементы.ПодменюПечать.Вид = ВидГруппыФормы.ГруппаКнопок; + Элементы.Печать.Заголовок = НСтр("ru = 'Печать'"); + КонецЕсли; + + Элементы.ФормаУдалить.Видимость = + Объект.Автор = Пользователи.АвторизованныйПользователь(); + + ОбновитьЗаголовок(); + ОбновитьПолныйПуть(); + ОбновитьПояснениеОблачногоСервиса(Объект.Ссылка); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + + Элементы.Описание.Высота = 0; + Элементы.Наименование.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.ГруппаСведенияЧасть1.ВыравниваниеЭлементовИЗаголовков = + ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + Элементы.ГруппаСведенияЧасть2.ВыравниваниеЭлементовИЗаголовков = + ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + Элементы.ГруппаХарактеристикиФайла.ВыравниваниеЭлементовИЗаголовков = + ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + НаименованиеДоЗаписи = Объект.Наименование; + + ДатаМодификации = МестноеВремя(ЭтотОбъект.Объект.ДатаМодификацииУниверсальная); + + УстановитьДоступностьКомандСпискаЭП(); + УстановитьДоступностьКомандСпискаШифрования(); + + ПрочитатьСертификатыПодписей(); + ОтображатьВкладкиДополнительныхДанных(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + РазблокироватьОбъект(ЭтотОбъект.Объект.Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант") И (ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи") + Или ВРег(Источник) = ВРег("ИспользоватьШифрование")) Тогда + ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.3, Истина); + КонецЕсли; + + Если ИмяСобытия = "Запись_Файл" И Источник = Объект.Ссылка И Не Модифицированность Тогда + Прочитать(); + КонецЕсли; + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + Если МодульУправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда + ОбновитьЭлементыДополнительныхРеквизитов(); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + ОтображатьВкладкиДополнительныхДанных(); + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + ТекущийПользователь = Пользователи.АвторизованныйПользователь(); + + РаботаСФайламиСлужебный.ЗаполнитьСписокПодписей(ЭтотОбъект); + РаботаСФайламиСлужебный.ЗаполнитьСписокШифрования(ЭтотОбъект); + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + + ИзменениеФайлов = Пользователи.ЭтоПолноправныйПользователь(); + УстановитьДоступностьКнопок(ЭтотОбъект, Элементы); + ОбновитьЗаголовок(); + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.Свойства + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ЗначениеЗаполнено(ЗначениеКопирования) Тогда + + РаботаСФайламиСлужебный.ПеренестиРезультатыПроверкиПодписей(ЭлектронныеПодписи, ЗначениеКопирования); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись"); + + СертификатыИсточника = МодульЭлектроннаяПодпись.СертификатыШифрования(ЗначениеКопирования); + МодульЭлектроннаяПодпись.ЗаписатьСертификатыШифрования(ТекущийОбъект, СертификатыИсточника); + + УстановленныеПодписи = МодульЭлектроннаяПодпись.УстановленныеПодписи(ЗначениеКопирования); + МодульЭлектроннаяПодпись.ДобавитьПодпись(ТекущийОбъект, УстановленныеПодписи); + КонецЕсли; + + Иначе + РаботаСФайламиСлужебный.ПеренестиРезультатыПроверкиПодписей(ЭлектронныеПодписи, ТекущийОбъект.Ссылка); + КонецЕсли; + + Если НаименованиеДоЗаписи <> ТекущийОбъект.Наименование Тогда + + Если ТекущийОбъект.ТекущаяВерсия.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда + РаботаСФайламиВТомахСлужебный.ПереименоватьФайл(ТекущийОбъект.ТекущаяВерсия, + ТекущийОбъект.Наименование, НаименованиеДоЗаписи, УникальныйИдентификатор); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + Если ЗначениеЗаполнено(ЗначениеКопирования) Тогда + СоздатьКопиюВерсии(ТекущийОбъект.Ссылка, ЗначениеКопирования); + ЗначениеКопирования = Справочники[ИмяСправочника].ПустаяСсылка(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВладелецПриИзменении(Элемент) + + Если ТипЗнч(Объект.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда + ОбновитьПолныйПуть(); + КонецЕсли; + + ТипВладельца = ТипЗнч(Объект.ВладелецФайла); + Элементы.ВладелецФайла.Заголовок = ТипВладельца; + +КонецПроцедуры + +&НаКлиенте +Процедура ДекорацияДатаСинхронизацииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + Если НавигационнаяСсылкаФорматированнойСтроки = "OpenJournal" Тогда + + СтандартнаяОбработка = Ложь; + ПараметрыОтбора = ДанныеОтбораЖурналаРегистрации(УчетнаяЗапись); + ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ПараметрыОтбора, ЭтотОбъект); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыЭлектронныеПодписи + +&НаКлиенте +Процедура ЭлектронныеПодписиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + Возврат; + КонецЕсли; + + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); + МодульЭлектроннаяПодписьКлиент.ОткрытьПодпись(Элементы.ЭлектронныеПодписи.ТекущиеДанные); + +КонецПроцедуры + +&НаКлиенте +Процедура ИнструкцияНажатие(Элемент) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); + МодульЭлектроннаяПодписьКлиент.ОткрытьИнструкциюПоТипичнымПроблемамПриРаботеСПрограммами(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСертификатыШифрования + +&НаКлиенте +Процедура СертификатыШифрованияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ОткрытьСертификатШифрования(Неопределено); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +/////////////////////////////////////////////////////////////////////////////////// +// Обработчики команд файлов + +&НаКлиенте +Процедура ПоказатьВСписке(Команда) + + ОбъектФормы = ЭтотОбъект["Объект"]; // ОпределяемыйТип.ПрисоединенныйФайлОбъект + СтандартныеПодсистемыКлиент.ПоказатьВСписке(ОбъектФормы.Ссылка, Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИзФайлаНаДиске(Команда) + + Если ЭтоНовый() + ИЛИ ЭтотОбъект.Объект.Зашифрован + ИЛИ ЭтотОбъект.Объект.ПодписанЭП + ИЛИ ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ЭтотОбъект.Объект.Ссылка); + Обработчик = Новый ОписаниеОповещения("ОбновитьИзФайлаНаДискеЗавершение", ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.ОбновитьИзФайлаНаДискеСОповещением(Обработчик, ДанныеФайла, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура СтандартнаяЗаписатьИЗакрыть(Команда) + + Если ОбработатьКомандуЗаписиФайла() Тогда + + Результат = Новый Структура(); + Результат.Вставить("ТекстОшибки", ""); + Результат.Вставить("ФайлДобавлен", Истина); + Результат.Вставить("ФайлСсылка", ЭтотОбъект.Объект.Ссылка); + + Закрыть(Результат); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СтандартнаяЗаписать(Команда) + + ОбработатьКомандуЗаписиФайла(); + +КонецПроцедуры + +&НаКлиенте +Процедура СтандартныеУстановитьПометкуУдаления(Команда) + + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + + Если Модифицированность Тогда + Если ЭтотОбъект.Объект.ПометкаУдаления Тогда + ТекстВопроса = НСтр( + "ru = 'Для выполнения действия требуется записать изменения файла. + |Записать изменения и снять пометку на удаление с файла + |""%1""?'"); + Иначе + ТекстВопроса = НСтр( + "ru = 'Для выполнения действия требуется записать изменения файла. + |Записать изменения и пометить на удаление файл + |""%1""?'"); + КонецЕсли; + Иначе + Если ЭтотОбъект.Объект.ПометкаУдаления Тогда + ТекстВопроса = НСтр("ru = 'Снять пометку на удаление с файла + |""%1""?'"); + Иначе + ТекстВопроса = НСтр("ru = 'Пометить на удаление файл + |""%1""?'"); + КонецЕсли; + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса, ЭтотОбъект.Объект.Ссылка); + + ОписаниеОповещения = Новый ОписаниеОповещения("СтандартныеУстановитьПометкуУдаленияОтветПолучен", ЭтотОбъект); + ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); +КонецПроцедуры + +&НаКлиенте +Процедура СтандартныеУстановитьПометкуУдаленияОтветПолучен(РезультатВопроса, ДополнительныеПараметры) Экспорт + + Если РезультатВопроса = КодВозвратаДиалога.Да Тогда + ЭтотОбъект.Объект.ПометкаУдаления = НЕ ЭтотОбъект.Объект.ПометкаУдаления; + ОбработатьКомандуЗаписиФайла(); + КонецЕсли; + +КонецПроцедуры + +// СтандартныеПодсистемы.Свойства + +&НаКлиенте +Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.Свойства + +/////////////////////////////////////////////////////////////////////////////////// +// Обработчики команд ЭП и шифрования. + +&НаКлиенте +Процедура Подписать(Команда) + + Если ЭтоНовый() + Или ЗначениеЗаполнено(Объект.Редактирует) + Или Объект.Зашифрован Тогда + Возврат; + КонецЕсли; + + Если Модифицированность Тогда + Записать(); + КонецЕсли; + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриПолученииПодписи", ЭтотОбъект); + ДополнительныеПараметры = Новый Структура("ОбработкаРезультата", ОписаниеОповещения); + РаботаСФайламиКлиент.ПодписатьФайл(Объект.Ссылка, УникальныйИдентификатор, ДополнительныеПараметры); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьЭПИзФайла(Команда) + + Если ЭтоНовый() + Или ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) + Или ЭтотОбъект.Объект.Зашифрован Тогда + Возврат; + КонецЕсли; + + ПрисоединенныйФайл = ЭтотОбъект.Объект.Ссылка; + РаботаСФайламиСлужебныйКлиент.ДобавитьПодписьИзФайла( + ПрисоединенныйФайл, + УникальныйИдентификатор, + Новый ОписаниеОповещения("ПриПолученииПодписей", ЭтотОбъект)); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьВместеСЭП(Команда) + + Если ЭтоНовый() + ИЛИ ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) + ИЛИ ЭтотОбъект.Объект.Зашифрован Тогда + Возврат; + КонецЕсли; + + РаботаСФайламиКлиент.СохранитьВместеСЭП( + ЭтотОбъект.Объект.Ссылка, + УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура Зашифровать(Команда) + + Если ЭтоНовый() Или ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) Или ЭтотОбъект.Объект.Зашифрован Тогда + Возврат; + КонецЕсли; + + Если Модифицированность Тогда + Записать(); + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИКоличествоВерсий(ЭтотОбъект.Объект.Ссылка); + + ПараметрыОбработчика = Новый Структура; + ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла); + Обработчик = Новый ОписаниеОповещения("ЗашифроватьПослеШифрованияНаКлиенте", ЭтотОбъект, ПараметрыОбработчика); + + РаботаСФайламиСлужебныйКлиент.Зашифровать( + Обработчик, + ДанныеФайла, + УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗашифроватьПослеШифрованияНаКлиенте(Результат, ПараметрыВыполнения) Экспорт + Если Не Результат.Успех Тогда + Возврат; + КонецЕсли; + + ИмяРабочегоКаталога = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя(); + + МассивФайловВРабочемКаталогеДляУдаления = Новый Массив; + + ЗашифроватьСервер( + Результат.МассивДанныхДляЗанесенияВБазу, + Результат.МассивОтпечатков, + МассивФайловВРабочемКаталогеДляУдаления, + ИмяРабочегоКаталога); + + РаботаСФайламиСлужебныйКлиент.ИнформироватьОШифровании( + МассивФайловВРабочемКаталогеДляУдаления, + ПараметрыВыполнения.ДанныеФайла.Владелец, + ЭтотОбъект.Объект.Ссылка); + + ОповеститьОбИзменении(ЭтотОбъект.Объект.Ссылка); + Оповестить("Запись_Файл", Новый Структура, ЭтотОбъект.Объект.Ссылка); + + УстановитьДоступностьКомандСпискаШифрования(); + +КонецПроцедуры + +&НаКлиенте +Процедура Расшифровать(Команда) + + Если ЭтоНовый() Или Не ЭтотОбъект.Объект.Зашифрован Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИКоличествоВерсий(ЭтотОбъект.Объект.Ссылка); + + ПараметрыОбработчика = Новый Структура; + ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла); + Обработчик = Новый ОписаниеОповещения("РасшифроватьПослеРасшифровкиНаКлиенте", ЭтотОбъект, ПараметрыОбработчика); + + РаботаСФайламиСлужебныйКлиент.Расшифровать( + Обработчик, + ДанныеФайла.Ссылка, + УникальныйИдентификатор, + ДанныеФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура РасшифроватьПослеРасшифровкиНаКлиенте(Результат, ПараметрыВыполнения) Экспорт + + Если Не Результат.Успех Тогда + Возврат; + КонецЕсли; + ИмяРабочегоКаталога = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя(); + + РасшифроватьСервер(Результат.МассивДанныхДляЗанесенияВБазу, ИмяРабочегоКаталога); + + РаботаСФайламиСлужебныйКлиент.ИнформироватьОРасшифровке( + ПараметрыВыполнения.ДанныеФайла.Владелец, + ЭтотОбъект.Объект.Ссылка); + + ЗаполнитьСписокШифрованияНаСервере(); + УстановитьДоступностьКомандСпискаШифрования(); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокШифрованияНаСервере() + РаботаСФайламиСлужебный.ЗаполнитьСписокШифрования(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаЭПСписокОткрытьПодпись(Команда) + + Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + Возврат; + КонецЕсли; + + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); + МодульЭлектроннаяПодписьКлиент.ОткрытьПодпись(Элементы.ЭлектронныеПодписи.ТекущиеДанные); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьЭП(Команда) + + Если Элементы.ЭлектронныеПодписи.ВыделенныеСтроки.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = ДанныеФайла(ЭтотОбъект.Объект.Ссылка, УникальныйИдентификатор); + + РаботаСФайламиСлужебныйКлиент.ПроверитьПодписи(ЭтотОбъект, + ДанныеФайла.СсылкаНаДвоичныеДанныеФайла, + Элементы.ЭлектронныеПодписи.ВыделенныеСтроки); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьВсе(Команда) + + ДанныеФайла = ДанныеФайла(ЭтотОбъект.Объект.Ссылка, УникальныйИдентификатор); + + РаботаСФайламиСлужебныйКлиент.ПроверитьПодписи(ЭтотОбъект, ДанныеФайла.СсылкаНаДвоичныеДанныеФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьПодпись(Команда) + + Если Элементы.ЭлектронныеПодписи.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные = Элементы.ЭлектронныеПодписи.ТекущиеДанные; + + Если ТекущиеДанные.Объект = Неопределено Или ТекущиеДанные.Объект.Пустая() Тогда + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + Возврат; + КонецЕсли; + + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); + МодульЭлектроннаяПодписьКлиент.СохранитьПодпись(ТекущиеДанные.АдресПодписи); + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьЭП(Команда) + + ОписаниеОповещения = Новый ОписаниеОповещения("УдалитьЭПОтветПолучен", ЭтотОбъект); + ПоказатьВопрос(ОписаниеОповещения, НСтр("ru = 'Удалить выделенные подписи?'"), РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьЭПОтветПолучен(РезультатВопроса, ДополнительныеПараметры) Экспорт + + Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда + Возврат; + КонецЕсли; + + Записать(); + УдалитьИзСпискаПодписейИЗаписатьФайл(); + ОповеститьОбИзменении(ЭтотОбъект.Объект.Ссылка); + Оповестить("Запись_Файл", Новый Структура, ЭтотОбъект.Объект.Ссылка); + УстановитьДоступностьКомандСпискаЭП(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьСертификатШифрования(Команда) + + ТекущиеДанные = Элементы.СертификатыШифрования.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + Возврат; + КонецЕсли; + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); + + Если ПустаяСтрока(ТекущиеДанные.АдресСертификата) Тогда + МодульЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.Отпечаток); + Иначе + МодульЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.АдресСертификата); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьДоступностьКомандСпискаЭП() + + РаботаСФайламиСлужебныйКлиент.УстановитьДоступностьКомандСпискаЭлектронныхПодписей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьДоступностьКомандСпискаШифрования() + + РаботаСФайламиСлужебныйКлиент.УстановитьДоступностьКомандСпискаСертификатовШифрования(ЭтотОбъект); + +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////////////////// +// Обработчики команд для поддержки совместной работы с файлами. + +&НаКлиенте +Процедура Занять(Команда) + + Если Модифицированность И Не Записать() Тогда + Возврат; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ПрочитатьИУстановитьДоступностьЭлементовФормы", ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.ЗанятьСОповещением(Обработчик, Объект.Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура Редактировать(Команда) + + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) + И ЭтотОбъект.Объект.Редактирует <> ТекущийПользователь Тогда + Возврат; + КонецЕсли; + + Если Модифицированность И Не Записать() Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = ДанныеФайла(ЭтотОбъект.Объект.Ссылка, УникальныйИдентификатор); + + Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) Тогда + РаботаСФайламиСлужебныйКлиент.РедактироватьФайл(Неопределено, + ДанныеФайла, УникальныйИдентификатор); + Иначе + РаботаСФайламиСлужебныйКлиент.РедактироватьФайл(Неопределено, + ДанныеФайла, УникальныйИдентификатор); + + ОбновитьОбъект(); + + ОповеститьОбИзменении(ЭтотОбъект.Объект.Ссылка); + Оповестить("Запись_Файл", Новый Структура, ЭтотОбъект.Объект.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакончитьРедактирование(Команда) + + Если ЭтоНовый() + Или Не ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) + Или ЭтотОбъект.Объект.Редактирует <> ТекущийПользователь Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ЭтотОбъект.Объект.Ссылка); + + ОписаниеОповещения = Новый ОписаниеОповещения("ЗакончитьРедактированиеВыполненоПомещение", ЭтотОбъект); + ПараметрыОбновленияФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОбновленияФайла(ОписаниеОповещения, ДанныеФайла.Ссылка, УникальныйИдентификатор); + ПараметрыОбновленияФайла.ХранитьВерсии = ДанныеФайла.ХранитьВерсии; + Если Не ВозможностьСоздаватьВерсииФайлов Тогда + ПараметрыОбновленияФайла.Вставить("СоздатьНовуюВерсию", Ложь); + КонецЕсли; + ПараметрыОбновленияФайла.ФайлРедактируетТекущийПользователь = ДанныеФайла.ФайлРедактируетТекущийПользователь; + ПараметрыОбновленияФайла.Редактирует = ДанныеФайла.Редактирует; + РаботаСФайламиСлужебныйКлиент.ЗакончитьРедактированиеСОповещением(ПараметрыОбновленияФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакончитьРедактированиеВыполненоПомещение(ИнформацияОФайле, ДополнительныеПараметры) Экспорт + + ОповеститьОбИзменении(ЭтотОбъект.Объект.Ссылка); + Оповестить("Запись_Файл", Новый Структура, ЭтотОбъект.Объект.Ссылка); + УстановитьДоступностьКнопок(ЭтотОбъект, Элементы); + +КонецПроцедуры + +&НаКлиенте +Процедура Освободить(Команда) + + Если ЭтоНовый() + ИЛИ НЕ ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) + ИЛИ ЭтотОбъект.Объект.Редактирует <> ТекущийПользователь Тогда + Возврат; + КонецЕсли; + + ОсвободитьФайл(); + ОповеститьОбИзменении(ЭтотОбъект.Объект.Ссылка); + Оповестить("Запись_Файл", Новый Структура("Событие", "РедактированиеОтменено"), ЭтотОбъект.Объект.Ссылка); + РаботаСФайламиСлужебныйКлиент.ИзменитьКоличествоЗанятыхФайлов(); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьИзменения(Команда) + + Если Модифицированность Тогда + Записать(); + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ПрочитатьИУстановитьДоступностьЭлементовФормы", ЭтотОбъект); + + РаботаСФайламиСлужебныйКлиент.СохранитьИзмененияФайлаСОповещением(Обработчик, + ЭтотОбъект.Объект.Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +// СтандартныеПодсистемы.Свойства + +&НаСервере +Процедура ОбновитьЭлементыДополнительныхРеквизитов() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СвойстваВыполнитьОтложеннуюИнициализацию() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + МодульУправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьЗависимостиДополнительныхРеквизитов() + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.Свойства + +&НаКлиенте +Процедура Отправить(Команда) + + Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Ссылка) + Или Записать() Тогда + Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ЭтотОбъект.Объект.Ссылка); + РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте(Файлы, УникальныйИдентификатор, ПараметрыОтправки, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Печать(Команда) + + Если Не ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Печать файлов возможна только в Windows.'")); + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Ссылка) + Или Записать() Тогда + Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ЭтотОбъект.Объект.Ссылка); + РаботаСФайламиКлиент.НапечататьФайлы(Файлы, ЭтотОбъект.УникальныйИдентификатор); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПечатьСоШтампом(Команда) + + Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Ссылка) + Или Записать() Тогда + ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(ЭтотОбъект.Объект.Ссылка, ЭтотОбъект.Объект.Ссылка); + РаботаСФайламиСлужебныйКлиент.ПечатьФайлаСоШтампом(ДокументСоШтампом); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Удалить(Команда) + + РаботаСФайламиСлужебныйКлиент.УдалитьДанные( + Новый ОписаниеОповещения("ПослеУдаленияДанных", ЭтотОбъект), + Объект.Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбновитьЗаголовок() + + Если ТипЗнч(Объект.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда + ТипФайла = НСтр("ru = 'Файл'"); + Иначе + ТипФайла = НСтр("ru = 'Присоединенный файл'"); + КонецЕсли; + + Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Ссылка) Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 (%2)'"), Строка(ЭтотОбъект.Объект.Ссылка), ТипФайла); + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 (Создание)'"), ТипФайла); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтображатьВкладкиДополнительныхДанных() + + Если Элементы.ГруппаДополнительныеРеквизиты.ПодчиненныеЭлементы.Количество() > 0 Тогда + ПустаяДекорация = Элементы.Найти("Свойства_ПустаяДекорация"); + Если ПустаяДекорация <> Неопределено Тогда + ВидимостьДополнительныхРеквизитов = ПустаяДекорация.Видимость; + Иначе + ВидимостьДополнительныхРеквизитов = Истина; + КонецЕсли; + Иначе + ВидимостьДополнительныхРеквизитов = Ложь; + КонецЕсли; + + ИспользоватьВкладки = ВидимостьДополнительныхРеквизитов Или Элементы.ГруппаЭлектронныеПодписи.Видимость Или Элементы.ГруппаСертификатыШифрования.Видимость; + Элементы.ГруппаДополнительныеДанныеСтраницы.ОтображениеСтраниц = + ?(ИспользоватьВкладки , ОтображениеСтраницФормы.ЗакладкиСверху, ОтображениеСтраницФормы.Нет); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ДанныеФайла(Знач ПрисоединенныйФайл, + Знач ИдентификаторФормы = Неопределено, + Знач ПолучатьСсылкуНаДвоичныеДанные = Истина) + + Возврат РаботаСФайлами.ДанныеФайла( + ПрисоединенныйФайл, ИдентификаторФормы, ПолучатьСсылкуНаДвоичныеДанные); + +КонецФункции + +&НаКлиенте +Процедура ОткрытьФайлДляПросмотра() + + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + + ФайлРедактируется = ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) + И ЭтотОбъект.Объект.Редактирует = ТекущийПользователь; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ЭтотОбъект.Объект.Ссылка, Неопределено, УникальныйИдентификатор); + + РаботаСФайламиКлиент.ОткрытьФайл(ДанныеФайла, ФайлРедактируется); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьКаталогФайла() + + Если ЭтоНовый() + ИЛИ ЭтотОбъект.Объект.Зашифрован Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ЭтотОбъект.Объект.Ссылка, Неопределено, УникальныйИдентификатор); + РаботаСФайламиКлиент.ОткрытьКаталогФайла(ДанныеФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьКак() + + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + + ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляСохранения(ЭтотОбъект.Объект.Ссылка, Неопределено, УникальныйИдентификатор); + РаботаСФайламиСлужебныйКлиент.СохранитьКак(Неопределено, ДанныеФайла, Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеУдаленияДанных(Результат, ДополнительныеПараметры) Экспорт + + Закрыть(); + +КонецПроцедуры + +&НаСервере +Процедура УдалитьИзСпискаПодписейИЗаписатьФайл() + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + Возврат; + КонецЕсли; + + МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись"); + + ИндексыСтрок = Новый Массив; + Для Каждого НомерВыделеннойСтроки Из Элементы.ЭлектронныеПодписи.ВыделенныеСтроки Цикл + УдаляемаяСтрока = ЭлектронныеПодписи.НайтиПоИдентификатору(НомерВыделеннойСтроки); + ИндексыСтрок.Добавить(УдаляемаяСтрока.ПорядковыйНомер); + КонецЦикла; + + МодульЭлектроннаяПодпись.УдалитьПодпись(Объект.Ссылка, ИндексыСтрок, УникальныйИдентификатор); + Прочитать(); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьДоступностьКнопок(Форма, Элементы) + + ИменаВсехКоманд = ИменаВсехКомандФормы(); + ИменаДоступныхКоманд = ДоступныеКомандыФормы(Форма); + + Если Форма.ЭлектронныеПодписи.Количество() = 0 Тогда + СделатьКомандуНедоступной(ИменаДоступныхКоманд, "ОткрытьПодпись"); + КонецЕсли; + + Для Каждого ЭлементФормы Из Элементы Цикл + Если ТипЗнч(ЭлементФормы) <> Тип("КнопкаФормы") Тогда + Продолжить; + КонецЕсли; + Если ИменаВсехКоманд.Найти(ЭлементФормы.ИмяКоманды) <> Неопределено Тогда + ЭлементФормы.Доступность = Ложь; + КонецЕсли; + КонецЦикла; + + Для Каждого ЭлементФормы Из Элементы Цикл + Если ТипЗнч(ЭлементФормы) <> Тип("КнопкаФормы") Тогда + Продолжить; + КонецЕсли; + Если ИменаДоступныхКоманд.Найти(ЭлементФормы.ИмяКоманды) <> Неопределено Тогда + ЭлементФормы.Доступность = Истина; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ИменаВсехКомандФормы() + + ИменаКоманд = ИменаКомандИзмененияФайла(); + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаКоманд, ИменаПрочихКоманд()); + Возврат ИменаКоманд; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИменаПрочихКоманд() + + ИменаКоманд = Новый Массив; + + // Простые команды, которые доступны любому пользователю читающему файлы. + ИменаКоманд.Добавить("СохранитьВместеСЭП"); + + ИменаКоманд.Добавить("ОткрытьСертификат"); + ИменаКоманд.Добавить("ОткрытьПодпись"); + ИменаКоманд.Добавить("ПроверитьЭП"); + ИменаКоманд.Добавить("ПроверитьВсе"); + ИменаКоманд.Добавить("СохранитьПодпись"); + + ИменаКоманд.Добавить("ОткрытьКаталогФайла"); + ИменаКоманд.Добавить("ОткрытьФайлДляПросмотра"); + ИменаКоманд.Добавить("СохранитьКак"); + + Возврат ИменаКоманд; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИменаКомандИзмененияФайла() + + ИменаКоманд = Новый Массив; + + ИменаКоманд.Добавить("Подписать"); + ИменаКоманд.Добавить("ДобавитьЭПИзФайла"); + + ИменаКоманд.Добавить("УдалитьЭП"); + + ИменаКоманд.Добавить("Редактировать"); + ИменаКоманд.Добавить("Занять"); + ИменаКоманд.Добавить("ЗакончитьРедактирование"); + ИменаКоманд.Добавить("Освободить"); + ИменаКоманд.Добавить("СохранитьИзменения"); + + ИменаКоманд.Добавить("Зашифровать"); + ИменаКоманд.Добавить("Расшифровать"); + + ИменаКоманд.Добавить("СтандартныеСкопировать"); + ИменаКоманд.Добавить("ОбновитьИзФайлаНаДиске"); + + ИменаКоманд.Добавить("СтандартнаяЗаписать"); + ИменаКоманд.Добавить("СтандартнаяЗаписатьИЗакрыть"); + ИменаКоманд.Добавить("СтандартныеУстановитьПометкуУдаления"); + + ИменаКоманд.Добавить("Скопировать"); + + + Возврат ИменаКоманд; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ДоступныеКомандыФормы(Форма) + + ЭтоНовыйФайл = Форма.Объект.Ссылка.Пустая(); + + Если ЭтоНовыйФайл Тогда + ИменаКоманд = Новый Массив; + ИменаКоманд.Добавить("СтандартнаяЗаписать"); + ИменаКоманд.Добавить("СтандартнаяЗаписатьИЗакрыть"); + Возврат ИменаКоманд; + КонецЕсли; + + ИменаКоманд = ИменаВсехКомандФормы(); + + ФайлРедактируетсяВОблаке = Форма.ФайлРедактируетсяВОблаке; + ФайлРедактируется = ЗначениеЗаполнено(Форма.Объект.Редактирует) Или ФайлРедактируетсяВОблаке; + ФайлРедактируетТекущийПользователь = Форма.Объект.Редактирует = Форма.ТекущийПользователь; + ФайлПодписан = Форма.Объект.ПодписанЭП; + ФайлЗашифрован = Форма.Объект.Зашифрован; + + Если ФайлРедактируется Тогда + Если ФайлРедактируетТекущийПользователь Тогда + СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске"); + Иначе + СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); + СделатьКомандуНедоступной(ИменаКоманд, "Редактировать"); + + Если Не Форма.ИзменениеФайлов Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + КонецЕсли; + + КонецЕсли; + СделатьКомандуНедоступной(ИменаКоманд, "Занять"); + + СделатьКомандыЭПНедоступными(ИменаКоманд); + + СделатьКомандуНедоступной(ИменаКоманд, "Зашифровать"); + СделатьКомандуНедоступной(ИменаКоманд, "Расшифровать"); + Иначе + СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); + СделатьКомандуНедоступной(ИменаКоманд, "СохранитьИзменения"); + + Если Не Форма.ИзменениеФайлов Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + КонецЕсли; + КонецЕсли; + + Если ФайлПодписан Тогда + СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + СделатьКомандуНедоступной(ИменаКоманд, "Редактировать"); + СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске"); + Иначе + СделатьКомандуНедоступной(ИменаКоманд, "ОткрытьСертификат"); + СделатьКомандуНедоступной(ИменаКоманд, "ОткрытьПодпись"); + СделатьКомандуНедоступной(ИменаКоманд, "ПроверитьЭП"); + СделатьКомандуНедоступной(ИменаКоманд, "ПроверитьВсе"); + СделатьКомандуНедоступной(ИменаКоманд, "СохранитьПодпись"); + СделатьКомандуНедоступной(ИменаКоманд, "УдалитьЭП"); + СделатьКомандуНедоступной(ИменаКоманд, "СохранитьВместеСЭП"); + КонецЕсли; + + Если ФайлЗашифрован Тогда + СделатьКомандыЭПНедоступными(ИменаКоманд); + Если Не ФайлРедактируется Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); + КонецЕсли; + + СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске"); + СделатьКомандуНедоступной(ИменаКоманд, "Зашифровать"); + СделатьКомандуНедоступной(ИменаКоманд, "ОткрытьКаталогФайла"); + СделатьКомандуНедоступной(ИменаКоманд, "Подписать"); + Иначе + СделатьКомандуНедоступной(ИменаКоманд, "Расшифровать"); + КонецЕсли; + + Если ФайлРедактируетсяВОблаке Тогда + СделатьКомандуНедоступной(ИменаКоманд, "СтандартныеСкопировать"); + СделатьКомандуНедоступной(ИменаКоманд, "СтандартныеУстановитьПометкуУдаления"); + + СделатьКомандуНедоступной(ИменаКоманд, "СтандартнаяЗаписатьИЗакрыть"); + СделатьКомандуНедоступной(ИменаКоманд, "СтандартнаяЗаписать"); + СделатьКомандуНедоступной(ИменаКоманд, "Скопировать"); + СделатьКомандуНедоступной(ИменаКоманд, "СохранитьИзменения"); + СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске"); + + КонецЕсли; + + Если Форма.ТолькоПросмотр Тогда + СделатьКомандыЭПНедоступными(ИменаКоманд); + КонецЕсли; + + Возврат ИменаКоманд; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура СделатьКомандыЭПНедоступными(Знач ИменаКоманд) + + СделатьКомандуНедоступной(ИменаКоманд, "Подписать"); + СделатьКомандуНедоступной(ИменаКоманд, "ДобавитьЭПИзФайла"); + СделатьКомандуНедоступной(ИменаКоманд, "СохранитьВместеСЭП"); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура СделатьКомандуНедоступной(ИменаКоманд, ИмяКоманды) + + ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ИменаКоманд, ИмяКоманды); + +КонецПроцедуры + +&НаСервере +Процедура ЗашифроватьСервер(МассивДанныхДляЗанесенияВБазу, + МассивОтпечатков, + МассивФайловВРабочемКаталогеДляУдаления, + ИмяРабочегоКаталога) + + Зашифровать = Истина; + + РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании( + ЭтотОбъект.Объект.Ссылка, + Зашифровать, + МассивДанныхДляЗанесенияВБазу, + УникальныйИдентификатор, + ИмяРабочегоКаталога, + МассивФайловВРабочемКаталогеДляУдаления, + МассивОтпечатков); + + ОбновитьИнформациюОСертификатахОбъекта(); + +КонецПроцедуры + +&НаСервере +Процедура РасшифроватьСервер(МассивДанныхДляЗанесенияВБазу, + ИмяРабочегоКаталога) + + Зашифровать = Ложь; + МассивОтпечатков = Новый Массив; + МассивФайловВРабочемКаталогеДляУдаления = Новый Массив; + + РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании( + ЭтотОбъект.Объект.Ссылка, + Зашифровать, + МассивДанныхДляЗанесенияВБазу, + УникальныйИдентификатор, + ИмяРабочегоКаталога, + МассивФайловВРабочемКаталогеДляУдаления, + МассивОтпечатков); + + ОбновитьИнформациюОСертификатахОбъекта(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьОбъект() + Прочитать(); +КонецПроцедуры + +&НаСервере +Процедура ОсвободитьФайл() + + ЗаписываемыйОбъект = РеквизитФормыВЗначение("Объект"); + РаботаСФайламиСлужебный.ОсвободитьФайл(ЗаписываемыйОбъект); + ЗначениеВРеквизитФормы(ЗаписываемыйОбъект, "Объект"); + +КонецПроцедуры + +&НаКлиенте +Функция ОбработатьКомандуЗаписиФайла() + + Если ПустаяСтрока(ЭтотОбъект.Объект.Наименование) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Для продолжения укажите имя файла.'"), , "Наименование", "Объект"); + Возврат Ложь; + КонецЕсли; + + Попытка + РаботаСФайламиСлужебныйКлиент.КорректноеИмяФайла(ЭтотОбъект.Объект.Наименование); + Исключение + ОбщегоНазначенияКлиент.СообщитьПользователю( + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), ,"Наименование", "Объект"); + Возврат Ложь; + КонецПопытки; + + Записать(); + + Модифицированность = Ложь; + ОтобразитьИзменениеДанных(ЭтотОбъект.Объект.Ссылка, ВидИзмененияДанных.Изменение); + ОповеститьОбИзменении(ЭтотОбъект.Объект.Ссылка); + + Оповестить("Запись_Файл", + Новый Структура("ЭтоНовый", ФайлБылСоздан), + ЭтотОбъект.Объект.Ссылка); + + УстановитьДоступностьКомандСпискаЭП(); + УстановитьДоступностьКомандСпискаШифрования(); + + Если НаименованиеДоЗаписи <> Объект.Наименование Тогда + // в кэше обновить файл + Если ЗначениеЗаполнено(Объект.ТекущаяВерсия) Тогда + РаботаСФайламиСлужебныйКлиент.ОбновитьИнформациюВРабочемКаталоге( + Объект.ТекущаяВерсия, Объект.Наименование); + Иначе + РаботаСФайламиСлужебныйКлиент.ОбновитьИнформациюВРабочемКаталоге( + Объект.Ссылка, Объект.Наименование); + КонецЕсли; + + НаименованиеДоЗаписи = Объект.Наименование; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +&НаСервереБезКонтекста +Процедура РазблокироватьОбъект(Знач Ссылка, Знач УникальныйИдентификатор) + + РазблокироватьДанныеДляРедактирования(Ссылка, УникальныйИдентификатор); + +КонецПроцедуры + +// Продолжение процедуры ПодписатьФайлЭП. +// Вызывается из подсистемы ЭлектроннаяПодпись после подписания данных для нестандартного +// способа добавления подписи в объект. +// +&НаКлиенте +Процедура ПриПолученииПодписи(ПараметрыВыполнения, Контекст) Экспорт + + ОбновитьИнформациюОПодписиОбъекта(); + УстановитьДоступностьКомандСпискаЭП(); + +КонецПроцедуры + +// Продолжение процедуры ПодписатьФайлЭП. +// Вызывается из подсистемы ЭлектроннаяПодпись после подготовки подписей из файлов +// для нестандартного способа добавления подписи в объект. +// +&НаКлиенте +Процедура ПриПолученииПодписей(ПараметрыВыполнения, Контекст) Экспорт + + ОбновитьИнформациюОПодписиОбъекта(); + УстановитьДоступностьКомандСпискаЭП(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьИнформациюОПодписиОбъекта() + + ФайлОбъект = ЭтотОбъект.Объект.Ссылка.ПолучитьОбъект(); + ЗначениеВРеквизитФормы(ФайлОбъект, "Объект"); + РаботаСФайламиСлужебный.ЗаполнитьСписокПодписей(ЭтотОбъект); + УстановитьДоступностьКнопок(ЭтотОбъект, Элементы); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьИнформациюОСертификатахОбъекта() + + ФайлОбъект = ЭтотОбъект.Объект.Ссылка.ПолучитьОбъект(); + ЗначениеВРеквизитФормы(ФайлОбъект, "Объект"); + РаботаСФайламиСлужебный.ЗаполнитьСписокШифрования(ЭтотОбъект); + УстановитьДоступностьКнопок(ЭтотОбъект, Элементы); + +КонецПроцедуры + +&НаКлиенте +Процедура ПрочитатьИУстановитьДоступностьЭлементовФормы(Результат, ДополнительныеПараметры) Экспорт + + Прочитать(); + УстановитьДоступностьКнопок(ЭтотОбъект, Элементы); + +КонецПроцедуры + +&НаКлиенте +Процедура ПрочитатьСертификатыПодписей() + + Если ЭлектронныеПодписи.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + Возврат; + КонецЕсли; + + Контекст = Новый Структура; + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); + + Если МодульЭлектроннаяПодписьКлиент.ПроверятьЭлектронныеПодписиНаСервере() Тогда + Возврат; + КонецЕсли; + + НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения( + "ПрочитатьСертификатыПодписейПослеПодключенияРасширения", ЭтотОбъект, Контекст)); + +КонецПроцедуры + +// Продолжение процедуры ПрочитатьСертификатыПодписей. +&НаКлиенте +Процедура ПрочитатьСертификатыПодписейПослеПодключенияРасширения(Подключено, Контекст) Экспорт + + Если Не Подключено Тогда + Возврат; + КонецЕсли; + + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); + + МодульЭлектроннаяПодписьКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения( + "ПрочитатьСертификатыПодписейПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст), + "ПолучениеСертификатов", Ложь); + +КонецПроцедуры + +// Продолжение процедуры ПрочитатьСертификатыПодписей. +&НаКлиенте +Процедура ПрочитатьСертификатыПодписейПослеСозданияМенеджераКриптографии(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) <> Тип("МенеджерКриптографии") Тогда + Возврат; + КонецЕсли; + + Контекст.Вставить("Индекс", -1); + Контекст.Вставить("МенеджерКриптографии", Результат); + ПрочитатьСертификатыПодписейЦиклНачало(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПрочитатьСертификатыПодписей. +// +// Параметры: +// Контекст - Структура +// +&НаКлиенте +Процедура ПрочитатьСертификатыПодписейЦиклНачало(Контекст) + + Если ЭлектронныеПодписи.Количество() <= Контекст.Индекс + 1 Тогда + Возврат; + КонецЕсли; + Контекст.Индекс = Контекст.Индекс + 1; + Контекст.Вставить("СтрокаТаблицы", ЭлектронныеПодписи[Контекст.Индекс]); + + Если ЗначениеЗаполнено(Контекст.СтрокаТаблицы.Отпечаток) Тогда + ПрочитатьСертификатыПодписейЦиклНачало(Контекст); + Возврат; + КонецЕсли; + + // Подпись не была прочитана при записи объекта. + Подпись = ПолучитьИзВременногоХранилища(Контекст.СтрокаТаблицы.АдресПодписи); + + Если Не ЗначениеЗаполнено(Подпись) Тогда + ПрочитатьСертификатыПодписейЦиклНачало(Контекст); + Возврат; + КонецЕсли; + + Контекст.МенеджерКриптографии.НачатьПолучениеСертификатовИзПодписи(Новый ОписаниеОповещения( + "ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи", ЭтотОбъект, Контекст, + "ПрочитатьСертификатыПодписейЦиклПослеОшибкиПолученияСертификатовИзПодписи", ЭтотОбъект), + Подпись); + +КонецПроцедуры + +// Продолжение процедуры ПрочитатьСертификатыПодписей. +&НаКлиенте +Процедура ПрочитатьСертификатыПодписейЦиклПослеОшибкиПолученияСертификатовИзПодписи(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + ПрочитатьСертификатыПодписейЦиклНачало(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПрочитатьСертификатыПодписей. +&НаКлиенте +Процедура ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи(Сертификаты, Контекст) Экспорт + + Если Сертификаты.Количество() = 0 Тогда + ПрочитатьСертификатыПодписейЦиклНачало(Контекст); + Возврат; + КонецЕсли; + + Сертификат = Сертификаты[0];// СертификатКриптографии + Контекст.Вставить("Сертификат", Сертификат); + Сертификат.НачатьВыгрузку(Новый ОписаниеОповещения( + "ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата", ЭтотОбъект, Контекст, + "ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата", ЭтотОбъект)); + +КонецПроцедуры + +// Продолжение процедуры ПрочитатьСертификатыПодписей. +&НаКлиенте +Процедура ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + ПрочитатьСертификатыПодписейЦиклНачало(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ПрочитатьСертификатыПодписей. +&НаКлиенте +Процедура ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата(ДанныеСертификата, Контекст) Экспорт + + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); + СтрокаТаблицы = Контекст.СтрокаТаблицы; + + СтрокаТаблицы.Отпечаток = Base64Строка(Контекст.Сертификат.Отпечаток); + СтрокаТаблицы.АдресСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификата, УникальныйИдентификатор); + СтрокаТаблицы.КомуВыданСертификат = МодульЭлектроннаяПодписьКлиент.ПредставлениеСубъекта(Контекст.Сертификат); + + ПрочитатьСертификатыПодписейЦиклНачало(Контекст); + +КонецПроцедуры + +&НаКлиенте +Функция ЭтоНовый() + + Возврат ЭтотОбъект.Объект.Ссылка.Пустая(); + +КонецФункции + +&НаКлиенте +Процедура ОбновитьИзФайлаНаДискеЗавершение(Результат, ПараметрыВыполнения) Экспорт + ОбновитьДанныеОбъектаНаСервере(); + ОповеститьОбИзменении(ЭтотОбъект.Объект.Ссылка); + Оповестить("Запись_Файл", Новый Структура, ЭтотОбъект.Объект.Ссылка); +КонецПроцедуры + +&НаСервере +Процедура ОбновитьДанныеОбъектаНаСервере() + + ЗначениеВРеквизитФормы(ЭтотОбъект.Объект.Ссылка.ПолучитьОбъект(), "Объект"); + ДатаМодификации = МестноеВремя(ЭтотОбъект.Объект.ДатаМодификацииУниверсальная); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененияИспользованияПодписанияИлиШифрования() + + ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере(); + ОтображатьВкладкиДополнительныхДанных(); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере() + + РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект, Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппаДополнительныеДанныеСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") + И ТекущаяСтраница.Имя = "ГруппаДополнительныеРеквизиты" + И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда + + СвойстваВыполнитьОтложеннуюИнициализацию(); + МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент"); + МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьПолныйПуть() + Если ТипЗнч(Объект.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда + + ПапкаРодитель = Объект.ВладелецФайла; + + Если ЗначениеЗаполнено(ПапкаРодитель) Тогда + + ПолныйПуть = ""; + + Пока ЗначениеЗаполнено(ПапкаРодитель) Цикл + + Если Не ПустаяСтрока(ПолныйПуть) Тогда + ПолныйПуть = "\" + ПолныйПуть; + КонецЕсли; + + ПолныйПуть = Строка(ПапкаРодитель) + ПолныйПуть; + + ПапкаРодитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПапкаРодитель, "Родитель"); + Если Не ЗначениеЗаполнено(ПапкаРодитель) Тогда + Прервать; + КонецЕсли; + + КонецЦикла; + + Элементы.ВладелецФайла.Подсказка = ПолныйПуть; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СоздатьКопиюВерсии(Приемник, Источник) + + Если Источник.ТекущаяВерсия.Пустая() Тогда + Возврат; + КонецЕсли; + + ХранилищеФайла = Неопределено; + Если Источник.ТекущаяВерсия.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда + ХранилищеФайла = РаботаСФайлами.ХранилищеФайлаИзИнформационнойБазы(Источник.ТекущаяВерсия); + КонецЕсли; + + СведенияОФайле = РаботаСФайламиКлиентСервер.СведенияОФайле("ФайлСВерсией"); + СведенияОФайле.ИмяБезРасширения = Объект.Наименование; + СведенияОФайле.Размер = Источник.ТекущаяВерсия.Размер; + СведенияОФайле.РасширениеБезТочки = Источник.ТекущаяВерсия.Расширение; + СведенияОФайле.АдресВременногоХранилищаФайла = ХранилищеФайла; + СведенияОФайле.АдресВременногоХранилищаТекста = Источник.ТекущаяВерсия.ТекстХранилище; + СведенияОФайле.СсылкаНаВерсиюИсточник = Источник.ТекущаяВерсия; + СведенияОФайле.Зашифрован = Источник.Зашифрован; + + Версия = РаботаСФайламиСлужебный.СоздатьВерсию(Приемник, СведенияОФайле); + РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле( + Приемник, Версия, Источник.ТекущаяВерсия.ТекстХранилище, УникальныйИдентификатор); + Прочитать(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьПояснениеОблачногоСервиса(ПрисоединенныйФайл) + + ВидимостьПояснения = Ложь; + + Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюФайлов") Тогда + + СведенияОСинхронизации = РаботаСФайламиСлужебный.СведенияОСинхронизации(Объект.ВладелецФайла); + + Если СведенияОСинхронизации.Количество() > 0 Тогда + + УчетнаяЗапись = СведенияОСинхронизации.УчетнаяЗапись; + ВидимостьПояснения = Истина; + + АдресПапкиВОблачномСервисе = РаботаСФайламиСлужебныйКлиентСервер.АдресВОблачномСервисе( + СведенияОСинхронизации.Сервис, СведенияОСинхронизации.Href); + + Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункции.ФорматированнаяСтрока( + НСтр("ru = 'Файл доступен только для просмотра, работа с ним ведется в облачном сервисе %2.'"), + АдресПапкиВОблачномСервисе, СведенияОСинхронизации.УчетнаяЗаписьНаименование); + + Элементы.ДекорацияКартинкаСтатусСинхронизации.Видимость = НЕ СведенияОСинхронизации.Синхронизирован; + + Элементы.ДекорацияДатаСинхронизации.Заголовок = СтроковыеФункции.ФорматированнаяСтрока( + НСтр("ru = 'Синхронизирован: %1'"), + Формат(СведенияОСинхронизации.ДатаСинхронизации, "ДЛФ=DD")); + + КонецЕсли; + + КонецЕсли; + + Элементы.ГруппаПояснениеОблачногоСервиса.Видимость = ВидимостьПояснения; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ДанныеОтбораЖурналаРегистрации(УчетнаяЗапись) + Возврат РаботаСФайламиСлужебный.ДанныеОтбораЖурналаРегистрации(УчетнаяЗапись); +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Help/ru.html" new file mode 100644 index 00000000..c932eee4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Help/ru.html" @@ -0,0 +1,77 @@ + +

    +

    Программа предоставляет возможность хранения файлов произвольного формата. В отличие от хранения файлов на дисках или в корпоративных программах документооборота, файлы связываются с данными программы. Так удобно хранить файлы, непосредственно связанные с данными. Объектами-хранителями файлов в программе могут быть различные списки, документы, бизнес-процессы и т.д. Работа с файлами, прикрепленными к объекту, осуществляется в списке Присоединенные файлы. Список можно открыть соответствующей командой на панели навигации документа или другого объекта программы. Существует также возможность хранить файлы без привязки к конкретному объекту в списке файлов.

    +

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

    +

    +

    Работа с файлами

    +

    +

    Для работы с файлами используйте команды, расположенные на командной панели или в меню Еще в списке файлов, в контекстном меню по правой кнопке мыши или карточке файла: 

    +

    + + + + + + + + + + + + + + + + + + + + + + +
    Команда Описание
     Добавить (Insert)Добавляет новый файл в программу. Возможные способы создания файла: из шаблона, из файла на диске, со сканера.
     Открыть (Просмотреть)Открывает файл внешним приложением для просмотра или редактирования, в зависимости от того, помечен ли файл как занятый текущим пользователем для редактирования.
     Редактировать (F4)Помечает файл как занятый для редактирования и открывает его внешним приложением.
    Клавиша Enter (двойной щелчок мыши)По умолчанию необходимо выбрать, как открыть файл - для просмотра или для редактирования. Действие настраивается в персональных настройках программы на закладке Работа с файлами.
    Закончить Обновляет файл в хранилище и снимает с него пометку занятости для редактирования. 
    ПечатьС помощью кнопки можно распечатать файл.
    ОтправитьМожно отправить почтовое сообщение, выбранный файл при этом автоматически будет его приложением.
     Сохранить измененияСохраняет версию редактируемого файла в хранилище, но оставляет его занятым текущим пользователем для редактирования
     ЗанятьПомечает файл в хранилище как занятый текущим пользователем для редактирования, но не открывает внешнее приложение. Приступить непосредственно к редактированию можно будет позже.
     Отменить редактированиеСнимает с файла пометку занятости для редактирования.
     Открыть карточкуОткрыть карточку файла, в которой хранятся сведения о файле.
    ПредпросмотрВключите флажок, для того чтобы просмотреть изображение в списке файлов.
     Сохранить какСохраняет файл в указанный каталог на жестком или сетевом диске.
    Открыть каталог файлаОткрыть папку в Проводнике Windows, в которой находится файл.
     Обновить из файла на дискеОбновляет файл в информационной базе выбранным файлом на жестком диске. При этом программа проверяет даты файлов, при попытке заменить файл старой версией выводится предупреждение, действие не выполняется.
    Показывать служебные файлыПрограмма автоматически присоединяет к объектам служебные файлы. Обычно они скрываются. Включите флажок, для того чтобы видеть в списке эти файлы.
     ПодписатьСоздает электронную подпись для файла. Перед созданием электронной подписи программа предлагает выбрать сертификат электронной подписи из имеющихся на компьютере. Выбор сертификата можно сделать и во время персональных настроек программы. Подписанный файл становится недоступным для редактирования и отображается в списках со значком . Подписанный файл можно скопировать, при этом программа задаст вопрос - копировать файл с подписью или без.
    Добавить электронную подпись из файлаДобавляет выбранный файл подписи к подписям файла. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
    Сохранить вместе с электронной подписьюСохраняет файл в указанный каталог на жестком или сетевом диске, а также сохраняет подписи файла - все или выбранные, в зависимости от настройки действий При сохранении данных в файл вместе с электронной подписью (в персональных настройках программы, вкладка Дополнительно) Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
     ЗашифроватьШифрование файла. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Выберите нужные из списка с помощью флажков. Зашифрованный файл в списках отображается со значком . В отличие от подписания пароль к закрытому ключу в процессе шифрования вводить не нужно. Зашифрованный файл доступен для редактирования. Шифруются все версии файла. Для зашифрованных файлов не работает полнотекстовый поиск. Зашифрованный файл можно скопировать. При этом новый, скопированный файл останется зашифрованным. Зашифрованный файл нельзя подписать.Подписанный файл зашифровать можно, при этом перед проверкой электронной подписи у зашифрованного файла программа запросит пароль для предварительной расшифровки файла.
    РасшифроватьПо команде происходит расшифровка файла. Для расшифровки нужно ввести пароль к закрытому ключу.

    Примечание: Если файл зашифрован, полнотекстовый поиск по его содержимому не работает.

    +

    Добавление файлов

    +

    Для добавления нового файла в программу:

    +
    • +
      Нажмите Добавить (клавишу Insert);
      +
    • +
    • +
      Выберите способ создания:
      +
      • +
        Файл с диска 
        +
        • +
          Для того чтобы прикрепить к объекту или поместить в папку уже имеющийся на компьютере файл, укажите путь к файлу на диске, нажмите кнопку Открыть.
          +
        • +
        • +
          После этого программа сохранит файл, автоматически создаст и откроет Карточку файла.
      • +
      • +
        По шаблону
        +
        • +
          Выделите шаблон файла в списке выбора, затем нажмите кнопку Выбрать.
          +
        • +
        • +
          Программой будет автоматически создана и открыта Карточка файла.
      • +
      • +
        Со сканера
        +
        • +
          Вариант создания файла Со сканера становится доступным, если к компьютеру подключен сканер (более подробно см. документацию к сканеру) и на компьютере подключена компонента для работы со сканером. Также необходимо настроить сканирование.
          +
        • +
        • +
          Если все условия соблюдены и настройки выполнены, можно получить файл со сканера.
          +
        • +
        • +
          Для этого необходимо следовать инструкциям Помощника сканирования.
          +
        • +
        • +
          После того как документ отсканирован, выполните команду Принять, после этого файлу автоматически присваивается код и создается карточка файла, которая выводится на экран. В поле Наименование также автоматически проставляется код. Отредактируйте нужные поля, нажмите Записать и закрыть, для того чтобы сохранить карточку файла.

      См. также:

      + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..f66dade1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" @@ -0,0 +1,281 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(ВладелецФайла)"; + + Ограничение.ТекстДляВнешнихПользователей = + "РазрешитьЧтение + |ГДЕ + | ВЫБОР + | КОГДА ТипЗначения(ВладелецФайла) = Тип(Справочник.ПапкиФайлов) + | ТОГДА ЧтениеОбъектаРазрешено(ВЫРАЗИТЬ(ВладелецФайла КАК Справочник.ПапкиФайлов)) + | ИНАЧЕ ЗначениеРазрешено(ВЫРАЗИТЬ(Автор КАК Справочник.ВнешниеПользователи)) + | КОНЕЦ + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ВЫБОР + | КОГДА ТипЗначения(ВладелецФайла) = Тип(Справочник.ПапкиФайлов) + | ТОГДА ИзменениеОбъектаРазрешено(ВЫРАЗИТЬ(ВладелецФайла КАК Справочник.ПапкиФайлов)) + | ИНАЧЕ ЗначениеРазрешено(ВЫРАЗИТЬ(Автор КАК Справочник.ВнешниеПользователи)) + | КОНЕЦ"; + Ограничение.ПоВладельцуБезЗаписиКлючейДоступаДляВнешнихПользователей = Ложь; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +// СтандартныеПодсистемы.ПодключаемыеКоманды + +// Определяет список команд создания на основании. +// +// Параметры: +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры +// +Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт + +КонецПроцедуры + +// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов. +// Добавляет в список команд создания на основании этот объект. +// +// Параметры: +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений, Неопределено - описание добавленной команды. +// +Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульСозданиеНаОсновании = ОбщегоНазначения.ОбщийМодуль("СозданиеНаОсновании"); + Возврат МодульСозданиеНаОсновании.ДобавитьКомандуСозданияНаОсновании(КомандыСозданияНаОсновании, Метаданные.Справочники.Файлы); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + + Если Параметры.Количество() = 0 Тогда + ВыбраннаяФорма = "Файлы"; // Т.к. не указан конкретный файл, то открываем список файлов. + СтандартнаяОбработка = Ложь; + КонецЕсли; + Если ВидФормы = "ФормаСписка" Тогда + ТекущаяСтрока = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ТекущаяСтрока"); + Если ТипЗнч(ТекущаяСтрока) = Тип("СправочникСсылка.Файлы") И Не ТекущаяСтрока.Пустая() Тогда + СтандартнаяОбработка = Ложь; + ВладелецФайла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущаяСтрока, "ВладелецФайла"); + Если ТипЗнч(ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда + Параметры.Вставить("Папка", ВладелецФайла); + ВыбраннаяФорма = "Обработка.РаботаСФайлами.Форма.ПрисоединенныеФайлы"; + Иначе + Параметры.Вставить("ВладелецФайла", ВладелецФайла); + ВыбраннаяФорма = "Обработка.РаботаСФайлами.Форма.ПрисоединенныеФайлы"; + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, +// которые необходимо обновить на новую версию. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ОтработаныВсеФайлы = Ложь; + Ссылка = ""; + + ПараметрыВыборки = Параметры.ПараметрыВыборки; + ПараметрыВыборки.ПолныеИменаОбъектов = "Справочник.Файлы"; + ПараметрыВыборки.СпособВыборки = ОбновлениеИнформационнойБазы.СпособВыборкиСсылки(); + + Пока Не ОтработаныВсеФайлы Цикл + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1000 + | Файлы.Ссылка КАК Ссылка + |ИЗ + | Справочник.Файлы КАК Файлы + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОФайлах КАК СведенияОФайлах + | ПО Файлы.Ссылка = СведенияОФайлах.Файл + |ГДЕ + | ((Файлы.ДатаМодификацииУниверсальная = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) + | И Файлы.ТекущаяВерсия <> ЗНАЧЕНИЕ(Справочник.ВерсииФайлов.ПустаяСсылка) + | ИЛИ Файлы.ТипХраненияФайла = ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ПустаяСсылка)) + | И Файлы.Ссылка > &Ссылка + | ИЛИ СведенияОФайлах.Файл ЕСТЬ NULL) + | + |УПОРЯДОЧИТЬ ПО + | Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", Ссылка); + МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); + + КоличествоСсылок = МассивСсылок.Количество(); + Если КоличествоСсылок < 1000 Тогда + ОтработаныВсеФайлы = Истина; + КонецЕсли; + + Если КоличествоСсылок > 0 Тогда + Ссылка = МассивСсылок[КоличествоСсылок - 1]; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ОбработкаЗавершена = Истина; + + ВыбранныеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры); + + ОбъектовОбработано = 0; + ПроблемныхОбъектов = 0; + + Для Каждого Строка Из ВыбранныеДанные Цикл + + НачатьТранзакцию(); + Попытка + + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Справочник.Файлы"); + ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Строка.Ссылка); + + ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Справочник.ВерсииФайлов"); + ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Строка.Ссылка.ТекущаяВерсия); + ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Разделяемый; + + БлокировкаДанных.Заблокировать(); + + ОбновляемыйФайл = Строка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.Файлы + ОбновляемыйФайл.ДатаМодификацииУниверсальная = ОбновляемыйФайл.ТекущаяВерсия.ДатаМодификацииУниверсальная; + ОбновляемыйФайл.ТипХраненияФайла = ОбновляемыйФайл.ТекущаяВерсия.ТипХраненияФайла; + + НаборЗаписей = РегистрыСведений.СведенияОФайлах.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.Файл.Установить(Строка.Ссылка); + НаборЗаписей.Прочитать(); + Если НаборЗаписей.Количество() = 0 Тогда + СведенияОФайле = НаборЗаписей.Добавить(); + ЗаполнитьЗначенияСвойств(СведенияОФайле, ОбновляемыйФайл); + СведенияОФайле.Файл = ОбновляемыйФайл.Ссылка; + АвторИВладелец = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОбновляемыйФайл.Ссылка, "Автор, ВладелецФайла"); + СведенияОФайле.Автор = АвторИВладелец.Автор; + СведенияОФайле.ВладелецФайла = АвторИВладелец.ВладелецФайла; + + Если ОбновляемыйФайл.ПодписанЭП И ОбновляемыйФайл.Зашифрован Тогда + СведенияОФайле.НомерКартинкиПодписанЗашифрован = 2; + ИначеЕсли ОбновляемыйФайл.Зашифрован Тогда + СведенияОФайле.НомерКартинкиПодписанЗашифрован = 1; + ИначеЕсли ОбновляемыйФайл.ПодписанЭП Тогда + СведенияОФайле.НомерКартинкиПодписанЗашифрован = 0; + Иначе + СведенияОФайле.НомерКартинкиПодписанЗашифрован = -1; + КонецЕсли; + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); + КонецЕсли; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ОбновляемыйФайл); + + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Строка.Ссылка); + ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + // Если не удалось обработать какой-либо документ, повторяем попытку снова. + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать файл: %1 по причине: + |%2'"), + Строка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Строка.Ссылка.Метаданные(), Строка.Ссылка, ТекстСообщения); + КонецПопытки; + + КонецЦикла; + + Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.Файлы") Тогда + ОбработкаЗавершена = Ложь; + КонецЕсли; + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре Справочники.Файлы.ОбработатьДанныеДляПереходаНаНовуюВерсию.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать программы электронной подписи (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + , , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедура Справочники.Файлы.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию программ электронной подписи: %1'"), + ОбъектовОбработано)); + КонецЕсли; + + Параметры.ОбработкаЗавершена = ОбработкаЗавершена; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Templates/\320\234\320\260\320\272\320\265\321\202\320\236\321\202\321\207\320\265\321\202\320\260/Template.mxlx" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Templates/\320\234\320\260\320\272\320\265\321\202\320\236\321\202\321\207\320\265\321\202\320\260/Template.mxlx" new file mode 100644 index 00000000..aa61bebb --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/Templates/\320\234\320\260\320\272\320\265\321\202\320\236\321\202\321\207\320\265\321\202\320\260/Template.mxlx" @@ -0,0 +1,125 @@ + + + + ru + ru + + ru + Русский + Русский + + + + 2 + + 0 + + 1 + + + + 1 + + 2 + + + + + 9bb67b5f-5e3e-459e-98c5-618e04892d9b + 1 + + 0 + + 3 + + + + + 0 + + true + + + + 1 + + 9bb67b5f-5e3e-459e-98c5-618e04892d9b + + + 4 + Описание + + + + + + 2 + + 5 + + + 6 + Название + + + + + 7 + Ошибка + + + + + true + 8 + 3 + 3 + + Заголовок + + Rows + 1 + 1 + -1 + -1 + 9bb67b5f-5e3e-459e-98c5-618e04892d9b + + + + Строка + + Rows + 2 + 2 + -1 + -1 + + + + + 465 + + + 491 + + + 383 + + + 0 + Parameter + + + 96 + + + Parameter + + + Wrap + Parameter + + + 72 + + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..bc7afd72 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\244\320\260\320\271\320\273\321\213/\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,1032 @@ + + + + + + + + + + Файлы + + ru + Файлы + + Файлы в папках + Catalog.Файлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + Catalog.ПапкиФайлов.EmptyRef + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла (без расширения) + + + + + Use + + + + + Use + Code + + ru + Код + + + + + Use + + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.ИмяПредопределенногоНабора + + Справочник_Файлы + + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты.StandardAttribute.Ref + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты.Attribute.Значение + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.ИмяПредопределенногоНабора + + Справочник_Файлы + + InformationRegister.ДополнительныеСведения + InformationRegister.ДополнительныеСведения.Dimension.Объект + InformationRegister.ДополнительныеСведения.Dimension.Свойство + InformationRegister.ДополнительныеСведения.Resource.Значение + + DontUse + true + + + ru + + + Managed + Use + + ru + Файл + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + Catalog.Файлы.Form.ФормаЭлемента + Catalog.Файлы.Form.Файлы + Catalog.Файлы.Form.ФормаВыбора + + Автор + + ru + Автор + + + CatalogRef.ВнешниеПользователи + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил файл в список + + + + ShowError + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Размещение + + + DefinedType.ВладелецФайлов + + + ru + Место размещения файла (папка или другой объект) + + + + ShowError + + Catalog.ПапкиФайлов.EmptyRef + + Index + Use + Use + + + ДатаЗаема + + ru + Дата заема + + + Date + + + + ru + ДЛФ=ДВ + + + ru + ДЛФ=ДВ + + + ru + Дата, когда файл был занят для редактирования + + + + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата модификации универсальная + + + Date + + + + ru + Дата изменения данных файла (универсальное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления файла в список + + + + + 0001-01-01T00:00:00 + + Index + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Use + Use + + + ИндексКартинки + + ru + Индекс значка + + + Number + + 10 + + + + ru + Индекс значка файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Краткое описание файла + + true + + + + + + Use + Use + + + ПодписанЭП + + ru + Подписан электронно + + + Boolean + + + ru + Признак того, что файл подписан электронно + + + + + Index + Use + Use + + + УдалитьПолноеНаименование + + ru + (не используется) Полное наименование + + + String + + 256 + + + + ru + Имя файла (без расширения) длиной до 256 символов + + + + + + + Index + Use + ForFolderAndItem + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.ВнешниеПользователи + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который занял файл для редактирования + + + + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + Служебный + + ru + Служебный + + + Boolean + + + ru + Признак того, что файл является служебным + + + + + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТекущаяВерсия + + ru + Активная версия + + + CatalogRef.ВерсииФайлов + + + ru + Активная версия файла + + + + DontUse + Use + + Catalog.ВерсииФайлов.EmptyRef + + Index + Use + Use + + + Изменил + + ru + Отредактировал + + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + ru + Последний пользователь, который отредактировал файл + + + + Use + + Catalog.Пользователи.EmptyRef + + Use + + + УдалитьТекущаяВерсияДатаМодификацииФайла + + ru + (не используется) Дата изменения (местное время) + + + Date + + + + ru + Дата изменения данных файла (местное время) + + + + + Use + + + УдалитьТекущаяВерсияДатаСоздания + + ru + (не используется) Дата редактирования + + + Date + + + + ru + Дата, когда было закончено последнее редактирование файла + + + + + 0001-01-01T00:00:00 + + Index + Use + + + УдалитьТекущаяВерсияКод + + ru + (не используется) Код активной версии + + + String + + 11 + + + + ru + Код активной версии файла + + + + + + + Use + + + УдалитьТекущаяВерсияНомерВерсии + + ru + (не используется) Номер активной версии + + + Number + + 5 + + + + ru + Номер активной версии файла + + + + + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + + + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + + + Index + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (если файл хранится в томе) + + + + + Index + Use + + + ХранитьВерсии + + ru + Хранить версии + + + Boolean + + + ru + Добавлять версии файла при окончании редактирования. +Если отключить, тогда будет хранится только последняя версия. + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или в информационной базе) + + + + ShowError + + Index + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ФайлХранилище + + ru + Временное хранилище файла + + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + + + + + ДополнительныеРеквизиты + + ru + Дополнительные реквизиты + + + ru + Дополнительные реквизиты объекта + + + Use + LineNumber + + Use + + + + + Свойство + + ru + Свойство + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + ru + Дополнительный реквизит + + + + DontUse + Use + Use + Use + + + Значение + + ru + Значение + + + Characteristic.ДополнительныеРеквизитыИСведения + + + ru + Значение дополнительного реквизита + + + + + Отбор.Владелец + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + + DontUse + Use + Use + Use + + + ТекстоваяСтрока + + ru + Текстовая строка + + + String + + + + ru + Полный текст строкового дополнительного реквизита + + + + Use + Use + + + + + + + + УдалитьСертификатыШифрования + + ru + (не используется) Сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + + Файлы + + ru + Файлы + + true + + + ru + + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаНового + + ru + Форма нового + + true + + + ru + + + PersonalComputer + MobileDevice + + + ФормаПеретаскивания + + ru + Форма перетаскивания + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаПодбора + + ru + Форма подбора + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + МакетОтчета + + ru + Макет отчета + + + + Файлы + + ru + Файлы + + Открывает список файлов в папках + NavigationPanelOrdinary + + Auto + + + + ВерсииФайла + + ru + Версии файла + + FormNavigationPanelGoTo + + CatalogRef.Файлы + + Auto + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..3a09592f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,438 @@ + + + + ГруппаПользовательскихНастроек + 14 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Код + 6 + true + true + + true + + + + Список.Code + + + + КодExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 11 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 12 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 16 + + СписокСтрокаПоискаРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 17 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 19 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 20 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 22 + + СписокУправлениеПоискомРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 23 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + true + MultiRow +
      true
      + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
      + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + Copy + Create + CreateFolder + Delete + SetDeletionMark + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
      true
      + + Catalog.ШаблоныАнкет + true + true + true + true + +
      + + + + + +
      diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..72ae8f7a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,13 @@ + +

      Предназначен для выбора шаблонов анкеты.

      +

      Открывается при выборе шаблона анкет из документа Назначение опросов.

      +

      В списке выводится Наименование шаблона и его Код, который автоматически присваивается программой.

      +

      Выбор шаблона анкеты

      +
      • Выделите шаблон анкеты, нажмите Выбрать. +
      • Также можно воспользоваться двойным щелчком мыши.

      Ввод шаблона анкеты

      +

      Нажмите Создать, заполните необходимые поля.

      +

      Группировка шаблонов

      +
      • Шаблоны можно группировать. Для этого введите необходимое количество групп. +
      • Нажмите Создать группу, введите Наименование. Группу можно подчинить одной из существующих. Для этого в поле Родитель укажите группу из списка. +
      • Перетащите шаблоны в соответствующие группы или в группах введите шаблоны.

      См. также:

      + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" new file mode 100644 index 00000000..b6719170 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" @@ -0,0 +1,858 @@ + + + + <key>ru</key> + <value>Редактирование комплексного вопроса</value> + + + Формулировка + 141 + true + true + + true + + + + Формулировка + + + Top + + ФормулировкаExtendedTooltip + 147 + true + true + + true + + Label + true + true + + Left + + + + ФормулировкаКонтекстноеМеню + 142 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 50 + true + true + true + true + true + true + true + true + + ru + Введите формулировку вопроса + + + + + ГруппаВопросы + 68 + + Вопросы + 136 + true + true + + true + + + Вопросы + + false + None + + ВопросыВопрос + 139 + + <key>ru</key> + <value>Вопрос</value> + + true + true + + true + + + + Вопросы.ЭлементарныйВопрос + + + + ВопросыВопросExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + + ВопросыВопросКонтекстноеМеню + 140 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + ChoiceProcessing + ВопросыВопросОбработкаВыбора + + true + true + true + false + true + Items + true + true + true + + + + ВопросыКоманднаяПанель + 138 + true + true + + true + + Left + true + + + true + true + + true + + ВопросыSearchString + 228 + + ВопросыSearchStringExtendedTooltip + 230 + true + true + + true + + Label + true + true + + Left + + + + ВопросыSearchStringContextMenu + 229 + true + true + + true + + true + + + true + + + + true + true + + true + + ВопросыViewStatus + 231 + + ВопросыViewStatusExtendedTooltip + 233 + true + true + + true + + Label + true + true + + Left + + + + ВопросыViewStatusContextMenu + 232 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВопросыSearchControl + 234 + + ВопросыSearchControlExtendedTooltip + 236 + true + true + + true + + Label + true + true + + Left + + + + ВопросыSearchControlContextMenu + 235 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВопросыExtendedTooltip + 177 + true + true + + true + + Label + true + true + + Left + + + + ВопросыКонтекстноеМеню + 137 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
      true
      + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + true + None + None + None + +
      + true + true + + true + + + <key>ru</key> + <value>Подбор вопросов. Укажите хотя бы один вопрос:</value> + + + ГруппаВопросыExtendedTooltip + 176 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + +
      + + ГруппаПодсказка + 241 + + СпособОтображенияПодсказки + 243 + true + true + + true + + + + СпособОтображенияПодсказки + + + + СпособОтображенияПодсказкиРасширеннаяПодсказка + 245 + true + true + + true + + Label + true + true + + Left + + + + СпособОтображенияПодсказкиКонтекстноеМеню + 244 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + Подсказка + 246 + true + true + + true + + + + Подсказка + + + + ПодсказкаРасширеннаяПодсказка + 248 + true + true + + true + + Label + true + true + + Left + + + + ПодсказкаКонтекстноеМеню + 247 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + ГруппаПодсказкаРасширеннаяПодсказка + 242 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + КнопкаОК + 237 + true + true + + true + + + КнопкаОКРасширеннаяПодсказка + 238 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КнопкаОК + Auto + true + true + true + UserCmds + Auto + + + КнопкаОтмена + 239 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + КнопкаОтменаРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + Abort + Cancel + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Вопросы + 10 + + ValueTable + + + true + + + true + + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + Представление + 2 + + String + + 150 + + + + true + + + true + + + + Формулировка + 3 + + String + + 500 + + + + true + + + true + + + + ТипОтвета + 4 + + EnumRef.ТипыОтветовНаВопрос + + + true + + + true + + + + + ПредставлениеВопроса + 4 + + String + + + + true + + + true + + + + Вопрос + 5 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + ИнформацияШапка + 9 + + String + + + + true + + + true + + + + ИнформацияПодвал + 11 + + String + + + + true + + + true + + + + Формулировка + + <key>ru</key> + <value>Формулировка</value> + + 12 + + String + + + + true + + + true + + + + Подсказка + + <key>ru</key> + <value>Подсказка</value> + + 1 + + String + + + + true + + + true + + + + СпособОтображенияПодсказки + + <key>ru</key> + <value>Способ отображения подсказки</value> + + 13 + + EnumRef.СпособыОтображенияПодсказок + + + true + + + true + + + + ВыполняетсяЗакрытие + 14 + + Boolean + + + true + + + true + + + + ЭтоНоваяСтрока + 15 + + Boolean + + + true + + + true + + + + КнопкаОК + + <key>ru</key> + <value>Готово</value> + + 1 + + ru + Закончить редактирование вопроса + + + true + + + + КнопкаОК + + + DontUse + + + Формулировка + + String + + + + + Подсказка + + String + + + + + СпособОтображенияПодсказки + + EnumRef.СпособыОтображенияПодсказок + + + + ЭтоНоваяСтрока + + Boolean + + + + СоставКомплексногоВопроса + + + + + + +
      diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..e5fd3765 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" @@ -0,0 +1,15 @@ + +

      Предназначен для ввода и редактирования комплексных вопросов анкеты.

      +

      Открывается по команде Добавить - комплексный вопрос из шаблона анкеты.

      +
      • +
        Напишите Формулировку вопроса.
        +
      • +
        С помощью кнопки Добавить выберите нужные вопросы из списка вопросов.
        +
      • Для работы с вопросами используйте команды меню Еще или контекстное меню по правой кнопке мыши. +
      • В поле Способ отображения подсказки укажите, как будет показываться подсказка в тексте анкеты: +
        • Контекстная подсказка - текст подсказки будет все время виден; +
        • Знак вопроса справа - в этом случае текст подсказки скрыт, ее можно увидеть, нажав на знак вопроса.
      • В поле Подсказка напишите краткое объяснение вопроса, для того чтобы респонденту было легче на него отвечать. +
      • +
        Нажмите ОК для окончания редактирования.

      См. также:

      + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..86003cad --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\201\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" @@ -0,0 +1,152 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +// Параметры формы: +// СоставКомплексногоВопроса - ДанныеФормыКоллекция - с колонками: +// * ЭлементарныйВопрос - ПланВидовХарактеристикСсылка.ВопросыДляАнкетирования +// * НомерСтроки - Число +// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Примем параметры формы владельца. + ОбработатьПараметрыФормыВладельца(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если Не ВыполняетсяЗакрытие И ЭтоНоваяСтрока Тогда + Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВопросыВопросОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; + КонецЕсли; + + РеквизитыВопрос = РеквизитыВопроса(ВыбранноеЗначение); + Если РеквизитыВопрос.ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + ТекЭлемент = Вопросы.НайтиПоИдентификатору(Элементы.Вопросы.ТекущаяСтрока); + ТекЭлемент.ЭлементарныйВопрос = ВыбранноеЗначение; + + ТекЭлемент.Представление = РеквизитыВопрос.Представление; + ТекЭлемент.Формулировка = РеквизитыВопрос.Формулировка; + ТекЭлемент.ТипОтвета = РеквизитыВопрос.ТипОтвета; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КнопкаОК(Команда) + + ВыполняетсяЗакрытие = Истина; + Оповестить("ОкончаниеРедактированияПараметровКомплексногоВопроса",СформироватьСтруктуруПараметровДляПередачиВладельцу()); + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Формирует структуру возврата для передачи в форму владельца. +&НаКлиенте +Функция СформироватьСтруктуруПараметровДляПередачиВладельцу() + + СтруктураПараметров = Новый Структура; + + ВопросыКВозврату = Новый Массив; + Для каждого СтрокаТаблицы Из Вопросы Цикл + ВопросыКВозврату.Добавить(СтрокаТаблицы.ЭлементарныйВопрос); + КонецЦикла; + СтруктураПараметров.Вставить("Вопросы",ВопросыКВозврату); + СтруктураПараметров.Вставить("Формулировка",Формулировка); + СтруктураПараметров.Вставить("Подсказка",Подсказка); + СтруктураПараметров.Вставить("СпособОтображенияПодсказки",СпособОтображенияПодсказки); + + Возврат СтруктураПараметров; + +КонецФункции + +// Обрабатывает параметры формы владельца. +// +&НаСервере +Процедура ОбработатьПараметрыФормыВладельца() + + Формулировка = Параметры.Формулировка; + Подсказка = Параметры.Подсказка; + СпособОтображенияПодсказки = Параметры.СпособОтображенияПодсказки; + ЭтоНоваяСтрока = Параметры.ЭтоНоваяСтрока; + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ + | Вопросы.ЭлементарныйВопрос, + | Вопросы.НомерСтроки + |ПОМЕСТИТЬ ЭлементарныеВопросы + |ИЗ + | &Вопросы КАК Вопросы + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЭлементарныеВопросы.ЭлементарныйВопрос КАК ЭлементарныйВопрос, + | ЕСТЬNULL(ВопросыДляАнкетирования.Представление, """""""") КАК Представление, + | ЕСТЬNULL(ВопросыДляАнкетирования.Формулировка, """""""") КАК Формулировка, + | ЕСТЬNULL(ВопросыДляАнкетирования.ТипОтвета, """") КАК ТипОтвета + |ИЗ + | ЭлементарныеВопросы КАК ЭлементарныеВопросы + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ВопросыДляАнкетирования КАК ВопросыДляАнкетирования + | ПО ЭлементарныеВопросы.ЭлементарныйВопрос = ВопросыДляАнкетирования.Ссылка + | + |УПОРЯДОЧИТЬ ПО + | ЭлементарныеВопросы.НомерСтроки"; + + Запрос.УстановитьПараметр("Вопросы", Параметры.СоставКомплексногоВопроса.Выгрузить()); + + Результат = Запрос.Выполнить(); + Если НЕ Результат.Пустой() Тогда; + Выборка = Результат.Выбрать(); + Пока Выборка.Следующий() Цикл + + НоваяСтрока = Вопросы.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока,Выборка); + + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция РеквизитыВопроса(Вопрос) + + Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Вопрос,"Представление,Формулировка,ЭтоГруппа,ТипОтвета"); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" new file mode 100644 index 00000000..3b7ebd50 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" @@ -0,0 +1,3787 @@ + + + + <key>ru</key> + <value>Редактирование табличного вопроса</value> + + + Формулировка + 141 + true + true + + true + + + + Формулировка + + + + OnChange + ФормулировкаПриИзменении + + + ФормулировкаExtendedTooltip + 147 + true + true + + true + + Label + true + true + + Left + + + + ФормулировкаКонтекстноеМеню + 142 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + true + + ru + Введите формулировку вопроса + + + + + ГруппаОсновныеСтраницы + 208 + + Страницы + 1 + + СтраницаТипТабличногоВопроса + 2 + + ТипТабличногоВопроса + 3 + true + true + + true + + + + ТипТабличногоВопроса + + + None + + OnChange + ТипТабличногоВопросаПриИзменении + + + ТипТабличногоВопросаExtendedTooltip + 151 + true + true + + true + + Label + true + true + + Left + + + + ТипТабличногоВопросаКонтекстноеМеню + 4 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + 1 + + + + СтраницыТипТабличногоВопросаКартинки + 79 + + СтраницаКартинкаСоставной + 80 + + КартинкаСоставной + 81 + + <key>ru</key> + <value>Картинка составной</value> + + true + true + + true + + + КартинкаСоставнойExtendedTooltip + 154 + true + true + + true + + Label + true + true + + Left + + + + КартинкаСоставнойКонтекстноеМеню + 82 + true + true + + true + + true + + true + true + false + + + CommonPicture.ПревьюТабличногоВопросаСоставной + + + + true + true + + true + + + <key>ru</key> + <value>Страница картинка составной</value> + + + СтраницаКартинкаСоставнойExtendedTooltip + 153 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + Center + Center + true + + + + СтраницаКартинкаОтветыВСтроках + 83 + + КартинкаОтветыВСтроках + 84 + + <key>ru</key> + <value>Картинка ответы в строках</value> + + true + true + + true + + + КартинкаОтветыВСтрокахExtendedTooltip + 156 + true + true + + true + + Label + true + true + + Left + + + + КартинкаОтветыВСтрокахКонтекстноеМеню + 85 + true + true + + true + + true + + true + true + true + true + false + + + CommonPicture.ПревьюТабличногоВопросаОтветыВСтроках + + + + true + true + + true + + + <key>ru</key> + <value>Страница картинка ответы в строках</value> + + + СтраницаКартинкаОтветыВСтрокахExtendedTooltip + 155 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаКартинкаОтветыВКолонках + 86 + + КартинкаОтветыВКолонках + 87 + + <key>ru</key> + <value>Картинка ответы в колонках</value> + + true + true + + true + + + КартинкаОтветыВКолонкахExtendedTooltip + 158 + true + true + + true + + Label + true + true + + Left + + + + КартинкаОтветыВКолонкахКонтекстноеМеню + 88 + true + true + + true + + true + + true + true + true + true + false + + + CommonPicture.ПревьюТабличногоВопросаОтветыВКолонках + + + + true + true + + true + + + <key>ru</key> + <value>Страница картинка ответы в колонках</value> + + + СтраницаКартинкаОтветыВКолонкахExtendedTooltip + 157 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаКартинкаОтветыВСтрокахИКолонках + 89 + + КартинкаОтветыВСтрокахИКолонках + 90 + + <key>ru</key> + <value>Картинка ответы в строках и колонках</value> + + true + true + + true + + + КартинкаОтветыВСтрокахИКолонкахExtendedTooltip + 160 + true + true + + true + + Label + true + true + + Left + + + + КартинкаОтветыВСтрокахИКолонкахКонтекстноеМеню + 91 + true + true + + true + + true + + true + true + true + true + false + + + CommonPicture.ПревьюТабличногоВопросаОтветыСтрокиИКолонки + + + + true + true + + true + + + <key>ru</key> + <value>Страница картинка ответы в строках и колонках</value> + + + СтраницаКартинкаОтветыВСтрокахИКолонкахExtendedTooltip + 159 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаКартинкаПустая + 92 + + КартинкаПустая + 93 + + <key>ru</key> + <value>Картинка пустая</value> + + true + true + + true + + + КартинкаПустаяExtendedTooltip + 162 + true + true + + true + + Label + true + true + + Left + + + + КартинкаПустаяКонтекстноеМеню + 94 + true + true + + true + + true + + true + true + false + + + true + true + + true + + + <key>ru</key> + <value>Страница картинка пустая</value> + + + СтраницаКартинкаПустаяExtendedTooltip + 161 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + СтраницыТипТабличногоВопросаКартинкиExtendedTooltip + 152 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница тип табличного вопроса</value> + + + СтраницаТипТабличногоВопросаExtendedTooltip + 150 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + СтраницаПредопределенныеОтветыВСтрокахИКолонках + 13 + + ГруппаОбщаяОтветыВСтрокахИКолонках + 67 + + ГруппаСоставКолонокОтветыВСтрокахИКолонках + 20 + + ВопросКолонкаОтветыСтрокахИКолонках + 14 + true + true + + true + + + + ПредставлениеВопросаДляКолонок + + + None + + ВопросКолонкаОтветыСтрокахИКолонкахExtendedTooltip + 166 + true + true + + true + + Label + true + true + + Left + + + + ВопросКолонкаОтветыСтрокахИКолонкахКонтекстноеМеню + 15 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ОтветыКолонкиОтветыВСтрокахИКолонках + 22 + true + true + + true + + + Ответы + + false + None + + ОтветыКолонкиОтветыВСтрокахИКолонкахОтвет + 117 + true + true + + true + + + + Ответы.Ответ + + + + ОтветыКолонкиОтветыВСтрокахИКолонкахОтветExtendedTooltip + 169 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВСтрокахИКолонкахОтветКонтекстноеМеню + 118 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + ОтветыКолонкиОтветыВСтрокахИКолонкахОтветНачалоВыбора + + true + true + true + true + true + true + + + ВопросДляКолонок + + + + + + ОтветыКолонкиОтветыВСтрокахИКолонкахКоманднаяПанель + 24 + + ЗаполнитьКолонкиВариантыОтветовОтветыСтрокахИКолонках + 145 + true + true + + true + + false + + ЗаполнитьКолонкиВариантыОтветовОтветыСтрокахИКолонкахExtendedTooltip + 167 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаполнитьВариантыОтветовОтветыКолонки + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Left + true + + + BeforeAddRow + ОтветыКолонкиОтветыВСтрокахИКолонкахПередНачаломДобавления + + + OnChange + ОтветыКолонкиОтветыВСтрокахИКолонкахПриИзменении + + + true + true + + true + + ОтветыКолонкиОтветыВСтрокахИКолонкахSearchString + 210 + + ОтветыКолонкиОтветыВСтрокахИКолонкахSearchStringExtendedTooltip + 212 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВСтрокахИКолонкахSearchStringContextMenu + 211 + true + true + + true + + true + + + true + + + + true + true + + true + + ОтветыКолонкиОтветыВСтрокахИКолонкахViewStatus + 213 + + ОтветыКолонкиОтветыВСтрокахИКолонкахViewStatusExtendedTooltip + 215 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВСтрокахИКолонкахViewStatusContextMenu + 214 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОтветыКолонкиОтветыВСтрокахИКолонкахSearchControl + 216 + + ОтветыКолонкиОтветыВСтрокахИКолонкахSearchControlExtendedTooltip + 218 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВСтрокахИКолонкахSearchControlContextMenu + 217 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОтветыКолонкиОтветыВСтрокахИКолонкахExtendedTooltip + 168 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВСтрокахИКолонкахКонтекстноеМеню + 23 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + true + + + true + true + + true + + + ГруппаСоставКолонокОтветыВСтрокахИКолонкахExtendedTooltip + 165 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаСоставСтрокОтветыВСтрокахИКолонках + 21 + + ВопросСтрокаОтветыВСтрокахИКолонках + 16 + + <key>ru</key> + <value>Вопрос для строк</value> + + true + true + + true + + + + ПредставлениеВопросаДляСтрок + + + None + + ВопросСтрокаОтветыВСтрокахИКолонкахExtendedTooltip + 171 + true + true + + true + + Label + true + true + + Left + + + + ВопросСтрокаОтветыВСтрокахИКолонкахКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ОтветыСтрокиОтветыВСтрокахИКолонках + 27 + true + true + + true + + + Ответы + + false + None + + ОтветыСтрокиОтветыВСтрокахИКолонкахОтвет + 121 + true + true + + true + + + + Ответы.Ответ + + + + ОтветыСтрокиОтветыВСтрокахИКолонкахОтветExtendedTooltip + 174 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахИКолонкахОтветКонтекстноеМеню + 122 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + ОтветыСтрокиОтветыВСтрокахИКолонкахОтветНачалоВыбора + + true + true + true + true + true + true + + + ВопросДляСтрок + + + + + + ОтветыСтрокиОтветыВСтрокахИКолонкахКоманднаяПанель + 29 + + ЗаполнитьСтрокиВариантыОтветовОтветыСтрокиИКолонки + 146 + true + true + + true + + false + + ЗаполнитьСтрокиВариантыОтветовОтветыСтрокиИКолонкиExtendedTooltip + 172 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаполнитьВариантыОтветовОтветыСтроки + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Left + true + + + BeforeAddRow + ОтветыСтрокиОтветыВСтрокахИКолонкахПередНачаломДобавления + + + OnChange + ОтветыСтрокиОтветыВСтрокахИКолонкахПриИзменении + + + true + true + + true + + ОтветыСтрокиОтветыВСтрокахИКолонкахSearchString + 219 + + ОтветыСтрокиОтветыВСтрокахИКолонкахSearchStringExtendedTooltip + 221 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахИКолонкахSearchStringContextMenu + 220 + true + true + + true + + true + + + true + + + + true + true + + true + + ОтветыСтрокиОтветыВСтрокахИКолонкахViewStatus + 222 + + ОтветыСтрокиОтветыВСтрокахИКолонкахViewStatusExtendedTooltip + 224 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахИКолонкахViewStatusContextMenu + 223 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОтветыСтрокиОтветыВСтрокахИКолонкахSearchControl + 225 + + ОтветыСтрокиОтветыВСтрокахИКолонкахSearchControlExtendedTooltip + 227 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахИКолонкахSearchControlContextMenu + 226 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОтветыСтрокиОтветыВСтрокахИКолонкахExtendedTooltip + 173 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахИКолонкахКонтекстноеМеню + 28 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + true + + + true + true + + true + + + ГруппаСоставСтрокОтветыВСтрокахИКолонкахExtendedTooltip + 170 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + ГруппаОбщаяОтветыВСтрокахИКолонкахExtendedTooltip + 164 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница предопределенные ответы в строках и колонках</value> + + + СтраницаПредопределенныеОтветыВСтрокахИКолонкахExtendedTooltip + 163 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаВопросы + 34 + + ГруппаВопросы + 68 + + Вопросы + 136 + true + true + + true + + + Вопросы + + false + None + + ВопросыВопрос + 139 + + <key>ru</key> + <value>Вопрос</value> + + true + true + + true + + + + Вопросы.ЭлементарныйВопрос + + + + OnChange + ВопросыПриИзменении + + + ВопросыВопросExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + + ВопросыВопросКонтекстноеМеню + 140 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + ChoiceProcessing + ВопросыВопросОбработкаВыбора + + true + true + true + false + true + Items + true + true + true + + + + ВопросыКоманднаяПанель + 138 + true + true + + true + + Left + true + + + OnChange + ВопросыПриИзменении + + + true + true + + true + + ВопросыSearchString + 228 + + ВопросыSearchStringExtendedTooltip + 230 + true + true + + true + + Label + true + true + + Left + + + + ВопросыSearchStringContextMenu + 229 + true + true + + true + + true + + + true + + + + true + true + + true + + ВопросыViewStatus + 231 + + ВопросыViewStatusExtendedTooltip + 233 + true + true + + true + + Label + true + true + + Left + + + + ВопросыViewStatusContextMenu + 232 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВопросыSearchControl + 234 + + ВопросыSearchControlExtendedTooltip + 236 + true + true + + true + + Label + true + true + + Left + + + + ВопросыSearchControlContextMenu + 235 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВопросыExtendedTooltip + 177 + true + true + + true + + Label + true + true + + Left + + + + ВопросыКонтекстноеМеню + 137 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
      true
      + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + true + +
      + true + true + + true + + + ГруппаВопросыExtendedTooltip + 176 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + +
      + true + true + + true + + + <key>ru</key> + <value>Страница вопросы</value> + + + СтраницаВопросыExtendedTooltip + 175 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + +
      + + СтраницаПредопределенныеОтветыВКолонках + 33 + + ГруппаСоставКолонокОтветыВКолонках + 47 + + ВопросКолонкаОтветыВКолонках + 40 + true + true + + true + + + + ПредставлениеВопросаДляКолонок + + + None + + ВопросКолонкаОтветыВКолонкахExtendedTooltip + 181 + true + true + + true + + Label + true + true + + Left + + + + ВопросКолонкаОтветыВКолонкахКонтекстноеМеню + 41 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ОтветыКолонкиОтветыВКолонках + 42 + true + true + + true + + + Ответы + + false + None + + ОтветыКолонкиОтветыВКолонкахОтвет + 113 + true + true + + true + + + + Ответы.Ответ + + + + ОтветыКолонкиОтветыВКолонкахОтветExtendedTooltip + 184 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВКолонкахОтветКонтекстноеМеню + 114 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + ОтветыКолонкиОтветыВКолонкахОтветНачалоВыбора + + true + true + true + true + true + true + + + ВопросДляКолонок + + + + + + ОтветыКолонкиОтветыВКолонкахКоманднаяПанель + 44 + + ЗаполнитьВариантыОтветовОтветыКолонки + 144 + true + true + + true + + false + + ЗаполнитьВариантыОтветовОтветыКолонкиExtendedTooltip + 182 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаполнитьВариантыОтветовОтветыКолонки + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Left + true + + + BeforeAddRow + ОтветыКолонкиОтветыВКолонкахПередНачаломДобавления + + + OnChange + ОтветыКолонкиОтветыВКолонкахПриИзменении + + + true + true + + true + + ОтветыКолонкиОтветыВКолонкахSearchString + 237 + + ОтветыКолонкиОтветыВКолонкахSearchStringExtendedTooltip + 239 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВКолонкахSearchStringContextMenu + 238 + true + true + + true + + true + + + true + + + + true + true + + true + + ОтветыКолонкиОтветыВКолонкахViewStatus + 240 + + ОтветыКолонкиОтветыВКолонкахViewStatusExtendedTooltip + 242 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВКолонкахViewStatusContextMenu + 241 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОтветыКолонкиОтветыВКолонкахSearchControl + 243 + + ОтветыКолонкиОтветыВКолонкахSearchControlExtendedTooltip + 245 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВКолонкахSearchControlContextMenu + 244 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОтветыКолонкиОтветыВКолонкахExtendedTooltip + 183 + true + true + + true + + Label + true + true + + Left + + + + ОтветыКолонкиОтветыВКолонкахКонтекстноеМеню + 43 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + true + + + + ВопросДляКолонок + 125 + true + + true + + + + ВопросДляКолонок + + + + ВопросДляКолонокExtendedTooltip + 185 + true + true + + true + + Label + true + true + + Left + + + + ВопросДляКолонокКонтекстноеМеню + 126 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + ГруппаСоставКолонокОтветыВКолонкахExtendedTooltip + 180 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница предопределенные ответы в колонках</value> + + + СтраницаПредопределенныеОтветыВКолонкахExtendedTooltip + 179 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + СтраницаПредопределенныеОтветыВСтроках + 32 + + ГруппаСоставСтрокОтветыВСтроках + 53 + + ВопросСтрокаОтветыВСтроках + 59 + true + true + + true + + + + ПредставлениеВопросаДляСтрок + + + None + + ВопросСтрокаОтветыВСтрокахExtendedTooltip + 188 + true + true + + true + + Label + true + true + + Left + + + + ВопросСтрокаОтветыВСтрокахКонтекстноеМеню + 60 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ОтветыСтрокиОтветыВСтроках + 54 + true + true + + true + + + Ответы + + false + None + + ОтветыСтрокиОтветыВСтрокахОтвет + 107 + true + true + + true + + + + Ответы.Ответ + + + + ОтветыСтрокиОтветыВСтрокахОтветExtendedTooltip + 191 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахОтветКонтекстноеМеню + 108 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + ОтветыСтрокиОтветыВСтрокахОтветНачалоВыбора + + true + true + true + false + true + ShowInInputField + false + false + true + true + + + ВопросДляСтрок + + + + + + ОтветыСтрокиОтветыВСтрокахКоманднаяПанель + 56 + + ЗаполнитьВариантыОтветовОтветыСтроки + 143 + true + true + + true + + false + + ЗаполнитьВариантыОтветовОтветыСтрокиExtendedTooltip + 189 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаполнитьВариантыОтветовОтветыСтроки + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Left + true + + + BeforeAddRow + ОтветыСтрокиОтветыВСтрокахПередНачаломДобавления + + + OnChange + ОтветыСтрокиОтветыВСтрокахПриИзменении + + + true + true + + true + + ОтветыСтрокиОтветыВСтрокахSearchString + 246 + + ОтветыСтрокиОтветыВСтрокахSearchStringExtendedTooltip + 248 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахSearchStringContextMenu + 247 + true + true + + true + + true + + + true + + + + true + true + + true + + ОтветыСтрокиОтветыВСтрокахViewStatus + 249 + + ОтветыСтрокиОтветыВСтрокахViewStatusExtendedTooltip + 251 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахViewStatusContextMenu + 250 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОтветыСтрокиОтветыВСтрокахSearchControl + 252 + + ОтветыСтрокиОтветыВСтрокахSearchControlExtendedTooltip + 254 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахSearchControlContextMenu + 253 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОтветыСтрокиОтветыВСтрокахExtendedTooltip + 190 + true + true + + true + + Label + true + true + + Left + + + + ОтветыСтрокиОтветыВСтрокахКонтекстноеМеню + 55 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + true + + + + ВопросДляСтрок + 123 + true + + true + + + + ВопросДляСтрок + + + + ВопросДляСтрокExtendedTooltip + 192 + true + true + + true + + Label + true + true + + Left + + + + ВопросДляСтрокКонтекстноеМеню + 124 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + ГруппаСоставСтрокОтветыВСтрокахExtendedTooltip + 187 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Состав строк:</value> + + + СтраницаПредопределенныеОтветыВСтрокахExtendedTooltip + 186 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + СтраницаРезультирующаяТаблица + 70 + + РезультирующаяТаблица + 76 + true + true + + true + + + РезультирующаяТаблица + + false + None + None + + РезультирующаяТаблицаКоманднаяПанель + 78 + true + true + + true + + Left + true + + + true + true + + true + + РезультирующаяТаблицаSearchString + 255 + + РезультирующаяТаблицаSearchStringExtendedTooltip + 257 + true + true + + true + + Label + true + true + + Left + + + + РезультирующаяТаблицаSearchStringContextMenu + 256 + true + true + + true + + true + + + true + + + + true + true + + true + + РезультирующаяТаблицаViewStatus + 258 + + РезультирующаяТаблицаViewStatusExtendedTooltip + 260 + true + true + + true + + Label + true + true + + Left + + + + РезультирующаяТаблицаViewStatusContextMenu + 259 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РезультирующаяТаблицаSearchControl + 261 + + РезультирующаяТаблицаSearchControlExtendedTooltip + 263 + true + true + + true + + Label + true + true + + Left + + + + РезультирующаяТаблицаSearchControlContextMenu + 262 + true + true + + true + + true + + SearchControlAddition + + true + + + + РезультирующаяТаблицаExtendedTooltip + 194 + true + true + + true + + Label + true + true + + Left + + + + РезультирующаяТаблицаКонтекстноеМеню + 77 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow +
      true
      + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
      + true + true + + true + + + <key>ru</key> + <value>Страница результирующая таблица</value> + + + СтраницаРезультирующаяТаблицаExtendedTooltip + 193 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
      + true + true + + true + + + СтраницыExtendedTooltip + 149 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
      + true + true + + true + + + <key>ru</key> + <value>Основные страницы</value> + + + ГруппаОсновныеСтраницыРасширеннаяПодсказка + 209 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + +
      + + ГруппаПодсказка + 264 + + СпособОтображенияПодсказки + 266 + true + true + + true + + + + СпособОтображенияПодсказки + + + + СпособОтображенияПодсказкиРасширеннаяПодсказка + 268 + true + true + + true + + Label + true + true + + Left + + + + СпособОтображенияПодсказкиКонтекстноеМеню + 267 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + + Подсказка + 269 + true + true + + true + + + + Подсказка + + + + ПодсказкаРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + + ПодсказкаКонтекстноеМеню + 270 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + false + true + true + true + true + true + true + + + true + true + + true + + + ГруппаПодсказкаРасширеннаяПодсказка + 265 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ИнформацияПодвал + 130 + true + true + + true + + + + ИнформацияПодвал + + + None + + ИнформацияПодвалExtendedTooltip + 195 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияПодвалКонтекстноеМеню + 131 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ГруппаКнопки + 10 + + КнопкаНазад + 127 + + <key>ru</key> + <value>< Назад</value> + + true + true + + true + + false + + КнопкаНазадExtendedTooltip + 199 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПредыдущаяСтраница + true + 1 + true + UserCmds + + Style.FormBackColor + + Auto + + + ГруппаДалее + 204 + + КнопкаВперед + 12 + + <key>ru</key> + <value>Далее ></value> + + true + true + + true + + false + + КнопкаВпередExtendedTooltip + 200 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СледующаяСтраница + true + true + true + UserCmds + Auto + + + КнопкаОтмена + 11 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + false + + КнопкаОтменаРасширеннаяПодсказка + 201 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + UserCmds + + Style.FormBackColor + + + Style.FormBackColor + + Auto + + + Справка + 206 + true + true + + true + + + СправкаРасширеннаяПодсказка + 207 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + 1 + Right + + ГруппаДалееРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + false + + ГруппаКнопкиExtendedTooltip + 196 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + Abort + Cancel + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ТипТабличногоВопроса + + <key>ru</key> + <value>Тип табличного вопроса</value> + + 1 + + EnumRef.ТипыТабличныхВопросов + + + true + + + true + + + + Вопросы + 10 + + ValueTable + + + true + + + true + + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + Представление + 2 + + String + + 150 + + + + true + + + true + + + + Формулировка + 3 + + String + + 500 + + + + true + + + true + + + + ТипОтвета + 4 + + EnumRef.ТипыОтветовНаВопрос + + + true + + + true + + + + + РезультирующаяТаблица + + <key>ru</key> + <value>Результирующая таблица</value> + + 8 + + ValueTable + + + true + + + true + + + + Ответы + + <key>ru</key> + <value>Ответы</value> + + 2 + + ValueTable + + + true + + + true + + + ЭлементарныйВопрос + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + Ответ + + <key>ru</key> + <value>Ответ</value> + + 2 + + Characteristic.ВопросыДляАнкетирования + + + true + + + true + + + + + ПредставлениеВопросаДляСтрок + + <key>ru</key> + <value>Представление вопроса для строк</value> + + 3 + + String + + 150 + + + + true + + + true + + + + ПредставлениеВопросаДляКолонок + + <key>ru</key> + <value>Представление вопроса для колонок</value> + + 4 + + String + + + + true + + + true + + + + ВопросДляКолонок + + <key>ru</key> + <value>Вопрос для колонок</value> + + 5 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + ВопросДляСтрок + + <key>ru</key> + <value>Вопрос для строк</value> + + 6 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + ИнформацияШапка + 9 + + String + + + + true + + + true + + + + ИнформацияПодвал + + <key>ru</key> + <value>Информация подвал</value> + + 11 + + String + + + + true + + + true + + + + Формулировка + + <key>ru</key> + <value>Формулировка</value> + + 12 + + String + + + + true + + + true + + + + Подсказка + + <key>ru</key> + <value>Подсказка</value> + + 13 + + String + + + + true + + + true + + + + СпособОтображенияПодсказки + + <key>ru</key> + <value>Способ отображения подсказки</value> + + 14 + + EnumRef.СпособыОтображенияПодсказок + + + true + + + true + + + + ЭтоНоваяСтрока + 15 + + Boolean + + + true + + + true + + + + ВыполняетсяЗакрытие + 16 + + Boolean + + + true + + + true + + + + СледующаяСтраница + + <key>ru</key> + <value>Следующая страница</value> + + 1 + + ru + Следующая страница + + + true + + + + СледующаяСтраница + + + DontUse + + + ПредыдущаяСтраница + + <key>ru</key> + <value>Предыдущая страница</value> + + 2 + + ru + Предыдущая страница + + + true + + + + ПредыдущаяСтраница + + + DontUse + + + ЗаполнитьВариантыОтветовОтветыСтроки + + <key>ru</key> + <value>Заполнить вариантами ответов</value> + + 3 + + ru + Заполнить варианты ответов + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьВариантыОтветовОтветыВСтроках + + + DontUse + + + ЗаполнитьВариантыОтветовОтветыКолонки + + <key>ru</key> + <value>Заполнить вариантами ответов</value> + + 4 + + ru + Заполнить варианты ответов + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьВариантыОтветовОтветыВКолонках + + + DontUse + + + ТипТабличногоВопроса + + EnumRef.ТипыТабличныхВопросов + + + + Формулировка + + String + + + + + Подсказка + + String + + + + + СпособОтображенияПодсказки + + EnumRef.СпособыОтображенияПодсказок + + + + ЭтоНоваяСтрока + + Boolean + + + + СоставТабличногоВопроса + + + + ПредопределенныеОтветы + + + + + + +
      diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..a60bcc89 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" @@ -0,0 +1,81 @@ + +

      Предназначен для ввода и редактирования табличных вопросов анкеты.

      +

      Открывается по команде Добавить - табличный вопрос из шаблона анкеты.

      +

      Выбор типа табличного вопроса

      +
      • +
        На первой странице мастера напишите Формулировку вопроса, например, "Укажите близких родственников".
        +
        +
      • В поле Способ отображения подсказки укажите, как будет показываться подсказка в тексте анкеты: +
        +
        • Контекстная подсказка - текст подсказки будет все время виден; +
        • Знак вопроса справа - в этом случае текст подсказки скрыт, ее можно увидеть, нажав на знак вопроса.
      • В поле Подсказка напишите краткое объяснение вопроса, для того чтобы респонденту было легче на него отвечать. +
      • +

        С помощью переключателя выберите тип табличного вопроса. Табличные вопросы могут быть четырех типов:

        +
      • +
        В правой части окна располагается рисунок с примером выбранного типа табличного вопроса. 
        +
      • +
        Нажмите кнопку Далее для подбора вопросов.
        +
      • +
        Для работы с вопросами используйте команды меню Еще или контекстное меню по правой кнопке мыши.
        +
      • +
        Если заранее подготовить вопросы типа Выбор одного или нескольких вариантов ответа из предложенных, то можно будет использовать предопределенные ответы в табличных вопросах, кроме этого, можно быстро добавить варианты ответов.

      Составной табличный вопрос

      +
      • +
        Для составного табличного вопроса задается состав вопросов. Заданные вопросы будут отображаться в качестве заголовков колонок таблицы.
        +
      • +
        Респондент, отвечающий на вопросы анкеты, сможет добавить произвольное количество строк в таблицу при ответе.
        +
      • +
        С помощью команды Добавить выберите необходимое количество вопросов из списка.
        +
      • +
        Нажмите Далее для просмотра получившейся таблицы.

      Табличный вопрос с предопределенными ответами в строках

      +
      • +
        Для данного типа табличного вопроса на второй странице помощника задается состав вопросов.
        +
      • +
        Нажмите Добавить, выберите как минимум два вопроса из списка.
      • +
        Заданные вопросы будут отображаться в качестве заголовков колонок таблицы в анкете респондента.
        +
      • Число строк в таблице фиксировано, при ответе респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству предопределенных ответов. +
      • +
         Для первого вопроса на третьей странице помощника задайте предопределенные ответы, которые будут отображаться в строках первой колонки таблицы. Нажмите Добавить. Для добавления воспользуйтесь одним из способов:
        +
        • +
          Напишите варианты ответов для первого вопроса вручную.
          +
        • +
          Если был выбран вопрос типа Выбор одного или нескольких вариантов ответа из предложенных, то для того чтобы быстро перечислить возможные варианты ответов для первого введенного вопроса, можно воспользоваться кнопкой Заполнить варианты ответов.

      Табличный вопрос с предопределенными ответами в колонках

      +
      • +
        Этот тип табличного вопроса является вариантом предыдущего.
        +
      • +
        Для данного типа табличного вопроса задается состав вопросов. Заданные вопросы будут выведены в строках первой колонки таблицы. С помощью кнопки Добавить введите как минимум два вопроса.
        +
      • +
        +
        На третьей странице помощника составитель анкеты указывает предопределенные ответы на первый вопрос для колонок таблицы. Для этого нажмите Добавить. Для добавления воспользуйтесь одним из способов:
        +
        • +
          Напишите варианты ответов для первого вопроса вручную.
        • +
          Если был выбран вопрос типа Выбор одного или нескольких вариантов ответа из предложенных, то для того чтобы быстро перечислить все варианты, выбрав их из первого введенного вопроса, можно воспользоваться кнопкой Заполнить варианты ответов.
      • Данные предопределенные ответы будут отображаться в качестве заголовков колонок таблицы. При ответе респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству вопросов, уменьшенному на один (ответы на первый вопрос - это заголовки колонок, при этом первый вопрос в таблице не отображается).

      Табличный вопрос с предопределенными ответами в строках и колонках

      +
      • +
        Для данного типа табличного вопроса задается три вопроса. Нажмите Добавить, выберите вопросы из списка.
        +
      • +
        На третьей странице помощника необходимо задать предопределенные ответы на первые два вопроса.
        +
        • +
          Предопределенные ответы на первый вопрос будут отражаться в качестве заголовков строк таблицы.
          +
        • +
          Предопределенные ответы на второй вопрос будут отражаться в качестве заголовков колонок.
      • +
        Ответы на третий вопрос респондент должен будет указывать в ячейках таблицы.
        +
      • +
        Нажмите кнопку Добавить. Для добавления предопределенных вариантов ответов на первые два вопроса воспользуйтесь одним из способов:
        +
        • +
          Напишите варианты ответов вручную.
          +
        • Если были заранее созданы вопросы типа Выбор одного или нескольких вариантов ответа из предложенных, то для того чтобы быстро перечислить все ответы, можно воспользоваться кнопкой Заполнить варианты ответов.
      +
      • +
        При ответе респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству предопределенных ответов на первый вопрос.

        Просмотр готового табличного вопроса

        +
        • +
          На последней странице помощника для просмотра выводится таблица в том виде, в каком она будет выглядеть в анкете респондента. Если необходимо поменять состав вопросов или их расположение в таблице, можно вернуться на предыдущие шаги с помощью кнопки Назад.
          +
        • +
          Нажмите Готово для окончания редактирования.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..f19f6f49 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\202\320\265\321\200\320\260\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" @@ -0,0 +1,820 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +// Параметры формы: +// СоставТабличногоВопроса - ДанныеФормыКоллекция - с колонками: +// * ЭлементарныйВопрос - ПланВидовХарактеристикСсылка.ВопросыДляАнкетирования +// * НомерСтроки - Число +// + +#Область ОбработчикиСобытийФормы + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + УправлениеДоступностью(); + УстановитьИнформационныеНадписи(); + +КонецПроцедуры + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Установим список выбора для типа табличного вопроса. + Для каждого ЭлементМетаданных Из Метаданные.Перечисления.ТипыТабличныхВопросов.ЗначенияПеречисления Цикл + Элементы.ТипТабличногоВопроса.СписокВыбора.Добавить(Перечисления.ТипыТабличныхВопросов[ЭлементМетаданных.Имя],ЭлементМетаданных.Синоним); + КонецЦикла; + + // Примем параметры формы владельца. + ОбработатьПараметрыФормыВладельца(); + + // Установим страницу + Если Параметры.ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПустаяСсылка() Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаТипТабличногоВопроса; + Иначе + СформироватьРезультирующуюТаблицу(); + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаРезультирующаяТаблица; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если Не ВыполняетсяЗакрытие И ЭтоНоваяСтрока Тогда + Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ТипТабличногоВопросаПриИзменении(Элемент) + + УправлениеДоступностью(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВопросыВопросОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; + КонецЕсли; + + РеквизитыВопрос = РеквизитыВопроса(ВыбранноеЗначение); + Если РеквизитыВопрос.ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + ТекЭлемент = Вопросы.НайтиПоИдентификатору(Элементы.Вопросы.ТекущаяСтрока); + ТекЭлемент.ЭлементарныйВопрос = ВыбранноеЗначение; + + ТекЭлемент.Представление = РеквизитыВопрос.Представление; + ТекЭлемент.Формулировка = РеквизитыВопрос.Формулировка; + ТекЭлемент.ТипОтвета = РеквизитыВопрос.ТипОтвета; + + УправлениеДоступностью(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыСтрокиОтветыВСтрокахПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + НоваяСтрока = ДобавлениеОтветаИнтерактивно(Элемент,Копирование,0); + ОбработатьЭлементПодбораОтветовПослеДобавления(Элемент,НоваяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыКолонкиОтветыВКолонкахПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + НоваяСтрока = ДобавлениеОтветаИнтерактивно(Элемент,Копирование,0); + ОбработатьЭлементПодбораОтветовПослеДобавления(Элемент,НоваяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыКолонкиОтветыВСтрокахИКолонкахОтветНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + НачалоВыбораСписков(Элемент,СтандартнаяОбработка, ТипЗначенияВопроса(ВопросДляКолонок)); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыСтрокиОтветыВСтрокахОтветНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + НачалоВыбораСписков(Элемент,СтандартнаяОбработка, ТипЗначенияВопроса(ВопросДляСтрок)); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыСтрокиОтветыВСтрокахИКолонкахОтветНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + НачалоВыбораСписков(Элемент,СтандартнаяОбработка, ТипЗначенияВопроса(ВопросДляСтрок)); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыКолонкиОтветыВКолонкахОтветНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + НачалоВыбораСписков(Элемент,СтандартнаяОбработка, ТипЗначенияВопроса(ВопросДляКолонок)); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыКолонкиОтветыВСтрокахИКолонкахПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + НоваяСтрока = ДобавлениеОтветаИнтерактивно(Элемент,Копирование,1); + ОбработатьЭлементПодбораОтветовПослеДобавления(Элемент,НоваяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыСтрокиОтветыВСтрокахИКолонкахПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + НоваяСтрока = ДобавлениеОтветаИнтерактивно(Элемент,Копирование,0); + ОбработатьЭлементПодбораОтветовПослеДобавления(Элемент,НоваяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ВопросыПриИзменении(Элемент) + + УправлениеДоступностью(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыКолонкиОтветыВСтрокахИКолонкахПриИзменении(Элемент) + + ПриИзмененииОтветов(Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыСтрокиОтветыВСтрокахИКолонкахПриИзменении(Элемент) + + ПриИзмененииОтветов(Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыКолонкиОтветыВКолонкахПриИзменении(Элемент) + + ПриИзмененииОтветов(Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветыСтрокиОтветыВСтрокахПриИзменении(Элемент) + + ПриИзмененииОтветов(Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ФормулировкаПриИзменении(Элемент) + + Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаРезультирующаяТаблица Тогда + + Элементы.КнопкаВперед.Доступность = ЗначениеЗаполнено(Формулировка); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СледующаяСтраница(Команда) + + ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; + + Если ТекущаяСтраница = Элементы.СтраницаТипТабличногоВопроса Тогда + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВопросы; + + ИначеЕсли (ТекущаяСтраница = Элементы.СтраницаВопросы) И (ТипТабличногоВопроса <> ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.Составной")) Тогда + + УстановитьСтраницуОтветы(); + + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаРезультирующаяТаблица Тогда + + ЗакончитьРедактированиеИЗакрыть(); + + Иначе + + СформироватьРезультирующуюТаблицу(); + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаРезультирующаяТаблица; + + КонецЕсли; + + УправлениеДоступностью(); + УстановитьИнформационныеНадписи(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредыдущаяСтраница(Команда) + + Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаРезультирующаяТаблица Тогда + + Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.Составной") Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВопросы; + Иначе + УстановитьСтраницуОтветы(); + КонецЕсли; + + Элементы.КнопкаВперед.Заголовок = НСтр("ru = 'Далее'") + ">"; + + ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВопросы Тогда + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаТипТабличногоВопроса; + + Иначе + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВопросы; + + КонецЕсли; + + УправлениеДоступностью(); + УстановитьИнформационныеНадписи(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьВариантыОтветовОтветыВСтроках(Команда) + + ОчиститьЗаполнитьВариантыОтветов(ВопросДляСтрок); + УстановитьОтборы(); + УправлениеДоступностью(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьВариантыОтветовОтветыВКолонках(Команда) + + ОчиститьЗаполнитьВариантыОтветов(ВопросДляКолонок); + УстановитьОтборы(); + УправлениеДоступностью(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ТипЗначенияВопроса(Вопрос) + Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Вопрос,"ТипЗначения"); +КонецФункции + +&НаКлиенте +Процедура УстановитьИнформационныеНадписи() + + ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; + + Если ТекущаяСтраница = Элементы.СтраницаРезультирующаяТаблица Тогда + ИнформацияШапка = НСтр("ru = 'Результирующая таблица:'"); + ИнформацияПодвал = НСтр("ru = 'Нажмите Готово для окончания редактирования.'"); + Элементы.КнопкаВперед.Заголовок = НСтр("ru = 'Готово'"); + Иначе + Элементы.КнопкаВперед.Заголовок = НСтр("ru = 'Далее>>'"); + Если ТекущаяСтраница = Элементы.СтраницаВопросы Тогда + Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.Составной") Тогда + ИнформацияШапка = НСтр("ru = 'Подбор вопросов. Укажите хотя бы один вопрос:'"); + ИнформацияПодвал = НСтр("ru = 'Нажмите Далее для просмотра получившейся таблицы.'"); + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках") Тогда + ИнформацияШапка =НСтр("ru = 'Подбор вопросов. Укажите три вопроса:'"); + ИнформацияПодвал =НСтр("ru = 'Нажмите Далее для подбора предопределенных ответов.'"); + Иначе + ИнформацияШапка =НСтр("ru = 'Подбор вопросов. Укажите как минимум два вопроса:'"); + ИнформацияПодвал =НСтр("ru = 'Нажмите Далее для подбора предопределенных ответов.'"); + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаТипТабличногоВопроса Тогда + ИнформацияШапка = НСтр("ru = 'Выбор типа табличного вопроса:'"); + ИнформацияПодвал = НСтр("ru = 'Нажмите Далее для подбора вопросов:'"); + Иначе + ИнформацияШапка = НСтр("ru = 'Подбор предопределенных ответов:'"); + ИнформацияПодвал = НСтр("ru = 'Нажмите Далее для просмотра получившейся таблицы:'"); + КонецЕсли; + КонецЕсли; + + Элементы.ГруппаОсновныеСтраницы.Заголовок = ИнформацияШапка; + +КонецПроцедуры + +// Управляет доступностью реквизитов формы. +&НаКлиенте +Процедура УправлениеДоступностью() + + ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; + + Элементы.КнопкаНазад.Доступность = (НЕ ТекущаяСтраница = Элементы.СтраницаТипТабличногоВопроса); + + Если ТекущаяСтраница = Элементы.СтраницаПредопределенныеОтветыВСтрокахИКолонках Тогда + + Если НЕ ВсеОтветыЗаполнены() Тогда + Элементы.КнопкаВперед.Доступность = Ложь; + Возврат; + КонецЕсли; + + Элементы.ЗаполнитьКолонкиВариантыОтветовОтветыСтрокахИКолонках.Доступность = (Вопросы[1].ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.НесколькоВариантовИз") + Или Вопросы[1].ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ОдинВариантИз")); + + Элементы.ЗаполнитьСтрокиВариантыОтветовОтветыСтрокиИКолонки.Доступность = (Вопросы[0].ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.НесколькоВариантовИз") + Или Вопросы[0].ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ОдинВариантИз")); + + Если Ответы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос",ВопросДляКолонок)).Количество() > 0 + И Ответы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос",ВопросДляСтрок)).Количество() > 0 Тогда + + Элементы.КнопкаВперед.Доступность = Истина; + + Иначе + + Элементы.КнопкаВперед.Доступность = Ложь; + + КонецЕсли; + + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаПредопределенныеОтветыВСтроках Тогда + + Элементы.ЗаполнитьВариантыОтветовОтветыСтроки.Доступность = (Вопросы[0].ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.НесколькоВариантовИз") + Или Вопросы[0].ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ОдинВариантИз")); + + Если НЕ ВсеОтветыЗаполнены() Тогда + Элементы.КнопкаВперед.Доступность = Ложь; + Возврат; + КонецЕсли; + + Элементы.КнопкаВперед.Доступность = (Ответы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос",ВопросДляСтрок)).Количество() > 0); + + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаПредопределенныеОтветыВКолонках Тогда + + Элементы.ЗаполнитьВариантыОтветовОтветыКолонки.Доступность = (Вопросы[0].ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.НесколькоВариантовИз") + Или Вопросы[0].ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ОдинВариантИз")); + + Если НЕ ВсеОтветыЗаполнены() Тогда + Элементы.КнопкаВперед.Доступность = Ложь; + Возврат; + КонецЕсли; + + Элементы.КнопкаВперед.Доступность = (Ответы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос",ВопросДляКолонок)).Количество() > 0); + + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаТипТабличногоВопроса Тогда + + Элементы.КнопкаВперед.Доступность = ТипТабличногоВопроса <> ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПустаяСсылка"); + + Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.Составной") Тогда + + Элементы.СтраницыТипТабличногоВопросаКартинки.ТекущаяСтраница = Элементы.СтраницаКартинкаСоставной; + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках") Тогда + + Элементы.СтраницыТипТабличногоВопросаКартинки.ТекущаяСтраница = Элементы.СтраницаКартинкаОтветыВСтроках; + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках") Тогда + + Элементы.СтраницыТипТабличногоВопросаКартинки.ТекущаяСтраница = Элементы.СтраницаКартинкаОтветыВКолонках; + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках") Тогда + + Элементы.СтраницыТипТабличногоВопросаКартинки.ТекущаяСтраница = Элементы.СтраницаКартинкаОтветыВСтрокахИКолонках; + + Иначе + + Элементы.СтраницыТипТабличногоВопросаКартинки.ТекущаяСтраница = Элементы.СтраницаКартинкаПустая; + + КонецЕсли; + + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаВопросы Тогда + + Если Вопросы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос",ПредопределенноеЗначение("ПланВидовХарактеристик.ВопросыДляАнкетирования.ПустаяСсылка"))).Количество() <> 0 Тогда + Элементы.КнопкаВперед.Доступность = Ложь; + Возврат; + КонецЕсли; + + Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.Составной") Тогда + + Элементы.КнопкаВперед.Доступность = (Вопросы.Количество() > 0); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках") Тогда + + Элементы.КнопкаВперед.Доступность = (Вопросы.Количество() > 1); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках") Тогда + + Элементы.КнопкаВперед.Доступность = (Вопросы.Количество() > 1); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках") Тогда + + Элементы.КнопкаВперед.Доступность = (Вопросы.Количество() = 3); + + КонецЕсли; + + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаРезультирующаяТаблица Тогда + + Элементы.КнопкаВперед.Доступность = ЗначениеЗаполнено(Формулировка); + + КонецЕсли; + +КонецПроцедуры + +// Проверяет, все ли ответы заполнены. +// +// Возвращаемое значение: +// Булево - Истина если все ответы заполнены. +// +&НаКлиенте +Функция ВсеОтветыЗаполнены() + + Для каждого Ответ Из Ответы Цикл + + Если НЕ ЗначениеЗаполнено(Ответ.Ответ) Тогда + Возврат Ложь; + КонецЕсли; + + КонецЦикла; + + Возврат Истина; + +КонецФункции + +// Процедура обрабатывает начало выбора из списков, и устанавливает отборы в формах выбора. +&НаКлиенте +Процедура НачалоВыбораСписков(Элемент,СтандартнаяОбработка,ОписаниеДоступныхТипов) + + Если ТипЗнч(ЭтотОбъект[Элемент.СвязьПоТипу.ПутьКДанным]) = Тип("ПланВидовХарактеристикСсылка.ВопросыДляАнкетирования") Тогда + + Если ОписаниеДоступныхТипов.СодержитТип(Тип("СправочникСсылка.ВариантыОтветовАнкет")) И (ОписаниеДоступныхТипов.Типы().Количество() = 1 ) Тогда + + СтандартнаяОбработка = ЛОЖЬ; + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Владелец", ЭтотОбъект[Элемент.СвязьПоТипу.ПутьКДанным]); + ПараметрыОтбора.Вставить("ПометкаУдаления", Ложь); + + ОткрытьФорму("Справочник.ВариантыОтветовАнкет.Форма.ФормаВыбора",Новый Структура("Отбор",ПараметрыОтбора),Элемент); + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +// Процедура очищает таблицу ответов, от ответов, родительский вопрос которых +// не входит в МассивВопросов, выступающий в качестве параметра. +// +&НаКлиенте +Процедура ОчиститьСписокОтветовЕслиНеобходимо(МассивВопросов) + + УдаляемыеОтветы = Новый Массив; + + Для каждого Ответ Из Ответы Цикл + + Если МассивВопросов.Найти(Ответ.ЭлементарныйВопрос) = Неопределено Тогда + УдаляемыеОтветы.Добавить(Ответ); + КонецЕсли; + + КонецЦикла; + + Для каждого УдаляемыйОтвет Из УдаляемыеОтветы Цикл + Ответы.Удалить(УдаляемыйОтвет); + КонецЦикла; + +КонецПроцедуры + +// Устанавливает нужную страницу формирования структуры табличного вопроса в зависимости от +// выбранного типа табличного вопроса. +// +&НаКлиенте +Процедура УстановитьСтраницуОтветы() + + МассивВопросовДляКоторыйДолжныБытьОтветы = Новый Массив; + + Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках") Тогда + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПредопределенныеОтветыВСтрокахИКолонках; + ПредставлениеВопросаДляСтрок = Вопросы[0].Формулировка; + ВопросДляСтрок = Вопросы[0].ЭлементарныйВопрос; + ПредставлениеВопросаДляКолонок = Вопросы[1].Формулировка; + ВопросДляКолонок = Вопросы[1].ЭлементарныйВопрос; + + МассивВопросовДляКоторыйДолжныБытьОтветы.Добавить(ВопросДляСтрок); + МассивВопросовДляКоторыйДолжныБытьОтветы.Добавить(ВопросДляКолонок); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках") Тогда + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПредопределенныеОтветыВСтроках; + ПредставлениеВопросаДляСтрок = Вопросы[0].Формулировка; + ВопросДляСтрок = Вопросы[0].ЭлементарныйВопрос; + + МассивВопросовДляКоторыйДолжныБытьОтветы.Добавить(ВопросДляСтрок); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках") Тогда + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПредопределенныеОтветыВКолонках; + ПредставлениеВопросаДляКолонок = Вопросы[0].Формулировка; + ВопросДляКолонок = Вопросы[0].ЭлементарныйВопрос; + + МассивВопросовДляКоторыйДолжныБытьОтветы.Добавить(ВопросДляКолонок); + + КонецЕсли; + + ОчиститьСписокОтветовЕслиНеобходимо(МассивВопросовДляКоторыйДолжныБытьОтветы); + УстановитьОтборы(); + +КонецПроцедуры + +// Формирует результирующую таблицу вопроса. +&НаСервере +Процедура СформироватьРезультирующуюТаблицу() + + Анкетирование.ОбновитьПревьюТабличныйВопрос(РеквизитФормыВЗначение("Вопросы"),Ответы,ТипТабличногоВопроса,ЭтотОбъект,"РезультирующаяТаблица",""); + Элементы.КнопкаВперед.Заголовок = НСтр("ru = 'Готово'"); + +КонецПроцедуры + +// Формирует структуру возврата для передачи в форму владельца. +&НаКлиенте +Функция СформироватьСтруктуруПараметровДляПередачиВладельцу() + + СтруктураПараметров = Новый Структура; + СтруктураПараметров.Вставить("ТипТабличногоВопроса",ТипТабличногоВопроса); + + ВопросыКВозврату = Новый Массив; + Для каждого СтрокаТаблицы Из Вопросы Цикл + ВопросыКВозврату.Добавить(СтрокаТаблицы.ЭлементарныйВопрос); + КонецЦикла; + СтруктураПараметров.Вставить("Вопросы",ВопросыКВозврату); + СтруктураПараметров.Вставить("Ответы" ,Ответы); + СтруктураПараметров.Вставить("Формулировка",Формулировка); + СтруктураПараметров.Вставить("Подсказка",Подсказка); + СтруктураПараметров.Вставить("СпособОтображенияПодсказки",СпособОтображенияПодсказки); + + Возврат СтруктураПараметров; + +КонецФункции + +// Обрабатывает параметры формы владельца. +// +&НаСервере +Процедура ОбработатьПараметрыФормыВладельца() + + Формулировка = Параметры.Формулировка; + Подсказка = Параметры.Подсказка; + СпособОтображенияПодсказки = Параметры.СпособОтображенияПодсказки; + ЭтоНоваяСтрока = Параметры.ЭтоНоваяСтрока; + + Если Параметры.ТипТабличногоВопроса.Пустая() Тогда + ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.Составной; + Возврат; + КонецЕсли; + + ТипТабличногоВопроса = Параметры.ТипТабличногоВопроса; + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ + | Вопросы.ЭлементарныйВопрос, + | Вопросы.НомерСтроки + |ПОМЕСТИТЬ ЭлементарныеВопросы + |ИЗ + | &Вопросы КАК Вопросы + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЭлементарныеВопросы.ЭлементарныйВопрос КАК ЭлементарныйВопрос, + | ЕСТЬNULL(ВопросыДляАнкетирования.Представление, """""""") КАК Представление, + | ЕСТЬNULL(ВопросыДляАнкетирования.Формулировка, """""""") КАК Формулировка, + | ЕСТЬNULL(ВопросыДляАнкетирования.ТипОтвета, """") КАК ТипОтвета + |ИЗ + | ЭлементарныеВопросы КАК ЭлементарныеВопросы + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ВопросыДляАнкетирования КАК ВопросыДляАнкетирования + | ПО ЭлементарныеВопросы.ЭлементарныйВопрос = ВопросыДляАнкетирования.Ссылка + | + |УПОРЯДОЧИТЬ ПО + | ЭлементарныеВопросы.НомерСтроки"; + + Запрос.УстановитьПараметр("Вопросы", Параметры.СоставТабличногоВопроса.Выгрузить()); + + Результат = Запрос.Выполнить(); + Если НЕ Результат.Пустой() Тогда; + Выборка = Результат.Выбрать(); + Пока Выборка.Следующий() Цикл + НоваяСтрока = Вопросы.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока,Выборка); + КонецЦикла; + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Параметры.ПредопределенныеОтветы, Ответы); + +КонецПроцедуры + +// Устанавливает отборы в элементы форм, предназначенные для +// составления списка предопределенных ответов. +// +&НаКлиенте +Процедура УстановитьОтборы() + + Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках") Тогда + + Элементы.ОтветыКолонкиОтветыВСтрокахИКолонках.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭлементарныйВопрос",ВопросДляКолонок); + Элементы.ОтветыСтрокиОтветыВСтрокахИКолонках.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭлементарныйВопрос",ВопросДляСтрок); + УстановитьСвязиПараметровВыбораОтветовИВопросов(); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках") Тогда + + Элементы.ОтветыСтрокиОтветыВСтроках.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭлементарныйВопрос",ВопросДляСтрок); + УстановитьСвязиПараметровВыбораОтветовИВопросов(); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках") Тогда + + Элементы.ОтветыКолонкиОтветыВКолонках.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭлементарныйВопрос",ВопросДляКолонок); + УстановитьСвязиПараметровВыбораОтветовИВопросов(); + + КонецЕсли; + + +КонецПроцедуры + +&НаСервере +Процедура УстановитьСвязиПараметровВыбораОтветовИВопросов() + + Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках") Тогда + + УстановитьСвязьПараметраВыбораОтветаИВопроса("ОтветыКолонкиОтветыВСтрокахИКолонкахОтвет", "ВопросДляКолонок"); + УстановитьСвязьПараметраВыбораОтветаИВопроса("ОтветыСтрокиОтветыВСтрокахИКолонкахОтвет", "ВопросДляСтрок"); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках") Тогда + + УстановитьСвязьПараметраВыбораОтветаИВопроса("ОтветыСтрокиОтветыВСтрокахОтвет", "ВопросДляСтрок"); + + ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках") Тогда + + УстановитьСвязьПараметраВыбораОтветаИВопроса("ОтветыКолонкиОтветыВКолонкахОтвет", "ВопросДляКолонок"); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьСвязьПараметраВыбораОтветаИВопроса(ИмяПоляОтвета, ИмяРеквизитаВопрос) + + НайденныеВопросы = Вопросы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос", ЭтотОбъект[ИмяРеквизитаВопрос])); + Если НайденныеВопросы.Количество() > 0 Тогда + НайденныйВопрос = НайденныеВопросы[0]; + Если НайденныйВопрос.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.ОдинВариантИз + ИЛИ НайденныйВопрос.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз Тогда + МассивПараметровВыбора = Новый Массив; + СвязьПараметраВыбора = Новый СвязьПараметраВыбора("Отбор.Владелец", ИмяРеквизитаВопрос, РежимИзмененияСвязанногоЗначения.Очищать); + МассивПараметровВыбора.Добавить(СвязьПараметраВыбора); + СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора); + Элементы[ИмяПоляОтвета].СвязиПараметровВыбора = СвязиПараметровВыбора; + Иначе + Элементы[ИмяПоляОтвета].СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив); + КонецЕсли; + Иначе + Элементы[ИмяПоляОтвета].СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив); + КонецЕсли; + +КонецПроцедуры + + +// Вызывается при изменении элементов форма, связанных с таблицей ответов. +// Параметры: +// Элемент - ТаблицаФормы - ЭлементКоторыйВызвал изменение. +// +&НаКлиенте +Процедура ПриИзмененииОтветов(Элемент) + + УправлениеДоступностью(); + УстановитьОтборы(); + Элемент.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьЭлементПодбораОтветовПослеДобавления(Элемент,ДобавленнаяСтрока) + + УстановитьОтборы(); + Элемент.Обновить(); + УправлениеДоступностью(); + Элемент.ТекущаяСтрока = ДобавленнаяСтрока.ПолучитьИдентификатор(); + Элемент.ИзменитьСтроку(); + +КонецПроцедуры + +&НаКлиенте +Функция ДобавлениеОтветаИнтерактивно(Элемент,Копирование,НомерОпорногоВопроса) + + Если Копирование Тогда + + НоваяСтрока = Ответы.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока,Элемент.ТекущиеДанные); + + Иначе + + Если Вопросы.Количество() >= НомерОпорногоВопроса+1 Тогда + + НоваяСтрока = Ответы.Добавить(); + НоваяСтрока.ЭлементарныйВопрос = Вопросы[НомерОпорногоВопроса].ЭлементарныйВопрос; + + Иначе + Возврат Неопределено; + КонецЕсли; + + КонецЕсли; + + Возврат НоваяСтрока; + +КонецФункции + +&НаКлиенте +Процедура ЗакончитьРедактированиеИЗакрыть() + + Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.Составной") Тогда + Ответы.Очистить(); + КонецЕсли; + + ВыполняетсяЗакрытие = Истина; + Оповестить("ОкончаниеРедактированияПараметровТабличногоВопроса",СформироватьСтруктуруПараметровДляПередачиВладельцу()); + Закрыть(); + +КонецПроцедуры + +// Очищает ответы и заполняет их вариантами ответов. +// +// Параметры: +// ЭлементарныйВопрос - ПланВидовХарактеристик.ВопросыДляАнкетирования - вопрос для которого будут заполнены его +// варианты ответов. +// +&НаСервере +Процедура ОчиститьЗаполнитьВариантыОтветов(ЭлементарныйВопрос) + + Если Не ЗначениеЗаполнено(ЭлементарныйВопрос) Тогда + Возврат; + КонецЕсли; + + НайденныеСтроки = Ответы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос",ЭлементарныйВопрос)); + Для каждого НайденнаяСтрока Из НайденныеСтроки Цикл + Ответы.Удалить(Ответы.Индекс(НайденнаяСтрока)); + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = " + |ВЫБРАТЬ + | ВариантыОтветовАнкет.Ссылка КАК Ответ + |ИЗ + | Справочник.ВариантыОтветовАнкет КАК ВариантыОтветовАнкет + |ГДЕ + | ВариантыОтветовАнкет.Владелец = &ЭлементарныйВопрос + | И (НЕ ВариантыОтветовАнкет.ПометкаУдаления) + | + |УПОРЯДОЧИТЬ ПО + | ВариантыОтветовАнкет.РеквизитДопУпорядочивания"; + + Запрос.УстановитьПараметр("ЭлементарныйВопрос",ЭлементарныйВопрос); + + Результат = Запрос.Выполнить(); + Если Не Результат.Пустой() Тогда + + Выборка = Результат.Выбрать(); + Пока Выборка.Следующий() Цикл + НоваяСтрока = Ответы.Добавить(); + НоваяСтрока.ЭлементарныйВопрос = ЭлементарныйВопрос; + НоваяСтрока.Ответ = Выборка.Ответ; + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция РеквизитыВопроса(Вопрос) + + Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Вопрос,"Представление,Формулировка,ЭтоГруппа,ТипОтвета"); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" new file mode 100644 index 00000000..6927bde2 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Form.form" @@ -0,0 +1,708 @@ + + + + <key>ru</key> + <value>Вопрос шаблона анкеты</value> + + + ЭлементарныйВопрос + 3 + true + true + + true + + + + ЭлементарныйВопрос + + + + ЭлементарныйВопросExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + ЭлементарныйВопросКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + ЭлементарныйВопросОбработкаВыбора + + 40 + true + false + true + Items + true + true + true + true + DontUse + + + + Формулировка + 1 + true + true + + true + + + + Формулировка + + + Left + + ФормулировкаExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + ФормулировкаКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 40 + true + true + true + true + true + true + true + true + + + + Обязательный + 6 + true + true + + true + + + + Обязательный + + + Right + + ОбязательныйExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + ОбязательныйКонтекстноеМеню + 7 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаПодсказка + 27 + + СпособОтображенияПодсказки + 29 + true + true + + true + + + + СпособОтображенияПодсказки + + + + СпособОтображенияПодсказкиРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + СпособОтображенияПодсказкиКонтекстноеМеню + 30 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Подсказка + 32 + true + true + + true + + + + Подсказка + + + Left + + ПодсказкаРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + + ПодсказкаКонтекстноеМеню + 33 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Подсказка</value> + + + ГруппаПодсказкаРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Заметки + 24 + true + true + + true + + + + Заметки + + + Left + + ЗаметкиРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + ЗаметкиКонтекстноеМеню + 25 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ЗаметкиНачалоВыбора + + true + true + false + true + true + true + true + true + true + + + + ГруппаКнопки + 8 + + КнопкаГотово + 11 + + <key>ru</key> + <value>Готово</value> + + true + true + + true + + false + + КнопкаГотовоExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПеренестиВШаблон + Auto + true + true + true + UserCmds + Auto + + + Закрыть + 12 + true + true + + true + + false + + ЗакрытьExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопки</value> + + true + + ГруппаКнопкиExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Right + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + Формулировка + + <key>ru</key> + <value>Формулировка</value> + + 2 + + String + + + + true + + + true + + + + Обязательный + + <key>ru</key> + <value>Обязательный</value> + + 3 + + Boolean + + + true + + + true + + + + ТипСтрокиДерева + 4 + + String + + 20 + + + + true + + + true + + + + ТипВопроса + 5 + + EnumRef.ТипыВопросовШаблонаАнкеты + + + true + + + true + + + + Заметки + + <key>ru</key> + <value>Заметки</value> + + 6 + + String + + + + true + + + true + + true + + + ВыполняетсяЗакрытие + 7 + + Boolean + + + true + + + true + + + + ЭтоНоваяСтрока + 8 + + Boolean + + + true + + + true + + + + Подсказка + + <key>ru</key> + <value>Подсказка</value> + + 9 + + String + + + + true + + + true + + + + СпособОтображенияПодсказки + + <key>ru</key> + <value>Способ отображения подсказки</value> + + 10 + + EnumRef.СпособыОтображенияПодсказок + + + true + + + true + + + + ПредыдущаяФормулировкаПоВопросу + 11 + + String + + + + true + + + true + + + + ПеренестиВШаблон + + <key>ru</key> + <value>Перенести в шаблон</value> + + 1 + + ru + Перенести в шаблон + + + true + + + + ПеренестиВШаблон + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..9dccf9b8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Help/ru.html" @@ -0,0 +1,13 @@ + +

        Предназначена для ввода простого вопроса в шаблон анкеты.

        +

        Открывается по команде Добавить - простой вопрос из шаблона анкеты.

        +

        Ввод простого вопроса в шаблон анкеты

        +
        • В поле Элементарный вопрос выберите вопрос из ранее подготовленного списка вопросов для анкетирования, после выбора вопроса в этом поле отражается его наименование. Можно создать вопрос в списке выбора, если нужного вопроса не нашлось. +
        • Поле Формулировка после выборе вопроса для анкетирования автоматически заполняется текстом формулировки вопроса. Здесь же можно изменить формулировку вопроса, которая будет видна респондентам в анкетах этого шаблона. +
        • Если флажок Обязательный установлен, то респондент не сможет завершить анкетирование, не ответив на этот вопрос. +
        • В поле Способ отображения подсказки укажите, как будет показываться подсказка в тексте анкеты: +
          • Контекстная подсказка - текст подсказки будет все время виден; +
          • Знак вопроса справа - в этом случае текст подсказки скрыт, ее можно увидеть, нажав на знак вопроса.
        • В поле Подсказка напишите краткое объяснение вопроса, для того чтобы респонденту было легче на него отвечать. +
        • Напишите Заметки по поводу вопроса - уточняющую информацию, которая будет выводиться в нижней части шаблона анкеты.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..ac65a971 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\222\320\276\320\277\321\200\320\276\321\201\320\276\320\262/Module.bsl" @@ -0,0 +1,139 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры); + Если ТипСтрокиДерева = "Раздел" Тогда + + Элементы.Обязательный.Видимость = Ложь; + Элементы.ЭлементарныйВопрос.Видимость = Ложь; + Элементы.ГруппаПодсказка.Видимость = Ложь; + Элементы.Формулировка.Заголовок = НСтр("ru = 'Имя раздела'"); + Заголовок = НСтр("ru = 'Раздел шаблона анкеты'"); + + КонецЕсли; + + Если НЕ ЭлементарныйВопрос.Пустая() Тогда + Элементы.Формулировка.СписокВыбора.Добавить(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭлементарныйВопрос,"Формулировка")); + КонецЕсли; + + Если ТипВопроса = Перечисления.ТипыВопросовШаблонаАнкеты.ВопросСУсловием Тогда + ПараметрыВыбора = Новый Массив; + ПараметрыВыбора.Добавить(Новый ПараметрВыбора("Отбор.ТипОтвета",ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Булево"))); + Элементы.ЭлементарныйВопрос.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если Не ВыполняетсяЗакрытие И ЭтоНоваяСтрока Тогда + Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ЭлементарныйВопросОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + РеквизитыВопрос = РеквизитыВопроса(ВыбранноеЗначение); + + Если ПустаяСтрока(Формулировка) + Или Формулировка = ПредыдущаяФормулировкаПоВопросу Тогда + Формулировка = РеквизитыВопрос.Формулировка; + КонецЕсли; + + ПредыдущаяФормулировкаПоВопросу = РеквизитыВопрос.Формулировка; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаметкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОповещениеОЗакрытии = Новый ОписаниеОповещения("РедактированиеЗаметкиПриЗакрытии", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(ОповещениеОЗакрытии, Элемент.ТекстРедактирования, НСтр("ru = 'Заметки'")); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПеренестиВШаблон(Команда) + + Отказ = Ложь; + + Если Не ЗначениеЗаполнено(Формулировка) Тогда + Отказ = Истина; + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не заполнена формулировка'"),,"Формулировка"); + КонецЕсли; + + Если ТипСтрокиДерева = "Вопрос" И (Не ЗначениеЗаполнено(ЭлементарныйВопрос)) Тогда + Отказ = Истина; + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не указан элементарный вопрос'"),,"ЭлементарныйВопрос"); + КонецЕсли; + + Если Отказ Тогда + Возврат; + КонецЕсли; + + ВыполняетсяЗакрытие = Истина; + Оповестить("ОкончаниеРедактированияПараметровСтрокиШаблонаАнкеты",СформироватьСтруктуруПараметровДляПередачиВладельцу()); + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Формирует структуру параметров для передачи в форму владельца. +&НаКлиенте +Функция СформироватьСтруктуруПараметровДляПередачиВладельцу() + + СтруктураВозврата = Новый Структура; + СтруктураВозврата.Вставить("Обязательный", Обязательный); + СтруктураВозврата.Вставить("Формулировка", Формулировка); + СтруктураВозврата.Вставить("ЭлементарныйВопрос", ЭлементарныйВопрос); + СтруктураВозврата.Вставить("Заметки", Заметки); + СтруктураВозврата.Вставить("ЭтоНоваяСтрока", Ложь); + СтруктураВозврата.Вставить("Подсказка", Подсказка); + СтруктураВозврата.Вставить("СпособОтображенияПодсказки", СпособОтображенияПодсказки); + + Возврат СтруктураВозврата; + +КонецФункции + +&НаСервереБезКонтекста +Функция РеквизитыВопроса(Вопрос) + + Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Вопрос,"ЭтоГруппа,ТипОтвета,Формулировка"); + +КонецФункции + +&НаКлиенте +Процедура РедактированиеЗаметкиПриЗакрытии(ТекстВозврата, ДополнительныеПараметры) Экспорт + + Если Заметки <> ТекстВозврата Тогда + Заметки = ТекстВозврата; + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..313a1be4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,436 @@ + + + + ГруппаПользовательскихНастроек + 14 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 4 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Код + 6 + true + true + + true + + + + Список.Code + + + + КодExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 11 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 12 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + BeforeAddRow + СписокПередНачаломДобавления + + + true + true + + true + + СписокSearchString + 16 + + СписокSearchStringExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 17 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 19 + + СписокViewStatusExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 20 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 22 + + СписокSearchControlExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 23 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
        + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
        true
        + + Catalog.ШаблоныАнкет + true + true + true + true + +
        + + + + + +
        diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..60b352bf --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,162 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Если Копирование + И Не Группа Тогда + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + + Отказ = Истина; + НовыйЭлементСсылка = ВыполнитьКопированиеЭлемента(ТекущиеДанные.Ссылка); + Если НовыйЭлементСсылка <> Неопределено Тогда + ОткрытьФорму("Справочник.ШаблоныАнкет.Форма.ФормаЭлемента",Новый Структура("Ключ",НовыйЭлементСсылка)); + Элементы.Список.Обновить(); + КонецЕсли; + + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ВыполнитьКопированиеЭлемента(ЭлементКопирования) + + НачатьТранзакцию(); + Попытка + + ШаблонАнкетыОбъект = Справочники.ШаблоныАнкет.СоздатьЭлемент(); + + ЗаполнитьЗначенияСвойств(ШаблонАнкетыОбъект,ЭлементКопирования,"ПометкаУдаления,Наименование,Заголовок,Вступление,Заключение"); + ШаблонАнкетыОбъект.УстановитьСсылкуНового(Справочники.ШаблоныАнкет.ПолучитьСсылку()); + ШаблонАнкетыОбъект.РедактированиеШаблонаЗавершено = Ложь; + ШаблонАнкетыОбъект.Записать(); + + Запрос = Новый Запрос; + Запрос.Текст = " + |ВЫБРАТЬ + | ВопросыШаблонаАнкеты.Ссылка КАК Ссылка, + | ВопросыШаблонаАнкеты.ПометкаУдаления, + | ВопросыШаблонаАнкеты.Предопределенный, + | ВопросыШаблонаАнкеты.Владелец, + | ВопросыШаблонаАнкеты.Родитель, + | ВопросыШаблонаАнкеты.ЭтоГруппа, + | ВопросыШаблонаАнкеты.Код КАК Код, + | ВопросыШаблонаАнкеты.Наименование, + | ВопросыШаблонаАнкеты.Обязательный, + | ВопросыШаблонаАнкеты.ТипВопроса, + | ВопросыШаблонаАнкеты.ТипТабличногоВопроса, + | ВопросыШаблонаАнкеты.ЭлементарныйВопрос, + | ВопросыШаблонаАнкеты.РодительВопрос, + | ВопросыШаблонаАнкеты.Подсказка КАК Подсказка, + | ВопросыШаблонаАнкеты.СпособОтображенияПодсказки КАК СпособОтображенияПодсказки, + | ВопросыШаблонаАнкеты.СоставТабличногоВопроса.( + | ЭлементарныйВопрос КАК ЭлементарныйВопрос, + | НомерСтроки + | ), + | ВопросыШаблонаАнкеты.ПредопределенныеОтветы.( + | ЭлементарныйВопрос КАК ЭлементарныйВопрос, + | Ответ, + | НомерСтроки + | ), + | ВопросыШаблонаАнкеты.СоставКомплексногоВопроса.( + | ЭлементарныйВопрос КАК ЭлементарныйВопрос, + | НомерСтроки + | ), + | ВопросыШаблонаАнкеты.Формулировка + |ИЗ + | Справочник.ВопросыШаблонаАнкеты КАК ВопросыШаблонаАнкеты + |ГДЕ + | ВопросыШаблонаАнкеты.Владелец = &ШаблонАнкеты + | + |УПОРЯДОЧИТЬ ПО + | Ссылка ИЕРАРХИЯ, + | Код"; + + Запрос.УстановитьПараметр("ШаблонАнкеты", ЭлементКопирования); + + Результат = Запрос.Выполнить(); + + Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); + ДобавитьЭлементыСправочникаВопросыШаблонаАнкеты(ШаблонАнкетыОбъект.Ссылка, Выборка); + ЗафиксироватьТранзакцию(); + + Исключение + + ОтменитьТранзакцию(); + Возврат Неопределено; + + КонецПопытки; + + Возврат ШаблонАнкетыОбъект.Ссылка; + +КонецФункции + +&НаСервере +Процедура ДобавитьЭлементыСправочникаВопросыШаблонаАнкеты(Ссылка, Выборка, Родитель = Неопределено) + + ВопросыСУсловием = Новый Соответствие; + + Пока Выборка.Следующий() Цикл + + Если Выборка.ЭтоГруппа Тогда + + НовыйЭлемент = Справочники.ВопросыШаблонаАнкеты.СоздатьГруппу(); + ЗаполнитьЗначенияСвойств(НовыйЭлемент,Выборка,"Наименование,Код,Формулировка"); + + Иначе + + НовыйЭлемент = Справочники.ВопросыШаблонаАнкеты.СоздатьЭлемент(); + + СсылкаНового = Справочники.ВопросыШаблонаАнкеты.ПолучитьСсылку(); + НовыйЭлемент.УстановитьСсылкуНового(СсылкаНового); + + ЗаполнитьЗначенияСвойств(НовыйЭлемент,Выборка,,"Владелец,Родитель,СоставТабличногоВопроса,ПредопределенныеОтветы,СоставКомплексногоВопроса,Код,РодительВопрос"); + СоставТабличногоВопроса = Выборка.СоставТабличногоВопроса.Выгрузить(); + СоставТабличногоВопроса.Сортировать("НомерСтроки Возр"); + НовыйЭлемент.СоставТабличногоВопроса.Загрузить(СоставТабличногоВопроса); + ПредопределенныеОтветы = Выборка.ПредопределенныеОтветы.Выгрузить(); + ПредопределенныеОтветы.Сортировать("НомерСтроки Возр"); + НовыйЭлемент.ПредопределенныеОтветы.Загрузить(ПредопределенныеОтветы); + СоставКомплексногоВопроса = Выборка.СоставКомплексногоВопроса.Выгрузить(); + СоставКомплексногоВопроса.Сортировать("НомерСтроки Возр"); + НовыйЭлемент.СоставКомплексногоВопроса.Загрузить(СоставКомплексногоВопроса); + + Если Выборка.ТипВопроса = Перечисления.ТипыВопросовШаблонаАнкеты.ВопросСУсловием Тогда + ВопросыСУсловием.Вставить(Выборка.Ссылка,СсылкаНового); + КонецЕсли; + + Если НЕ Выборка.РодительВопрос.Пустая() Тогда + НовыйЭлемент.РодительВопрос = ВопросыСУсловием.Получить(Выборка.РодительВопрос); + КонецЕсли; + + КонецЕсли; + + НовыйЭлемент.Владелец = Ссылка; + НовыйЭлемент.Родитель = ?(Родитель = Неопределено,Справочники.ВопросыШаблонаАнкеты.ПустаяСсылка(),Родитель); + НовыйЭлемент.Записать(); + + ПодчиненнаяВыборка = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); + Если ПодчиненнаяВыборка.Количество() > 0 Тогда + ДобавитьЭлементыСправочникаВопросыШаблонаАнкеты(Ссылка,ПодчиненнаяВыборка,НовыйЭлемент.Ссылка); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..225f63d7 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,2695 @@ + + + + НаименованиеКод + 5 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеExtendedTooltip + 80 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодExtendedTooltip + 81 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование код</value> + + + НаименованиеКодExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ОсновныеСтраницы + 6 + + Заголовки + 8 + + Заголовок + 9 + true + true + + true + + + + Объект.Заголовок + + + + ЗаголовокExtendedTooltip + 84 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Вступление + 11 + true + true + + true + + + + Объект.Вступление + + + + ВступлениеExtendedTooltip + 85 + true + true + + true + + Label + true + true + + Left + + + + ВступлениеКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Заключение + 13 + true + true + + true + + + + Объект.Заключение + + + + ЗаключениеExtendedTooltip + 86 + true + true + + true + + Label + true + true + + Left + + + + ЗаключениеКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Заголовки</value> + + + ЗаголовкиExtendedTooltip + 83 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ДеревоАнкеты + 7 + + ФормаДереваАнкеты + 15 + + <key>ru</key> + <value>Форма дерева анкеты</value> + + true + true + + true + + + ДеревоАнкеты + + false + None + + КартинкаПолныйКод + 18 + + ДеревоАнкетыПолныйКод + 72 + true + true + + true + + + + ДеревоАнкеты.ПолныйКод + + + None + + ДеревоАнкетыПолныйКодExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + + ДеревоАнкетыПолныйКодКонтекстноеМеню + 73 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 4 + true + true + true + true + true + true + + + + ДеревоАнкетыФормулировка + 23 + + <key>ru</key> + <value>Вопрос</value> + + true + true + + true + + + + ДеревоАнкеты.Формулировка + + + + ДеревоАнкетыФормулировкаExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + + ДеревоАнкетыФормулировкаКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + false + true + true + true + + + + ДеревоАнкетыКодКартинки + 21 + true + true + + true + + + + ДеревоАнкеты.КодКартинки + + + None + + ДеревоАнкетыКодКартинкиExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + + ДеревоАнкетыКодКартинкиКонтекстноеМеню + 22 + true + true + + true + + true + + PictureField + EnterOnInput + true + Left + true + + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование</value> + + + КартинкаПолныйКодExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ДеревоАнкетыОбязательный + 25 + true + true + + true + + + + ДеревоАнкеты.Обязательный + + + None + + ДеревоАнкетыОбязательныйExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + + ДеревоАнкетыОбязательныйКонтекстноеМеню + 26 + true + true + + true + + true + + InputField + EnterOnInput + true + + CommonPicture.ВосклицательныйЗнакСерый + + Left + true + + 4 + true + true + true + true + true + true + + + + ФормаДереваАнкетыЕстьЗаметки + 115 + true + true + + true + + + + ДеревоАнкеты.ЕстьЗаметки + + + None + + ФормаДереваАнкетыЕстьЗаметкиРасширеннаяПодсказка + 117 + true + true + + true + + Label + true + true + + Left + + + + ФормаДереваАнкетыЕстьЗаметкиКонтекстноеМеню + 116 + true + true + + true + + true + + PictureField + EnterOnInput + true + + CommonPicture.Комментарий + + Left + true + + 3 + true + true + true + true + + CommonPicture.Комментарий + + + + + ФормаДереваАнкетыКоманднаяПанель + 17 + + ФормаДереваАнкетыПодменюДобавить + 113 + + ДеревоАнкетыКоманднаяПанельДобавитьВопрос + 30 + + <key>ru</key> + <value>простой вопрос</value> + + true + true + + true + + false + + ДеревоАнкетыКоманднаяПанельДобавитьВопросExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьПростойВопрос + Auto + true + true + UserCmds + Auto + + + ДеревоАнкетыКоманднаяПанельДобавитьТабличныйВопрос + 64 + + <key>ru</key> + <value>табличный вопрос</value> + + true + true + + true + + false + + ДеревоАнкетыКоманднаяПанельДобавитьТабличныйВопросExtendedTooltip + 100 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьТабличныйВопрос + Auto + true + true + UserCmds + Auto + + + ДеревоАнкетыКоманднаяПанельДобавитьВопросСУсловием + 63 + + <key>ru</key> + <value>вопрос c условием</value> + + true + true + + true + + false + + ДеревоАнкетыКоманднаяПанельДобавитьВопросСУсловиемExtendedTooltip + 101 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьВопросСУсловием + Auto + true + true + UserCmds + Auto + + + ДереваАнкетыДобавитьКомплексныйВопрос + 142 + + <key>ru</key> + <value>комплексный вопрос</value> + + true + true + + true + + + ДереваАнкетыДобавитьКомплексныйВопросРасширеннаяПодсказка + 143 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьКомплексныйВопрос + Auto + true + true + UserCmds + Auto + + + ДеревоАнкетыКоманднаяПанельДобавитьРаздел + 29 + + <key>ru</key> + <value>раздел</value> + + true + true + + true + + false + + ДеревоАнкетыКоманднаяПанельДобавитьРазделExtendedTooltip + 98 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьРаздел + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавить</value> + + + ФормаДереваАнкетыПодменюДобавитьРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ДеревоАнкетыКоманднаяПанельРедактировать + 65 + true + true + + true + + false + + ДеревоАнкетыКоманднаяПанельРедактироватьExtendedTooltip + 102 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ФормаДереваАнкетыГруппа + 129 + + ДеревоАнкетыКоманднаяПанельПереместитьВверх + 31 + true + true + + true + + false + + ДеревоАнкетыКоманднаяПанельПереместитьВверхExtendedTooltip + 103 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.MoveUp + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ДеревоАнкетыКоманднаяПанельПереместитьВниз + 32 + true + true + + true + + false + + ДеревоАнкетыКоманднаяПанельПереместитьВнизExtendedTooltip + 104 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.MoveDown + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма дерева анкеты группа</value> + + + ФормаДереваАнкетыГруппаРасширеннаяПодсказка + 130 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаДереваАнкетыГруппа1 + 133 + + ДеревоАнкетыКоманднаяПанельУдалить + 38 + true + true + + true + + false + + ДеревоАнкетыКоманднаяПанельУдалитьExtendedTooltip + 105 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма дерева анкеты группа 1</value> + + + ФормаДереваАнкетыГруппа1РасширеннаяПодсказка + 134 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаДереваАнкетыВывестиСписок + 127 + true + true + + true + + + ФормаДереваАнкетыВывестиСписокРасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + DragCheck + ФормаДереваАнкетыПроверкаПеретаскивания + + + Selection + ФормаДереваАнкетыВыбор + + + BeforeAddRow + ФормаДереваАнкетыПередНачаломДобавления + + + BeforeDeleteRow + ФормаДереваАнкетыПередУдалением + + + OnActivateRow + ФормаДереваАнкетыПриАктивизацииСтроки + + + DragStart + ФормаДереваАнкетыНачалоПеретаскивания + + + Drag + ФормаДереваАнкетыПеретаскивание + + + BeforeRowChange + ФормаДереваАнкетыПередНачаломИзменения + + + DragEnd + ФормаДереваАнкетыОкончаниеПеретаскивания + + + OnChange + ФормаДереваАнкетыПриИзменении + + + true + true + + true + + ФормаДереваАнкетыСтрокаПоиска + 118 + + ФормаДереваАнкетыСтрокаПоискаРасширеннаяПодсказка + 120 + true + true + + true + + Label + true + true + + Left + + + + ФормаДереваАнкетыСтрокаПоискаКонтекстноеМеню + 119 + true + true + + true + + true + + + true + + + + true + true + + true + + ФормаДереваАнкетыСостояниеПросмотра + 121 + + ФормаДереваАнкетыСостояниеПросмотраРасширеннаяПодсказка + 123 + true + true + + true + + Label + true + true + + Left + + + + ФормаДереваАнкетыСостояниеПросмотраКонтекстноеМеню + 122 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ФормаДереваАнкетыУправлениеПоиском + 124 + + ФормаДереваАнкетыУправлениеПоискомРасширеннаяПодсказка + 126 + true + true + + true + + Label + true + true + + Left + + + + ФормаДереваАнкетыУправлениеПоискомКонтекстноеМеню + 125 + true + true + + true + + true + + SearchControlAddition + + true + + + + ФормаДереваАнкетыExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + + ФормаДереваАнкетыКонтекстноеМеню + 16 + + КонтекстноеМенюФормаДереваАнкетыДобавить + 69 + true + + true + + false + + КонтекстноеМенюФормаДереваАнкетыДобавитьExtendedTooltip + 89 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + ДеревоАнкетыКонтекстноеМенюДобавитьВопрос + 34 + true + true + + true + + false + + ДеревоАнкетыКонтекстноеМенюДобавитьВопросExtendedTooltip + 91 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьПростойВопрос + Auto + true + true + UserCmds + + StdPicture.DataCompositionNewGroup + + Auto + + + ДеревоАнкетыКонтекстноеМенюДобавитьВопросСУсловием + 67 + true + true + + true + + false + + ДеревоАнкетыКонтекстноеМенюДобавитьВопросСУсловиемExtendedTooltip + 92 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьВопросСУсловием + Auto + true + true + UserCmds + + StdPicture.DataCompositionNewNestedScheme + + Auto + + + ДеревоАнкетыКонтекстноеМенюДобавитьТабличныйВопрос + 66 + true + true + + true + + false + + ДеревоАнкетыКонтекстноеМенюДобавитьТабличныйВопросExtendedTooltip + 93 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьТабличныйВопрос + Auto + true + true + UserCmds + + StdPicture.DataCompositionNewTable + + Auto + + + ДеревоАнкетыКонтекстноеМенюДобавитьКомплексныйВопрос + 144 + true + true + + true + + false + + ДеревоАнкетыКонтекстноеМенюДобавитьКомплексныйВопросРасширеннаяПодсказка + 145 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьКомплексныйВопрос + Auto + true + true + UserCmds + + CommonPicture.ДобавитьТабличныйВопрос + + Auto + + + ДеревоАнкетыКонтекстноеМенюДобавитьРаздел + 33 + true + true + + true + + false + + ДеревоАнкетыКонтекстноеМенюДобавитьРазделExtendedTooltip + 90 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьРаздел + Auto + true + true + UserCmds + Auto + + + ФормаДереваАнкетыКонтекстноеМенюГруппа1 + 135 + + ДеревоАнкетыКонтекстноеМенюПереместитьВверх + 35 + true + true + + true + + false + + ДеревоАнкетыКонтекстноеМенюПереместитьВверхExtendedTooltip + 94 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.MoveUp + Auto + true + true + UserCmds + Auto + + + ДеревоАнкетыКонтекстноеМенюПереместитьВниз + 36 + true + true + + true + + false + + ДеревоАнкетыКонтекстноеМенюПереместитьВнизExtendedTooltip + 95 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.MoveDown + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма дерева анкеты контекстное меню группа 1</value> + + + ФормаДереваАнкетыКонтекстноеМенюГруппа1РасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаДереваАнкетыКонтекстноеМенюГруппа2 + 137 + + ДеревоАнкетыКонтекстноеМенюУдалить + 37 + true + true + + true + + false + + ДеревоАнкетыКонтекстноеМенюУдалитьExtendedTooltip + 96 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма дерева анкеты контекстное меню группа 2</value> + + + ФормаДереваАнкетыКонтекстноеМенюГруппа2РасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаДереваАнкетыКонтекстноеМенюКопироватьВБуферОбмена + 131 + true + true + + true + + + ФормаДереваАнкетыКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 132 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ФормаДереваАнкеты.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Tree + true + true + true + true + true + Row +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + ДеревоАнкеты.КодКартинки + + + CommonPicture.КоллекцияДеревоАнкеты + +
        + + ДеревоАнкетыЗаметки + 75 + true + true + + true + + + + Items.ФормаДереваАнкеты.CurrentData.Заметки + + + Left + + OnChange + ДеревоАнкетыЗаметкиПриИзменении + + + ДеревоАнкетыЗаметкиExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + + ДеревоАнкетыЗаметкиКонтекстноеМеню + 76 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + ДеревоАнкетыЗаметкиНачалоВыбора + + 2 + true + false + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Вопросы</value> + + + ДеревоАнкетыExtendedTooltip + 87 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + true + true + + true + + + <key>ru</key> + <value>Основные страницы</value> + + + ОсновныеСтраницыExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
        + + ФормаКоманднаяПанель + -1 + + ОткрытьФормуЗаполненияАнкеты + 74 + + <key>ru</key> + <value>Форма заполнения</value> + + true + true + + true + + false + + ОткрытьФормуЗаполненияАнкетыExtendedTooltip + 77 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьФормуЗаполненияАнкеты + Auto + true + true + UserCmds + Auto + + + ЗакончитьРедактирование + 54 + true + true + + true + + false + + ЗакончитьРедактированиеExtendedTooltip + 78 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗакончитьРедактирование + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ШаблоныАнкет + + + true + + + true + +
        true
        + true +
        + + ДеревоАнкеты + + <key>ru</key> + <value>Дерево анкеты</value> + + 2 + + ValueTree + + + true + + + true + + + КодКартинки + + <key>ru</key> + <value>Код картинки</value> + + 1 + + Number + + 10 + true + + + + true + + + true + + + + Наименование + 2 + + String + + 300 + + + + true + + + true + + + + ТипСтроки + 3 + + String + + 10 + + + + true + + + true + + + + ЭлементарныйВопрос + 5 + + String + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + + true + + + true + + + + Обязательный + + <key>ru</key> + <value>Обязательный</value> + + 6 + + Boolean + String + + + + true + + + true + + + + ТипВопроса + 7 + + EnumRef.ТипыВопросовШаблонаАнкеты + + + true + + + true + + + + ТипОтвета + 8 + + EnumRef.ТипыОтветовНаВопрос + + + true + + + true + + + + ТипТабличногоВопроса + 4 + + EnumRef.ТипыТабличныхВопросов + + + true + + + true + + + + СоставТабличногоВопроса + 9 + + ValueTable + + + true + + + true + + + + ПредопределенныеОтветы + 10 + + ValueTable + + + true + + + true + + + + КлючСтроки + 11 + + UUID + + + true + + + true + + + + Длина + 12 + + Number + + 10 + true + + + + true + + + true + + + + МинимальноеЗначение + 13 + + Number + + 15 + + + + true + + + true + + + + МаксимальноеЗначение + 14 + + Number + + 15 + + + + true + + + true + + + + ТипЗначения + 15 + + TypeDescription + + + true + + + true + + + + ТребуетсяКомментарий + 16 + + Boolean + + + true + + + true + + + + ПояснениеКомментария + 17 + + String + + 150 + + + + true + + + true + + + + ВопросШаблона + 18 + + CatalogRef.ВопросыШаблонаАнкеты + + + true + + + true + + + + ПолныйКод + 19 + + String + + 100 + + + + true + + + true + + + + Формулировка + + <key>ru</key> + <value>Формулировка</value> + + 20 + + String + + + + true + + + true + + + + Точность + 21 + + Number + + 1 + true + + + + true + + + true + + + + Заметки + 23 + + String + + + + true + + + true + + + + ЕстьЗаметки + + <key>ru</key> + <value>Есть заметки</value> + + 24 + + Boolean + + + true + + + true + + + + ЭтоНоваяСтрока + 22 + + Boolean + + + true + + + true + + + + СоставКомплексногоВопроса + 25 + + ValueTable + + + true + + + true + + + + Подсказка + 26 + + String + + + + true + + + true + + + + СпособОтображенияПодсказки + 27 + + EnumRef.СпособыОтображенияПодсказок + + + true + + + true + + + + + ДеревоАнкеты.СоставТабличногоВопроса + + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + НомерСтроки + + <key>ru</key> + <value>Номер строки</value> + + 2 + + Number + + 10 + + + + true + + + true + + + + + + ДеревоАнкеты.ПредопределенныеОтветы + + + Ответ + + <key>ru</key> + <value>Ответ</value> + + 3 + + Characteristic.ВопросыДляАнкетирования + + + true + + + true + + + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + НомерСтроки + + <key>ru</key> + <value>Номер строки</value> + + 2 + + Number + + 10 + + + + true + + + true + + + + + + ДеревоАнкеты.СоставКомплексногоВопроса + + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + НомерСтроки + + <key>ru</key> + <value>Номер строки</value> + + 2 + + Number + + 10 + + + + true + + + true + + + + + + ИнформацияДерево + 6 + + String + + + + true + + + true + + + + ПоДанномуШаблонуЕстьАнкеты + 7 + + Boolean + + + true + + + true + + + + ДобавитьРаздел + + <key>ru</key> + <value>Добавить раздел</value> + + 1 + + ru + Добавить раздел + + + true + + Ctrl+F9 + + CommonPicture.ДобавитьРазделАнкеты + + + + ДобавитьРаздел + + + DontUse + + + ДобавитьПростойВопрос + + <key>ru</key> + <value>Добавить простой вопрос</value> + + 2 + + ru + Добавить простой вопрос + + + true + + Shift+F6 + + CommonPicture.ДобавитьПростойВопрос + + + + ДобавитьПростойВопрос + + + DontUse + + + ЗакончитьРедактирование + + <key>ru</key> + <value>Закончить редактирование</value> + + 3 + + ru + Закончить редактирование + + + true + + + + ЗакончитьРедактирование + + + DontUse + + + ДобавитьВопросСУсловием + + <key>ru</key> + <value>Добавить условный вопрос</value> + + 4 + + ru + Добавить условный вопрос + + + true + + Shift+F8 + + CommonPicture.ДобавитьУсловныйВопрос + + + + ДобавитьВопросСУсловием + + + DontUse + + + ДобавитьТабличныйВопрос + + <key>ru</key> + <value>Добавить табличный вопрос</value> + + 5 + + ru + Добавить табличный вопрос + + + true + + Shift+F7 + + CommonPicture.ДобавитьТабличныйВопрос + + + + ДобавитьТабличныйВопрос + + + DontUse + + + ОткрытьФормуЗаполненияАнкеты + + <key>ru</key> + <value>Открыть форму заполнения анкеты</value> + + 6 + + ru + Открыть форму заполнения анкеты + + + true + + + + ОткрытьФормуЗаполненияАнкеты + + + DontUse + + + ДобавитьКомплексныйВопрос + + <key>ru</key> + <value>Добавить комплексный вопрос</value> + + 7 + + ru + Добавить комплексный вопрос + + + true + + Shift+F9 + + CommonPicture.ДобавитьКомплексныйВопрос + + + + ДобавитьКомплексныйВопрос + + + DontUse + + + + + Catalog.ВопросыШаблонаАнкеты.StandardCommand.OpenByValue + + + + + + + + AfterWrite + ПослеЗаписи + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
        diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..adf01e17 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,47 @@ + +

        Предназначена для подготовки шаблона анкеты.

        +

        Подготовка анкет осуществляется в два этапа. Вначале необходимо подготовить вопросы, из которых будет состоять предполагаемая анкета. Затем, используя подготовленные вопросы, нужно составить шаблон анкеты. В дальнейшем по этому шаблону программа автоматически создает анкету в тот момент, когда респондент начинает ее заполнять.

        +

        Укажите Наименование шаблона. Поле Наименование отображается в списке шаблонов.

        +

        Шаблон анкеты состоит из двух вкладок - Заголовки и Вопросы.

        +

        Заголовки

        +
        • Укажите Заголовок, который будет отображаться в анкете при ее заполнении респондентом. +
        • +
          Анкета может состоять из нескольких разделов, при этом два раздела, Вступление и Заключение, являются обязательными и присутствуют в любой анкете.
          +
        • +
          Напишите Вступление. В этом разделе можно поприветствовать респондента, объяснить ему особенности заполнения анкеты. Текст будет показан респонденту в начале анкетирования.
          +
        • +
          Напишите Заключение. В этом разделе можно поблагодарить респондента за заполненную анкету. Текст будет показан респонденту при завершении анкетирования.

        Вопросы

        +
        • В любой анкете содержится как минимум один раздел с вопросами. +
        • Сформируйте список вопросов анкеты. Список вопросов состоит из колонок: +
          • Вопрос - выводится наименование разделов и вопросов анкеты; +
          •  Обязательный - выводится Да, если у вопроса установлен флажок Обязательный, Нет - если не установлен; +
          •  Заметки - выводится , если введены дополнительные сведения о вопросе. Для того чтобы просмотреть заметки в нижней части списка, выделите вопрос.
        • По соответствующей кнопке можно Добавить новый элемент в анкету (также можно воспользоваться контекстным меню по правой кнопке мыши). Выберите Тип элемента: +
          • Раздел +
            • Задайте Имя раздела. В поле Заметки напишите уточняющую информацию о разделе, которая будет отображаться в нижней части шаблона или анкеты. Необходимо добавить хотя бы один раздел. Для того чтобы добавить раздел, также можно нажать Ctrl+F9.
          • Простой вопрос; +
          • Табличный вопрос; +
          • Вопрос с условием.
        • +
          Если анкета состоит из большого количества вопросов, то для удобства работы респондента с анкетой рекомендуется сгруппировать вопросы по нескольким разделам. Для комфортной работы респондента с анкетой рекомендуется включать в раздел не более 10-15 вопросов.
          +
        • +
          С помощью кнопок  Переместить вверх и  Переместить вниз можно установить порядок следования вопросов в разделе и самих разделов в анкете. Порядком следования можно управлять при помощи перетаскивания мышью разделов и вопросов. При помощи перетаскивания мышью можно переносить вопросы из раздела в раздел.
          +
        • +
          При удалении раздела вместе с ним удаляются вопросы, входящие в него.

        Просмотр анкеты

        +
        • +
          При выборе в разделах шаблона анкеты табличного вопроса можно увидеть его внешний вид в нижней части шаблона. Для того чтобы получить представление о том, каким образом будет выглядеть вся анкета при заполнении ее респондентом, можно воспользоваться командой Форма заполнения.

        Сохранение шаблона анкеты

        +
        • Если работу над шаблоном планируется продолжить, нажмите Записать и закрыть.

        Запрет редактирования шаблона

        +
        • После того как список вопросов в шаблоне анкеты окончательно сформирован, можно запретить возможность его редактирования в дальнейшем. Для этого нажмите Закончить редактирование. +
        • Если по шаблону анкеты программой была создана хотя бы одна анкета, то шаблон анкеты автоматически становится недоступным для редактирования. Для корректного анализа ответов на анкеты в отчетах необходимо, чтобы шаблон анкеты остался неизменным, так как анализ данных производится для всех анкет, в которых указано, что они заполнены по данному шаблону.

        Простой вопрос

        +
        • Нажмите Добавить - Простой вопрос, для того чтобы подобрать в шаблон вопрос из списка Вопросы для анкетирования. Также можно использовать сочетание клавиш Shift+F6. +
        • Заполните следующие поля, для того чтобы создать Вопрос шаблона анкеты: +
          • В поле Элементарный вопрос выберите вопрос из ранее подготовленного списка вопросов для анкетирования. В этом поле отражается наименование вопроса. Можно создать вопрос в списке выбора, если нужного вопроса не нашлось. +
          • Поле Формулировка автоматически заполняется текстом формулировки вопроса после выбора вопроса для анкетирования. Здесь же можно изменить формулировку вопроса, которая будет видна респондентам в анкетах этого шаблона. +
          • Обязательный - если флажок установлен, то респондент не сможет завершить анкетирование, не ответив на этот вопрос. +
          • В поле Заметки напишите по поводу вопроса уточняющую информацию, которая будет выводиться в нижней части анкеты.

        Табличный вопрос

        +
        • В таблицах удобно вводить однотипные структурированные данные. Например, сведения о составе семьи удобно поместить в таблицу. В столбцах будут вопросы о членах семьи, в строках будут перечислены по порядку члены семьи и их характеристики будут размещены в порядке вопросов таблицы. +
        • Команда Добавить - Табличный вопрос открывает Помощник табличных вопросов. Следуйте инструкциям помощника, для того чтобы ввести табличный вопрос.

        Вопрос с условием

        +
        • Существуют ситуации, когда респонденту нет смысла задавать вопрос, если не выполняется какое-либо условие. Например, нет смысла задавать вопросы респонденту о том, как часто он пользуется автосервисом и автомобильной мойкой, если у респондента нет автомобиля. +
        • В таком случае при составлении шаблона анкеты можно создать вопрос с условием, например, о наличии у респондента автомобиля и дополнительно перечислить подчиненные вопросы, например, об автосервисе и автомойке. +
        • При положительном ответе на вопрос с условием респонденту будет также предложено ответить и на подчиненные вопросы. В противном случае подчиненные вопросы останутся недоступными. +
        • Для создания вопросов с условием можно воспользоваться командой Добавить - Вопрос с условием, также можно воспользоваться сочетанием клавиш Shift+F8. Вопросами с условием могут быть только вопросы типа Булево (Да/Нет). +
        • К каждому вопросу с условием необходимо добавить один или несколько подчиненных вопросов с помощью команд Добавить - Простой вопрос, Добавить - Табличный вопрос. При этом подчиненные вопросы выводятся под своим родительским условным вопросом.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..ae2aebc0 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,1086 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ,СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Анкетирование.УстановитьКорневойЭлементДереваАнкеты(ДеревоАнкеты); + Анкетирование.ЗаполнитьДеревоШаблонаАнкеты(ЭтотОбъект,"ДеревоАнкеты",Объект.Ссылка); + АнкетированиеКлиентСервер.СформироватьНумерациюДерева(ДеревоАнкеты); + УстановитьУсловноеОформлениеФормы(); + ОпределитьЕстьЛиДанномуШаблонуАнкеты(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Элементы.ФормаДереваАнкеты.Развернуть(ДеревоАнкеты.ПолучитьЭлементы()[0].ПолучитьИдентификатор(),Ложь); + + Если Объект.РедактированиеШаблонаЗавершено ИЛИ ПоДанномуШаблонуЕстьАнкеты Тогда + УстановитьНедоступностьРедактирования(); + Иначе + ОпределитьДоступностьДереваШаблона(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Анкетирование.УдалитьВопросыШаблонаАнкеты(Объект.Ссылка); + ДеревоШаблонаАнкеты = РеквизитФормыВЗначение("ДеревоАнкеты"); + + ЗаписатьДеревоШаблонаАнкеты(ДеревоШаблонаАнкеты.Строки[0],1); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ИмяСобытия = "ОкончаниеРедактированияПараметровТабличногоВопроса" Тогда + + ОбработатьРезультатРаботыМастераТабличныхВопросов(ТекущиеДанные,Параметр,Элементы.ФормаДереваАнкеты.ТекущаяСтрока); + Модифицированность = Истина; + + ИначеЕсли ИмяСобытия = "ОкончаниеРедактированияПараметровКомплексногоВопроса" Тогда + + ОбработатьРезультатРаботыМастераКомплексныхВопросов(ТекущиеДанные,Параметр,Элементы.ФормаДереваАнкеты.ТекущаяСтрока); + Модифицированность = Истина; + + ИначеЕсли ИмяСобытия = "ОкончаниеРедактированияПараметровСтрокиШаблонаАнкеты" Тогда + + ЗаполнитьЗначенияСвойств(ТекущиеДанные,Параметр); + ТекущиеДанные.ЕстьЗаметки = Не ПустаяСтрока(ТекущиеДанные.Заметки); + Модифицированность = Истина; + + Если ТекущиеДанные.ТипСтроки <> "Вопрос" Тогда + ТекущиеДанные.Обязательный = Неопределено; + КонецЕсли; + + ИначеЕсли ИмяСобытия = "ОтменаВводаНовойСтрокиШаблонаАнкеты" Тогда + Если ТекущиеДанные.ЭтоНоваяСтрока Тогда + ТекущаяСтрока = ДеревоАнкеты.НайтиПоИдентификатору(ТекущиеДанные.ПолучитьИдентификатор()); + Если ТекущаяСтрока <> Неопределено Тогда + ТекущаяСтрока.ПолучитьРодителя().ПолучитьЭлементы().Удалить(ТекущаяСтрока); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ДеревоШаблонаАнкеты = РеквизитФормыВЗначение("ДеревоАнкеты"); + + Если ДеревоШаблонаАнкеты.Строки[0].Строки.Найти("","Формулировка",Истина) <> Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не все формулировки или имена разделов заполнены.'"),,"ДеревоАнкеты"); + Отказ = Истина; + КонецЕсли; + + СтруктураОтбора = Новый Структура; + СтруктураОтбора.Вставить("ЭлементарныйВопрос",ПланыВидовХарактеристик.ВопросыДляАнкетирования.ПустаяСсылка()); + СтруктураОтбора.Вставить("ТипСтроки","Вопрос"); + + НайденныеСтроки = ДеревоШаблонаАнкеты.Строки[0].Строки.НайтиСтроки(СтруктураОтбора,Истина); + Если НайденныеСтроки.Количество() <> 0 Тогда + Для каждого НайденнаяСтрока Из НайденныеСтроки Цикл + Если НайденнаяСтрока.ТипВопроса <> Перечисления.ТипыВопросовШаблонаАнкеты.Табличный + И НайденнаяСтрока.ТипВопроса <> Перечисления.ТипыВопросовШаблонаАнкеты.Комплексный Тогда + + ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не все вопросы заполнены.'"),,"ДеревоАнкеты"); + Отказ = Истина; + Прервать; + + КонецЕсли; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + ОпределитьДоступностьДереваШаблона(); + Если Объект.РедактированиеШаблонаЗавершено Тогда + ЭтотОбъект.ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыФормаДереваАнкеты + +&НаКлиенте +Процедура ФормаДереваАнкетыПередУдалением(Элемент, Отказ) + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.ТипСтроки = "Корень" Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыПриАктивизацииСтроки(Элемент) + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + Если (Строка = Неопределено) ИЛИ (ПараметрыПеретаскивания.Значение = Неопределено) Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + + Если ТипЗнч(ПараметрыПеретаскивания.Значение) <> Тип("Число") Тогда + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + Возврат; + КонецЕсли; + + СтрокаНазначение = ДеревоАнкеты.НайтиПоИдентификатору(Строка); + СтрокаПеретаскивание = ДеревоАнкеты.НайтиПоИдентификатору(ПараметрыПеретаскивания.Значение); + + Если (СтрокаПеретаскивание.ТипСтроки = "Раздел") И (СтрокаНазначение.ТипСтроки = "Вопрос") Тогда + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + ИначеЕсли (СтрокаПеретаскивание.ТипСтроки = "Вопрос") И (СтрокаНазначение.ТипСтроки = "Корень") Тогда + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + ИначеЕсли (СтрокаПеретаскивание.ТипСтроки = "Раздел") И (СтрокаНазначение.ТипСтроки = "Раздел") Тогда + Если СтрокаПеретаскивание.ВопросШаблона = СтрокаНазначение.ВопросШаблона Тогда + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + Возврат; + КонецЕсли; + Родитель = СтрокаНазначение.ПолучитьРодителя(); + Пока Родитель.ТипСтроки <> "Корень" Цикл + Если Родитель = СтрокаПеретаскивание Тогда + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + Возврат; + Иначе + Родитель = Родитель.ПолучитьРодителя(); + КонецЕсли; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + Если Элементы.ФормаДереваАнкеты.ТолькоПросмотр Тогда + СтандартнаяОбработка = Ложь; + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + КонецЕсли; + + СтрокаПеретаскивание = ДеревоАнкеты.НайтиПоИдентификатору(ПараметрыПеретаскивания.Значение); + Если ТипЗнч(СтрокаПеретаскивание) = Тип("Неопределено") Тогда + СтандартнаяОбработка = Ложь; + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + Иначе + Если СтрокаПеретаскивание.ТипСтроки = "Корень" Тогда + СтандартнаяОбработка = Ложь; + ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтрокаНазначение = ДеревоАнкеты.НайтиПоИдентификатору(Строка); + СтрокаПеретаскивание = ДеревоАнкеты.НайтиПоИдентификатору(ПараметрыПеретаскивания.Значение); + + Если (СтрокаПеретаскивание.ТипСтроки = "Вопрос") И (СтрокаНазначение.ТипСтроки = "Вопрос") Тогда + + // Вопрос без условия перетаскиваем на вопрос с условием. + Если СтрокаПеретаскивание.ТипВопроса <> ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.ВопросСУсловием") + И СтрокаНазначение.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.ВопросСУсловием") Тогда + + СтандартнаяОбработка = Ложь; + ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Ложь); + + Модифицированность = Истина; + + ИначеЕсли СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение.ПолучитьРодителя() Тогда + + СтандартнаяОбработка = Ложь; + ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Истина); + + Модифицированность = Истина; + + КонецЕсли; + + ИначеЕсли (СтрокаПеретаскивание.ТипСтроки = "Вопрос") И (СтрокаНазначение.ТипСтроки = "Раздел") Тогда + + Если СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение Тогда + + СтандартнаяОбработка = Ложь; + ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Ложь); + + Модифицированность = Истина; + + КонецЕсли; + + ИначеЕсли (СтрокаПеретаскивание.ТипСтроки = "Раздел") И (СтрокаНазначение.ТипСтроки = "Раздел") Тогда + + Если СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение Тогда + + СтандартнаяОбработка = Ложь; + ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Ложь); + + Модифицированность = Истина; + + ИначеЕсли СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение.ПолучитьРодителя() Тогда + + СтандартнаяОбработка = Ложь; + ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Истина); + + Модифицированность = Истина; + + КонецЕсли; + + ИначеЕсли (СтрокаПеретаскивание.ТипСтроки = "Раздел") И (СтрокаНазначение.ТипСтроки = "Вопрос") Тогда + + Если (СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение.ПолучитьРодителя()) И (СтрокаНазначение.ПолучитьРодителя() <> СтрокаПеретаскивание)Тогда + + СтандартнаяОбработка = Ложь; + ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Истина); + + Модифицированность = Истина; + + КонецЕсли; + + ИначеЕсли ((СтрокаПеретаскивание.ТипСтроки = "Раздел") ИЛИ (СтрокаПеретаскивание.ТипСтроки = "Вопрос")) И (СтрокаНазначение.ТипСтроки = "Корень") Тогда + + СтандартнаяОбработка = Ложь; + ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Ложь); + + Модифицированность = Истина; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыПриИзменении(Элемент) + + Модифицированность = Истина; + АнкетированиеКлиентСервер.СформироватьНумерациюДерева(ДеревоАнкеты); + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + + ТекущиеДанные = Элемент.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.ТипСтроки = "Корень" Тогда + Отказ = Истина; + Возврат; + ИначеЕсли ТекущиеДанные.ТипСтроки = "Раздел" + ИЛИ (ТекущиеДанные.ТипСтроки = "Вопрос" + И ТекущиеДанные.ТипВопроса <> ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный") + И ТекущиеДанные.ТипВопроса <> ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Комплексный")) Тогда + + ОткрытьФормуПростыхВопросов(ТекущиеДанные); + + ИначеЕсли ТекущиеДанные.ТипСтроки = "Вопрос" И ТекущиеДанные.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Комплексный") Тогда + + ОткрытьФормуМастераКомплексныхВопросов(ТекущиеДанные); + + ИначеЕсли ТекущиеДанные.ТипСтроки = "Вопрос" И ТекущиеДанные.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный") Тогда + + ОткрытьФормуМастераТабличныхВопросов(ТекущиеДанные); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + СписокВыбора = Новый СписокЗначений; + СписокВыбора.Добавить(НСтр("ru = 'Раздел'")); + СписокВыбора.Добавить(НСтр("ru = 'Простой вопрос'")); + СписокВыбора.Добавить(НСтр("ru = 'Комплексный вопрос'")); + СписокВыбора.Добавить(НСтр("ru = 'Условный вопрос'")); + СписокВыбора.Добавить(НСтр("ru = 'Табличный вопрос'")); + + ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ВыборТипаДобавляемогоЭлементаПриЗавершении", ЭтотОбъект); + СписокВыбора.ПоказатьВыборЭлемента(ОбработчикОповещенияОЗакрытии, НСтр("ru = 'Выберите тип добавляемого элемента.'"),СписокВыбора[0]); + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + АнкетированиеКлиентСервер.СформироватьНумерациюДерева(ДеревоАнкеты); + +КонецПроцедуры + +&НаКлиенте +Процедура ФормаДереваАнкетыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Элементы.ФормаДереваАнкеты.ТолькоПросмотр Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные = Элемент.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.ТипСтроки = "Корень" Тогда + Возврат; + ИначеЕсли ТекущиеДанные.ТипСтроки = "Раздел" + ИЛИ (ТекущиеДанные.ТипСтроки = "Вопрос" И ТекущиеДанные.ТипВопроса <> ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный") + И ТекущиеДанные.ТипВопроса <> ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Комплексный") ) Тогда + + ОткрытьФормуПростыхВопросов(ТекущиеДанные); + + ИначеЕсли ТекущиеДанные.ТипСтроки = "Вопрос" И ТекущиеДанные.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Комплексный") Тогда + + ОткрытьФормуМастераКомплексныхВопросов(ТекущиеДанные); + + ИначеЕсли ТекущиеДанные.ТипСтроки = "Вопрос" И ТекущиеДанные.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный") Тогда + + ОткрытьФормуМастераТабличныхВопросов(ТекущиеДанные); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоАнкетыЗаметкиПриИзменении(Элемент) + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные.ЕстьЗаметки = Не ПустаяСтрока(ТекущиеДанные.ЕстьЗаметки); + +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоАнкетыЗаметкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОповещениеОЗакрытии = Новый ОписаниеОповещения("РедактированиеЗаметкиПриЗакрытии", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(ОповещениеОЗакрытии, Элемент.ТекстРедактирования, НСтр("ru = 'Заметки'")); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +// Устанавливает флаг окончания редактирования шаблона анкеты +// и записывает анкету. +// +&НаКлиенте +Процедура ЗакончитьРедактирование(Команда) + + Объект.РедактированиеШаблонаЗавершено = Истина; + Записать(); + + Если Модифицированность Тогда + Объект.РедактированиеШаблонаЗавершено = Ложь; + Иначе + УстановитьНедоступностьРедактирования(); + КонецЕсли; + +КонецПроцедуры + +// Добавляет раздел в дерево шаблона анкеты. +&НаКлиенте +Процедура ДобавитьРаздел(Команда) + + Если Не ЗаписьЕслиНовыйВыполненаУспешно() Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Родитель = ПолучитьРодителяДеревоАнкеты(ТекущиеДанные,Истина); + ДобавитьСтрокуДеревоАнкеты(Родитель,"Раздел"); + +КонецПроцедуры + +// Добавляет простой вопрос в дерево шаблона анкеты. +&НаКлиенте +Процедура ДобавитьПростойВопрос(Команда) + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьВопрос(ТекущиеДанные,ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Простой")); + +КонецПроцедуры + +// Добавляет комплексный вопрос в шаблон анкеты. +&НаКлиенте +Процедура ДобавитьКомплексныйВопрос(Команда) + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьВопрос(ТекущиеДанные,ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Комплексный")); + +КонецПроцедуры + +// Добавляет вопрос с условием в шаблон анкеты. +&НаКлиенте +Процедура ДобавитьВопросСУсловием(Команда) + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьВопрос(ТекущиеДанные,ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.ВопросСУсловием")); + +КонецПроцедуры + +// Добавляет табличный вопрос в шаблон анкеты. +&НаКлиенте +Процедура ДобавитьТабличныйВопрос(Команда) + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьВопрос(ТекущиеДанные,ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный")); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуЗаполненияАнкеты(Команда) + + Если Не ЗаписьЕслиНовыйВыполненаУспешно() Тогда + Возврат; + КонецЕсли; + + Если Модифицированность Тогда + ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ВопросОНеобходимостиЗаписиПослеЗавершения", ЭтотОбъект); + ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, + НСтр("ru = 'Шаблон анкеты был модифицирован. + |Для корректного отображения изменений шаблон необходимо записать. + |Записать?'"), + РежимДиалогаВопрос.ДаНет, + , + КодВозвратаДиалога.Да, + НСтр("ru = 'Записать?'")); + Иначе + ОткрытьФормуМастераАнкетыПоРазделам(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоАнкетыОбязательный.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоАнкеты.ТипСтроки"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; + ОтборЭлемента.ПравоеЗначение = НСтр("ru = 'Вопрос'"); + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый); + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.СеребристоСерый); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоАнкетыОбязательный.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоАнкеты.ТипВопроса"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыВопросовШаблонаАнкеты.Табличный; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый); + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.СеребристоСерый); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоАнкетыФормулировка.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоАнкеты.ТипСтроки"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; + ОтборЭлемента.ПравоеЗначение = НСтр("ru = 'Корень'"); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоАнкеты.Формулировка"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина); + +КонецПроцедуры + +// Добавляет новую строку в дерево формы. +// Родитель - СтрокаДереваАнкеты - элемент дерева значений формы, от которого отращивается новая ветка. +// ТипСтроки - Строка - Тип строки дерева. +// Возвращаемое значение: +// Строка - новая строка дерева. +// +&НаКлиенте +Функция ДобавитьСтрокуДеревоАнкеты(Родитель,ТипСтроки,ТипВопроса = Неопределено) + + ЭлементыДерева = Родитель.ПолучитьЭлементы(); + НоваяСтрока = ЭлементыДерева.Добавить(); + + НоваяСтрока.ТипСтроки = ТипСтроки; + НоваяСтрока.Обязательный = Ложь; + НоваяСтрока.КлючСтроки = Новый УникальныйИдентификатор; + НоваяСтрока.ЭтоНоваяСтрока = Истина; + + Если ТипСтроки = "Вопрос" Тогда + + НоваяСтрока.ТипВопроса = ТипВопроса; + НоваяСтрока.КодКартинки = АнкетированиеКлиентСервер.ПолучитьКодКартинкиШаблонаАнкеты(ЛОЖЬ,ТипВопроса); + НоваяСтрока.ЭлементарныйВопрос = ?(ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный") + Или ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Комплексный"), + "", + ПредопределенноеЗначение("ПланВидовХарактеристик.ВопросыДляАнкетирования.ПустаяСсылка")); + НоваяСтрока.Обязательный = ?(ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный") + Или ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Комплексный"),"",Ложь); + + Иначе + + НоваяСтрока.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.ПустаяСсылка"); + НоваяСтрока.КодКартинки = АнкетированиеКлиентСервер.ПолучитьКодКартинкиШаблонаАнкеты(ИСТИНА); + НоваяСтрока.ЭлементарныйВопрос = ""; + НоваяСтрока.Обязательный = ""; + + КонецЕсли; + + НоваяСтрока.СпособОтображенияПодсказки = ПредопределенноеЗначение("Перечисление.СпособыОтображенияПодсказок.КонтекстнаяПодсказка"); + + АнкетированиеКлиентСервер.СформироватьНумерациюДерева(ДеревоАнкеты); + Элементы.ФормаДереваАнкеты.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор(); + + Модифицированность = Истина; + Элементы.ФормаДереваАнкеты.ИзменитьСтроку(); + + Возврат НоваяСтрока; + +КонецФункции + +&НаСервере +Процедура ЗаписатьДеревоШаблонаАнкеты(СтрокаДереваРодитель,УровеньРекурсии,СправочникРодитель = Неопределено) + + Счетчик = 0; + + // запишем новые + Для каждого СтрокаДерева Из СтрокаДереваРодитель.Строки Цикл + + Счетчик = Счетчик + 1; + СпрСсылка = ДобавитьЭлементСправочникаВопросШаблонаАнкеты(СтрокаДерева,?(УровеньРекурсии = 1,Счетчик,Неопределено),СправочникРодитель); + + Если СтрокаДерева.Строки.Количество() > 0 Тогда + Если СтрокаДерева.ТипСтроки = "Раздел" Тогда + ЗаписатьДеревоШаблонаАнкеты(СтрокаДерева,УровеньРекурсии+1,СпрСсылка); + Иначе + Для каждого СтрокаПодчиненныйВопрос Из СтрокаДерева.Строки Цикл + ДобавитьЭлементСправочникаВопросШаблонаАнкеты(СтрокаПодчиненныйВопрос,Неопределено,СправочникРодитель,СпрСсылка); + КонецЦикла; + КонецЕсли; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ДобавитьЭлементСправочникаВопросШаблонаАнкеты(СтрокаДерева,Код = Неопределено,СправочникРодитель = Неопределено,ВопросРодитель = Неопределено) + + Если СтрокаДерева.ТипСтроки = "Раздел" Тогда + + СпрОбъект = Справочники.ВопросыШаблонаАнкеты.СоздатьГруппу(); + + Иначе + + СпрОбъект = Справочники.ВопросыШаблонаАнкеты.СоздатьЭлемент(); + СпрОбъект.ТипВопроса = СтрокаДерева.ТипВопроса; + СпрОбъект.ЭлементарныйВопрос = СтрокаДерева.ЭлементарныйВопрос; + СпрОбъект.ТипТабличногоВопроса = СтрокаДерева.ТипТабличногоВопроса; + СпрОбъект.Обязательный = СтрокаДерева.Обязательный; + СпрОбъект.Подсказка = СтрокаДерева.Подсказка; + СпрОбъект.СпособОтображенияПодсказки = СтрокаДерева.СпособОтображенияПодсказки; + СпрОбъект.РодительВопрос = ?(ВопросРодитель = Неопределено, Справочники.ВопросыШаблонаАнкеты.ПустаяСсылка(),ВопросРодитель); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(СтрокаДерева.СоставТабличногоВопроса,СпрОбъект.СоставТабличногоВопроса); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(СтрокаДерева.ПредопределенныеОтветы,СпрОбъект.ПредопределенныеОтветы); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(СтрокаДерева.СоставКомплексногоВопроса,СпрОбъект.СоставКомплексногоВопроса); + + КонецЕсли; + + Если Код <> Неопределено Тогда + СпрОбъект.Код = Код; + КонецЕсли; + СпрОбъект.Наименование = СтрокаДерева.Формулировка; + СпрОбъект.Заметки = СтрокаДерева.Заметки; + СпрОбъект.Формулировка = СтрокаДерева.Формулировка; + СпрОбъект.Родитель = ?(СправочникРодитель = Неопределено,Справочники.ВопросыШаблонаАнкеты.ПустаяСсылка(),СправочникРодитель); + СпрОбъект.Владелец = Объект.Ссылка; + + СпрОбъект.Записать(); + + Возврат СпрОбъект.Ссылка; + +КонецФункции + +// Обрабатывает результат работы мастера табличных вопросов. +// +// Параметры: +// ТекущиеДанные -ДанныеФормыЭлементДерева - текущая данные дерева шаблона. +// Параметр - Структура - результаты работы формы мастера табличного вопроса. +// +&НаКлиенте +Процедура ОбработатьРезультатРаботыМастераТабличныхВопросов(ТекущиеДанные,Параметр,ТекущаяСтрока) + + ТекущиеДанные.СоставТабличногоВопроса.Очистить(); + ТекущиеДанные.ПредопределенныеОтветы.Очистить(); + + ТекущиеДанные.ТипТабличногоВопроса = Параметр.ТипТабличногоВопроса; + ТекущиеДанные.Наименование = Параметр.Формулировка; + ТекущиеДанные.Формулировка = Параметр.Формулировка; + ТекущиеДанные.ЭлементарныйВопрос = Параметр.Формулировка; + ТекущиеДанные.Обязательный = ""; + ТекущиеДанные.Подсказка = Параметр.Подсказка; + ТекущиеДанные.СпособОтображенияПодсказки = Параметр.СпособОтображенияПодсказки; + ТекущиеДанные.ЭтоНоваяСтрока = Ложь; + + НомерСтроки = 1; + Для каждого Вопрос Из Параметр.Вопросы Цикл + + НоваяСтрока = ТекущиеДанные.СоставТабличногоВопроса.Добавить(); + НоваяСтрока.ЭлементарныйВопрос = Вопрос; + НоваяСтрока.НомерСтроки = НомерСтроки; + + НомерСтроки = НомерСтроки + 1; + + КонецЦикла; + + Для каждого Ответ Из Параметр.Ответы Цикл + ЗаполнитьЗначенияСвойств(ТекущиеДанные.ПредопределенныеОтветы.Добавить(),Ответ); + КонецЦикла; + + УстановитьУсловноеОформлениеФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьРезультатРаботыМастераКомплексныхВопросов(ТекущиеДанные,Параметр,ТекущаяСтрока) + + ТекущиеДанные.СоставКомплексногоВопроса.Очистить(); + + ТекущиеДанные.Наименование = Параметр.Формулировка; + ТекущиеДанные.Формулировка = Параметр.Формулировка; + ТекущиеДанные.ЭлементарныйВопрос = Параметр.Формулировка; + ТекущиеДанные.Обязательный = ""; + ТекущиеДанные.Подсказка = Параметр.Подсказка; + ТекущиеДанные.СпособОтображенияПодсказки = Параметр.СпособОтображенияПодсказки; + ТекущиеДанные.ЭтоНоваяСтрока = Ложь; + + НомерСтроки = 1; + Для каждого Вопрос Из Параметр.Вопросы Цикл + + НоваяСтрока = ТекущиеДанные.СоставКомплексногоВопроса.Добавить(); + НоваяСтрока.ЭлементарныйВопрос = Вопрос; + НоваяСтрока.НомерСтроки = НомерСтроки; + + НомерСтроки = НомерСтроки + 1; + + КонецЦикла; + + УстановитьУсловноеОформлениеФормы(); + +КонецПроцедуры + +// Устанавливает условное оформление формы. +&НаСервере +Процедура УстановитьУсловноеОформлениеФормы(); + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоАнкеты.ТипСтроки"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; + ЭлементОтбораДанных.Использование = Истина; + ЭлементОтбораДанных.ПравоеЗначение = "Вопрос"; + + ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеОформления.Использование = Истина; + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ДеревоАнкетыОбязательный"); + + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.СеребристоСерый); + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьЕстьЛиДанномуШаблонуАнкеты() + + УстановитьПривилегированныйРежим(Истина); + + Запрос = Новый Запрос; + Запрос.Текст = " + |ВЫБРАТЬ ПЕРВЫЕ 1 + | Анкета.Ссылка + |ИЗ + | Документ.Анкета КАК Анкета + |ГДЕ + | (НЕ Анкета.ПометкаУдаления) + | И Анкета.Опрос В + | (ВЫБРАТЬ + | НазначениеОпросов.Ссылка + | ИЗ + | Документ.НазначениеОпросов КАК НазначениеОпросов + | ГДЕ + | НазначениеОпросов.ШаблонАнкеты = &ШаблонАнкеты)"; + + Запрос.УстановитьПараметр("ШаблонАнкеты",Объект.Ссылка); + + Если НЕ Запрос.Выполнить().Пустой() Тогда + + ПоДанномуШаблонуЕстьАнкеты = Истина; + + Иначе + + ПоДанномуШаблонуЕстьАнкеты = Ложь; + + КонецЕсли; + + УстановитьПривилегированныйРежим(Ложь); + +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьРодителяДеревоАнкеты(ТекущийРодитель,МожетБытьКорнем,ТипВопроса = Неопределено) + + Если МожетБытьКорнем Тогда + + Пока (ТекущийРодитель.ТипСтроки <> "Корень") И (ТекущийРодитель.ТипСтроки <> "Раздел") Цикл + ТекущийРодитель = ТекущийРодитель.ПолучитьРодителя(); + Если ТекущийРодитель = Неопределено Тогда + Возврат ДеревоАнкеты.ПолучитьЭлементы()[0]; + КонецЕсли; + КонецЦикла; + + Иначе + + Пока (ТекущийРодитель.ТипСтроки <> "Раздел") + И ((ТекущийРодитель.ТипСтроки = "Вопрос") И (НЕ ТекущийРодитель.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.ВопросСУсловием")) + ИЛИ (ТекущийРодитель.ТипСтроки = "Вопрос" И ТекущийРодитель.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.ВопросСУсловием") И ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.ВопросСУсловием"))) Цикл + + ТекущийРодитель = ТекущийРодитель.ПолучитьРодителя(); + + КонецЦикла + + КонецЕсли; + + Возврат ТекущийРодитель; + +КонецФункции + +// Добавляет вопрос в шаблон анкеты. +// +// Параметры: +// ТекущиеДанные - ДанныеФормыЭлементДерева - данные текущей строки дерева. +// ТипВопроса - Перечисления.ТипыВопросовШаблонаАнкет - тип добавляемого вопроса. +// +&НаКлиенте +Процедура ДобавитьВопрос(ТекущиеДанные,ТипВопроса) + + Родитель = ПолучитьРодителяДеревоАнкеты(ТекущиеДанные,Ложь,ТипВопроса); + Если Родитель.ТипСтроки = "Корень" Тогда + ПоказатьПредупреждение(,НСтр("ru = 'Вопросы нельзя добавлять в корень анкеты.'"),15,НСтр("ru = 'Ошибка добавления'")); + Возврат; + КонецЕсли; + ДобавитьСтрокуДеревоАнкеты(Родитель,"Вопрос",ТипВопроса); + +КонецПроцедуры + +&НаКлиенте +Процедура ОпределитьДоступностьДереваШаблона() + + НедоступностьРедактирования = Объект.РедактированиеШаблонаЗавершено ИЛИ ПоДанномуШаблонуЕстьАнкеты; + + Элементы.ДеревоАнкеты.ТолькоПросмотр = НедоступностьРедактирования; + Элементы.ФормаДереваАнкеты.ТолькоПросмотр = НедоступностьРедактирования; + Элементы.ЗакончитьРедактирование.Доступность = НЕ НедоступностьРедактирования; + Элементы.ФормаДереваАнкеты.КоманднаяПанель.Доступность = НЕ НедоступностьРедактирования; + Элементы.ФормаДереваАнкеты.КонтекстноеМеню.Доступность = НЕ НедоступностьРедактирования; + Элементы.КонтекстноеМенюФормаДереваАнкетыДобавить.Доступность = НЕ НедоступностьРедактирования; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьРаздел.Доступность = НЕ НедоступностьРедактирования; + Элементы.ДеревоАнкетыКонтекстноеМенюПереместитьВверх.Доступность = НЕ НедоступностьРедактирования; + Элементы.ДеревоАнкетыКонтекстноеМенюПереместитьВниз.Доступность = НЕ НедоступностьРедактирования; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьВопрос.Доступность = НЕ НедоступностьРедактирования; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьВопросСУсловием.Доступность = НЕ НедоступностьРедактирования; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьТабличныйВопрос.Доступность = НЕ НедоступностьРедактирования; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьКомплексныйВопрос.Доступность = НЕ НедоступностьРедактирования; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьНедоступностьРедактирования() + + Если Объект.РедактированиеШаблонаЗавершено ИЛИ ПоДанномуШаблонуЕстьАнкеты Тогда + + ЭтотОбъект.ТолькоПросмотр = Истина; + Элементы.ДеревоАнкеты.ТолькоПросмотр = Истина; + Элементы.ФормаДереваАнкеты.ТолькоПросмотр = Истина; + Элементы.ФормаДереваАнкеты.КоманднаяПанель.Доступность = Ложь; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьРаздел.Доступность = Ложь; + Элементы.ДеревоАнкетыКонтекстноеМенюПереместитьВверх.Доступность = Ложь; + Элементы.ДеревоАнкетыКонтекстноеМенюПереместитьВниз.Доступность = Ложь; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьВопрос.Доступность = Ложь; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьВопросСУсловием.Доступность = Ложь; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьТабличныйВопрос.Доступность = Ложь; + Элементы.ДеревоАнкетыКонтекстноеМенюДобавитьКомплексныйВопрос.Доступность = Ложь; + Элементы.ЗакончитьРедактирование.Доступность = Ложь; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуПростыхВопросов(ТекущиеДанные) + + ПростойВопрос = Новый Структура; + ПростойВопрос.Вставить("ТипСтрокиДерева", ТекущиеДанные.ТипСтроки); + ПростойВопрос.Вставить("ЭлементарныйВопрос", ТекущиеДанные.ЭлементарныйВопрос); + ПростойВопрос.Вставить("Обязательный", ТекущиеДанные.Обязательный); + ПростойВопрос.Вставить("ТипВопроса", ТекущиеДанные.ТипВопроса); + ПростойВопрос.Вставить("Формулировка", ТекущиеДанные.Формулировка); + ПростойВопрос.Вставить("ЗакрыватьПриВыборе", Истина); + ПростойВопрос.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина); + ПростойВопрос.Вставить("ТолькоПросмотр", Ложь); + ПростойВопрос.Вставить("Заметки", ТекущиеДанные.Заметки); + ПростойВопрос.Вставить("ЭтоНоваяСтрока", ТекущиеДанные.ЭтоНоваяСтрока); + ПростойВопрос.Вставить("Подсказка", ТекущиеДанные.Подсказка); + ПростойВопрос.Вставить("СпособОтображенияПодсказки", ТекущиеДанные.СпособОтображенияПодсказки); + + ОткрытьФорму("Справочник.ШаблоныАнкет.Форма.ФормаПростыхВопросов", ПростойВопрос, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуМастераКомплексныхВопросов(ТекущиеДанные) + + КомплексныйВопрос = Новый Структура; + КомплексныйВопрос.Вставить("СоставКомплексногоВопроса", ТекущиеДанные.СоставКомплексногоВопроса); + КомплексныйВопрос.Вставить("Формулировка" ,ТекущиеДанные.Формулировка); + КомплексныйВопрос.Вставить("Подсказка", ТекущиеДанные.Подсказка); + КомплексныйВопрос.Вставить("СпособОтображенияПодсказки", ТекущиеДанные.СпособОтображенияПодсказки); + КомплексныйВопрос.Вставить("ЭтоНоваяСтрока", ТекущиеДанные.ЭтоНоваяСтрока); + + ОткрытьФорму("Справочник.ШаблоныАнкет.Форма.ФормаМастераКомплексныхВопросов", КомплексныйВопрос, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуМастераТабличныхВопросов(ТекущиеДанные) + + ТабличныйВопрос = Новый Структура; + ТабличныйВопрос.Вставить("ТипТабличногоВопроса", ТекущиеДанные.ТипТабличногоВопроса); + ТабличныйВопрос.Вставить("СоставТабличногоВопроса", ТекущиеДанные.СоставТабличногоВопроса); + ТабличныйВопрос.Вставить("ПредопределенныеОтветы", ТекущиеДанные.ПредопределенныеОтветы); + ТабличныйВопрос.Вставить("Формулировка", ТекущиеДанные.Формулировка); + ТабличныйВопрос.Вставить("Подсказка", ТекущиеДанные.Подсказка); + ТабличныйВопрос.Вставить("СпособОтображенияПодсказки", ТекущиеДанные.СпособОтображенияПодсказки); + ТабличныйВопрос.Вставить("ЭтоНоваяСтрока", ТекущиеДанные.ЭтоНоваяСтрока); + + ОткрытьФорму("Справочник.ШаблоныАнкет.Форма.ФормаМастераТабличныхВопросов", ТабличныйВопрос, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,ИспользоватьРодителяСтрокиНазначения = ЛОЖЬ,УдалятьПослеДобавления = Истина); + + Если ИспользоватьРодителяСтрокиНазначения Тогда + НоваяСтрока = СтрокаНазначение.ПолучитьРодителя().ПолучитьЭлементы().Добавить(); + Иначе + НоваяСтрока = СтрокаНазначение.ПолучитьЭлементы().Добавить(); + КонецЕсли; + + ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаПеретаскивание,,"СоставТабличногоВопроса,ПредопределенныеОтветы, СоставКомплексногоВопроса"); + Если СтрокаПеретаскивание.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный") Тогда + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(СтрокаПеретаскивание.СоставТабличногоВопроса,НоваяСтрока.СоставТабличногоВопроса); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(СтрокаПеретаскивание.ПредопределенныеОтветы,НоваяСтрока.ПредопределенныеОтветы); + КонецЕсли; + + Если СтрокаПеретаскивание.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Комплексный") Тогда + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(СтрокаПеретаскивание.СоставКомплексногоВопроса,НоваяСтрока.СоставКомплексногоВопроса); + КонецЕсли; + + Для каждого Элемент Из СтрокаПеретаскивание.ПолучитьЭлементы() Цикл + ПеретащитьЭлементДерева(НоваяСтрока,Элемент,Ложь,Ложь); + КонецЦикла; + + Если УдалятьПослеДобавления Тогда + СтрокаПеретаскивание.ПолучитьРодителя().ПолучитьЭлементы().Удалить(СтрокаПеретаскивание); + КонецЕсли; + + Если ИспользоватьРодителяСтрокиНазначения Тогда + Элементы.ФормаДереваАнкеты.Развернуть(СтрокаНазначение.ПолучитьРодителя().ПолучитьИдентификатор(),Ложь); + Иначе + Элементы.ФормаДереваАнкеты.Развернуть(СтрокаНазначение.ПолучитьИдентификатор(),Ложь); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыборТипаДобавляемогоЭлементаПриЗавершении(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт + + Если НЕ ВыбранныйЭлемент = Неопределено Тогда + + Если ВыбранныйЭлемент.Значение = НСтр("ru = 'Раздел'") Тогда + + ДобавитьРаздел(Команды.ДобавитьРаздел); + + ИначеЕсли ВыбранныйЭлемент.Значение = НСтр("ru = 'Простой вопрос'") Тогда + + ДобавитьПростойВопрос(Команды.ДобавитьПростойВопрос) + + ИначеЕсли ВыбранныйЭлемент.Значение = НСтр("ru = 'Комплексный вопрос'") Тогда + + ДобавитьКомплексныйВопрос(Команды.ДобавитьПростойВопрос) + + ИначеЕсли ВыбранныйЭлемент.Значение = НСтр("ru = 'Условный вопрос'") Тогда + + ДобавитьВопросСУсловием(Команды.ДобавитьВопросСУсловием) + + ИначеЕсли ВыбранныйЭлемент.Значение = НСтр("ru = 'Табличный вопрос'") Тогда + + ДобавитьТабличныйВопрос(Команды.ДобавитьТабличныйВопрос); + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВопросОНеобходимостиЗаписиПослеЗавершения(РезультатВопроса, ДополнительныеПараметры) Экспорт + + Если РезультатВопроса = КодВозвратаДиалога.Да Тогда + Записать(); + КонецЕсли; + + ОткрытьФормуМастераАнкетыПоРазделам(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуМастераАнкетыПоРазделам() + + СтруктураПараметры = Новый Структура; + СтруктураПараметры.Вставить("ШаблонАнкеты",Объект.Ссылка); + ОткрытьФорму("ОбщаяФорма.МастерАнкетыПоРазделам",СтруктураПараметры,ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура РедактированиеЗаметкиПриЗакрытии(ТекстВозврата, ДополнительныеПараметры) Экспорт + + ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + Если ТекущиеДанные.Заметки <> ТекстВозврата Тогда + ТекущиеДанные.Заметки = ТекстВозврата; + ТекущиеДанные.ЕстьЗаметки = Не ПустаяСтрока(ТекущиеДанные.Заметки); + Модифицированность = Истина; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ЗаписьНаСервереВыполненаУспешно() + + Если Не ПроверитьЗаполнение() Тогда + Возврат Ложь; + Иначе + Записать(); + Возврат Истина; + КонецЕсли; + +КонецФункции + +&НаКлиенте +Функция ЗаписьЕслиНовыйВыполненаУспешно() + + Если Объект.Ссылка.Пустая() Тогда + + ОчиститьСообщения(); + Возврат ЗаписьНаСервереВыполненаУспешно(); + + Иначе + + Возврат Истина; + + КонецЕсли; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Help/ru.html" new file mode 100644 index 00000000..73e9a011 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/Help/ru.html" @@ -0,0 +1,13 @@ + +

        Предназначен для управления шаблонами анкеты.

        +

        Открывается по команде Шаблоны анкет раздела Анкетирование.

        +

        В списке выводится Наименование шаблона и его Код, который автоматически присваивается программой.

        +

        Ввод шаблона анкеты

        +

        Нажмите Создать, заполните необходимые поля.

        +

        Группировка шаблонов

        +
        • Шаблоны можно группировать. Для этого введите необходимое количество групп. +
        • Нажмите Создать группу, введите Наименование. Группу можно подчинить одной из существующих. Для этого в поле Родитель укажите группу из списка. +
        • Перетащите шаблоны в соответствующие группы или в группах введите шаблоны.

        Выбор шаблона анкеты

        +
        • Выделите шаблон анкеты, нажмите Выбрать. +
        • Также можно воспользоваться двойным щелчком мыши.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/ManagerModule.bsl" new file mode 100644 index 00000000..eff1916c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/ManagerModule.bsl" @@ -0,0 +1,41 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Наименование"); + Результат.Добавить("Заголовок"); + Результат.Добавить("Вступление"); + Результат.Добавить("Заключение"); + Результат.Добавить("РедактированиеШаблонаЗавершено"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202.mdo" new file mode 100644 index 00000000..5ace0b8c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\220\320\275\320\272\320\265\321\202.mdo" @@ -0,0 +1,306 @@ + + + + + + + + + + ШаблоныАнкет + + ru + Шаблоны анкет + + true + Catalog.ШаблоныАнкет.StandardAttribute.Description + Catalog.ШаблоныАнкет.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + + ru + Группа + + + ru + Группа шаблона анкеты + + true + + Catalog.ШаблоныАнкет.EmptyRef + + Use + + + + + Use + Description + + ru + Наименование шаблона анкеты + + + ShowError + Use + + + + + Use + Code + + ru + Код шаблона в справочнике + + + Use + + + + Use + + + ru + + + Managed + Use + + ru + Шаблон анкеты + + true + 2 + true + 9 + 100 + String + Variable + true + true + AsDescription + InDialog + BothWays + Catalog.ШаблоныАнкет.Form.ФормаЭлемента + Catalog.ШаблоныАнкет.Form.ФормаСписка + + Заголовок + + ru + Заголовок + + + String + + 250 + + + + ru + Заголовок шаблона анкеты + + + + ShowError + + + + Use + Use + + + Вступление + + ru + Вступление + + + String + + + + ru + Данный текст будет отображаться респонденту в начале формы заполнения анкеты. + + + + + + + Use + Use + + + Заключение + + ru + Заключение + + + String + + + + ru + Данный текст будет отображаться респонденту в конце формы заполнения анкеты. + + + + + + + Use + Use + + + РедактированиеШаблонаЗавершено + + ru + Редактирование шаблона завершено + + + Boolean + + + ru + Признак, определяющий, возможно ли дальнейшее редактирование шаблона анкеты + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаМастераТабличныхВопросов + + ru + Форма мастера табличных вопросов + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаПростыхВопросов + + ru + Форма простых вопросов + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаМастераКомплексныхВопросов + + ru + Форма мастера комплексных вопросов + + + + ru + + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213/Form.form" new file mode 100644 index 00000000..7ca3d5a9 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213/Form.form" @@ -0,0 +1,228 @@ + + + + <key>ru</key> + <value>Укажите параметры шаблона</value> + + + ПараметрыШаблона + 7 + true + true + + true + + + <key>ru</key> + <value>Параметры шаблона</value> + + + ПараметрыШаблонаРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаКоманднаяПанельФормы + 1 + + ФормаОК + 9 + true + true + + true + + true + + ФормаОКРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 5 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель формы</value> + + Bottom + + ГруппаКоманднаяПанельФормыРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + Form + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + ГруппаКоманднаяПанельФормы + + + + Предмет + 1 + + + true + + + true + + + + СписокРеквизитов + 2 + + ValueList + + + true + + + true + + + + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + Шаблон + + CatalogRef.ШаблоныСообщений + + + + Предмет + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213/Module.bsl" new file mode 100644 index 00000000..699b172d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213/Module.bsl" @@ -0,0 +1,118 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Предмет = Параметры.Предмет; + ДобавитьЭлементыФормыПараметровШаблона(Параметры.Шаблон); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + Результат = Новый Соответствие; + + Для Каждого ИмяРеквизита Из СписокРеквизитов Цикл + Результат.Вставить(ИмяРеквизита.Значение, ЭтотОбъект[ИмяРеквизита.Значение]) + КонецЦикла; + + Закрыть(Результат); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ДобавитьЭлементыФормыПараметровШаблона(Шаблон) + + ДобавляемыеРеквизиты = Новый Массив; + Если Шаблон.ШаблонПоВнешнейОбработке Тогда + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + ВнешнийОбъект = МодульДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(Шаблон.ВнешняяОбработка); + ПараметрыШаблона = ВнешнийОбъект.ПараметрыШаблона(); + + ТаблицаПараметрыШаблона = Новый ТаблицаЗначений; + ТаблицаПараметрыШаблона.Колонки.Добавить("Имя" , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50, ДопустимаяДлина.Переменная))); + ТаблицаПараметрыШаблона.Колонки.Добавить("Тип" , Новый ОписаниеТипов("ОписаниеТипов")); + ТаблицаПараметрыШаблона.Колонки.Добавить("Представление" , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(150, ДопустимаяДлина.Переменная))); + + Для каждого ПараметрШаблона Из ПараметрыШаблона Цикл + ОписаниеТипа = ПараметрШаблона.ОписаниеТипа.Типы(); + Если ОписаниеТипа.Количество() > 0 Тогда + Если ОписаниеТипа[0] <> ТипЗнч(Предмет) Тогда + НовыйПараметр = ТаблицаПараметрыШаблона.Добавить(); + НовыйПараметр.Имя = ПараметрШаблона.ИмяПараметра; + НовыйПараметр.Представление = ПараметрШаблона.ПредставлениеПараметра; + НовыйПараметр.Тип = ПараметрШаблона.ОписаниеТипа; + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ПараметрШаблона.ИмяПараметра, ПараметрШаблона.ОписаниеТипа,, ПараметрШаблона.ПредставлениеПараметра)); + КонецЕсли; + + КонецЕсли; + КонецЦикла; + КонецЕсли; + Иначе + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ШаблоныСообщенийПараметры.Ссылка, + | ШаблоныСообщенийПараметры.ИмяПараметра КАК Имя, + | ШаблоныСообщенийПараметры.ТипПараметра КАК Тип, + | ШаблоныСообщенийПараметры.ПредставлениеПараметра КАК Представление + |ИЗ + | Справочник.ШаблоныСообщений.Параметры КАК ШаблоныСообщенийПараметры + |ГДЕ + | ШаблоныСообщенийПараметры.Ссылка = &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", Шаблон); + + ТаблицаПараметрыШаблона = Запрос.Выполнить().Выгрузить(); + + Для каждого Реквизит Из ТаблицаПараметрыШаблона Цикл + + ОписаниеТипаПараметра = ОбщегоНазначения.ОписаниеТипаСтрока(250); + Если ТипЗнч(Реквизит.Тип) = Тип("ХранилищеЗначения") Тогда + ТипПараметраЗначение = Реквизит.Тип.Получить(); + Если ТипЗнч(ТипПараметраЗначение) = Тип("ОписаниеТипов") Тогда + ОписаниеТипаПараметра = ТипПараметраЗначение; + КонецЕсли; + КонецЕсли; + + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(Реквизит.Имя, ОписаниеТипаПараметра,, Реквизит.Представление)); + + КонецЦикла; + КонецЕсли; + + ИзменитьРеквизиты(ДобавляемыеРеквизиты); + + Для Каждого ПараметрШаблона Из ТаблицаПараметрыШаблона Цикл + Элемент = Элементы.Добавить(ПараметрШаблона.Имя, Тип("ПолеФормы"), Элементы.ПараметрыШаблона); + Элемент.Вид = ВидПоляФормы.ПолеВвода; + Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Лево; + Элемент.Заголовок = ПараметрШаблона.Представление; + Элемент.ПутьКДанным = ПараметрШаблона.Имя; + Элемент.РастягиватьПоГоризонтали = Ложь; + Элемент.Ширина = 50; + СписокРеквизитов.Добавить(ПараметрШаблона.Имя); + КонецЦикла; + + ЭтотОбъект.Высота = 3 + ТаблицаПараметрыШаблона.Количество() * 2; + +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\271\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\271\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200/Form.form" new file mode 100644 index 00000000..32f12338 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\271\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200/Form.form" @@ -0,0 +1,458 @@ + + + + <key>ru</key> + <value>Параметр шаблона</value> + + + ТипСтрокой + 7 + true + true + + true + + + + ТипСтрокой + + + + OnChange + ТипПараметраПриИзменении + + + ТипСтрокойРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + ТипСтрокойКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Представление + 4 + true + true + + true + + + + ПредставлениеПараметра + + + + ПредставлениеРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + Имя + 1 + true + true + + true + + + + ИмяПараметра + + + + ИмяРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ИмяКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаКоманднаяПанельФормы + 10 + + ФормаOK + 16 + true + true + + true + + true + + ФормаOKРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 18 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель формы</value> + + + ГруппаКоманднаяПанельФормыРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + Form + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + ГруппаКоманднаяПанельФормы + + + + ИмяПараметра + + <key>ru</key> + <value>Имя параметра</value> + + 1 + + String + + 50 + + + + true + + + true + + true + + + ТипПараметра + 2 + + TypeDescription + + + true + + + true + + + + ПредставлениеПараметра + + <key>ru</key> + <value>Представление параметра</value> + + 3 + + String + + 150 + + + + true + + + true + + + + ТипСтрокой + + <key>ru</key> + <value>Тип параметра</value> + + 4 + + String + + + + true + + + true + + + + СписокПараметров + 5 + + ValueList + + + true + + + true + + + + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + Отмена + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Отмена + + + true + + + + Отмена + + + DontUse + + + ИмяПараметра + + String + + 50 + + + + + ОписаниеТипа + + TypeDescription + + + + ПредставлениеПараметра + + String + + 150 + + + + + ПолноеИмяТипаПараметраВводаНаОсновании + + String + + + + + СписокПараметров + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\271\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\271\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200/Module.bsl" new file mode 100644 index 00000000..5a4c5345 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\321\213\320\271\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200/Module.bsl" @@ -0,0 +1,174 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.ОписаниеТипа.Типы().Количество() > 0 Тогда + НайденныйТипПараметра = Параметры.ОписаниеТипа.Типы()[0]; + КонецЕсли; + + ЗаполнитьСписокВыбораВводНаОсновании(НайденныйТипПараметра); + + Для каждого ПараметрИзФормы Из Параметры.СписокПараметров Цикл + Если СтрНачинаетсяС(Параметры.ИмяПараметра, ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров()) Тогда + ИмяПараметраДляПроверки = Сред(Параметры.ИмяПараметра, СтрДлина(ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров()) + 2); + Иначе + ИмяПараметраДляПроверки = Параметры.ИмяПараметра; + КонецЕсли; + Если ПараметрИзФормы.ИмяПараметра = ИмяПараметраДляПроверки Тогда + Продолжить; + КонецЕсли; + СписокПараметров.Добавить(ПараметрИзФормы.ИмяПараметра, ПараметрИзФормы.ПредставлениеПараметра); + КонецЦикла; + + Если СтрНачинаетсяС(Параметры.ИмяПараметра, ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров()) Тогда + ИмяПараметра = Сред(Параметры.ИмяПараметра, СтрДлина(ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров()) + 2); + Иначе + ИмяПараметра = Параметры.ИмяПараметра; + КонецЕсли; + ПредставлениеПараметра = Параметры.ПредставлениеПараметра; + ТипПараметра = Параметры.ОписаниеТипа; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ТипПараметраСтрокой(ПолноеИмяТипа) + + Если СтрСравнить(ПолноеИмяТипа, "Дата") = 0 Тогда + Результат = Тип("Дата"); + ИначеЕсли СтрСравнить(ПолноеИмяТипа, "Строка") = 0 Тогда + Результат = Тип("Строка"); + Иначе + МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяТипа); + Если МенеджерОбъекта <> Неопределено Тогда + Результат = ТипЗнч(МенеджерОбъекта.ПустаяСсылка()); + КонецЕсли; + КонецЕсли; + + Возврат Результат; +КонецФункции + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ТипПараметраПриИзменении(Элемент) + Если ПустаяСтрока(ПредставлениеПараметра) И ПустаяСтрока(ИмяПараметра) Тогда + ПредставлениеПараметра = Элементы.ТипСтрокой.ТекстРедактирования; + Позиция = СтрНайти(ТипСтрокой, ".", НаправлениеПоиска.СКонца); + Если Позиция > 0 И Позиция < СтрДлина(ТипСтрокой) Тогда + ИмяПараметра = Сред(ТипСтрокой, Позиция + 1); + Иначе + ИмяПараметра = ТипСтрокой; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + Для Каждого ПараметрИзФормы Из СписокПараметров Цикл + Если СтрСравнить(ПараметрИзФормы.Значение, ИмяПараметра) = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Некорректное имя параметра. Параметр с таким именем уже был добавлен ранее.'")); + Возврат; + КонецЕсли; + Если СтрСравнить(ПараметрИзФормы.Представление, ПредставлениеПараметра) = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Некорректное представление параметра. Параметр с таким представлением уже был добавлен ранее.'")); + Возврат; + КонецЕсли; + КонецЦикла; + + Если НедопустимоеИмяПараметра(ИмяПараметра) ИЛИ ПустаяСтрока(ИмяПараметра) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Некорректное имя параметра. Нельзя использовать пробелы, знаки пунктуации и другие спец. символы.'")); + Возврат; + КонецЕсли; + + Если ПустаяСтрока(ПредставлениеПараметра) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Некорректное представление параметра.'")); + Возврат; + КонецЕсли; + + Если ПустаяСтрока(ТипСтрокой) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Некорректный тип параметра.'")); + Возврат; + КонецЕсли; + + Результат = Новый Структура("ИмяПараметра, ПредставлениеПараметра, ТипПараметра"); + ЗаполнитьЗначенияСвойств(Результат, ЭтотОбъект); + Результат.ТипПараметра = ТипПараметраСтрокой(ТипСтрокой); + Закрыть(Результат); +КонецПроцедуры + +&НаКлиенте +Процедура Отмена(Команда) + Закрыть(Неопределено); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Функция НедопустимоеИмяПараметра(ИмяПараметра) + + Попытка + Тест = Новый Структура(ИмяПараметра, ИмяПараметра); + Исключение + Возврат Истина; + КонецПопытки; + + Возврат ТипЗнч(Тест) <> Тип("Структура"); + +КонецФункции + +&НаСервере +Процедура ЗаполнитьСписокВыбораВводНаОсновании(ТипПараметра) + + ПредставлениеТипа = ""; + НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек(); + Для каждого ПредметШаблона Из НастройкиШаблоновСообщений.ПредметыШаблонов Цикл + Если СтрСравнить(ПредметШаблона.Имя, Параметры.ПолноеИмяТипаПараметраВводаНаОсновании) = 0 Тогда + Продолжить; + КонецЕсли; + МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПредметШаблона.Имя); + Если МетаданныеОбъекта = Неопределено Тогда + Продолжить; + КонецЕсли; + Элементы.ТипСтрокой.СписокВыбора.Добавить(ПредметШаблона.Имя, ПредметШаблона.Представление); + + МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПредметШаблона.Имя); + Если МенеджерОбъекта <> Неопределено Тогда + Если ТипПараметра = ТипЗнч(МенеджерОбъекта.ПустаяСсылка()) Тогда + ПредставлениеТипа = ПредметШаблона.Имя; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Если ТипПараметра = Тип("Строка") Тогда + ПредставлениеТипа = НСтр("ru = 'Строка'"); + ИначеЕсли ТипПараметра = Тип("Дата") Тогда + ПредставлениеТипа = НСтр("ru = 'Дата'"); + КонецЕсли; + + Элементы.ТипСтрокой.СписокВыбора.Вставить(0, "Дата", НСтр("ru = 'Дата'")); + Элементы.ТипСтрокой.СписокВыбора.Вставить(0, "Строка", НСтр("ru = 'Строка'")); + + ТипСтрокой = ПредставлениеТипа; + +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Form.form" new file mode 100644 index 00000000..a1af2058 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Form.form" @@ -0,0 +1,1854 @@ + + + + <key>ru</key> + <value>Шаблоны электронных писем</value> + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + ГруппаСписокВыбора + 34 + + Шаблоны + 39 + VeryHigh + + <key>ru</key> + <value>Шаблоны</value> + + true + true + + true + + + Шаблоны + + None + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + ШаблоныПредставление + 55 + true + true + + true + + + + Шаблоны.Представление + + + + ШаблоныПредставлениеРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + ШаблоныПредставлениеКонтекстноеМеню + 56 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ШаблоныКоманднаяПанель + 41 + true + true + + true + + Left + + + Selection + ШаблоныВыбор + + + BeforeAddRow + ШаблоныПередНачаломДобавления + + + BeforeDeleteRow + ШаблоныПередУдалением + + + OnActivateRow + ШаблоныПриАктивизацииСтроки + + + BeforeRowChange + ШаблоныПередНачаломИзменения + + + true + true + + true + + ШаблоныСтрокаПоиска + 43 + + ШаблоныСтрокаПоискаРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + + ШаблоныСтрокаПоискаКонтекстноеМеню + 44 + true + true + + true + + true + + + true + + + + true + true + + true + + ШаблоныСостояниеПросмотра + 46 + + ШаблоныСостояниеПросмотраРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + ШаблоныСостояниеПросмотраКонтекстноеМеню + 47 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ШаблоныУправлениеПоиском + 49 + + ШаблоныУправлениеПоискомРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + + ШаблоныУправлениеПоискомКонтекстноеМеню + 50 + true + true + + true + + true + + SearchControlAddition + + true + + + + ШаблоныРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + + ШаблоныКонтекстноеМеню + 40 + true + true + + true + + true + + true + true + true + true + Row + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + SelectionPresentationAndChoice + + + + СтраницыПредпросмотра + 60 + + СтраницаОбычныйТекст + 66 + + ПредпросмотрОбычныйТекст + 71 + VeryHigh + true + true + + true + + + + ПредпросмотрОбычныйТекст + + + None + + ПредпросмотрОбычныйТекстРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + + ПредпросмотрОбычныйТекстКонтекстноеМеню + 72 + true + true + + true + + true + + TextDocumentField + true + Enter + true + Left + true + + 50 + true + 15 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница обычный текст</value> + + + СтраницаОбычныйТекстРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаФорматированныйДокумент + 62 + + ПредпросмотрФорматированныйДокумент + 68 + true + true + + true + + + + ПредпросмотрФорматированныйДокумент + + + None + + ПредпросмотрФорматированныйДокументРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + + ПредпросмотрФорматированныйДокументКонтекстноеМеню + 69 + true + true + + true + + true + + FormattedDocumentField + true + Enter + true + Left + true + + 50 + true + 10 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница форматированный документ</value> + + + СтраницаФорматированныйДокументРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаПечатныеФормы + 80 + + ВыберитеПечатныеФормы + 113 + + ПечатныеФормы + 82 + + <key>ru</key> + <value>Печатные формы</value> + + true + true + + true + + + ПечатныеФормы + + None + Add + Change + CheckAll + Copy + CopyToClipboard + Delete + EndEdit + MoveDown + MoveUp + Pickup + SelectAll + ShowMultipleSelection + ShowRowRearrangement + SortListAsc + SortListDesc + UncheckAll + + ПечатныеФормыПометка + 101 + true + true + + true + + + + ПечатныеФормы.Check + + + + ПечатныеФормыПометкаРасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + + ПечатныеФормыПометкаКонтекстноеМеню + 102 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ПечатныеФормыПредставление + 98 + true + true + + true + + + + ПечатныеФормы.Presentation + + + + ПечатныеФормыПредставлениеРасширеннаяПодсказка + 100 + true + true + + true + + Label + true + true + + Left + + + + ПечатныеФормыПредставлениеКонтекстноеМеню + 99 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ПечатныеФормыКоманднаяПанель + 84 + true + true + + true + + Left + true + + + true + true + + true + + ПечатныеФормыСтрокаПоиска + 86 + + ПечатныеФормыСтрокаПоискаРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + + ПечатныеФормыСтрокаПоискаКонтекстноеМеню + 87 + true + true + + true + + true + + + true + + + + true + true + + true + + ПечатныеФормыСостояниеПросмотра + 89 + + ПечатныеФормыСостояниеПросмотраРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + + ПечатныеФормыСостояниеПросмотраКонтекстноеМеню + 90 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПечатныеФормыУправлениеПоиском + 92 + + ПечатныеФормыУправлениеПоискомРасширеннаяПодсказка + 94 + true + true + + true + + Label + true + true + + Left + + + + ПечатныеФормыУправлениеПоискомКонтекстноеМеню + 93 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПечатныеФормыРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + + ПечатныеФормыКонтекстноеМеню + 83 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + AsFileRef + + ПечатныеФормы.Picture + + + + ФорматВложений + 104 + true + true + + true + + + + ФорматВложений + + + + ФорматВложенийExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + + ФорматВложенийКонтекстноеМеню + 105 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ФорматВложенийНажатие + + true + true + true + + + + УпаковатьВАрхив + 107 + + <key>ru</key> + <value>Дополнительно упаковать в архив (.zip)</value> + + true + true + + true + + + + УпаковатьВАрхив + + + Right + + УпаковатьВАрхивExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + + УпаковатьВАрхивКонтекстноеМеню + 108 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПереводитьИменаФайловВТранслит + 110 + true + true + + true + + + + ПереводитьИменаФайловВТранслит + + + Right + + ru + Сохраненные файлы будут иметь имена, содержащие только латинские буквы и цифры, для возможности переноса между различными операционными системами. Например, файл "Документ.txt" будет сохранен с именем "Document.txt". + + Button + + ПереводитьИменаФайловВТранслитРасширеннаяПодсказка + 112 + true + true + + true + + Label + true + true + + Left + + + + ПереводитьИменаФайловВТранслитКонтекстноеМеню + 111 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПодписьИПечать + 115 + true + true + + true + + + + ПодписьИПечать + + + Right + + ПодписьИПечатьРасширеннаяПодсказка + 117 + true + true + + true + + Label + true + true + + Left + + + + ПодписьИПечатьКонтекстноеМеню + 116 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Выберите печатные формы</value> + + + ВыберитеПечатныеФормыРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница печатные формы</value> + + + СтраницаПечатныеФормыРасширеннаяПодсказка + 81 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы предпросмотра</value> + + + СтраницыПредпросмотраРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Список выбора</value> + + + ГруппаСписокВыбораРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаСформировать + 24 + true + true + + true + + + ФормаСформироватьРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Сформировать + Auto + true + true + true + UserCmds + Auto + + + ФормаСформироватьИОтправить + 22 + true + true + + true + + + ФормаСформироватьИОтправитьРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СформироватьИОтправить + Auto + true + true + UserCmds + Auto + + + ФормаГруппаРедактирование + 76 + + ФормаСоздать + 58 + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Создать + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаСкопировать + 78 + true + true + + true + + + ФормаСкопироватьРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Шаблоны.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ФормаИзменить + 74 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Шаблоны.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Форма группа редактирование</value> + + + ФормаГруппаРедактированиеРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + Use + true + Vertical + true + true + true + true + true + + ПредпросмотрФорматированныйДокумент + + <key>ru</key> + <value>Предпросмотр форматированный документ</value> + + 2 + + FormattedDocument + + + true + + + true + + + + Шаблоны + + <key>ru</key> + <value>Шаблоны</value> + + 3 + + ValueTable + + + true + + + true + + + Имя + 1 + + String + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 3 + + String + + + + true + + + true + + + + ТекстШаблона + 2 + + String + + + + true + + + true + + + + ТипТекстаПисьма + 4 + + EnumRef.СпособыРедактированияЭлектронныхПисем + + + true + + + true + + + + Ссылка + 5 + + CatalogRef.ШаблоныСообщений + + + true + + + true + + + + ЕстьПроизвольныеПараметры + 6 + + Boolean + + + true + + + true + + + + ШаблонПоВнешнейОбработке + 7 + + Boolean + + + true + + + true + + + + + ВидСообщения + 1 + + String + + + + true + + + true + + + + Предмет + 4 + + + true + + + true + + + + ПолноеИмяТипаОснования + 5 + + String + + + + true + + + true + + + + ПредпросмотрОбычныйТекст + + <key>ru</key> + <value>Предпросмотр обычный текст</value> + + 6 + + TextDocument + + + true + + + true + + + + ПоказыватьФормуВыбораШаблонов + 7 + + Boolean + + + true + + + true + + + + ПредназначенДляSMS + 8 + + Boolean + + + true + + + true + + + + ПредназначенДляЭлектронныхПисем + 9 + + Boolean + + + true + + + true + + + + ЕстьПравоИзменения + 10 + + Boolean + + + true + + + true + + + + РежимВыбора + 11 + + Boolean + + + true + + + true + + + + ПараметрыСообщения + 12 + + + true + + + true + + + + ВладелецШаблона + 13 + + DefinedType.ВладелецШаблонаСообщения + + + true + + + true + + + + ПодготовитьШаблон + 14 + + Boolean + + + true + + + true + + + + ПечатныеФормы + + <key>ru</key> + <value>Печатные формы</value> + + 15 + + ValueList + + + true + + + true + + + + + + + ФорматВложений + + <key>ru</key> + <value>Формат вложений</value> + + 16 + + String + + + + true + + + true + + + + УпаковатьВАрхив + + <key>ru</key> + <value>Упаковать в архив</value> + + 17 + + Boolean + + + true + + + true + + + УпаковатьВАрхив + + + + ПереводитьИменаФайловВТранслит + + <key>ru</key> + <value>Переводить имена файлов в транслит</value> + + 18 + + Boolean + + + true + + + true + + + ПереводитьИменаФайловВТранслит + + + + ВыбранныеФорматыСохранения + 19 + + ValueList + + + true + + + true + + + + + + + ПодписьИПечать + + <key>ru</key> + <value>Подпись и печать</value> + + 20 + + Boolean + + + true + + + true + + + ПодписьИПечать + + + + ИмяФормыИсточникаСообщения + 21 + + String + + + + true + + + true + + + + СформироватьИОтправить + + <key>ru</key> + <value>Сформировать и отправить</value> + + 1 + + ru + Сформировать и отправить + + + true + + + + СформироватьИОтправить + + + DontUse + + + Сформировать + + <key>ru</key> + <value>Сформировать</value> + + 2 + + ru + Сформировать + + + true + + + + Сформировать + + + DontUse + + + Создать + + <key>ru</key> + <value>Создать</value> + + 3 + + ru + Создать + + + true + + + StdPicture.CreateListItem + + + + Создать + + + DontUse + + + ВидСообщения + + String + + + + + Предмет + + + + Назначение + + String + + + + + РежимВыбора + + Boolean + + + + ПараметрыСообщения + + + + ВладелецШаблона + + + + ПодготовитьШаблон + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Help/ru.html" new file mode 100644 index 00000000..f81b393d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Help/ru.html" @@ -0,0 +1,11 @@ + +

        Предназначен для выбора шаблонов сообщений sms или электронных писем.

        +

        В левой части списка перечислены наименования шаблонов, в правой части показывается содержание шаблона.

        +

        Использование шаблона

        +
        • Для выбора существующего шаблона выберите нужный шаблон в списке, нажмите Сформировать. +
        • Имеется возможность с помощью соответствующей кнопки сразу Сформировать и отправить sms-сообщение.

        Редактирование шаблона

        +
        • +
          Для редактирования шаблона дважды щелкните по нужному наименованию правой кнопкой мыши. Также можно воспользоваться командой Еще - Изменить.

        Ввод нового шаблона

        +
        • В списке всегда имеется пункт <Без шаблона>. +
        • Для ввода нового шаблона дважды щелкните по этому пункту мышкой или выделите его и воспользуйтесь командой Еще - Изменить.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Module.bsl" new file mode 100644 index 00000000..6ae0e39c --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\241\321\204\320\276\321\200\320\274\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265/Module.bsl" @@ -0,0 +1,673 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Предмет = Параметры.Предмет; + ВидСообщения = Параметры.ВидСообщения; + РежимВыбора = Параметры.РежимВыбора; + ВладелецШаблона = Параметры.ВладелецШаблона; + ПараметрыСообщения = Параметры.ПараметрыСообщения; + ПодготовитьШаблон = Параметры.ПодготовитьШаблон; + + Если ТипЗнч(ПараметрыСообщения) = Тип("Структура") И ПараметрыСообщения.Свойство("ИмяФормыИсточникаСообщения") Тогда + ИмяФормыИсточникаСообщения = ПараметрыСообщения.ИмяФормыИсточникаСообщения; + КонецЕсли; + + Если ЗначениеЗаполнено(Предмет) И ТипЗнч(Предмет) <> Тип("Строка") Тогда + ПолноеИмяТипаОснования = Предмет.Метаданные().ПолноеИмя(); + КонецЕсли; + + Если ВидСообщения = "СообщениеSMS" Тогда + ПредназначенДляSMS = Истина; + ПредназначенДляЭлектронныхПисем = Ложь; + Заголовок = НСтр("ru = 'Шаблоны сообщений SMS'"); + Иначе + ПредназначенДляSMS = Ложь; + ПредназначенДляЭлектронныхПисем = Истина; + КонецЕсли; + + Если НЕ ПравоДоступа("Изменение", Метаданные.Справочники.ШаблоныСообщений) Тогда + ЕстьПравоИзменения = Ложь; + Элементы.ФормаИзменить.Видимость = Ложь; + Элементы.ФормаСоздать.Видимость = Ложь; + Иначе + ЕстьПравоИзменения = Истина; + КонецЕсли; + + Если РежимВыбора Тогда + Элементы.ФормаСформироватьИОтправить.Видимость = Ложь; + Элементы.ФормаСформировать.Заголовок = НСтр("ru = 'Выбрать'"); + ИначеЕсли ПодготовитьШаблон Тогда + Элементы.ФормаСформироватьИОтправить.Видимость = Ложь; + КонецЕсли; + + ЗаполнитьСписокДоступныхШаблонов(); + ЗаполнитьСписокПечатныхФорм(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + Для Каждого ФорматСохранения Из МодульУправлениеПечатью.НастройкиФорматовСохраненияТабличногоДокумента() Цикл + ВыбранныеФорматыСохранения.Добавить(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента), ФорматСохранения.Представление, Ложь, ФорматСохранения.Картинка); + КонецЦикла; + Элементы.ПодписьИПечать.Видимость = МодульУправлениеПечатью.НастройкиПечати().ИспользоватьПодписиИПечати; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "Запись_ШаблоныСообщений" Тогда + СсылкаНаВыбранныйЭлемент = Неопределено; + Если Элементы.Шаблоны.ТекущиеДанные <> Неопределено Тогда + СсылкаНаВыбранныйЭлемент = Элементы.Шаблоны.ТекущиеДанные.Ссылка; + КонецЕсли; + ЗаполнитьСписокДоступныхШаблонов(); + НайденныеСтроки = Шаблоны.НайтиСтроки(Новый Структура("Ссылка", СсылкаНаВыбранныйЭлемент)); + Если НайденныеСтроки.Количество() > 0 Тогда + Элементы.Шаблоны.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор(); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ПоказыватьФормуВыбораШаблонов Тогда + УстановитьВыборФормата(); + СформироватьПредставлениеВыбранныхФорматов(); + Иначе + ПараметрыОтправки = КонструкторПараметровОтправки(); + ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Ложь; + СформироватьСообщениеДляОтправки(ПараметрыОтправки); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыШаблоны + +&НаКлиенте +Процедура ШаблоныПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Отказ = Истина; + Если Копирование И НЕ Группа Тогда + СоздатьНовыйШаблон(Элемент.ТекущиеДанные.Ссылка); + Иначе + СоздатьНовыйШаблон(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ШаблоныПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ШаблоныПриАктивизацииСтроки(Элемент) + Если Элемент.ТекущиеДанные <> Неопределено Тогда + ШаблонВыбран = Элемент.ТекущиеДанные.Имя <> "<БезШаблона>"; + Элементы.ФормаСформироватьИОтправить.Доступность = ШаблонВыбран; + Если ШаблонВыбран Тогда + Если Элемент.ТекущиеДанные.ТипТекстаПисьма = ПредопределенноеЗначение("Перечисление.СпособыРедактированияЭлектронныхПисем.HTML") Тогда + Элементы.СтраницыПредпросмотра.ТекущаяСтраница = Элементы.СтраницаФорматированныйДокумент; + ПодключитьОбработчикОжидания("ОбновитьДанныеПредпросмотра", 0.2, Истина); + Иначе + Элементы.СтраницыПредпросмотра.ТекущаяСтраница = Элементы.СтраницаОбычныйТекст; + ПредпросмотрОбычныйТекст.УстановитьТекст(Элемент.ТекущиеДанные.ТекстШаблона); + КонецЕсли; + Иначе + Элементы.СтраницыПредпросмотра.ТекущаяСтраница = Элементы.СтраницаПечатныеФормы; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ШаблоныПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; + Если Элемент.ТекущиеДанные <> Неопределено Тогда + ПараметрыФормы = Новый Структура("Ключ", Элемент.ТекущиеДанные.Ссылка); + ОткрытьФорму("Справочник.ШаблоныСообщений.ФормаОбъекта", ПараметрыФормы); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ШаблоныВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + СформироватьСообщениеПоВыбранномШаблону(); + +КонецПроцедуры + +&НаКлиенте +Процедура ФорматВложенийНажатие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореФорматаВложений", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьВыборФорматаВложений(ОписаниеОповещения, ВыбранныеНастройкиФормата(), ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Сформировать(Команда) + + СформироватьСообщениеПоВыбранномШаблону(); + +КонецПроцедуры + +&НаКлиенте +Процедура СформироватьИОтправить(Команда) + + ТекущиеДанные = Шаблоны.НайтиПоИдентификатору(Элементы.Шаблоны.ТекущаяСтрока); + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыОтправки = КонструкторПараметровОтправки(ТекущиеДанные.Ссылка); + ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу = Истина; + Если ТекущиеДанные.ЕстьПроизвольныеПараметры Тогда + ВводПараметров(ТекущиеДанные.Ссылка, ПараметрыОтправки, Истина); + Иначе + ОтравитьСообщение(ПараметрыОтправки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Создать(Команда) + СоздатьНовыйШаблон(); +КонецПроцедуры + +&НаКлиенте +Процедура ВводПараметров(Шаблон, ПараметрыОтправки, ОтправлятьСразу) + + ПараметрыДляЗаполнения = Новый Структура("Шаблон, Предмет", Шаблон, Предмет); + + Оповещение = Новый ОписаниеОповещения("ПослеВводаПараметров", ЭтотОбъект, ПараметрыОтправки); + ОткрытьФорму("Справочник.ШаблоныСообщений.Форма.ЗаполнитьПроизвольныеПараметры", ПараметрыДляЗаполнения,,,,, Оповещение); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура СформироватьСообщениеПоВыбранномШаблону() + + ТекущиеДанные = Шаблоны.НайтиПоИдентификатору(Элементы.Шаблоны.ТекущаяСтрока); + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если РежимВыбора Тогда + Закрыть(ТекущиеДанные.Ссылка); + Возврат; + КонецЕсли; + + ПараметрыОтправки = КонструкторПараметровОтправки(ТекущиеДанные.Ссылка); + ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Истина; + + Если ТекущиеДанные.ЕстьПроизвольныеПараметры Тогда + ВводПараметров(ТекущиеДанные.Ссылка, ПараметрыОтправки, Ложь); + Иначе + СформироватьСообщениеДляОтправки(ПараметрыОтправки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СформироватьСообщениеДляОтправки(ПараметрыОтправки) + + Если Не ЗначениеЗаполнено(ПараметрыОтправки.Шаблон) И ПечатныеФормы.Количество() > 0 Тогда + СохранитьВыборПечатныхФорм(); + КонецЕсли; + + АдресВременногоХранилища = Неопределено; + АдресВременногоХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); + + АдресРезультата = СформироватьСообщениеНаСервере(АдресВременногоХранилища, ПараметрыОтправки, ВидСообщения); + + Результат = ПолучитьИзВременногоХранилища(АдресРезультата); // см. ШаблоныСообщенийСлужебный.СформироватьСообщение + + Результат.Вставить("Предмет", Предмет); + Результат.Вставить("Шаблон", ПараметрыОтправки.Шаблон); + Если ПараметрыОтправки.ДополнительныеПараметры.Свойство("ПараметрыСообщения") + И ТипЗнч(ПараметрыОтправки.ДополнительныеПараметры.ПараметрыСообщения) = Тип("Структура") Тогда + ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Результат, ПараметрыСообщения, Ложь); + КонецЕсли; + + Если ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу Тогда + ПослеФормированияИОтправкиСообщения(Результат, ПараметрыОтправки); + Иначе + Если ПодготовитьШаблон Тогда + Закрыть(Результат); + Иначе + Закрыть(); + ПоказатьФормуСообщения(Результат); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция СформироватьСообщениеНаСервере(АдресВременногоХранилища, ПараметрыОтправки, ВидСообщения) + + ПараметрыВызоваСервера = Новый Структура(); + ПараметрыВызоваСервера.Вставить("ПараметрыОтправки", ПараметрыОтправки); + ПараметрыВызоваСервера.Вставить("ВидСообщения", ВидСообщения); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда + МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия"); + ПараметрыОтправки.ДополнительныеПараметры.Вставить("РасширенныйСписокПолучателей", МодульВзаимодействия.ИспользуетсяПрочиеВзаимодействия()); + КонецЕсли; + + ШаблоныСообщенийСлужебный.СформироватьСообщениеВФоне(ПараметрыВызоваСервера, АдресВременногоХранилища); + + Возврат АдресВременногоХранилища; + +КонецФункции + +// Параметры: +// Результат - КодВозвратаДиалога +// ПараметрыОтправки - см. ШаблоныСообщенийКлиентСервер.КонструкторПараметровОтправки +// +&НаКлиенте +Процедура ПослеВводаПараметров(Результат, ПараметрыОтправки) Экспорт + + Если Результат <> Неопределено И Результат <> КодВозвратаДиалога.Отмена Тогда + ПараметрыОтправки.ДополнительныеПараметры.ПроизвольныеПараметры = Результат; + СформироватьСообщениеДляОтправки(ПараметрыОтправки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтравитьСообщение(Знач ПараметрыОтправкиСообщения) + + Если ВидСообщения = "Письмо" Тогда + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + ОписаниеОповещения = Новый ОписаниеОповещения("ОтравитьСообщениеПроверкаУчетнойЗаписиВыполнена", ЭтотОбъект, ПараметрыОтправкиСообщения); + МодульРаботаСПочтовымиСообщениямиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент"); + МодульРаботаСПочтовымиСообщениямиКлиент.ПроверитьНаличиеУчетнойЗаписиДляОтправкиПочты(ОписаниеОповещения); + КонецЕсли; + Иначе + СформироватьСообщениеДляОтправки(ПараметрыОтправкиСообщения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтравитьСообщениеПроверкаУчетнойЗаписиВыполнена(УчетнаяЗаписьНастроена, ПараметрыОтправки) Экспорт + + Если УчетнаяЗаписьНастроена = Истина Тогда + СформироватьСообщениеДляОтправки(ПараметрыОтправки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеФормированияИОтправкиСообщения(Результат, ПараметрыОтправки) + + Если Результат.Отправлено Тогда; + Закрыть(); + Иначе + Оповещение = Новый ОписаниеОповещения("ПослеВопросаОбОткрытиеФормыСообщения", ЭтотОбъект, ПараметрыОтправки); + ОписаниеОшибки = Результат.ОписаниеОшибки + Символы.ПС + НСтр("ru = 'Открыть форму отправки сообщения?'"); + ПоказатьВопрос(Оповещение, ОписаниеОшибки, РежимДиалогаВопрос.ДаНет); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьФормуСообщения(Сообщение) + + Если ВидСообщения = "СообщениеSMS" Тогда + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS") Тогда + МодульОтправкаSMSКлиент= ОбщегоНазначенияКлиент.ОбщийМодуль("ОтправкаSMSКлиент"); + + ДополнительныеПараметры = Новый Структура("ПеревестиВТранслит"); + Если Сообщение.ДополнительныеПараметры <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Сообщение.ДополнительныеПараметры); + КонецЕсли; + + ДополнительныеПараметры.ПеревестиВТранслит = ?(Сообщение.ДополнительныеПараметры.Свойство("ПеревестиВТранслит"), + Сообщение.ДополнительныеПараметры.ПеревестиВТранслит, Ложь); + ДополнительныеПараметры.Вставить("Предмет", Предмет); + Текст = ?(Сообщение.Свойство("Текст"), Сообщение.Текст, ""); + + Получатель = Новый Массив; + ЭтоСписокЗначений = (ТипЗнч(Сообщение.Получатель) = Тип("СписокЗначений")); + + Для каждого СведенияОПолучателе Из Сообщение.Получатель Цикл + Если ЭтоСписокЗначений Тогда + Телефон = СведенияОПолучателе.Значение; + ИсточникКонтактнойИнформации = ""; + Иначе + Телефон = СведенияОПолучателе.НомерТелефона; + ИсточникКонтактнойИнформации = СведенияОПолучателе.ИсточникКонтактнойИнформации ; + КонецЕсли; + + ДанныеПолучателя = Новый Структура(); + ДанныеПолучателя.Вставить("Представление", СведенияОПолучателе.Представление); + ДанныеПолучателя.Вставить("Телефон", Телефон); + ДанныеПолучателя.Вставить("ИсточникКонтактнойИнформации", ИсточникКонтактнойИнформации); + Получатель.Добавить(ДанныеПолучателя); + + КонецЦикла; + + МодульОтправкаSMSКлиент.ОтправитьSMS(Получатель, Текст, ДополнительныеПараметры); + КонецЕсли; + Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + МодульРаботаСПочтовымиСообщениямиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент"); + МодульРаботаСПочтовымиСообщениямиКлиент.СоздатьНовоеПисьмо(Сообщение); + КонецЕсли; + КонецЕсли; + + Если Сообщение.Свойство("СообщенияПользователю") + И Сообщение.СообщенияПользователю <> Неопределено + И Сообщение.СообщенияПользователю.Количество() > 0 Тогда + Для каждого СообщенияПользователю Из Сообщение.СообщенияПользователю Цикл + ОбщегоНазначенияКлиент.СообщитьПользователю(СообщенияПользователю.Текст, + СообщенияПользователю.КлючДанных, СообщенияПользователю.Поле, СообщенияПользователю.ПутьКДанным); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция КонструкторПараметровОтправки(Шаблон = Неопределено) + + ПараметрыОтправки = ШаблоныСообщенийКлиентСервер.КонструкторПараметровОтправки(Шаблон, Предмет, УникальныйИдентификатор); + ПараметрыОтправки.ДополнительныеПараметры.ВидСообщения = ВидСообщения; + ПараметрыОтправки.ДополнительныеПараметры.ПараметрыСообщения = ПараметрыСообщения; + + Если Не ЗначениеЗаполнено(Шаблон) Тогда + Для Каждого ПечатнаяФорма Из ПечатныеФормы Цикл + Если ПечатнаяФорма.Пометка Тогда + ПараметрыОтправки.ДополнительныеПараметры.ПечатныеФормы.Добавить(ПечатнаяФорма.Значение); + КонецЕсли; + КонецЦикла; + + ПараметрыОтправки.ДополнительныеПараметры.НастройкиСохранения = ВыбранныеНастройкиФормата(); + КонецЕсли; + + Возврат ПараметрыОтправки; + +КонецФункции + +// Параметры: +// Результат - КодВозвратаДиалога +// ПараметрыОтправки -см. ШаблоныСообщенийКлиентСервер.КонструкторПараметровОтправки +// +&НаКлиенте +Процедура ПослеВопросаОбОткрытиеФормыСообщения(Результат, ПараметрыОтправки) Экспорт + Если Результат = КодВозвратаДиалога.Да Тогда + ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу = Ложь; + ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Истина; + СформироватьСообщениеДляОтправки(ПараметрыОтправки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьНовыйШаблон(ЗначениеКопирования = Неопределено) + + ПараметрыФормы = Новый Структура(); + ПараметрыФормы.Вставить("ВидСообщения" , ВидСообщения); + ПараметрыФормы.Вставить("ПолноеИмяТипаОснования", + ?(ЗначениеЗаполнено(ПолноеИмяТипаОснования), ПолноеИмяТипаОснования, Предмет)); + ПараметрыФормы.Вставить("ТолькоДляАвтора", Истина); + ПараметрыФормы.Вставить("ВладелецШаблона", ВладелецШаблона); + ПараметрыФормы.Вставить("ЗначениеКопирования", ЗначениеКопирования); + ПараметрыФормы.Вставить("Новый", Истина); + + ОткрытьФорму("Справочник.ШаблоныСообщений.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокДоступныхШаблонов() + + Шаблоны.Очистить(); + ТипШаблона = ?(ПредназначенДляSMS, "SMS", "Письмо"); + Запрос = ШаблоныСообщенийСлужебный.ПодготовитьЗапросДляПолученияСпискаШаблонов(ТипШаблона, Предмет, ВладелецШаблона); + + РезультатЗапроса = Запрос.Выполнить().Выбрать(); + + Пока РезультатЗапроса.Следующий() Цикл + НоваяСтрока = Шаблоны.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, РезультатЗапроса); + + Если РезультатЗапроса.ШаблонПоВнешнейОбработке + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + ВнешнийОбъект = МодульДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(РезультатЗапроса.ВнешняяОбработка); + ПараметрыШаблона = ВнешнийОбъект.ПараметрыШаблона(); + + Если ПараметрыШаблона.Количество() > 1 Тогда + ЕстьПроизвольныеПараметры = Истина; + Иначе + ЕстьПроизвольныеПараметры = Ложь; + КонецЕсли; + Иначе + ПроизвольныеПараметры = РезультатЗапроса.ЕстьПроизвольныеПараметры.Выгрузить(); + ЕстьПроизвольныеПараметры = ПроизвольныеПараметры.Количество() > 0; + КонецЕсли; + + НоваяСтрока.ЕстьПроизвольныеПараметры = ЕстьПроизвольныеПараметры; + КонецЦикла; + + Если Шаблоны.Количество() = 0 Тогда + НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек(); + ПоказыватьФормуВыбораШаблонов = НастройкиШаблоновСообщений.ВсегдаПоказыватьФормуВыбораШаблонов; + Иначе + ПоказыватьФормуВыбораШаблонов = Истина; + КонецЕсли; + + Шаблоны.Сортировать("Представление"); + + Если НЕ РежимВыбора И НЕ ПодготовитьШаблон Тогда + ПерваяСтрока = Шаблоны.Вставить(0); + ПерваяСтрока.Имя = "<БезШаблона>"; + ПерваяСтрока.Представление = НСтр("ru = '<Без шаблона>'"); + КонецЕсли; + + Если Шаблоны.Количество() = 0 Тогда + Элементы.ФормаСоздать.ТолькоВоВсехДействиях = Ложь; + Элементы.ФормаСоздать.Отображение = ОтображениеКнопки.КартинкаИТекст; + Элементы.ФормаСформировать.Доступность = Ложь; + Элементы.ФормаСформироватьИОтправить.Доступность = Ложь; + Иначе + Элементы.ФормаСформировать.Доступность = Истина; + Элементы.ФормаСформироватьИОтправить.Доступность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьДанныеПредпросмотра() + ТекущиеДанные = Элементы.Шаблоны.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + УстановитьHTMLВФорматированныйДокумент(ТекущиеДанные.ТекстШаблона, ТекущиеДанные.Ссылка); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура УстановитьHTMLВФорматированныйДокумент(ТекстШаблонаПисьмаHTML, СсылкаНаТекущийОбъект); + + Сообщение = ШаблоныСообщенийСлужебный.КонструкторСообщения(); + + ПараметрШаблона = Новый Структура("Шаблон, УникальныйИдентификатор"); + ПараметрШаблона.Шаблон = СсылкаНаТекущийОбъект; + ПараметрШаблона.УникальныйИдентификатор = УникальныйИдентификатор; + Сообщение.Текст = ТекстШаблонаПисьмаHTML; + ШаблоныСообщенийСлужебный.ОбработатьHTMLДляФорматированногоДокумента(ПараметрШаблона, Сообщение, Истина); + СтруктураВложений = Новый Структура(); + Для каждого ВложениеВHTML Из Сообщение.Вложения Цикл + Изображение = Новый Картинка(ПолучитьИзВременногоХранилища(ВложениеВHTML.АдресВоВременномХранилище)); + СтруктураВложений.Вставить(ВложениеВHTML.Представление, Изображение); + КонецЦикла; + + ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(СсылкаНаТекущийОбъект); + СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона); + + Сообщение.Текст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Сообщение.Текст , СведенияОШаблоне.Реквизиты, "ПараметрыВПредставление"); + Сообщение.Текст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Сообщение.Текст , СведенияОШаблоне.ОбщиеРеквизиты, "ПараметрыВПредставление"); + ПредпросмотрФорматированныйДокумент.УстановитьHTML(Сообщение.Текст, СтруктураВложений); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьВыборФормата(Знач ФорматыСохранения = Неопределено) + + ЕстьВыбранныйФормат = Ложь; + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + Если ФорматыСохранения <> Неопределено Тогда + ВыбранныйФормат.Пометка = ФорматыСохранения.Найти(ВыбранныйФормат.Значение) <> Неопределено; + КонецЕсли; + + Если ВыбранныйФормат.Пометка Тогда + ЕстьВыбранныйФормат = Истина; + КонецЕсли; + КонецЦикла; + + Если Не ЕстьВыбранныйФормат Тогда + ВыбранныеФорматыСохранения[0].Пометка = Истина; // Выбор по умолчанию - первый в списке. + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СформироватьПредставлениеВыбранныхФорматов() + + ФорматВложений = ""; + КоличествоФорматов = 0; + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + Если ВыбранныйФормат.Пометка Тогда + Если Не ПустаяСтрока(ФорматВложений) Тогда + ФорматВложений = ФорматВложений + ", "; + КонецЕсли; + ФорматВложений = ФорматВложений + ВыбранныйФормат.Представление; + КоличествоФорматов = КоличествоФорматов + 1; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Функция ВыбранныеНастройкиФормата() + + Результат = Неопределено; + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент"); + Результат = МодульУправлениеПечатьюКлиент.НастройкиСохранения(); + + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + Если ВыбранныйФормат.Пометка Тогда + Результат.ФорматыСохранения.Добавить(ВыбранныйФормат.Значение); + КонецЕсли; + КонецЦикла; + + Результат.УпаковатьВАрхив = УпаковатьВАрхив; + Результат.ПереводитьИменаФайловВТранслит = ПереводитьИменаФайловВТранслит; + Результат.ПодписьИПечать = ПодписьИПечать; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ПриВыбореФорматаВложений(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт + + Если ВыбранноеЗначение <> КодВозвратаДиалога.Отмена И ВыбранноеЗначение <> Неопределено Тогда + УстановитьВыборФормата(ВыбранноеЗначение.ФорматыСохранения); + УпаковатьВАрхив = ВыбранноеЗначение.УпаковатьВАрхив; + ПереводитьИменаФайловВТранслит = ВыбранноеЗначение.ПереводитьИменаФайловВТранслит; + СформироватьПредставлениеВыбранныхФорматов(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокПечатныхФорм() + + Если ВидСообщения = "СообщениеSMS" Или РежимВыбора Или ПодготовитьШаблон + Или ТипЗнч(Предмет) = Тип("Строка") Или Не ЗначениеЗаполнено(Предмет) Тогда + Элементы.ВыберитеПечатныеФормы.Видимость = Ложь; + Возврат; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + + КомандыПечати = Неопределено; + Если ЗначениеЗаполнено(ИмяФормыИсточникаСообщения) Тогда + КомандыПечати = ОбщегоНазначения.ТаблицаЗначенийВМассив(МодульУправлениеПечатью.КомандыПечатиФормы( + ИмяФормыИсточникаСообщения, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Предмет.Метаданные()))); + КонецЕсли; + + Если Не ЗначениеЗаполнено(КомандыПечати) Тогда + Элементы.ВыберитеПечатныеФормы.Видимость = Ложь; + Возврат; + КонецЕсли; + + ВыбранныеРанееПечатныеФормы = ВыбранныеРанееПечатныеФормы(); + + Для Каждого КомандаПечати Из КомандыПечати Цикл + Пометка = ВыбранныеРанееПечатныеФормы.Найти(КомандаПечати.УникальныйИдентификатор) <> Неопределено; + ПечатныеФормы.Добавить(КомандаПечати, КомандаПечати.Представление, Пометка); + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СохранитьВыборПечатныхФорм() + + Если Не ЗначениеЗаполнено(ИмяФормыИсточникаСообщения) Тогда + Возврат; + КонецЕсли; + + Идентификаторы = Новый Массив; + Для Каждого ПечатнаяФорма Из ПечатныеФормы Цикл + Если ПечатнаяФорма.Пометка Тогда + Идентификаторы.Добавить(ПечатнаяФорма.Значение.УникальныйИдентификатор); + КонецЕсли; + КонецЦикла; + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( + "ОтправкаПечатныхФормБезШаблона", ИмяФормыИсточникаСообщения, Идентификаторы); + +КонецПроцедуры + +&НаСервере +Функция ВыбранныеРанееПечатныеФормы() + + Результат = Новый Массив; + + Если ЗначениеЗаполнено("ИмяФормыИсточникаСообщения") Тогда + Результат = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( + "ОтправкаПечатныхФормБезШаблона", ИмяФормыИсточникаСообщения, Новый Массив); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..89689be6 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,1124 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + ГруппаФильтр + 42 + + ШаблонДляФильтр + 36 + true + true + + true + + + + ШаблонДля + + + + ШаблонДляФильтрРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + + ШаблонДляФильтрКонтекстноеМеню + 37 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + ШаблонДляФильтрОбработкаВыбора + + true + true + true + true + true + true + true + + + + НазначениеФильтр + 39 + true + true + + true + + + + Назначение + + + + OnChange + НазначениеФильтрПриИзменении + + + НазначениеФильтрРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + + НазначениеФильтрКонтекстноеМеню + 40 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Фильтр</value> + + + ГруппаФильтрРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаКоманднаяПанельСписка + 46 + + ФормаГруппаСоздать + 22 + VeryHigh + + ФормаСоздатьШаблонЭлектронногоПисьма + 24 + true + true + + true + + + ФормаСоздатьШаблонЭлектронногоПисьмаРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьШаблонЭлектронногоПисьма + Auto + true + true + UserCmds + Auto + + + ФормаСоздатьШаблонСообщенияSMS + 26 + true + true + + true + + + ФормаСоздатьШаблонСообщенияSMSРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьШаблонСообщенияSMS + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Создать шаблон</value> + + + ФормаГруппаСоздатьРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ГруппаКоманднаяПанельФормы + 28 + + ФормаПоказыватьКонтекстныеШаблоны + 44 + true + true + + true + + + ФормаПоказыватьКонтекстныеШаблоныРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказыватьКонтекстныеШаблоны + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Командная панель формы</value> + + + ГруппаКоманднаяПанельФормыРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + Справка + 48 + true + true + + true + + + СправкаРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель списка</value> + + + ГруппаКоманднаяПанельСпискаРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + ЕстьФайлы + 59 + true + true + + true + + + + Список.ЕстьФайлы + + + None + + ЕстьФайлыРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + ЕстьФайлыКонтекстноеМеню + 60 + true + true + + true + + true + + PictureField + Enter + true + + CommonPicture.Скрепка + + Left + true + + true + true + true + true + + CommonPicture.КоллекцияСкрепка + + AsFileRef + + + + Наименование + 16 + true + true + + true + + + + Список.Description + + + true + + НаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ШаблонДля + 30 + + <key>ru</key> + <value>Шаблон для</value> + + true + true + + true + + + + Список.ШаблонДля + + + + ШаблонДляРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + ШаблонДляКонтекстноеМеню + 31 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Назначение + 33 + + <key>ru</key> + <value>Назначение</value> + + true + true + + true + + + + Список.Назначение + + + + НазначениеРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + + НазначениеКонтекстноеМеню + 34 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ВладелецШаблона + 53 + true + true + + + + Список.ВладелецШаблона + + + + ВладелецШаблонаРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + + ВладелецШаблонаКонтекстноеМеню + 54 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 56 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 57 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + + + OnGetDataAtServer + СписокПриПолученииДанныхНаСервере + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
        + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + Create + true + true + Vertical + true + true + true + true + true + + + ГруппаКоманднаяПанельСписка + + + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
        true
        + + ВЫБРАТЬ РАЗРЕШЕННЫЕ + СправочникШаблоныСообщений.Ссылка, + СправочникШаблоныСообщений.Наименование, + ВЫБОР + КОГДА СправочникШаблоныСообщений.ПредназначенДляSMS + ТОГДА &СообщениеSMS + ИНАЧЕ &ЭлектроннаяПочта + КОНЕЦ КАК ШаблонДля, + ВЫБОР + КОГДА СправочникШаблоныСообщений.ПолноеИмяТипаПараметраВводаНаОсновании = "" + ТОГДА &Общий + ИНАЧЕ СправочникШаблоныСообщений.ПолноеИмяТипаПараметраВводаНаОсновании + КОНЕЦ КАК Назначение, + СправочникШаблоныСообщений.ВладелецШаблона Как ВладелецШаблона, + 0 ЕстьФайлы +ИЗ + Справочник.ШаблоныСообщений КАК СправочникШаблоныСообщений +ГДЕ + (&Назначение = "" + ИЛИ СправочникШаблоныСообщений.Назначение = &Назначение) + И (СправочникШаблоныСообщений.ВладелецШаблона = Неопределено + ИЛИ СправочникШаблоныСообщений.ВладелецШаблона = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) + ИЛИ &ПоказыватьКонтекстныеШаблоны) + Catalog.ШаблоныСообщений + true + true + true + true + true + +
        + + ШаблонДля + + <key>ru</key> + <value>Шаблон для</value> + + 2 + + String + + + + true + + + true + + + + Назначение + + <key>ru</key> + <value>Назначение</value> + + 3 + + String + + + + true + + + true + + + + ВключенаРаботаСПочтовымиСообщениями + 4 + + Boolean + + + true + + + true + + + + ВключенаОтправкаSMS + 5 + + Boolean + + + true + + + true + + + + СоздатьШаблонЭлектронногоПисьма + + <key>ru</key> + <value>Электронного письма</value> + + 1 + + ru + Создать шаблон электронного письма + + + true + + + + СоздатьШаблонЭлектронногоПисьма + + + DontUse + + + СоздатьШаблонСообщенияSMS + + <key>ru</key> + <value>Сообщения SMS</value> + + 2 + + ru + Создать шаблон сообщения SMS + + + true + + + + СоздатьШаблонСообщенияSMS + + + DontUse + + + ПоказыватьКонтекстныеШаблоны + + <key>ru</key> + <value>Показывать контекстные шаблоны</value> + + 3 + + ru + Показывать контекстные шаблоны + + + true + + + + ПоказыватьКонтекстныеШаблоны + + + DontUse + + + + + + +
        diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..1374a2ba --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,305 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + ИнициализироватьОтборы(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда + ВключенаОтправкаSMS = Истина; + ВключенаРаботаСПочтовымиСообщениями = Истина; + Иначе + ВключенаРаботаСПочтовымиСообщениями = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями"); + ВключенаОтправкаSMS = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS"); + КонецЕсли; + + // кнопки в группе, если одна кнопка, то группа не нужна + Элементы.ФормаСоздатьШаблонСообщенияSMS.Видимость = ВключенаОтправкаSMS; + Элементы.ФормаСоздатьШаблонЭлектронногоПисьма.Видимость = ВключенаРаботаСПочтовымиСообщениями; + Элементы.ФормаПоказыватьКонтекстныеШаблоны.Видимость = Пользователи.ЭтоПолноправныйПользователь(); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS") Тогда + + СпрятатьЭлементыКогдаНедоступнаОднаИзПодсистем(); + + Заголовок = НСтр("ru='Шаблоны сообщений электронных писем'"); + Элементы.ФормаСоздатьШаблонСообщенияSMS.Видимость = Ложь; + Элементы.ФормаСоздатьШаблонЭлектронногоПисьма.Заголовок = НСтр("ru='Создать'"); + ШаблонДля = ШаблоныСообщенийКлиентСервер.ИмяШаблонаЭлектронныхПисем(); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, + "ШаблонДля", НСтр("ru = 'Электронного письма'"), ВидСравненияКомпоновкиДанных.Равно); + + КонецЕсли; + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + + СпрятатьЭлементыКогдаНедоступнаОднаИзПодсистем(); + + Заголовок = НСтр("ru='Шаблоны SMS сообщений'"); + Элементы.ФормаСоздатьШаблонЭлектронногоПисьма.Видимость = Ложь; + Элементы.ФормаСоздатьШаблонСообщенияSMS.Заголовок = НСтр("ru='Создать'"); + ШаблонДля = ШаблоныСообщенийКлиентСервер.ИмяШаблонаSMS(); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, + "ШаблонДля", НСтр("ru = 'Сообщения SMS'"), ВидСравненияКомпоновкиДанных.Равно); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "Запись_ШаблоныСообщений" Тогда + ИнициализироватьОтборы(); + УстановитьФильтрНазначение(Назначение); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НазначениеФильтрПриИзменении(Элемент) + УстановитьФильтрНазначение(Назначение); +КонецПроцедуры + +&НаКлиенте +Процедура ШаблонДляФильтрОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + УстановитьОтборВСпискеШаблонов(ВыбранноеЗначение); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаСервереБезКонтекста +Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ШаблоныСообщенийПечатныеФормыИВложения.Ссылка КАК Ссылка + |ИЗ + | Справочник.ШаблоныСообщений.ПечатныеФормыИВложения КАК ШаблоныСообщенийПечатныеФормыИВложения + |ГДЕ + | ШаблоныСообщенийПечатныеФормыИВложения.Ссылка В(&ШаблоныСообщений) + | + |СГРУППИРОВАТЬ ПО + | ШаблоныСообщенийПечатныеФормыИВложения.Ссылка"; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + + Запрос.Текст = Запрос.Текст + " + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ШаблоныСообщенийПрисоединенныеФайлы.ВладелецФайла КАК Ссылка + |ИЗ + | Справочник.ШаблоныСообщенийПрисоединенныеФайлы КАК ШаблоныСообщенийПрисоединенныеФайлы + |ГДЕ + | ШаблоныСообщенийПрисоединенныеФайлы.ВладелецФайла В(&ШаблоныСообщений) + | + |СГРУППИРОВАТЬ ПО + | ШаблоныСообщенийПрисоединенныеФайлы.ВладелецФайла"; + + КонецЕсли; + + Запрос.УстановитьПараметр("ШаблоныСообщений", Строки.ПолучитьКлючи()); + + ШаблоныСВложениями = Запрос.Выполнить().Выгрузить(); + ШаблоныСВложениями.Свернуть("Ссылка"); + Для каждого ШаблонСообщений Из ШаблоныСВложениями Цикл + СтрокаСписка = Строки[ШаблонСообщений.Ссылка]; + СтрокаСписка.Данные["ЕстьФайлы"] = 1; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СоздатьШаблонЭлектронногоПисьма(Команда) + СоздатьШаблон("ЭлектронноеПисьмо"); +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьШаблонСообщенияSMS(Команда) + СоздатьШаблон("СообщениеSMS"); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьКонтекстныеШаблоны(Команда) + Элементы.ФормаПоказыватьКонтекстныеШаблоны.Пометка = Не Элементы.ФормаПоказыватьКонтекстныеШаблоны.Пометка; + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьКонтекстныеШаблоны", Элементы.ФормаПоказыватьКонтекстныеШаблоны.Пометка); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура СоздатьШаблон(ТипСообщения) + ПараметрыФормы = Новый Структура(); + ПараметрыФормы.Вставить("ВидСообщения", ТипСообщения); + ПараметрыФормы.Вставить("ПолноеИмяТипаОснования", Назначение); + ПараметрыФормы.Вставить("МожноМенятьНазначение", Истина); + ОткрытьФорму("Справочник.ШаблоныСообщений.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьОтборВСпискеШаблонов(Знач ВыбранноеЗначение) + + Если ВыбранноеЗначение = ШаблоныСообщенийКлиентСервер.ИмяШаблонаSMS() Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "ШаблонДля", НСтр("ru = 'Сообщения SMS'"), ВидСравненияКомпоновкиДанных.Равно); + ИначеЕсли ВыбранноеЗначение = ШаблоныСообщенийКлиентСервер.ИмяШаблонаЭлектронныхПисем() Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "ШаблонДля", НСтр("ru = 'Электронного письма'"), ВидСравненияКомпоновкиДанных.Равно); + Иначе + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "ШаблонДля"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьФильтрНазначение(Знач ВыбранноеЗначение) + + Если ПустаяСтрока(ВыбранноеЗначение) Тогда + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Назначение"); + Иначе + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Назначение", ВыбранноеЗначение, ВидСравненияКомпоновкиДанных.Равно); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ИнициализироватьОтборы() + + Элементы.НазначениеФильтр.СписокВыбора.Очистить(); + Элементы.ШаблонДляФильтр.СписокВыбора.Очистить(); + + Список.Параметры.УстановитьЗначениеПараметра("Назначение", ""); + + ВидыШаблонов = ШаблоныСообщенийСлужебный.ВидыШаблонов(); + ВидыШаблонов.Вставить(0, НСтр("ru = 'Электронных писем и SMS'"), НСтр("ru = 'Электронных писем и SMS'")); + + Список.Параметры.УстановитьЗначениеПараметра("СообщениеSMS", ВидыШаблонов.НайтиПоЗначению("SMS").Представление); + Список.Параметры.УстановитьЗначениеПараметра("ЭлектроннаяПочта", ВидыШаблонов.НайтиПоЗначению("Email").Представление); + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьКонтекстныеШаблоны", Ложь); + + Для каждого ВидШаблона Из ВидыШаблонов Цикл + Элементы.ШаблонДляФильтр.СписокВыбора.Добавить(ВидШаблона.Значение, ВидШаблона.Представление); + КонецЦикла; + + Элементы.НазначениеФильтр.СписокВыбора.Добавить("", НСтр("ru = 'Все'")); + + Список.Параметры.УстановитьЗначениеПараметра(ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(), + ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий()); + Элементы.НазначениеФильтр.СписокВыбора.Добавить(ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(), + ШаблоныСообщенийКлиентСервер.ОбщийПредставление()); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ШаблоныСообщений.Назначение КАК Назначение, + | ШаблоныСообщений.ПолноеИмяТипаПараметраВводаНаОсновании КАК ПолноеИмяТипаПараметраВводаНаОсновании + |ИЗ + | Справочник.ШаблоныСообщений КАК ШаблоныСообщений + |ГДЕ + | ШаблоныСообщений.Назначение <> """" И ШаблоныСообщений.Назначение <> ""Служебный"" + | И ШаблоныСообщений.Назначение <> &Общий + | + |СГРУППИРОВАТЬ ПО + | ШаблоныСообщений.Назначение, ШаблоныСообщений.ПолноеИмяТипаПараметраВводаНаОсновании + | + |УПОРЯДОЧИТЬ ПО + | Назначение"; + + Запрос.УстановитьПараметр("Общий", ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий()); + РезультатЗапроса = Запрос.Выполнить().Выбрать(); + + ПриОпределенииНастроек = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек(); + ПредметыШаблонов = ПриОпределенииНастроек.ПредметыШаблонов; + Пока РезультатЗапроса.Следующий() Цикл + НайденнаяСтрока = ПредметыШаблонов.Найти(РезультатЗапроса.ПолноеИмяТипаПараметраВводаНаОсновании, "Имя"); + Представление = ?( НайденнаяСтрока <> Неопределено, НайденнаяСтрока.Представление, РезультатЗапроса.Назначение); + + Элементы.НазначениеФильтр.СписокВыбора.Добавить(РезультатЗапроса.ПолноеИмяТипаПараметраВводаНаОсновании, Представление); + КонецЦикла; + + Назначение = ""; + ШаблонДля = НСтр("ru = 'Электронных писем и SMS'"); + +КонецПроцедуры + +&НаСервере +Процедура СпрятатьЭлементыКогдаНедоступнаОднаИзПодсистем() + + Элементы.ШаблонДляФильтр.Видимость = Ложь; + Элементы.ШаблонДля.Видимость = Ложь; + АвтоЗаголовок = Ложь; + Элементы.ФормаГруппаСоздать.Вид = ВидГруппыФормы.ГруппаКнопок; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + Список.УсловноеОформление.Элементы.Очистить(); + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка.ВладелецШаблона"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + + // + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Назначение.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Назначение"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(); + + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ШаблоныСообщенийКлиентСервер.ОбщийПредставление()); + + // + ПриОпределенииНастроек = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек(); + ПредметыШаблонов = ПриОпределенииНастроек.ПредметыШаблонов; + + Для каждого ПредметШаблона Из ПредметыШаблонов Цикл + + Элемент = Список.УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Назначение.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Назначение"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = ПредметШаблона.Имя; + + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ПредметШаблона.Представление); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..26a8b523 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,4750 @@ + + + + <key>ru</key> + <value>Шаблон сообщения электронного письма</value> + + + ГруппаГлавное + 54 + + ГруппаЛеваяСторона + 294 + VeryHigh + + Наименование + 4 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 50 + true + true + true + true + true + true + + + + ГруппаВнешняяОбработка + 215 + + ВнешняяОбработка + 217 + true + true + + true + + + + Объект.ВнешняяОбработка + + + + OnChange + ВнешняяОбработкаПриИзменении + + + ВнешняяОбработкаРасширеннаяПодсказка + 219 + true + true + + true + + Label + true + true + + Left + + + + ВнешняяОбработкаКонтекстноеМеню + 218 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + true + true + + Отбор.Вид + + + Enum.ВидыДополнительныхОтчетовИОбработок.EnumValue.ШаблонСообщения + + + + + + true + + true + + + <key>ru</key> + <value>Внешняя обработка</value> + + + ГруппаВнешняяОбработкаРасширеннаяПодсказка + 216 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ТемаПисьма + 171 + true + true + + true + + + + Объект.ТемаПисьма + + + + ТемаПисьмаРасширеннаяПодсказка + 173 + true + true + + true + + Label + true + true + + Left + + + + ТемаПисьмаКонтекстноеМеню + 172 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 60 + true + true + true + true + true + + + + ВладелецШаблона + 358 + true + true + + + + Объект.ВладелецШаблона + + + + ВладелецШаблонаРасширеннаяПодсказка + 360 + true + true + + true + + Label + true + true + + Left + + + + ВладелецШаблонаКонтекстноеМеню + 359 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Страницы + 40 + + СообщениеЭлектронноеПисьмоHTML + 42 + + ГруппаКоманднаяПанельПисьмаВHTML + 75 + true + true + + true + + + <key>ru</key> + <value>Командная панель письма ВHTML</value> + + + ГруппаКоманднаяПанельПисьмаВHTMLРасширеннаяПодсказка + 76 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Item.ТелоПисьмаВHTML + + + + ТелоПисьмаВHTML + 46 + true + true + + true + + + + ТелоПисьмаВHTML + + + None + + OnChange + ТелоПисьмаВHTMLПриИзменении + + + ТелоПисьмаВHTMLРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + ТелоПисьмаВHTMLКонтекстноеМеню + 47 + true + true + + true + + true + + FormattedDocumentField + Enter + true + Left + true + + 50 + true + 10 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Сообщение электронное письмо HTML</value> + + + СообщениеЭлектронноеПисьмоHTMLРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СообщениеЭлектронноеПисьмо + 155 + + ТелоСообщенияОбычныйТекст + 186 + + <key>ru</key> + <value>Текст письма</value> + + true + true + + true + + + + ТелоСообщенияОбычныйТекст + + + None + + OnChange + ТелоСообщенияОбычныйТекстПриИзменении + + + ТелоСообщенияОбычныйТекстРасширеннаяПодсказка + 188 + true + true + + true + + Label + true + true + + Left + + + + ТелоСообщенияОбычныйТекстКонтекстноеМеню + 187 + true + true + + true + + true + + TextDocumentField + Enter + true + Left + true + + 50 + true + 10 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Сообщение электронное письмо</value> + + + СообщениеЭлектронноеПисьмоРасширеннаяПодсказка + 156 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СообщениеSMS + 44 + + ГруппаЗаголовокСообщениеSMS + 223 + + ДекорацияСообщениеSMS + 230 + + <key>ru</key> + <value>Сообщение SMS:</value> + + true + true + + true + + + ДекорацияСообщениеSMSРасширеннаяПодсказка + 232 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияСообщениеSMSКонтекстноеМеню + 231 + true + true + + true + + true + + Label + true + true + + Left + + + + ГруппаОтправлятьВТранслите + 233 + + ОтправлятьВТранслите + 225 + true + true + + true + + + + Объект.ОтправлятьВТранслите + + + Right + + ОтправлятьВТранслитеРасширеннаяПодсказка + 227 + true + true + + true + + Label + true + true + + Left + + + + ОтправлятьВТранслитеКонтекстноеМеню + 226 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Отправлять в транслите</value> + + true + + ГруппаОтправлятьВТранслитеРасширеннаяПодсказка + 234 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Right + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Заголовок сообщение SMS</value> + + true + + ГруппаЗаголовокСообщениеSMSРасширеннаяПодсказка + 224 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ТелоСообщенияОбычныйТекстSMS + 220 + true + true + + true + + + + ТелоСообщенияОбычныйТекст + + + None + + OnChange + ТелоСообщенияОбычныйТекстSMSПриИзменении + + + ТелоСообщенияОбычныйТекстSMSРасширеннаяПодсказка + 222 + true + true + + true + + Label + true + true + + Left + + + + ТелоСообщенияОбычныйТекстSMSКонтекстноеМеню + 221 + true + true + + true + + true + + TextDocumentField + Enter + true + Left + true + + 50 + true + 10 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Сообщение SMS</value> + + + СообщениеSMSРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СообщениеВнешняяОбработка + 157 + + ТелоСообщенияОбычныйТекстВнешняяОбработка + 262 + + <key>ru</key> + <value>Предпросмотр</value> + + true + true + + true + + + + ТелоПисьмаВHTML + + + + ТелоСообщенияОбычныйТекстВнешняяОбработкаРасширеннаяПодсказка + 264 + true + true + + true + + Label + true + true + + Left + + + + ТелоСообщенияОбычныйТекстВнешняяОбработкаКонтекстноеМеню + 263 + true + true + + true + + true + + FormattedDocumentField + true + Enter + true + Left + true + + 50 + true + 10 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Сообщение внешняя обработка</value> + + + СообщениеВнешняяОбработкаРасширеннаяПодсказка + 158 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ГруппаДоступ + 289 + VeryLow + + Автор + 301 + + <key>ru</key> + <value>Доступен</value> + + true + true + + true + + + + Объект.Автор + + + + OnChange + АвторПриИзменении + + + АвторРасширеннаяПодсказка + 303 + true + true + + true + + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 302 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + false + true + true + + ru + Всем + + + + true + true + + true + + + <key>ru</key> + <value>Доступ</value> + + + ГруппаДоступРасширеннаяПодсказка + 290 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Picture + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Левая сторона</value> + + + ГруппаЛеваяСторонаРасширеннаяПодсказка + 295 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаПараметры + 52 + + ГруппаНазначение + 344 + Usual + + Назначение + 346 + + <key>ru</key> + <value>Назначение:</value> + + true + true + + true + + + НазначениеРасширеннаяПодсказка + 348 + true + true + + true + + Label + true + true + + Left + + + + НазначениеКонтекстноеМеню + 347 + true + true + + true + + true + + Label + true + true + + Left + + + + ПолноеИмяТипаПараметраВводаНаОсновании + 24 + true + true + + true + + + + Объект.ПолноеИмяТипаПараметраВводаНаОсновании + + + None + + OnChange + ПолноеИмяТипаПараметраВводаНаОснованииПриИзменении + + + ПолноеИмяТипаПараметраВводаНаОснованииРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + ПолноеИмяТипаПараметраВводаНаОснованииКонтекстноеМеню + 25 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + ПолноеИмяТипаПараметраВводаНаОснованииОчистка + + true + true + true + true + true + true + + Style.ФонУправляющегоПоля + + + + true + true + + true + + + <key>ru</key> + <value>Назначение</value> + + + ГруппаНазначениеРасширеннаяПодсказка + 345 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + СтраницыЗаголовокПараметры + 77 + + СтраницаЗаголовокПараметры + 79 + + ЗаголовокПараметры + 81 + + <key>ru</key> + <value>Параметры: </value> + + true + true + + true + + + ЗаголовокПараметрыРасширеннаяПодсказка + 83 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокПараметрыКонтекстноеМеню + 82 + true + true + + true + + true + + Label + true + true + + Left + + + + ГруппаРеквизитыКоманднаяПанель + 306 + + РеквизитыМенюДобавитьПараметрПочта + 328 + + ДобавитьПараметрВТему + 324 + true + true + + true + + + ДобавитьПараметрВТемуРасширеннаяПодсказка + 325 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьПараметрВТему + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + РеквизитыДобавитьПараметрВТекстСообщения + 322 + true + true + + true + + + РеквизитыДобавитьПараметрВТекстСообщенияРасширеннаяПодсказка + 323 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьПараметрВТекстСообщения + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Добавить параметр в...</value> + + + РеквизитыМенюДобавитьПараметрПочтаРасширеннаяПодсказка + 329 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + РеквизитыМенюДобавитьПараметрВТекстСообщенияSMS + 332 + + <key>ru</key> + <value>Добавить параметр в текст сообщения</value> + + true + true + + true + + + РеквизитыМенюДобавитьПараметрВТекстСообщенияSMSРасширеннаяПодсказка + 333 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьПараметрВТекстСообщения + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ГруппаСтандартныеКнопки + 334 + + Добавить + 304 + true + true + + true + + + ДобавитьРасширеннаяПодсказка + 305 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Реквизиты.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + Удалить + 308 + true + true + + true + + + УдалитьРасширеннаяПодсказка + 309 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Реквизиты.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + КопироватьВБуферОбмена + 314 + true + true + + true + + + КопироватьВБуферОбменаРасширеннаяПодсказка + 315 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Реквизиты.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВывестиСписок + 312 + true + true + + true + + + ВывестиСписокРасширеннаяПодсказка + 313 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Реквизиты.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Стандартные кнопки</value> + + + ГруппаСтандартныеКнопкиРасширеннаяПодсказка + 335 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Реквизиты командная панель</value> + + + ГруппаРеквизитыКоманднаяПанельРасширеннаяПодсказка + 307 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница заголовок параметры</value> + + + СтраницаЗаголовокПараметрыРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + Bottom + true + + + + СкрытыйЗаголовокПараметры + 84 + + ГруппаСкрытаяВыравнивание + 240 + + ЭлектронноеПисьмоHTML + 244 + true + true + + true + + + ЭлектронноеПисьмоHTMLРасширеннаяПодсказка + 245 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЭлектронноеПисьмоHTML + Auto + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Скрытая выравнивание</value> + + + ГруппаСкрытаяВыравниваниеРасширеннаяПодсказка + 241 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + true + + true + + + <key>ru</key> + <value>Скрытый </value> + + + СкрытыйЗаголовокПараметрыРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СкрытыйЗаголовокСообщениеSMS + 238 + + ОтправлятьВТранслитеСкрытыйВыравнивание + 235 + true + true + + true + + + + Объект.ОтправлятьВТранслите + + + Right + + ОтправлятьВТранслитеСкрытыйВыравниваниеРасширеннаяПодсказка + 237 + true + true + + true + + Label + true + true + + Left + + + + ОтправлятьВТранслитеСкрытыйВыравниваниеКонтекстноеМеню + 236 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + true + + + <key>ru</key> + <value>Скрытый заголовок сообщение SMS</value> + + + СкрытыйЗаголовокСообщениеSMSРасширеннаяПодсказка + 239 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы заголовок параметры</value> + + Center + + СтраницыЗаголовокПараметрыРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + Реквизиты + 56 + + <key>ru</key> + <value>Параметры</value> + + true + true + + true + + + Реквизиты + + None + Change + Copy + EndEdit + MoveDown + MoveUp + ShowRowRearrangement + SortListAsc + SortListDesc + + РеквизитыПредставлениеИФормат + 282 + + РеквизитыПредставление + 72 + true + true + + true + + + + Реквизиты.Представление + + + Button + + РеквизитыПредставлениеРасширеннаяПодсказка + 74 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыПредставлениеКонтекстноеМеню + 73 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + РеквизитыФормат + 284 + true + true + + true + + + + Реквизиты.Формат + + + + РеквизитыФорматРасширеннаяПодсказка + 286 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыФорматКонтекстноеМеню + 285 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Реквизиты представление и формат</value> + + true + + РеквизитыПредставлениеИФорматРасширеннаяПодсказка + 283 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + РеквизитыКоманднаяПанель + 58 + true + true + + true + + Left + + + Selection + РеквизитыВыбор + + + BeforeAddRow + РеквизитыПередНачаломДобавления + + + BeforeDeleteRow + РеквизитыПередУдалением + + + OnActivateRow + РеквизитыПриАктивизацииСтроки + + + DragStart + РеквизитыНачалоПеретаскивания + + + true + true + + true + + РеквизитыСтрокаПоиска + 60 + + РеквизитыСтрокаПоискаРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыСтрокаПоискаКонтекстноеМеню + 61 + true + true + + true + + true + + + true + + + + true + true + + true + + РеквизитыСостояниеПросмотра + 63 + + РеквизитыСостояниеПросмотраРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыСостояниеПросмотраКонтекстноеМеню + 64 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РеквизитыУправлениеПоиском + 66 + + РеквизитыУправлениеПоискомРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыУправлениеПоискомКонтекстноеМеню + 67 + true + true + + true + + true + + SearchControlAddition + + true + + + + РеквизитыРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыКонтекстноеМеню + 57 + + РеквизитыКонтекстноеМенюДобавитьПараметрПочта + 278 + + РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщения + 257 + true + true + + true + + + РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияРасширеннаяПодсказка + 258 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьПараметрВТекстСообщения + Auto + true + true + UserCmds + Auto + + + РеквизитыКонтекстноеМенюДобавитьПараметрВТему + 255 + true + true + + true + + + РеквизитыКонтекстноеМенюДобавитьПараметрВТемуРасширеннаяПодсказка + 256 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьПараметрВТему + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавить параметр в...</value> + + + РеквизитыКонтекстноеМенюДобавитьПараметрПочтаРасширеннаяПодсказка + 279 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияДляSMS + 330 + + <key>ru</key> + <value>Добавить параметр в текст сообщения</value> + + true + true + + true + + + РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияДляSMSРасширеннаяПодсказка + 331 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьПараметрВТекстСообщения + Auto + true + true + UserCmds + Auto + + + ФорматОтображенияРеквизита + 280 + true + true + + true + + + ФорматОтображенияРеквизитаРасширеннаяПодсказка + 281 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ФорматОтображенияРеквизита + Auto + true + true + UserCmds + Auto + + + ГруппаСтандартныеКнопкиКонтекстноеМеню + 336 + + РеквизитыКонтекстноеМенюДобавить + 316 + true + true + + true + + + РеквизитыКонтекстноеМенюДобавитьРасширеннаяПодсказка + 317 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Реквизиты.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + РеквизитыКонтекстноеМенюИзменить + 338 + true + true + + true + + + РеквизитыКонтекстноеМенюИзменитьРасширеннаяПодсказка + 339 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьРеквизит + Auto + true + true + UserCmds + Auto + + + РеквизитыКонтекстноеМенюУдалить + 320 + true + true + + true + + + РеквизитыКонтекстноеМенюУдалитьРасширеннаяПодсказка + 321 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Реквизиты.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + + РеквизитыКонтекстноеМенюКопироватьВБуферОбмена + 340 + true + true + + true + + + РеквизитыКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 341 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Реквизиты.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + + РеквизитыКонтекстноеМенюВывестиСписок + 342 + true + true + + true + + + РеквизитыКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 343 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Реквизиты.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Стандартные кнопки контекстное меню</value> + + + ГруппаСтандартныеКнопкиКонтекстноеМенюРасширеннаяПодсказка + 337 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + true + + Tree + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + ExpandTopLevel + true + true + true + true + + Реквизиты.ИндексКартинки + + + CommonPicture.КоллекцияПиктограммПараметрыШаблонаСообщения + + SelectionPresentationAndChoice + + + ГруппаВложения + 228 + + ГруппаПечатныеФормыИВложения + 151 + + ДекорацияПечатныеФормыИВложения + 113 + + <key>ru</key> + <value>Печатные формы и вложения:</value> + + true + true + + true + + + ДекорацияПечатныеФормыИВложенияРасширеннаяПодсказка + 115 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПечатныеФормыИВложенияКонтекстноеМеню + 114 + true + true + + true + + true + + Label + true + true + + Left + + + + КоманднаяПанельПечатныеФормыИВложения + 153 + + ВложенияДобавить + 197 + + <key>ru</key> + <value>Добавить вложение</value> + + true + true + + true + + + ВложенияДобавитьРасширеннаяПодсказка + 198 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + ВложенияСкопироватьВложение + 356 + true + true + + true + + + ВложенияСкопироватьВложениеРасширеннаяПодсказка + 357 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СкопироватьВложение + Auto + true + true + UserCmds + Auto + + + ВложенияИзменить + 352 + true + true + + true + + + ВложенияИзменитьРасширеннаяПодсказка + 353 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВложение + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВложенияУдалить + 199 + true + true + + true + + + ВложенияУдалитьРасширеннаяПодсказка + 200 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ГруппаВложенияВывестиСписок + 205 + + ВложенияКопироватьВБуферОбмена + 201 + true + true + + true + + + ВложенияКопироватьВБуферОбменаРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВложенияВывестиСписок + 203 + true + true + + true + + + ВложенияВывестиСписокРасширеннаяПодсказка + 204 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Вложения вывести список</value> + + + ГруппаВложенияВывестиСписокРасширеннаяПодсказка + 206 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель печатные формы и вложения</value> + + + КоманднаяПанельПечатныеФормыИВложенияРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Item.Вложения + + + true + true + + true + + + <key>ru</key> + <value>Печатные формы и вложения</value> + + + ГруппаПечатныеФормыИВложенияРасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Вложения + 89 + + <key>ru</key> + <value>Вложения</value> + + true + true + + true + + + Вложения + + None + CancelSearch + Change + Copy + EndEdit + Find + MoveDown + MoveUp + ShowRowRearrangement + SortListAsc + SortListDesc + Balloon + + ВложенияВыбран + 148 + true + true + + true + + + + Вложения.Выбрано + + + + OnChange + ВложенияВыбранПриИзменении + + + ВложенияВыбранРасширеннаяПодсказка + 150 + true + true + + true + + Label + true + true + + Left + + + + ВложенияВыбранКонтекстноеМеню + 149 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + true + + + + ВложенияГруппаПредставление + 249 + + ВложенияИндексКартинки + 246 + true + true + + true + + + + Вложения.ИндексКартинки + + + + ВложенияИндексКартинкиРасширеннаяПодсказка + 248 + true + true + + true + + Label + true + true + + Left + + + + ВложенияИндексКартинкиКонтекстноеМеню + 247 + true + true + + true + + true + + PictureField + EnterOnInput + true + Left + true + + true + true + true + true + true + + CommonPicture.КоллекцияПиктограммФайлов + + + + + ВложенияПредставление + 105 + true + true + + true + + + + Вложения.Представление + + + None + + ВложенияПредставлениеРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + + ВложенияПредставлениеКонтекстноеМеню + 106 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Вложения группа представление</value> + + + ВложенияГруппаПредставлениеРасширеннаяПодсказка + 250 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ВложенияКоманднаяПанель + 91 + true + true + + true + + Left + + + BeforeAddRow + ВложенияПередНачаломДобавления + + + BeforeDeleteRow + ВложенияПередУдалением + + + OnActivateRow + ВложенияПриАктивизацииСтроки + + + true + true + + true + + ВложенияСтрокаПоиска + 93 + + ВложенияСтрокаПоискаРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + + ВложенияСтрокаПоискаКонтекстноеМеню + 94 + true + true + + true + + true + + + true + + + + true + true + + true + + ВложенияСостояниеПросмотра + 96 + + ВложенияСостояниеПросмотраРасширеннаяПодсказка + 98 + true + true + + true + + Label + true + true + + Left + + + + ВложенияСостояниеПросмотраКонтекстноеМеню + 97 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВложенияУправлениеПоиском + 99 + + ВложенияУправлениеПоискомРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + + ВложенияУправлениеПоискомКонтекстноеМеню + 100 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВложенияРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + + ВложенияКонтекстноеМеню + 90 + + ВложенияКонтекстноеМенюДобавить + 195 + true + true + + true + + + ВложенияКонтекстноеМенюДобавитьРасширеннаяПодсказка + 196 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + ВложенияКонтекстноеМенюСкопироватьВложение + 354 + true + true + + true + + + ВложенияКонтекстноеМенюСкопироватьВложениеРасширеннаяПодсказка + 355 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СкопироватьВложение + Auto + true + true + UserCmds + Auto + + + ВложенияКонтекстноеМенюИзменитьВложение + 253 + true + true + + true + + + ВложенияКонтекстноеМенюИзменитьВложениеРасширеннаяПодсказка + 254 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьВложение + Auto + true + true + UserCmds + Auto + + + ВложенияКонтекстноеМенюУдалить + 191 + + <key>ru</key> + <value>Пометить на удаление / Снять пометку</value> + + true + true + + true + + + ВложенияКонтекстноеМенюУдалитьРасширеннаяПодсказка + 192 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + + ГруппаВложенияВывестиСписокКонтекстноеМеню + 211 + + ВложенияВывестиСписокКонтекстноеМеню + 213 + true + true + + true + + + ВложенияВывестиСписокКонтекстноеМенюРасширеннаяПодсказка + 214 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВложенияКонтекстноеМенюКопироватьВБуферОбмена + 193 + true + true + + true + + + ВложенияКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 194 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вложения вывести список контекстное меню</value> + + + ГруппаВложенияВывестиСписокКонтекстноеМенюРасширеннаяПодсказка + 212 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + true + + true + true + 4 + true + true + Row + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + + + + ГруппаНастройкиВложений + 270 + VeryLow + + ФорматВложений + 272 + true + true + + true + + + + ФорматПечатныхФорм + + + + ФорматВложенийРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + + ФорматВложенийКонтекстноеМеню + 273 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ФорматВложенийНажатие + + true + true + true + + + + УпаковатьВАрхив + 275 + + <key>ru</key> + <value>Упаковать в архив печатные формы</value> + + true + true + + true + + + + Объект.УпаковатьВАрхив + + + Right + + УпаковатьВАрхивРасширеннаяПодсказка + 277 + true + true + + true + + Label + true + true + + Left + + + + УпаковатьВАрхивКонтекстноеМеню + 276 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ТранслитерироватьИменаФайлов + 349 + true + true + + true + + + + Объект.ТранслитерироватьИменаФайлов + + + Right + Button + + ТранслитерироватьИменаФайловРасширеннаяПодсказка + 351 + true + true + + true + + Label + true + true + + Left + + + + ТранслитерироватьИменаФайловКонтекстноеМеню + 350 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПодписьИПечать + 361 + true + true + + true + + + + Объект.ПодписьИПечать + + + Right + + ru + Добавить факсимильную подпись и печать в печатную форму + + + Button + + ПодписьИПечатьРасширеннаяПодсказка + 363 + true + true + + true + + Label + true + true + + Left + + + + ПодписьИПечатьКонтекстноеМеню + 362 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Настройки вложений</value> + + + ГруппаНастройкиВложенийРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Вложения</value> + + + ГруппаВложенияРасширеннаяПодсказка + 229 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Параметры</value> + + + ГруппаПараметрыРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Главное</value> + + + ГруппаГлавноеРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаПроверитьШаблон + 16 + true + true + + true + + + ФормаПроверитьШаблонРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверитьШаблон + Auto + true + true + UserCmds + Auto + + + ФормаВидТекстаЭлектронногоПисьма + 163 + + ФормаЭлектронноеПисьмоОбычныйТекст + 161 + true + true + + true + + + ФормаЭлектронноеПисьмоОбычныйТекстРасширеннаяПодсказка + 162 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЭлектронноеПисьмоОбычныйТекст + Auto + true + true + UserCmds + Auto + + + ФормаЭлектронноеПисьмоHTML + 159 + true + true + + true + + + ФормаЭлектронноеПисьмоHTMLРасширеннаяПодсказка + 160 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЭлектронноеПисьмоHTML + Auto + true + true + UserCmds + true + Auto + + true + true + + true + + + <key>ru</key> + <value>HTML</value> + + + ru + Вид текста электронного письма + + + ФормаВидТекстаЭлектронногоПисьмаРасширеннаяПодсказка + 164 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ФормаГруппаСообщениеФормируется + 174 + + ФормаПоШаблону + 176 + true + true + + true + + + ФормаПоШаблонуРасширеннаяПодсказка + 177 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоШаблону + Auto + true + true + UserCmds + true + Auto + InAdditionalSubmenu + + + ФормаВнешнейОбработкой + 178 + true + true + + true + + + ФормаВнешнейОбработкойРасширеннаяПодсказка + 179 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВнешнейОбработкой + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Сообщение формируется</value> + + + ФормаГруппаСообщениеФормируетсяРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ШаблоныСообщений + + + true + + + true + +
        true
        + true + + + Объект.Параметры + + + ОписаниеТипа + + <key>ru</key> + <value>Описание типа</value> + + 1 + + TypeDescription + + + true + + + true + + + +
        + + ТелоПисьмаВHTML + + <key>ru</key> + <value>Тело письма ВHTML</value> + + 2 + + FormattedDocument + + + true + + + true + + true + + + Реквизиты + + <key>ru</key> + <value>Реквизиты</value> + + 3 + + ValueTree + + + true + + + true + + true + + Имя + 1 + + String + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + Подсказка + 3 + + String + + + + true + + + true + + + + Тип + 4 + + TypeDescription + + + true + + + true + + + + Формат + + <key>ru</key> + <value>Формат</value> + + 5 + + String + + + + true + + + true + + + + ИндексКартинки + 6 + + Number + + 10 + + + + true + + + true + + + + ПроизвольныйПараметр + 7 + + Boolean + + + true + + + true + + + + ПолноеПредставление + 8 + + String + + 300 + + + + true + + + true + + + + + Вложения + + <key>ru</key> + <value>Вложения</value> + + 6 + + ValueTable + + + true + + + true + + true + + Идентификатор + 1 + + String + + 50 + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + Выбрано + + <key>ru</key> + <value>Выбрано</value> + + 3 + + Number + + + + true + + + true + + + + ИндексКартинки + + <key>ru</key> + <value>Индекс картинки</value> + + 4 + + Number + + 10 + + + + true + + + true + + + + ТипФайла + 5 + + String + + 10 + + + + true + + + true + + + + МенеджерПечати + 6 + + String + + + + true + + + true + + + + ПараметрыПечати + 7 + + + true + + + true + + + + Ссылка + 9 + + CatalogRef.ШаблоныСообщенийПрисоединенныеФайлы + + + true + + + true + + + + Статус + 11 + + String + + + + true + + + true + + + + Имя + 8 + + String + + + + true + + + true + + + + Реквизит + 12 + + String + + + + true + + + true + + + + ИмяПараметра + 10 + + String + + + + true + + + true + + + + + ТелоСообщенияОбычныйТекст + + <key>ru</key> + <value>Тело сообщения обычный текст</value> + + 7 + + TextDocument + + + true + + + true + + true + + + КоличествоСимволов + 8 + + Number + + 10 + + + + true + + + true + + + + ФорматПечатныхФорм + + <key>ru</key> + <value>Формат печатных форм</value> + + 9 + + String + + + + true + + + true + + + + ВыбранныеФорматыСохранения + 10 + + ValueList + + + true + + + true + + + + + + + ИспользоватьПроизвольныеПараметры + 12 + + Boolean + + + true + + + true + + + + ПараметрыСообщения + 13 + + + true + + + true + + + + ПроверитьШаблон + + <key>ru</key> + <value>Проверить шаблон</value> + + 1 + + ru + Проверить шаблон + + + true + + + + ПроверитьШаблон + + + DontUse + + + ЭлектронноеПисьмоHTML + + <key>ru</key> + <value>HTML</value> + + 2 + + ru + Электронное письмо HTML + + + true + + + + ЭлектронноеПисьмоHTML + + + true + DontUse + + + ЭлектронноеПисьмоОбычныйТекст + + <key>ru</key> + <value>Обычный текст</value> + + 3 + + ru + Электронное письмо обычный текст + + + true + + + + ЭлектронноеПисьмоОбычныйТекст + + + true + DontUse + + + ПоШаблону + + <key>ru</key> + <value>По шаблону</value> + + 4 + + ru + По шаблону + + + true + + + + ПоШаблону + + + DontUse + + + ВнешнейОбработкой + + <key>ru</key> + <value>Внешней обработкой</value> + + 5 + + ru + Внешней обработкой + + + true + + + + ВнешнейОбработкой + + + DontUse + + + ИзменитьВложение + + <key>ru</key> + <value>Изменить</value> + + 7 + + ru + Изменить вложение + + + true + + + StdPicture.Change + + + + ИзменитьВложение + + + DontUse + + + ДобавитьПараметрВТему + + <key>ru</key> + <value>Тему</value> + + 8 + + ru + Добавить параметр в тему + + + true + + + + ДобавитьПараметрВТему + + + DontUse + + + ДобавитьПараметрВТекстСообщения + + <key>ru</key> + <value>Текст сообщения</value> + + 9 + + ru + Добавить параметр в текст сообщения + + + true + + + + ДобавитьПараметрВТекстСообщения + + + DontUse + + + ФорматОтображенияРеквизита + + <key>ru</key> + <value>Формат отображения реквизита...</value> + + 10 + + ru + Формат отображения реквизита + + + true + + + + УстановитьФорматВывода + + + DontUse + + + СкопироватьВложение + + <key>ru</key> + <value>Скопировать</value> + + 6 + + ru + Скопировать вложение + + + true + + + + СкопироватьВложение + + + DontUse + + + ИзменитьРеквизит + + <key>ru</key> + <value>Изменить</value> + + 11 + + ru + Изменить реквизит + + + true + + + StdPicture.Change + + + + ИзменитьРеквизит + + + true + Auto + + + ВидСообщения + + String + + + + + ПолноеИмяТипаОснования + + String + + + + + ПараметрыСообщения + + + + МожноМенятьНазначение + + Boolean + + + + + + 0 + + + + CommonCommand.ПрисоединенныеФайлы + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
        diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..f2d41d46 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,38 @@ + +

        Предназначена для создания шаблона электронного письма или SMS-сообщения.

        +

        Шаблон электронного письма

        +

        Шаблон можно создать с помощью соответствующей кнопки из списка шаблонов, а также можно его настроить из исходящего электронного письма с помощью кнопки Создать на основании. В последнем случае в шаблон будут включены некоторые поля текущего исходящего электронного письма. Заполните необходимые поля:

        +
        • Напишите Наименование так, чтобы было понятно, как будет использоваться шаблон. +
        • С помощью переключателя выберите Назначение шаблона: +
          • Общий - для всех документов и списков; +
          • Только для - выберите из списка, для каких документов или списков предназначен данный шаблон.
        • Заполните поле Тема - кроме текста, набранного вручную, можно вставлять различные формулы. +
        • Напишите текст сообщения. Для формирования текста сообщения также можно использовать формулы, выбирая их в окне Параметры в правой части шаблона. +
        • Текст сообщения можно форматировать. Основные команды форматирования представлены в виде кнопок над текстовым полем. Все команды форматирования можно найти в меню Еще. +
        • В окне Параметрыв правой части шаблона для вставки формулы представлены различные реквизиты: Общие, а также поля выбранного документа. Реквизиты с помощью левой кнопки мыши можно перенести в нужное поле (поле Тема или текст сообщения). +
        • К сообщению можно прикрепить вложения с помощью команды Еще - Добавить в правой нижней части шаблона. +
        • Выбранныеформаты печатных форм перечисляются ниже окна Печатные формы и вложения. Нажмите на ссылку, для того чтобы изменить список форматов. +
        • Включите флажок, для того чтобы Упаковать в архив печатные формы. +
        • Установите доступность данного шаблона: +
          • В поле Доступен выберите пользователя из списка. По умолчанию шаблон доступен всем.
        • Включите флажок для того, чтобы Транслитерировать имена файлов. В этом случае сформированные печатные формы и файлы будут иметь имена, содержащие только латинские буквы и цифры для возможности переноса между различными операционными системами.

        Шаблон сообщения SMS

        +
        • +
          Наименование напишите так, чтобы было понятно, как используется шаблон.
          +
        • +
          С помощью переключателя выберите Назначение шаблона:
          +
          • +
            Общий;
            +
          • +
            Только для - предлагается выбрать, для каких документов или списков предназначен данный шаблон.
        • +
          При необходимости включите флажок Отправлять в транслите.
          +
        • +
          +
          Напишите текст сообщения. Кроме текста SMS-сообщения, в поле можно вставлять различные формулы. Для вставки в формулы в правой части шаблона в окне Параметры представлены различные реквизиты: поля выбранного документа, а также Общие реквизиты.
          +
        • Установите доступность данного шаблона: +
          • +
            В поле Доступен выберите пользователей из списка, которым будет доступен данный шаблон. По умолчанию шаблон доступен всем.

        Выбор способа формирования

        +
        • С помощью команды Сообщение формируется меню Еще можно выбрать: +
          • По шаблону (выбран по умолчанию); +
          • Внешней обработкой - после выбора этого способа формирования появляется возможность предварительного просмотра шаблона сообщения, где автоматически заполняемые параметры выделяются цветом.

        Проверка работоспособности шаблона

        +
        • +
          Сразу после создания и в любой момент времени можно проверить работоспособность шаблона сообщения с помощью кнопки Проверить шаблон.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..78355b4b --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,1940 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Параметры.Свойство("ПараметрыСообщения") Тогда + ПараметрыСообщения = Параметры.ПараметрыСообщения; + КонецЕсли; + + Элементы.ПолноеИмяТипаПараметраВводаНаОсновании.СписокВыбора.Добавить(ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(), + ШаблоныСообщенийКлиентСервер.ОбщийПредставление()); + НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек(); + Для каждого ПредметШаблона Из НастройкиШаблоновСообщений.ПредметыШаблонов Цикл + Элементы.ПолноеИмяТипаПараметраВводаНаОсновании.СписокВыбора.Добавить(ПредметШаблона.Имя, ПредметШаблона.Представление); + КонецЦикла; + + СписокВложений = Неопределено; + Если Параметры.Ключ = Неопределено Или Параметры.Ключ.Пустая() Тогда + + Если Параметры.ЗначениеКопирования = Справочники.ШаблоныСообщений.ПустаяСсылка() Тогда + + ИнициализироватьНовыйШаблонСообщений(НастройкиШаблоновСообщений); + + Иначе + + Для каждого ПараметрыЗначениеКопирования Из Параметры.ЗначениеКопирования.Параметры Цикл + Отбор = Новый Структура("ИмяПараметра", ПараметрыЗначениеКопирования.ИмяПараметра); + НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + НайденныеСтроки[0].ОписаниеТипа = ПараметрыЗначениеКопирования.ТипПараметра.Получить(); + КонецЕсли + КонецЦикла; + + СписокВложений = СкопироватьВложенияИзИсточника(); + КонецЕсли; + КонецЕсли; + + ОтображениеЭлементовФормы(НастройкиШаблоновСообщений.ФорматПисьма); + + ИнициализироватьФорматыСохранения(); + СформироватьСписокРеквизитовИПечатныхФорм(); + + ИспользоватьПроизвольныеПараметры = НастройкиШаблоновСообщений.ИспользоватьПроизвольныеПараметры; + + Если НЕ ИспользоватьПроизвольныеПараметры Тогда + Элементы.ГруппаРеквизитыКоманднаяПанель.Видимость = Ложь; + Элементы.РеквизитыКонтекстноеМенюДобавить.Видимость = Ложь; + Элементы.РеквизитыКонтекстноеМенюИзменить.Видимость = Ложь; + Элементы.РеквизитыКонтекстноеМенюУдалить.Видимость = Ложь; + КонецЕсли; + + Если Параметры.Свойство("ВладелецШаблона") Тогда + Элементы.ГруппаНазначение.Видимость = Ложь; + Элементы.ФормаГруппаСообщениеФормируется.Видимость = Ложь; + Элементы.Назначение.Видимость = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ТемаПисьма.МногострочныйРежим = Истина; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + Элементы.ПодписьИПечать.Видимость = МодульУправлениеПечатью.НастройкиПечати().ИспользоватьПодписиИПечати; + КонецЕсли; + + УстановитьТекстШаблона(Объект, СписокВложений); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + УстановитьТекстШаблона(ТекущийОбъект); + + Если ВыбранныеФорматыСохранения.Количество() = 0 Тогда + Для Каждого ФорматСохранения Из СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента() Цикл + ВыбранныеФорматыСохранения.Добавить(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента), Строка(ФорматСохранения.Ссылка), Ложь, ФорматСохранения.Картинка); + КонецЦикла; + КонецЕсли; + + СписокФорматов = ТекущийОбъект.ФорматВложений.Получить(); + Если СписокФорматов <> Неопределено Тогда + ВыбранныеФорматыСохранения.ЗаполнитьПометки(Ложь); + Для Каждого ЭлементСписка Из СписокФорматов Цикл + НайденноеЗначение = ВыбранныеФорматыСохранения.НайтиПоЗначению(ЭлементСписка.Значение); + Если НайденноеЗначение <> Неопределено Тогда + НайденноеЗначение.Пометка = Истина; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект); + + Если ПустаяСтрока(Объект.ПолноеИмяТипаПараметраВводаНаОсновании) Тогда + Объект.Назначение = ШаблоныСообщенийКлиентСервер.ОбщийПредставление(); + Объект.ПредназначенДляВводаНаОсновании = Ложь; + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(); + КонецЕсли; + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + ПоместитьФайлыИзЛокальнойФСВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ); + + Если Не Объект.ПредназначенДляВводаНаОсновании Тогда + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ""; + Объект.Назначение = ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ИнформацияОПроверке = ОбработатьТекстШаблона(); + + Если Не ИнформацияОПроверке.Успех Тогда + ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Шаблон сообщения не может быть записан.'") + + Символы.ПС + ИнформацияОПроверке.ТекстОшибки); + Отказ = Истина; + Возврат; + КонецЕсли; + + Если ТекущийОбъект.ПредназначенДляSMS Тогда + ТекущийОбъект.ТекстШаблонаSMS = ИнформацияОПроверке.ОбычныйТекст; + ТекущийОбъект.ФорматВложений = Неопределено; + Иначе + + ТекущийОбъект.ТекстШаблонаПисьмаHTML = ИнформацияОПроверке.HTMLТекст; + ТекущийОбъект.ТекстШаблонаПисьма = ИнформацияОПроверке.ОбычныйТекст; + ТекущийОбъект.ТемаПисьма = ИнформацияОПроверке.ТемаПисьма; + + СписокФорматов = Новый СписокЗначений; + Для каждого ЭлементСписка Из ВыбранныеФорматыСохранения Цикл + Если ЭлементСписка.Пометка Тогда + ЗаполнитьЗначенияСвойств(СписокФорматов.Добавить(), ЭлементСписка); + КонецЕсли; + КонецЦикла; + ТекущийОбъект.ФорматВложений = Новый ХранилищеЗначения(СписокФорматов); + + ТаблицаСоответствийИменВложенийИдентификаторам = Новый СписокЗначений; + СтруктураВложений = Новый Структура; + + ТекстШаблонаHTML = ""; // Извлекаем вложения + ТелоПисьмаВHTML.ПолучитьHTML(ТекстШаблонаHTML, СтруктураВложений); + Для каждого Вложение Из СтруктураВложений Цикл + ТаблицаСоответствийИменВложенийИдентификаторам.Добавить(Вложение.Ключ, Новый УникальныйИдентификатор,, Вложение.Значение); + КонецЦикла; + + ПараметрыЗаписи.Вставить("ВложенияHTML", ТаблицаСоответствийИменВложенийИдентификаторам); + + Если ТаблицаСоответствийИменВложенийИдентификаторам.Количество() > 0 Тогда + + ДокументHTML = ШаблоныСообщенийСлужебный.ПолучитьОбъектДокументHTMLИзТекстаHTML(ТекущийОбъект.ТекстШаблонаПисьмаHTML); + ЗаменитьИменаКартинокНаИдентификаторыПочтовыхВложенийВHTML(ДокументHTML, ТаблицаСоответствийИменВложенийИдентификаторам); + ТекущийОбъект.ТекстШаблонаПисьмаHTML = ШаблоныСообщенийСлужебный.ПолучитьТекстHTMLИзОбъектаДокументHTML(ДокументHTML); + + КонецЕсли; + + ТекущийОбъект.ПечатныеФормыИВложения.Очистить(); + Для каждого Вложение Из Вложения Цикл + Если Вложение.Выбрано = 1 Тогда + НоваяСтрока = ТекущийОбъект.ПечатныеФормыИВложения.Добавить(); + НоваяСтрока.Идентификатор = Вложение.Идентификатор; + НоваяСтрока.Имя = Вложение.ИмяПараметра; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + ТекущийОбъект.Параметры.Очистить(); + Для каждого ПараметрШаблона Из Объект.Параметры Цикл + НоваяСтрока = ТекущийОбъект.Параметры.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ПараметрШаблона); + НоваяСтрока.ТипПараметра = Новый ХранилищеЗначения(ПараметрШаблона.ОписаниеТипа); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ОбработатьТекстШаблона() + + ДеревоПараметровШаблона = РеквизитФормыВЗначение("Реквизиты"); + + Результат = Новый Структура; + Результат.Вставить("ОбычныйТекст", ТелоСообщенияОбычныйТекст.ПолучитьТекст()); + Результат.Вставить("HTMLТекст", ""); + Результат.Вставить("ТекстОшибки", ""); + Результат.Вставить("Успех", Истина); + Результат.Вставить("ТемаПисьма", Объект.ТемаПисьма); + Результат.Вставить("ТипТекстаПисьма", Объект.ТипТекстаПисьма); + + ПроверяемыйТекст = ""; + ВариантПреобразования = "ПредставлениеВПараметры"; + + Если Объект.ПредназначенДляSMS Тогда + Результат.ОбычныйТекст = + ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Результат.ОбычныйТекст, ДеревоПараметровШаблона, ВариантПреобразования); + ПроверяемыйТекст = Результат.ОбычныйТекст; + Иначе + Если Результат.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + + ВложенияВHTML = Новый Структура(); + ТелоПисьмаВHTML.ПолучитьHTML(Результат.HTMLТекст, ВложенияВHTML); + + Результат.HTMLТекст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(СтрЗаменить(Результат.HTMLТекст, """, """"), ДеревоПараметровШаблона, ВариантПреобразования); + Результат.ОбычныйТекст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТелоПисьмаВHTML.ПолучитьТекст(), ДеревоПараметровШаблона, ВариантПреобразования); + ПроверяемыйТекст = Результат.HTMLТекст; + + Иначе + + Если ПустаяСтрока(Результат.ОбычныйТекст) Тогда + Результат.ОбычныйТекст = ТелоПисьмаВHTML.ПолучитьТекст(); + КонецЕсли; + Результат.ОбычныйТекст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Результат.ОбычныйТекст, + ДеревоПараметровШаблона, ВариантПреобразования); + Результат.HTMLТекст = Результат.ОбычныйТекст; + + ПроверяемыйТекст = Результат.ОбычныйТекст; + + КонецЕсли; + + Результат.ТемаПисьма = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Результат.ТемаПисьма, ДеревоПараметровШаблона, ВариантПреобразования); + ПроверяемыйТекст = ПроверяемыйТекст + Результат.ТемаПисьма; + + КонецЕсли; + + Если Объект.ШаблонПоВнешнейОбработке Тогда + Возврат Результат; // В обработке своя логика заполнения + КонецЕсли; + + // проверка + + ОшибочныеПараметры = Новый Массив; + ПараметрыШаблонаИзТекста = ШаблоныСообщенийСлужебный.ПараметрыТекстаСообщения(ПроверяемыйТекст); + + Для каждого ПараметрШаблонаИзТекста Из ПараметрыШаблонаИзТекста Цикл + + ОписаниеПараметра = ШаблоныСообщенийСлужебный.ИмяПараметраБезСтрокиФормата(ПараметрШаблонаИзТекста.Ключ); + + НайденныеСтроки = ДеревоПараметровШаблона.Строки.НайтиСтроки(Новый Структура("Имя", ОписаниеПараметра.Имя), Истина); + Если НайденныеСтроки.Количество() > 0 Тогда + Продолжить; + КонецЕсли; + + ОшибочныеПараметры.Добавить( ОписаниеПараметра.Имя); + + КонецЦикла; + + Если ОшибочныеПараметры.Количество() > 0 Тогда + ТекстОшибки = ?(ОшибочныеПараметры.Количество() = 1, + НСтр("ru = 'Некорректный реквизит в шаблоне сообщения:'"), + НСтр("ru = 'Некорректные реквизиты в шаблоне сообщения:'")); + Результат.ТекстОшибки = ТекстОшибки + " " + СтрСоединить(ОшибочныеПараметры, ", "); + Результат.Успех = Ложь; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ТекущийОбъект.ПредназначенДляSMS Тогда + Возврат; + КонецЕсли; + // Добавим в список удаленных вложений ранее сохраненные картинки, отображаемые в теле форматированного документа. + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + СписокФайлов = Новый Массив; // Массив из ОпределяемыйТип.ПрисоединенныйФайл + МодульРаботаСФайлами.ЗаполнитьПрисоединенныеФайлыКОбъекту(ТекущийОбъект.Ссылка, СписокФайлов); + Для каждого Вложение Из СписокФайлов Цикл + Если ЗначениеЗаполнено(Вложение.ИДФайлаЭлектронногоПисьма) Тогда + УдалитьПрисоединенныйФайл(Вложение.Ссылка); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + СохранитьКартинкиФорматированногоДокументаКакПрисоединенныеФайлы(ТекущийОбъект.Ссылка, + ТекущийОбъект.ТипТекстаПисьма, ПараметрыЗаписи.ВложенияHTML, УникальныйИдентификатор); + + Индекс = Вложения.Количество() - 1; + Пока Индекс >= 0 Цикл + СтрокаТаблицыВложений = ШаблоныСообщений.СтрокаВложений(Вложения.Получить(Индекс)); + Если СтрокаТаблицыВложений.Статус = "ВнешнийУдаляемый" Тогда + Если Не СтрокаТаблицыВложений.Ссылка.Пустая() Тогда + УдалитьПрисоединенныйФайл(СтрокаТаблицыВложений.Ссылка); + КонецЕсли; + Если ПустаяСтрока(СтрокаТаблицыВложений.Реквизит) Тогда + Вложения.Удалить(Индекс) + Иначе + СтрокаТаблицыВложений.Статус = ""; + СтрокаТаблицыВложений.Выбрано = 2; + КонецЕсли; + ИначеЕсли СтрокаТаблицыВложений.Статус = "ВнешнийНовый" Тогда + ИмяФайла = ?(ПустаяСтрока(СтрокаТаблицыВложений.Реквизит), СтрокаТаблицыВложений.Представление, СтрокаТаблицыВложений.Реквизит); + СсылкаНаФайл = ШаблоныСообщенийСлужебный.ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(ТекущийОбъект.Ссылка, СтрокаТаблицыВложений, ИмяФайла, 0); + СтрокаТаблицыВложений.Ссылка = СсылкаНаФайл; + СтрокаТаблицыВложений.Статус ="ВнешнийПрисоединенный"; + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект); + ОтображениеЭлементовФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Запись_ШаблоныСообщений", Объект.Ссылка, ЭтотОбъект); + + Если ПустаяСтрока(Объект.ПолноеИмяТипаПараметраВводаНаОсновании) Тогда + Объект.Назначение = ШаблоныСообщенийКлиентСервер.ОбщийПредставление(); + Объект.ПредназначенДляВводаНаОсновании = Ложь; + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + УстановитьВыборФормата(); + СформироватьПредставлениеВыбранныхФорматов(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_Файл" И ТипЗнч(Источник) = Тип("СправочникСсылка.ШаблоныСообщенийПрисоединенныеФайлы") Тогда + ОбновитьСписокПечатныхФорм(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПолноеИмяТипаПараметраВводаНаОснованииПриИзменении(Элемент) + Если ПустаяСтрока(Объект.ПолноеИмяТипаПараметраВводаНаОсновании) Тогда + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(); + КонецЕсли; + Объект.ПредназначенДляВводаНаОсновании = (Объект.ПолноеИмяТипаПараметраВводаНаОсновании <> ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий()); + Объект.Назначение = Элементы.ПолноеИмяТипаПараметраВводаНаОсновании.ТекстРедактирования; + СформироватьСписокРеквизитовИПечатныхФорм(); +КонецПроцедуры + +&НаКлиенте +Процедура ПолноеИмяТипаПараметраВводаНаОснованииОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ВнешняяОбработкаПриИзменении(Элемент) + ОтображениеЭлементовФормы(); +КонецПроцедуры + +&НаКлиенте +Процедура ФорматВложенийНажатие(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатьюСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюСлужебныйКлиент"); + Оповещение = Новый ОписаниеОповещения("ФорматВложенийНажатиеЗавершение", ЭтотОбъект); + МодульУправлениеПечатьюСлужебныйКлиент.ОткрытьФормуВыбораФорматаВложений(ВыбранныеНастройкиФормата(), Оповещение); + КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ТелоПисьмаВHTMLПриИзменении(Элемент) + ТелоПисьмаВHTML.ПолучитьHTML(Объект.ТекстШаблонаПисьмаHTML, Новый Структура); +КонецПроцедуры + +&НаКлиенте +Процедура ТелоСообщенияОбычныйТекстПриИзменении(Элемент) + Объект.ТекстШаблонаПисьма = ТелоСообщенияОбычныйТекст.ПолучитьТекст(); +КонецПроцедуры + +&НаКлиенте +Процедура ТелоСообщенияОбычныйТекстSMSПриИзменении(Элемент) + Объект.ТекстШаблонаSMS = ТелоСообщенияОбычныйТекст.ПолучитьТекст(); + ТелоСообщенияОбычныйТекст.УстановитьТекст(Объект.ТекстШаблонаSMS); // Тех. ограничение SMS 1024 символа. +КонецПроцедуры + +&НаКлиенте +Процедура АвторПриИзменении(Элемент) + Объект.ТолькоДляАвтора = ЗначениеЗаполнено(Объект.Автор); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыВложения + +&НаКлиенте +Процедура ВложенияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Отказ = Истина; + Если Не Копирование Тогда + ДобавитьВложениеВыполнить(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ВложенияПередУдалением(Элемент, Отказ) + УдалитьВложениеВыполнить(); + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ВложенияПриАктивизацииСтроки(Элемент) + + ТекущиеДанные = Элементы.Вложения.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.Статус = "ПечатнаяФорма" Или ЗначениеЗаполнено(ТекущиеДанные.Реквизит) Тогда + Элементы.ВложенияКонтекстноеМенюУдалить.Доступность = Ложь; + Элементы.ВложенияКонтекстноеМенюИзменитьВложение.Доступность = Ложь; + Элементы.ВложенияИзменить.Доступность = Ложь; + Элементы.ВложенияУдалить.Доступность = Ложь; + Элементы.ВложенияСкопироватьВложение.Доступность = Ложь; + Элементы.ВложенияКонтекстноеМенюСкопироватьВложение.Доступность = Ложь; + Иначе + Элементы.ВложенияКонтекстноеМенюУдалить.Доступность = Истина; + Элементы.ВложенияКонтекстноеМенюИзменитьВложение.Доступность = Истина; + Элементы.ВложенияИзменить.Доступность = Ложь; + Элементы.ВложенияУдалить.Доступность = Истина; + Элементы.ВложенияСкопироватьВложение.Доступность = Истина; + Элементы.ВложенияКонтекстноеМенюСкопироватьВложение.Доступность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВложенияВыбранПриИзменении(Элемент) + ТекущиеДанные = Элементы.Вложения.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ПустаяСтрока(ТекущиеДанные.Реквизит) Тогда + Если ТекущиеДанные.Выбрано = 2 Тогда + ТекущиеДанные.Выбрано = 0; + КонецЕсли; + Иначе + Если ТекущиеДанные.Выбрано = 0 Тогда + ТекущиеДанные.Выбрано = 2; + ДобавитьВложениеВыполнить(ТекущиеДанные.Идентификатор); + ИначеЕсли ТекущиеДанные.Выбрано = 2 Тогда + ТекущиеДанные.Статус = "ВнешнийУдаляемый"; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыРеквизиты + +&НаКлиенте +Процедура РеквизитыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Отказ = Истина; + Если ИспользоватьПроизвольныеПараметры Тогда + ДополнительныеПараметры = ДополнительныеПараметрыДобавленияРеквизитов(); + ОповещениеОЗакрытие = Новый ОписаниеОповещения("ПослеЗакрытияФормыПараметра", ЭтотОбъект, ДополнительныеПараметры); + ПараметрыФормы = Новый Структура("СписокПараметров, ПолноеИмяТипаПараметраВводаНаОсновании", Объект.Параметры, Объект.ПолноеИмяТипаПараметраВводаНаОсновании); + ОткрытьФорму("Справочник.ШаблоныСообщений.Форма.ПроизвольныйПараметр", ПараметрыФормы,,,,, ОповещениеОЗакрытие); + КонецЕсли; +КонецПроцедуры + +// Возвращаемое значение: +// Структура: +// * Добавление - Булево +// +&НаКлиенте +Функция ДополнительныеПараметрыДобавленияРеквизитов() + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("Добавление", Истина); + Возврат ДополнительныеПараметры; + +КонецФункции + +&НаКлиенте +Процедура РеквизитыПриАктивизацииСтроки(Элемент) + ТекущиеДанные = Элементы.Реквизиты.ТекущиеДанные; + ДоступностьФорматированногоВывода = Ложь; + Если ТекущиеДанные <> Неопределено Тогда + Если ТекущиеДанные.ПроизвольныйПараметр Тогда + Элементы.РеквизитыКонтекстноеМенюУдалить.Доступность = Истина; + Элементы.Удалить.Доступность = Истина; + Элементы.РеквизитыКонтекстноеМенюИзменить.Доступность = Истина; + Иначе + Элементы.РеквизитыКонтекстноеМенюУдалить.Доступность = Ложь; + Элементы.Удалить.Доступность = Ложь; + Элементы.РеквизитыКонтекстноеМенюИзменить.Доступность = Ложь; + КонецЕсли; + Если ТекущиеДанные.ПолучитьЭлементы().Количество() > 0 Тогда + ИзменитьДоступностьКонтекстногоМенюРеквизитов(Ложь); + Иначе + ИзменитьДоступностьКонтекстногоМенюРеквизитов(Истина); + Для каждого Тип Из ТекущиеДанные.Тип.Типы() Цикл + Если Тип = Тип("Дата") Или Тип = Тип("Число") Или Тип = Тип("Булево") Тогда + ДоступностьФорматированногоВывода = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + Если Элементы.ФорматОтображенияРеквизита.Доступность <> ДоступностьФорматированногоВывода Тогда + Элементы.ФорматОтображенияРеквизита.Доступность = ДоступностьФорматированногоВывода; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РеквизитыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Реквизит = Реквизиты.НайтиПоИдентификатору(ВыбраннаяСтрока); + ЭлементДерева = Реквизиты.НайтиПоИдентификатору(Реквизит.ПолучитьИдентификатор()); + Если ЭлементДерева.ПолучитьЭлементы().Количество() = 0 Тогда + ДобавитьВТекстСообщенияПараметр(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РеквизитыНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение) + + ПеретаскиваемыеОбъекты = ПараметрыПеретаскивания.Значение; + ТекстДляВставки = ""; + Разделитель = ""; + Для каждого ПеретаскиваемыйОбъект Из ПеретаскиваемыеОбъекты Цикл + ЭлементДерева = Реквизиты.НайтиПоИдентификатору(ПеретаскиваемыйОбъект); + Если ЭлементДерева.ПолучитьЭлементы().Количество() = 0 Тогда + ФорматВывода = ?(ПустаяСтрока(ЭлементДерева.Формат), "", "{" + ЭлементДерева.Формат +"}"); + ТекстДляВставки = ТекстДляВставки + Разделитель + "[" + ЭлементДерева.ПолноеПредставление + ФорматВывода + "]"; + Разделитель = " "; + КонецЕсли; + КонецЦикла; + ПараметрыПеретаскивания.Значение = ТекстДляВставки; + +КонецПроцедуры + +&НаКлиенте +Процедура РеквизитыПередУдалением(Элемент, Отказ) + Если ИспользоватьПроизвольныеПараметры Тогда + + ТекущиеДанные = Элементы.Реквизиты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено ИЛИ НЕ ТекущиеДанные.ПроизвольныйПараметр Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + Если СтрНачинаетсяС(ТекущиеДанные.Имя, ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров()) Тогда + Отбор = Новый Структура("ИмяПараметра", Сред(ТекущиеДанные.Имя, СтрДлина(ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров()) + 2)); + Иначе + Отбор = Новый Структура("ИмяПараметра", ТекущиеДанные.Имя); + КонецЕсли; + НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Объект.Параметры.Удалить(НайденныеСтроки[0]); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЭлектронноеПисьмоОбычныйТекст(Команда) + Если Не Элементы.ФормаЭлектронноеПисьмоОбычныйТекст.Пометка Тогда + УстановитьЭлектронноеПисьмоОбычныйТекст(Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЭлектронноеПисьмоHTML(Команда) + Если Не Элементы.ФормаЭлектронноеПисьмоHTML.Пометка Тогда + УстановитьЭлектронноеПисьмоHTML(Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьШаблон(Команда) + + ОчиститьСообщения(); + ИнформацияОПроверке = ОбработатьТекстШаблона(); + + Если ИнформацияОПроверке.Успех Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Шаблон заполнен корректно'")); + Иначе + ОбщегоНазначенияКлиент.СообщитьПользователю(ИнформацияОПроверке.ТекстОшибки); + КонецЕсли; + +КонецПроцедуры + + +&НаКлиенте +Процедура ВнешнейОбработкой(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + Оповещение = Новый ОписаниеОповещения("ПослеВыбораДополнительныеОтчетыИОбработки", ЭтотОбъект); + ИмяВида = "ВидыДополнительныхОтчетовИОбработок.ШаблонСообщения"; + ЗначениеОтбора = Новый Структура("Вид", ПредопределенноеЗначение("Перечисление." + ИмяВида)); + ПараметрыФормы = Новый Структура("Отбор", ЗначениеОтбора); + ИмяФормыДополнительныеОтчетыИОбработки = "ДополнительныеОтчетыИОбработки.ФормаВыбора"; + ОткрытьФорму("Справочник." + ИмяФормыДополнительныеОтчетыИОбработки, ПараметрыФормы, ЭтотОбъект,,,, Оповещение); + КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ПоШаблону(Команда) + + Элементы.Страницы.ТекущаяСтраница = Элементы.СообщениеЭлектронноеПисьмоHTML; + + Элементы.ГруппаВнешняяОбработка.Видимость = Ложь; + Элементы.ГруппаПараметры.Видимость = Истина; + Элементы.ФормаПоШаблону.Пометка = Истина; + Элементы.ФормаВнешнейОбработкой.Пометка = Ложь; + Элементы.ТемаПисьма.ТолькоПросмотр = Ложь; + Объект.ШаблонПоВнешнейОбработке = Ложь; + Объект.ВнешняяОбработка = Неопределено; + ОтображениеЭлементовФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьФорматВывода(Команда) + + ТекущиеДанные = Элементы.Реквизиты.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + ДополнительныеПараметры = Новый Структура("ИдентификаторСтроки", ТекущиеДанные.ПолучитьИдентификатор()); + Обработчик = Новый ОписаниеОповещения("ПослеВыбораФорматаРеквизита", ЭтотОбъект, ДополнительныеПараметры); + + Диалог = Новый КонструкторФорматнойСтроки; + Диалог.ДоступныеТипы = ТекущиеДанные.Тип; + Диалог.Текст = ТекущиеДанные.Формат; + Диалог.Показать(Обработчик); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораФорматаРеквизита(Результат, ДополнительныеПараметры) Экспорт + Если Результат <> Неопределено Тогда + Реквизит = Реквизиты.НайтиПоИдентификатору(ДополнительныеПараметры.ИдентификаторСтроки); + Если Реквизит <> Неопределено Тогда + Реквизит.Формат = Результат; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьПараметрВТекстСообщения(Команда) + + ДобавитьВТекстСообщенияПараметр(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРеквизит(Команда) + + ТекущиеДанные = Элементы.Реквизиты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ИспользоватьПроизвольныеПараметры И ТекущиеДанные.ПроизвольныйПараметр Тогда + ИдентификаторыСтроки = ТекущиеДанные.ПолучитьИдентификатор(); + ДополнительныеПараметры = Новый Структура("Добавление, ВыбраннаяСтрока", Ложь, ИдентификаторыСтроки); + ПараметрыФормы = Новый Структура("ИмяПараметра, ПредставлениеПараметра, ОписаниеТипа", ТекущиеДанные.Имя, ТекущиеДанные.Представление, ТекущиеДанные.Тип); + ПараметрыФормы.Вставить("СписокПараметров", Объект.Параметры); + ПараметрыФормы.Вставить("ПолноеИмяТипаПараметраВводаНаОсновании", Объект.ПолноеИмяТипаПараметраВводаНаОсновании); + + ОповещениеОЗакрытие = Новый ОписаниеОповещения("ПослеЗакрытияФормыПараметра", ЭтотОбъект, ДополнительныеПараметры); + ОткрытьФорму("Справочник.ШаблоныСообщений.Форма.ПроизвольныйПараметр", ПараметрыФормы,,,,, ОповещениеОЗакрытие); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьПараметрВТему(Команда) + + ТекущиеДанные = Элементы.Реквизиты.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + ФорматВывода = ?(ПустаяСтрока(ТекущиеДанные.Формат), "", "{" + ТекущиеДанные.Формат +"}"); + НачалоПараметра = ?(Прав(Объект.ТемаПисьма, 1) = " ", "[", " ["); + Объект.ТемаПисьма = Объект.ТемаПисьма + НачалоПараметра + ТекущиеДанные.ПолноеПредставление + ФорматВывода + "]"; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьВложение(Команда) + + ТекущиеДанные = Элементы.Вложения.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущийИдентификаторВКоллекции = Элементы.Вложения.ТекущаяСтрока; + + Если ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.ШаблоныСообщенийПрисоединенныеФайлы.ПустаяСсылка") Тогда + ДополнительныеПараметры = Новый Структура("ТекущийИндексВКоллекции", ТекущийИдентификаторВКоллекции); + ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ИзменитьВложениеЗавершение", ЭтотОбъект, ДополнительныеПараметры); + ТекстВопроса = НСтр("ru = 'Свойства файла доступны только после его записи. Записать?'"); + ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстВопроса, РежимДиалогаВопрос.ДаНет); + Иначе + ОткрытьСвойстваВложения(ТекущийИдентификаторВКоллекции); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СкопироватьВложение(Команда) + ТекущиеДанные = Элементы.Вложения.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Идентификатор = Элементы.Вложения.ТекущаяСтрока; + + Если ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.ШаблоныСообщенийПрисоединенныеФайлы.ПустаяСсылка") Тогда + ДополнительныеПараметры = Новый Структура("ТекущийИндексВКоллекции", Идентификатор); + ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("СкопироватьВложениеЗавершение", ЭтотОбъект, ДополнительныеПараметры); + ТекстВопроса = НСтр("ru = 'Файл возможно скопировать только после записи шаблона сообщения. Записать?'"); + ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстВопроса, РежимДиалогаВопрос.ДаНет); + Иначе + СкопироватьФайлВложения(Идентификатор); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Параметры: +// ОписаниеПараметра - Структура +// ДополнительныеПараметры - см. ДополнительныеПараметрыДобавленияРеквизитов +// +&НаКлиенте +Процедура ПослеЗакрытияФормыПараметра(ОписаниеПараметра, ДополнительныеПараметры) Экспорт + Если ТипЗнч(ОписаниеПараметра) = Тип("Структура") Тогда + Модифицированность = Истина; + Если ДополнительныеПараметры.Добавление Тогда + ДобавитьПроизвольныйПараметр(ОписаниеПараметра); + Иначе + Реквизит = Реквизиты.НайтиПоИдентификатору(ДополнительныеПараметры.ВыбраннаяСтрока); + Если СтрНачинаетсяС(Реквизит.Имя, ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров()) Тогда + Отбор = Новый Структура("ИмяПараметра", Сред(Реквизит.Имя, СтрДлина(ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров()) + 2)); + Иначе + Отбор = Новый Структура("ИмяПараметра", Реквизит.Имя); + КонецЕсли; + НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Объект.Параметры.Удалить(НайденныеСтроки[0]); + КонецЕсли; + ДобавитьПроизвольныйПараметр(ОписаниеПараметра); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьДоступностьКонтекстногоМенюРеквизитов(НовоеЗначение) + + Если Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщения.Доступность <> НовоеЗначение Тогда + Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщения.Доступность = НовоеЗначение; + Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТему.Доступность = НовоеЗначение; + Элементы.ДобавитьПараметрВТему.Доступность = НовоеЗначение; + Элементы.РеквизитыДобавитьПараметрВТекстСообщения.Доступность = НовоеЗначение; + Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияДляSMS.Доступность = НовоеЗначение; + Элементы.РеквизитыМенюДобавитьПараметрВТекстСообщенияSMS.Доступность = НовоеЗначение; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ВыбранныеНастройкиФормата() + + ФорматыСохранения = Новый Массив; + + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + Если ВыбранныйФормат.Пометка Тогда + ФорматыСохранения.Добавить(ТипФайлаТабличногоДокумента[ВыбранныйФормат.Значение]); + КонецЕсли; + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("УпаковатьВАрхив", Объект.УпаковатьВАрхив); + Результат.Вставить("ФорматыСохранения", ФорматыСохранения); + Результат.Вставить("Получатели", Новый Массив); + Результат.Вставить("ПереводитьИменаФайловВТранслит", Объект.ТранслитерироватьИменаФайлов); + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура УстановитьВыборФормата(Знач ФорматыСохранения = Неопределено) + + Если Объект.ПредназначенДляSMS Тогда + Возврат; + КонецЕсли; + + ЕстьВыбранныйФормат = Ложь; + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + Если ФорматыСохранения <> Неопределено Тогда + ВыбранныйФормат.Пометка = ФорматыСохранения.Найти(ВыбранныйФормат.Значение) <> Неопределено; + КонецЕсли; + + Если ВыбранныйФормат.Пометка Тогда + ЕстьВыбранныйФормат = Истина; + КонецЕсли; + КонецЦикла; + + Если Не ЕстьВыбранныйФормат Тогда + ВыбранныеФорматыСохранения[0].Пометка = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ФорматВложенийНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт + + РезультатВыбораФорматов = Результат; + Если РезультатВыбораФорматов <> КодВозвратаДиалога.Отмена И РезультатВыбораФорматов <> Неопределено Тогда + УстановитьВыборФормата(РезультатВыбораФорматов.ФорматыСохранения); + Объект.УпаковатьВАрхив = РезультатВыбораФорматов.УпаковатьВАрхив; + Объект.ТранслитерироватьИменаФайлов = РезультатВыбораФорматов.ПереводитьИменаФайловВТранслит; + СформироватьПредставлениеВыбранныхФорматов(); + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СформироватьПредставлениеВыбранныхФорматов() + + ФорматПечатныхФорм = ""; + КоличествоФорматов = 0; + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + Если ВыбранныйФормат.Пометка Тогда + Если Не ПустаяСтрока(ФорматПечатныхФорм) Тогда + ФорматПечатныхФорм = ФорматПечатныхФорм + ", "; + КонецЕсли; + ФорматПечатныхФорм = ФорматПечатныхФорм + ВыбранныйФормат.Представление; + КоличествоФорматов = КоличествоФорматов + 1; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ДобавитьПроизвольныйПараметр(ОписаниеПараметра) + НоваяПараметр = Объект.Параметры.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяПараметр, ОписаниеПараметра); + + МассивТипов = Новый Массив; + МассивТипов.Добавить(ОписаниеПараметра.ТипПараметра); + ОписаниеТипа = Новый ОписаниеТипов(МассивТипов); + НоваяПараметр.ОписаниеТипа = ОписаниеТипа; + + СформироватьСписокРеквизитовИПечатныхФорм(); +КонецПроцедуры + +&НаСервере +Процедура ИнициализироватьНовыйШаблонСообщений(Знач НастройкиШаблоновСообщений) + + ВидСообщения = Параметры.ВидСообщения; + + Если ЗначениеЗаполнено(Параметры.ПолноеИмяТипаОснования) + И ШаблоныСообщенийСлужебный.ОбъектЯвляетсяПредметомШаблона(Параметры.ПолноеИмяТипаОснования) Тогда + + // Контекстный вызов + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = Параметры.ПолноеИмяТипаОснования; + Если Не Параметры.МожноМенятьНазначение Тогда + Элементы.ГруппаНазначение.Видимость = Ложь; + КонецЕсли; + + Объект.ПредназначенДляВводаНаОсновании = Истина; + + ИмяВНазначение = Параметры.ПолноеИмяТипаОснования; + НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Представление"); + Если НазначениеШаблона = Неопределено Тогда + НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Имя"); + КонецЕсли; + Если НазначениеШаблона <> Неопределено Тогда + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = НазначениеШаблона.Имя; + Объект.Назначение = НазначениеШаблона.Представление; + Иначе + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ИмяВНазначение; + Объект.Назначение = ИмяВНазначение; + КонецЕсли; + + ИначеЕсли Параметры.ПараметрыВыбора.Количество() > 0 Тогда + + ИмяВНазначение = ?(Параметры.ПараметрыВыбора.Свойство("Назначение"), Параметры.ПараметрыВыбора.Назначение, ""); + + Если Параметры.ПараметрыВыбора.Свойство("ПолноеИмяТипаПараметраВводаНаОсновании") Тогда + ИмяВНазначение = Параметры.ПараметрыВыбора.ПолноеИмяТипаПараметраВводаНаОсновании; + КонецЕсли; + + Если ЗначениеЗаполнено(ИмяВНазначение) Тогда + НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Представление"); + Если НазначениеШаблона = Неопределено Тогда + НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Имя"); + КонецЕсли; + Если НазначениеШаблона <> Неопределено Тогда + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = НазначениеШаблона.Имя; + Объект.Назначение = НазначениеШаблона.Представление; + Объект.ПредназначенДляВводаНаОсновании = Истина; + Элементы.ГруппаНазначение.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + Если Параметры.ПараметрыВыбора.Свойство("ПредназначенДляЭлектронныхПисем") + И Параметры.ПараметрыВыбора.ПредназначенДляЭлектронныхПисем Тогда + ВидСообщения = "Письмо" + ИначеЕсли Параметры.ПараметрыВыбора.Свойство("ПредназначенДляSMS") + И Параметры.ПараметрыВыбора.ПредназначенДляSMS Тогда + ВидСообщения = "СообщениеSMS" + КонецЕсли; + + ИначеЕсли Параметры.Основание = Неопределено Тогда + + Объект.ПредназначенДляВводаНаОсновании = Ложь; + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ШаблоныСообщенийКлиентСервер.ИдентификаторОбщий(); + + КонецЕсли; + + Если Параметры.Основание = Неопределено Тогда + + Если ВидСообщения = "СообщениеSMS" Тогда + Объект.ПредназначенДляSMS = Истина; + Объект.ПредназначенДляЭлектронныхПисем = Ложь; + Иначе + Объект.ПредназначенДляSMS = Ложь; + Объект.ПредназначенДляЭлектронныхПисем = Истина; + Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML; + КонецЕсли; + Объект.ТолькоДляАвтора = Ложь; + + Иначе + + ШаблонСформирован = Ложь; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда + + МодульУправлениеЭлектроннойПочтой = ОбщегоНазначения.ОбщийМодуль("УправлениеЭлектроннойПочтой"); + Если МодульУправлениеЭлектроннойПочтой.ЯвляетсяПисьмомИлиСообщением(Параметры.Основание) Тогда + ШаблонНаОснованииДокументаВзаимодействия(); + ШаблонСформирован = Истина; + КонецЕсли; + + КонецЕсли; + + Если Не ШаблонСформирован Тогда + + Если Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + ТелоПисьмаВHTML.УстановитьHTML(Объект.ТекстШаблонаПисьмаHTML, Новый Структура); + Иначе + ТелоСообщенияОбычныйТекст.УстановитьТекст(Объект.ТекстШаблонаПисьма); + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Параметры.Свойство("ВладелецШаблона", Объект.ВладелецШаблона); + +КонецПроцедуры + +&НаСервере +Процедура ШаблонНаОснованииДокументаВзаимодействия() + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") + Или Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + Возврат; + КонецЕсли; + + МодульУправлениеЭлектроннойПочтой = ОбщегоНазначения.ОбщийМодуль("УправлениеЭлектроннойПочтой"); + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + МодульРаботаСФайламиКлиентСервер = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиКлиентСервер"); + + ВложенияПисьма = МодульУправлениеЭлектроннойПочтой.ВложенияЭлектронногоПисьма(Параметры.Основание, УникальныйИдентификатор); + + ДополнительныеПараметрыФайла = МодульРаботаСФайламиКлиентСервер.ПараметрыДанныхФайла(); + ДополнительныеПараметрыФайла.ИдентификаторФормы = УникальныйИдентификатор; + ДополнительныеПараметрыФайла.ВызыватьИсключение = Ложь; + + Для каждого Вложение Из ВложенияПисьма Цикл + Если ПустаяСтрока(Вложение.ИДФайлаЭлектронногоПисьма) Тогда + + Расширение = ПолучитьРасширениеФайла(Вложение.Наименование); + НоваяСтрока = Вложения.Добавить(); + НоваяСтрока.Статус = "ВнешнийНовый"; + НоваяСтрока.Выбрано = 1; + НоваяСтрока.Представление = Вложение.Наименование; + НоваяСтрока.Идентификатор = Вложение.Наименование; + НоваяСтрока.ИндексКартинки = ПолучитьИндексПиктограммыФайла(Расширение); + НоваяСтрока.Имя = МодульРаботаСФайлами.ДанныеФайла(Вложение.Ссылка, + ДополнительныеПараметрыФайла).СсылкаНаДвоичныеДанныеФайла; + КонецЕсли; + КонецЦикла; + + Если Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + + ПараметрШаблона = Новый Структура("Шаблон, УникальныйИдентификатор"); + ПараметрШаблона.Шаблон = Объект.Ссылка; + ПараметрШаблона.УникальныйИдентификатор = УникальныйИдентификатор; + Сообщение = ШаблоныСообщенийСлужебный.КонструкторСообщения(); + Сообщение.Текст = Объект.ТекстШаблонаПисьмаHTML; + ШаблоныСообщенийСлужебный.ОбработатьHTMLДляФорматированногоДокумента(ПараметрШаблона, Сообщение, Истина, ВложенияПисьма); + СтруктураВложений = Новый Структура(); + Для каждого ВложениеВHTML Из Сообщение.Вложения Цикл + Изображение = Новый Картинка(ПолучитьИзВременногоХранилища(ВложениеВHTML.АдресВоВременномХранилище)); + СтруктураВложений.Вставить(ВложениеВHTML.Представление, Изображение); + КонецЦикла; + ТелоПисьмаВHTML.УстановитьHTML(Сообщение.Текст, СтруктураВложений); + + Иначе + ТелоСообщенияОбычныйТекст.УстановитьТекст(Объект.ТекстШаблонаПисьма); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ИнициализироватьФорматыСохранения() + + Если ВыбранныеФорматыСохранения.Количество() = 0 Тогда + Для Каждого ФорматСохранения Из СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента() Цикл + ВыбранныеФорматыСохранения.Добавить(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента), Строка(ФорматСохранения.Ссылка), Ложь, ФорматСохранения.Картинка); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьТекстШаблона(ТекущийОбъект, СписокФайлов = Неопределено) + + СписокВсехПараметров = РеквизитФормыВЗначение("Реквизиты"); + Если СписокВсехПараметров.Строки.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Если ТекущийОбъект.ПредназначенДляSMS Тогда + ТелоСообщенияОбычныйТекст.УстановитьТекст( + ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекущийОбъект.ТекстШаблонаSMS, СписокВсехПараметров, "ПараметрыВПредставление")); + + Иначе + Если ТекущийОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + УстановитьHTMLДляФорматированногоДокумента( + ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекущийОбъект.ТекстШаблонаПисьмаHTML, СписокВсехПараметров, "ПараметрыВПредставление"), ТекущийОбъект.Ссылка, СписокФайлов); + Иначе + ТелоСообщенияОбычныйТекст.УстановитьТекст( + ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекущийОбъект.ТекстШаблонаПисьма, СписокВсехПараметров, "ПараметрыВПредставление")); + КонецЕсли; + + Объект.ТемаПисьма = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекущийОбъект.ТемаПисьма, СписокВсехПараметров, "ПараметрыВПредставление"); + + КонецЕсли; + +КонецПроцедуры + + +&НаСервере +Процедура ОтображениеЭлементовФормы(ФорматаПисьма = "") + + Если Объект.ПредназначенДляSMS Тогда + СуффиксЗаголовка = НСтр("ru = 'Шаблон сообщения SMS'"); + Элементы.ФормаВидТекстаЭлектронногоПисьма.Видимость = Ложь; + Элементы.Страницы.ТекущаяСтраница = Элементы.СообщениеSMS; + Элементы.ТемаПисьма.Видимость = Ложь; + Элементы.СкрытыйЗаголовокПараметры.Видимость = Ложь; + Элементы.ГруппаВложения.Видимость = Ложь; + Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрПочта.Видимость = Ложь; + Элементы.РеквизитыМенюДобавитьПараметрПочта.Видимость = Ложь; + Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияДляSMS.Видимость = Истина; + Элементы.РеквизитыМенюДобавитьПараметрВТекстСообщенияSMS.Видимость = Истина; + Элементы.СкрытыйЗаголовокСообщениеSMS.Видимость = Истина; + Иначе + СуффиксЗаголовка = НСтр("ru = 'Шаблон сообщения электронного письма'"); + Элементы.ГруппаВложения.Видимость = Истина; + Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрПочта.Видимость = Истина; + Элементы.РеквизитыМенюДобавитьПараметрПочта.Видимость = Истина; + Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияДляSMS.Видимость = Ложь; + Элементы.РеквизитыМенюДобавитьПараметрВТекстСообщенияSMS.Видимость = Ложь; + + Если НЕ ФорматаПисьмаПредопределен(ФорматаПисьма) Тогда + Если Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + УстановитьЭлектронноеПисьмоHTML(); + Иначе + УстановитьЭлектронноеПисьмоОбычныйТекст(); + КонецЕсли; + КонецЕсли; + + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Заголовок = Объект.Наименование + " (" + СуффиксЗаголовка + ")"; + Иначе + Заголовок = СуффиксЗаголовка + " (" + НСтр("ru = 'создание'")+ ")"; + КонецЕсли; + + Если Объект.ШаблонПоВнешнейОбработке Тогда + Элементы.ГруппаНазначение.Доступность = Ложь; + Элементы.ТемаПисьма.ТолькоПросмотр = Истина; + Элементы.ГруппаВнешняяОбработка.Видимость = Истина; + Элементы.ГруппаПараметры.Видимость = Ложь; + Элементы.ФормаВнешнейОбработкой.Пометка = Истина; + Элементы.ФормаПоШаблону.Пометка = Ложь; + Элементы.ФормаПроверитьШаблон.Видимость = Ложь; + ЗаполнитьШаблонПоВнешнейОбработке(); + Иначе + Элементы.ПолноеИмяТипаПараметраВводаНаОсновании.Доступность = Истина; + Элементы.ТемаПисьма.ТолькоПросмотр = Ложь; + Элементы.ГруппаВнешняяОбработка.Видимость = Ложь; + Элементы.ГруппаПараметры.Видимость = Истина; + Элементы.ФормаВнешнейОбработкой.Пометка = Ложь; + Элементы.ФормаПоШаблону.Пометка = Истина; + Элементы.ФормаПроверитьШаблон.Видимость = Истина; + КонецЕсли; + + Элементы.ГруппаДоступ.Видимость = + НЕ ПараметрыДоступа("Изменение", Метаданные.Справочники.ШаблоныСообщений, "Ссылка").ОграничениеУсловием; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + Элементы.ФормаГруппаСообщениеФормируется.Видимость = МодульДополнительныеОтчетыИОбработки.ИспользуютсяДополнительныеОтчетыИОбработки(); + Иначе + Элементы.ФормаГруппаСообщениеФормируется.Видимость = Ложь; + КонецЕсли; + + Если НЕ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + Элементы.ГруппаНастройкиВложений.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ФорматаПисьмаПредопределен(Знач ФорматаПисьма) + + Если ЗначениеЗаполнено(ФорматаПисьма) Тогда + Если ФорматаПисьма = "ТолькоHTML" Тогда + Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML; + УстановитьЭлектронноеПисьмоHTML(); + Элементы.ФормаЭлектронноеПисьмоHTML.Видимость = Ложь; + Возврат Истина; + ИначеЕсли ФорматаПисьма = "ТолькоОбычныйТекст" Тогда + Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст; + УстановитьЭлектронноеПисьмоОбычныйТекст(); + Элементы.ФормаЭлектронноеПисьмоHTML.Видимость = Ложь; + Возврат Истина; + КонецЕсли; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +&НаСервере +Процедура УстановитьHTMLДляФорматированногоДокумента(ТекстШаблонаПисьмаHTML, СсылкаНаТекущийОбъект, СписокФайлов = Неопределено) + + ПараметрШаблона = Новый Структура("Шаблон, УникальныйИдентификатор"); + ПараметрШаблона.Шаблон = СсылкаНаТекущийОбъект; + ПараметрШаблона.УникальныйИдентификатор = УникальныйИдентификатор; + Сообщение = ШаблоныСообщенийСлужебный.КонструкторСообщения(); + Сообщение.Текст = ТекстШаблонаПисьмаHTML; + ШаблоныСообщенийСлужебный.ОбработатьHTMLДляФорматированногоДокумента(ПараметрШаблона, Сообщение, Истина, СписокФайлов); + СтруктураВложений = Новый Структура(); + Если СписокФайлов <> Неопределено Тогда + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ИдентификаторФормы", УникальныйИдентификатор); + ДополнительныеПараметры.Вставить("ВызыватьИсключение", Ложь); + + Для каждого Вложение Из СписокФайлов Цикл + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + Если ЗначениеЗаполнено(Вложение.ИДФайлаЭлектронногоПисьма) Тогда + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + СведенияОФайле = МодульРаботаСФайлами.ДанныеФайла(Вложение, ДополнительныеПараметры); + Изображение = Новый Картинка(ПолучитьИзВременногоХранилища(СведенияОФайле.СсылкаНаДвоичныеДанныеФайла)); + СтруктураВложений.Вставить(СведенияОФайле.Наименование, Изображение); + КонецЕсли; + КонецЕсли; + КонецЦикла; + Иначе + Для каждого ВложениеВHTML Из Сообщение.Вложения Цикл + Изображение = Новый Картинка(ПолучитьИзВременногоХранилища(ВложениеВHTML.АдресВоВременномХранилище)); + СтруктураВложений.Вставить(ВложениеВHTML.Представление, Изображение); + КонецЦикла; + КонецЕсли; + ТелоПисьмаВHTML.УстановитьHTML(Сообщение.Текст, СтруктураВложений); + +КонецПроцедуры + +// бизнес-логика + +&НаСервере +Процедура СформироватьСписокРеквизитовИПечатныхФорм() + + ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(Объект); + СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона); + ПараметрыШаблона.ПараметрыСообщения = ПараметрыСообщения; + + Реквизиты.ПолучитьЭлементы().Очистить(); + СписокРеквизитов = РеквизитФормыВЗначение("Реквизиты"); + ЗаполнитьДеревоРеквизитов(СписокРеквизитов, СведенияОШаблоне.Реквизиты); + ЗаполнитьДеревоРеквизитов(СписокРеквизитов, СведенияОШаблоне.ОбщиеРеквизиты, Истина); + ЗначениеВРеквизитФормы(СписокРеквизитов, "Реквизиты"); + + СформироватьСписокПечатныхФорм(СведенияОШаблоне); + +КонецПроцедуры + +&НаСервере +Процедура СформироватьСписокПечатныхФорм(СведенияОШаблоне) + + ВыбранныеПечатныеФормыИВложения = Объект.ПечатныеФормыИВложения.Выгрузить(, "Идентификатор").ВыгрузитьКолонку("Идентификатор"); + + Отбор = Новый Структура("Статус", "ВнешнийНовый"); + НесохраненныеФайлы = Вложения.НайтиСтроки(Отбор); + Вложения.Очистить(); + + Для каждого Вложение Из СведенияОШаблоне.Вложения Цикл + + Выбрано = 0; + Если ВыбранныеПечатныеФормыИВложения.Найти(Вложение.Идентификатор) <> Неопределено Тогда + Выбрано = 1; + ИначеЕсли ЗначениеЗаполнено(Вложение.Реквизит) Тогда + Выбрано = 2; + КонецЕсли; + + НоваяСтрока = Вложения.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Вложение); + Расширение = ?(ПустаяСтрока(Вложение.ТипФайла), "mxl", Вложение.ТипФайла); + НоваяСтрока.ИндексКартинки = ПолучитьИндексПиктограммыФайла(Расширение); + НоваяСтрока.Выбрано = Выбрано; + + КонецЦикла; + + ЗаполнитьВложения(); + Для каждого НесохраненныеФайл Из НесохраненныеФайлы Цикл + Если ВыбранныеПечатныеФормыИВложения.Найти(НесохраненныеФайл.Идентификатор) = Неопределено Тогда + НоваяСтрока = Вложения.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, НесохраненныеФайл); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокПечатныхФорм() + + ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(Объект); + СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона); + + СформироватьСписокПечатныхФорм(СведенияОШаблоне); + +КонецПроцедуры + +&НаСервере +Функция ПолучитьИндексПиктограммыФайла(Расширение) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебныйКлиентСервер = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебныйКлиентСервер"); + Возврат МодульРаботаСФайламиСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение); + КонецЕсли; + + Возврат 0; + +КонецФункции + +&НаКлиенте +Функция ПолучитьИндексПиктограммыФайлаКлиент(Расширение) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебныйКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиСлужебныйКлиентСервер"); + Возврат МодульРаботаСФайламиСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение); + КонецЕсли; + + Возврат 0; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьДеревоРеквизитов(Приемник, Источник, ЭтоОбщиеИлиПроизвольныеРеквизиты = Неопределено) + + Для Каждого СтрокаДерева Из Источник.Строки Цикл + + Если ЭтоОбщиеИлиПроизвольныеРеквизиты = Неопределено Тогда + Если СтрокаДерева.Имя = ШаблоныСообщенийКлиентСервер.ЗаголовокПроизвольныхПараметров() + ИЛИ СтрокаДерева.Имя = ШаблоныСообщенийСлужебный.ЗаголовокОбщиеРеквизиты() Тогда + ОбщиеИлиПроизвольныеРеквизиты = Истина; + Иначе + + ОбщиеИлиПроизвольныеРеквизиты = Ложь; + КонецЕсли; + Иначе + ОбщиеИлиПроизвольныеРеквизиты = ЭтоОбщиеИлиПроизвольныеРеквизиты; + КонецЕсли; + + ИндексКартинкиЭлемент = ?(ОбщиеИлиПроизвольныеРеквизиты, 1, 3); + ИндексКартинкиУзел = ?(ОбщиеИлиПроизвольныеРеквизиты, 0, 2); + + НоваяСтрока = Приемник.Строки.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаДерева); + + Если СтрокаДерева.Строки.Количество() > 0 Тогда + НоваяСтрока.ИндексКартинки = ИндексКартинкиУзел; + ЗаполнитьДеревоРеквизитов(НоваяСтрока, СтрокаДерева, ОбщиеИлиПроизвольныеРеквизиты); + Иначе + НоваяСтрока.ИндексКартинки = ИндексКартинкиЭлемент; + КонецЕсли; + КонецЦикла; + Приемник.Строки.Сортировать("Представление", Истина); + +КонецПроцедуры + +// Вынужденная установка свойств на сервере + +&НаСервере +Процедура УстановитьЭлектронноеПисьмоHTML(ТребуетсяПереносТекста = Ложь) + + Элементы.ФормаВидТекстаЭлектронногоПисьма.Заголовок = "HTML"; + Элементы.СообщениеЭлектронноеПисьмо.Видимость = Ложь; + Элементы.СообщениеЭлектронноеПисьмоHTML.Видимость = Истина; + Элементы.Страницы.ТекущаяСтраница = Элементы.СообщениеЭлектронноеПисьмоHTML; + Элементы.ФормаЭлектронноеПисьмоОбычныйТекст.Пометка = Ложь; + Элементы.ФормаЭлектронноеПисьмоHTML.Пометка = Истина; + + Объект.ТипТекстаПисьма = ПредопределенноеЗначение("Перечисление.СпособыРедактированияЭлектронныхПисем.HTML"); + Если ТребуетсяПереносТекста Тогда + ВложенияФорматированныйДокумент = Новый Структура; + ТелоСообщенияОбычныйТекстВHTML = СтрЗаменить(ТелоСообщенияОбычныйТекст.ПолучитьТекст(), Символы.ПС, "
        "); + ТелоПисьмаВHTML.УстановитьHTML(ТелоСообщенияОбычныйТекстВHTML, ВложенияФорматированныйДокумент); + КонецЕсли; + + Элементы.СкрытыйЗаголовокПараметры.Видимость = Истина; + Элементы.СтраницыЗаголовокПараметры.ТекущаяСтраница = Элементы.СтраницаЗаголовокПараметры; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьЭлектронноеПисьмоОбычныйТекст(ТребуетсяПереносТекста = Ложь) + Элементы.ФормаВидТекстаЭлектронногоПисьма.Заголовок = НСтр("ru = 'Обычный текст'"); + Элементы.СообщениеЭлектронноеПисьмоHTML.Видимость = Ложь; + Элементы.СообщениеЭлектронноеПисьмо.Видимость = Истина; + Элементы.Страницы.ТекущаяСтраница = Элементы.СообщениеЭлектронноеПисьмо; + Элементы.ФормаЭлектронноеПисьмоОбычныйТекст.Пометка = Истина; + Элементы.ФормаЭлектронноеПисьмоHTML.Пометка = Ложь; + Объект.ТипТекстаПисьма = ПредопределенноеЗначение("Перечисление.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст"); + Если ТребуетсяПереносТекста Тогда + ШаблонОбычнымТекстом = ТелоПисьмаВHTML.ПолучитьТекст(); + ТелоСообщенияОбычныйТекст.УстановитьТекст(ШаблонОбычнымТекстом); + Объект.ТекстШаблонаПисьма = ШаблонОбычнымТекстом; + КонецЕсли; + + Элементы.СкрытыйЗаголовокПараметры.Видимость = Ложь; + Элементы.СкрытыйЗаголовокСообщениеSMS.Видимость = Ложь; + Элементы.СтраницыЗаголовокПараметры.ТекущаяСтраница = Элементы.СтраницаЗаголовокПараметры; +КонецПроцедуры + +// Вложения + +&НаКлиенте +Процедура ДобавитьВложениеВыполнить(Идентификатор = Неопределено) + + ДополнительныеПараметры = Новый Структура("Идентификатор", Идентификатор); + ОписаниеОповещение = Новый ОписаниеОповещения("ПослеВыбораФайлов", ЭтотОбъект, ДополнительныеПараметры); + + ПараметрыЗагрузкиФайла = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузкиФайла.ИдентификаторФормы = ЭтотОбъект.УникальныйИдентификатор; + ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещение, ПараметрыЗагрузкиФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораФайлов(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт + + Если ВыбранныеФайлы = Неопределено Тогда + Возврат; + КонецЕсли; + + Для Каждого ВыбранныйФайл Из ВыбранныеФайлы Цикл + + Расширение = ПолучитьРасширениеФайла(ВыбранныйФайл.Имя); + + НоваяСтрока = Вложения.Добавить(); + НоваяСтрока.Статус = "ВнешнийНовый"; + НоваяСтрока.Выбрано = 1; + НоваяСтрока.Имя = ВыбранныйФайл.Хранение; + НоваяСтрока.Представление = ВыбранныйФайл.Имя; + НоваяСтрока.Идентификатор = ВыбранныйФайл.Имя; + НоваяСтрока.ИндексКартинки = ПолучитьИндексПиктограммыФайлаКлиент(Расширение); + + КонецЦикла; + + Модифицированность = Истина; + +КонецПроцедуры + +// Получает расширение для переданного имени файла. +// +// Параметры: +// ИмяФайла - Строка - имя файла, для которого необходимо получить расширение. +// +// Возвращаемое значение: +// Строка - расширение, полученное из переданного имени файла. +// +&НаКлиентеНаСервереБезКонтекста +Функция ПолучитьРасширениеФайла(Знач ИмяФайла) + + РасширениеФайла = ""; + МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь); + Если МассивСтрок.Количество() > 1 Тогда + РасширениеФайла = МассивСтрок[МассивСтрок.Количество() - 1]; + КонецЕсли; + + Возврат РасширениеФайла; + +КонецФункции + +&НаКлиенте +Процедура ПоместитьФайлыИзЛокальнойФСВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ) + +#Если Не ВебКлиент Тогда + + Для Каждого СтрокаТаблицыВложений Из Вложения Цикл + Если СтрокаТаблицыВложений.Статус = "ВнешнийНовый" Тогда + Попытка + + Если Не СтрНачинаетсяС(СтрокаТаблицыВложений.Имя, "e1cib") Тогда + Данные = Новый ДвоичныеДанные(СтрокаТаблицыВложений.Имя); + СтрокаТаблицыВложений.Имя = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор); + КонецЕсли; + + Исключение + ОбщегоНазначенияКлиент.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),, "Вложения",, Отказ); + КонецПопытки; + КонецЕсли; + КонецЦикла; + +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьСвойстваВложения(Идентификатор) + + ТекущиеДанные = Вложения.НайтиПоИдентификатору(Идентификатор); + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Элементы.Вложения.ТекущаяСтрока = Идентификатор; + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.ОткрытьФормуФайла(ТекущиеДанные.Ссылка); + КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура СкопироватьФайлВложения(Идентификатор) + + ТекущиеДанные = Вложения.НайтиПоИдентификатору(Идентификатор); + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Элементы.Вложения.ТекущаяСтрока = Идентификатор; + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент"); + МодульРаботаСФайламиКлиент.СкопироватьФайл(Объект.Ссылка, ТекущиеДанные.Ссылка); + КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьВложениеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт + + Если РезультатВопроса = КодВозвратаДиалога.Да Тогда + Записать(); + ОткрытьСвойстваВложения(ДополнительныеПараметры.ТекущийИндексВКоллекции); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СкопироватьВложениеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт + + Если РезультатВопроса = КодВозвратаДиалога.Да Тогда + Если Записать() Тогда + СкопироватьФайлВложения(ДополнительныеПараметры.ТекущийИндексВКоллекции); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьВложения(ПереданныеПараметры = Неопределено) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + + СписокФайлов = Новый Массив; + МодульРаботаСФайлами.ЗаполнитьПрисоединенныеФайлыКОбъекту(Объект.Ссылка, СписокФайлов); + Для Каждого СсылкаНаФайл Из СписокФайлов Цикл + СведенияОФайле = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаФайл, "ИДФайлаЭлектронногоПисьма, ИндексКартинки, Наименование, Расширение"); + Если ПустаяСтрока(СведенияОФайле.ИДФайлаЭлектронногоПисьма) Тогда + Отбор = Новый Структура("Реквизит", СведенияОФайле.Наименование); + НайденныеСтроки = Вложения.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() = 0 Тогда + НоваяСтрока = Вложения.Добавить(); + НоваяСтрока.Представление = СведенияОФайле.Наименование + "." + СведенияОФайле.Расширение; + НоваяСтрока.ИндексКартинки = СведенияОФайле.ИндексКартинки; + НоваяСтрока.Ссылка = СсылкаНаФайл; + НоваяСтрока.Статус = "ВнешнийПрисоединенный"; + Иначе + НайденныеСтроки[0].Ссылка = СсылкаНаФайл; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + КонецЕсли +КонецПроцедуры + +&НаСервере +Функция СкопироватьВложенияИзИсточника() + + СписокФайлов = Новый Массив; // Массив из ОпределяемыйТип.ПрисоединенныйФайл + СписокОшибок = Неопределено; + ОписаниеОшибки = НСтр("ru = 'Не удалось скопировать вложение по причине: %1'"); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + МодульРаботаСФайлами.ЗаполнитьПрисоединенныеФайлыКОбъекту(Параметры.ЗначениеКопирования, СписокФайлов); + Для каждого Вложение Из СписокФайлов Цикл + Если ПустаяСтрока(Вложение.ИДФайлаЭлектронногоПисьма) Тогда + Попытка + ДанныеФайла = МодульРаботаСФайлами.ДанныеФайла(Вложение, УникальныйИдентификатор, Истина); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + + ЗаписатьОшибкуВЖурналРегистрации(ИмяСобытияШаблоныСообщений(), ИнформацияОбОшибке, НСтр("ru = 'Не удалось извлечь и записать присоединенный файл для копирования'")); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеОшибки, КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(СписокОшибок, "Вложения", ТекстОшибки, "Вложения",, ТекстОшибки); + Продолжить; + КонецПопытки; + НоваяСтрока = Вложения.Добавить(); + НоваяСтрока.Имя = ДанныеФайла.СсылкаНаДвоичныеДанныеФайла; + НоваяСтрока.Представление = Вложение.Наименование + "." + Вложение.Расширение; + НоваяСтрока.ИндексКартинки = ПолучитьИндексПиктограммыФайла(Вложение.Расширение); + НоваяСтрока.Статус = "ВнешнийНовый"; + НоваяСтрока.Идентификатор = Вложение.Описание; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(СписокОшибок); + + Возврат СписокФайлов; + +КонецФункции + +&НаКлиенте +Процедура УдалитьВложениеВыполнить() + + Вложение = Элементы.Вложения.ТекущиеДанные; + Если Вложение <> Неопределено Тогда + Если Вложение.Статус = "ВнешнийПрисоединенный" ИЛИ Вложение.Статус = "ВнешнийНовый" Тогда + Вложение.Статус = "ВнешнийУдаляемый"; + Вложение.ИндексКартинки = Вложение.ИндексКартинки + 1; + Модифицированность = Истина; + ИначеЕсли Вложение.Статус = "ВнешнийУдаляемый" Тогда + Вложение.ИндексКартинки = Вложение.ИндексКартинки - 1; + Вложение.Статус = ?(ЗначениеЗаполнено(Вложение.Ссылка), "ВнешнийПрисоединенный", "ВнешнийНовый"); + КонецЕсли; + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УдалитьПрисоединенныйФайл(ПрисоединенныйФайл) + + УстановитьПривилегированныйРежим(Истина); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ШаблоныСообщенийПрисоединенныеФайлы"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ПрисоединенныйФайл); + Блокировка.Заблокировать(); + + ОбъектВложение = ПрисоединенныйФайл.ПолучитьОбъект(); + ОбъектВложение.Заблокировать(); + + ОбъектВложение.Удалить(); + +КонецПроцедуры + +&НаСервере +Процедура ЗаменитьИменаКартинокНаИдентификаторыПочтовыхВложенийВHTML(ДокументHTML, ТаблицаСоответствий) + + Для каждого Картинка Из ДокументHTML.Картинки Цикл + + АтрибутИсточникКартинки = Картинка.Атрибуты.ПолучитьИменованныйЭлемент("src"); + НайденнаяСтрока = ТаблицаСоответствий.НайтиПоЗначению(АтрибутИсточникКартинки.ТекстовоеСодержимое); + Если НайденнаяСтрока <> Неопределено Тогда + + НовыйАтрибутКартинки = АтрибутИсточникКартинки.КлонироватьУзел(Ложь); + НовыйАтрибутКартинки.ТекстовоеСодержимое = Строка("cid:" + НайденнаяСтрока.Представление); + Картинка.Атрибуты.УстановитьИменованныйЭлемент(НовыйАтрибутКартинки); + + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Сохраняет картинки форматированного документа как присоединенные файлы объекта. +// +// Параметры: +// Ссылка - ДокументСсылка - ссылка на владельца присоединенных файлов. +// ТипТекстаПисьма - Перечисление.СпособыРедактированияЭлектронныхПисем - для определения необходимости выполнения преобразований. +// ТаблицаСоответствийИменВложенийИдентификаторам - ТаблицаЗначений - позволяет определить какому вложению +// соответствует какая картинка. +// УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы из которого выполняется сохранение. +// +&НаСервере +Процедура СохранитьКартинкиФорматированногоДокументаКакПрисоединенныеФайлы(Ссылка, ТипТекстаПисьма, + ТаблицаСоответствийИменВложенийИдентификаторам, + УникальныйИдентификатор) + + Если ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + + Для каждого Вложение Из ТаблицаСоответствийИменВложенийИдентификаторам Цикл + + ДвоичныеДанныеКартинки = Вложение.Картинка.ПолучитьДвоичныеДанные(); // ДвоичныеДанные + АдресКартинкиВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеКартинки, УникальныйИдентификатор); + ПрисоединенныйФайл = ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(Ссылка, АдресКартинкиВоВременномХранилище, + "_" + СтрЗаменить(Вложение.Представление, "-", "_"), ДвоичныеДанныеКартинки.Размер()); + + Если ПрисоединенныйФайл <> Неопределено Тогда + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ШаблоныСообщенийПрисоединенныеФайлы"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ПрисоединенныйФайл); + Блокировка.Заблокировать(); + + ПрисоединенныйФайлОбъект = ПрисоединенныйФайл.ПолучитьОбъект(); + ПрисоединенныйФайлОбъект.Заблокировать(); + + ПрисоединенныйФайлОбъект.ИДФайлаЭлектронногоПисьма = Вложение.Представление; + ПрисоединенныйФайлОбъект.Записать(); + + КонецЕсли; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(Письмо, АдресВоВременномХранилище, ИмяФайла, + Размер, КоличествоПустыхИменВоВложениях = 0) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + + ИмяФайлаДляРазбора = ИмяФайла; + РасширениеБезТочки = ПолучитьРасширениеФайла(ИмяФайлаДляРазбора); + ИмяБезРасширения = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайлаДляРазбора); + Если ПустаяСтрока(ИмяБезРасширения) Тогда + + КоличествоПустыхИменВоВложениях = КоличествоПустыхИменВоВложениях + 1; + + Иначе + ИмяБезРасширения = ?(РасширениеБезТочки = "", ИмяБезРасширения, + Лев(ИмяБезРасширения, СтрДлина(ИмяБезРасширения) - СтрДлина(РасширениеБезТочки) - 1)); + КонецЕсли; + + ПараметрыФайла = МодульРаботаСФайлами.ПараметрыДобавленияФайла(); + ПараметрыФайла.ВладелецФайлов = Письмо; + ПараметрыФайла.ИмяБезРасширения = ИмяБезРасширения; + ПараметрыФайла.РасширениеБезТочки = РасширениеБезТочки; + Возврат МодульРаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВоВременномХранилище, ""); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВложенияВыбран.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Вложения.Статус"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит; + ОтборЭлемента.ПравоеЗначение = "Внешний"; + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Вложения.Реквизит"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + + Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь); + Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВложенияПредставление.Имя); + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВложенияВыбран.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Вложения.Статус"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит; + ОтборЭлемента.ПравоеЗначение = "ВнешнийУдаляемый"; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораДополнительныеОтчетыИОбработки(Результат, ДопПараметры) Экспорт + Если Результат <> Неопределено Тогда + Элементы.ГруппаВнешняяОбработка.Видимость = Истина; + Элементы.Страницы.ТекущаяСтраница = Элементы.СообщениеВнешняяОбработка; + Элементы.ГруппаПараметры.Видимость = Ложь; + Элементы.ФормаПоШаблону.Пометка = Ложь; + Элементы.ФормаВнешнейОбработкой.Пометка = Истина; + Объект.ШаблонПоВнешнейОбработке = Истина; + Объект.ВнешняяОбработка = Результат; + ОтображениеЭлементовФормы(); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьОшибкуВЖурналРегистрации(ИмяСобытия, ИнформацияОбОшибке, ТекстСобытия) + + Комментарий = ТекстСобытия + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.ШаблоныСообщений,, Комментарий); + +КонецПроцедуры + +&НаСервере +Функция ИмяСобытияШаблоныСообщений() + + Возврат НСтр("ru = 'Шаблоны сообщений'", ОбщегоНазначения.КодОсновногоЯзыка()); + +КонецФункции + +&НаСервере +Процедура ЗаполнитьПроизвольныеПараметрыИзОбъекта(Знач ТекущийОбъект) + + Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл + Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра); + НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + НайденныеСтроки[0].ОписаниеТипа = ПараметрШаблонаТекущийОбъект.ТипПараметра.Получить(); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Внешняя обработка + +&НаСервере +Процедура ЗаполнитьШаблонПоВнешнейОбработке() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + + ОчиститьШаблон(ЭтотОбъект); + ВнешнийОбъект = МодульДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(Объект.ВнешняяОбработка); + Если Объект.ВнешняяОбработка.Вид <> Перечисления["ВидыДополнительныхОтчетовИОбработок"].ШаблонСообщения Тогда + Возврат; + КонецЕсли; + + НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек(); + СтруктураДанныхВнешнейОбработки = ВнешнийОбъект.СтруктураДанныхДляОтображенияВШаблоне(); + + ПредметШаблона = ОпределитьПредметШаблонаСообщений(СтруктураДанныхВнешнейОбработки.ПолноеИмяТипаПараметраВводаНаОсновании, НастройкиШаблоновСообщений); + + Если ПредметШаблона <> Неопределено Тогда + + Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ПредметШаблона.Имя; + Объект.Назначение = ПредметШаблона.Представление; + + Иначе + + ОписаниеОшибки = НСтр("ru = 'Предмет %1 определенный в внешней обработке не найдено. Внешняя обработка не может быть подключена.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеОшибки, СтруктураДанныхВнешнейОбработки.ПолноеИмяТипаПараметраВводаНаОсновании); + + КонецЕсли; + + Объект.ШаблонПоВнешнейОбработке = Истина; + Объект.ПредназначенДляВводаНаОсновании = Истина; + + Если СтруктураДанныхВнешнейОбработки.ПредназначенДляSMS Тогда + + ТелоСообщенияОбычныйТекст.УстановитьТекст(СтруктураДанныхВнешнейОбработки.ТекстШаблонаSMS); + Объект.ПредназначенДляSMS = Истина; + Объект.ПредназначенДляЭлектронныхПисем = Ложь; + + Иначе + + Объект.ТемаПисьма = СтруктураДанныхВнешнейОбработки.ТемаПисьма; + Объект.ТекстШаблонаПисьмаHTML = СтруктураДанныхВнешнейОбработки.ТекстШаблонаПисьмаHTML; + + Если СтруктураДанныхВнешнейОбработки.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + УстановитьЭлектронноеПисьмоHTML(Истина); + СтруктураВложения = Новый Структура; + ТелоПисьмаВHTML.УстановитьHTML(СтруктураДанныхВнешнейОбработки.ТекстШаблонаПисьмаHTML, СтруктураВложения); + Иначе + УстановитьЭлектронноеПисьмоОбычныйТекст(Истина); + ТелоСообщенияОбычныйТекст.УстановитьТекст(СтруктураДанныхВнешнейОбработки.ТекстШаблонаПисьмаHTML); + КонецЕсли; + + Объект.ПредназначенДляЭлектронныхПисем = Истина; + Объект.ПредназначенДляSMS = Ложь; + + КонецЕсли + + КонецЕсли + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ОпределитьПредметШаблонаСообщений(ИмяВНазначение, Знач НастройкиШаблоновСообщений) + + Перем НазначениеШаблона; + + НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Представление"); + Если НазначениеШаблона = Неопределено Тогда + НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Имя"); + КонецЕсли; + + Возврат НазначениеШаблона; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ОчиститьШаблон(Форма) + + Форма.Объект.Параметры.Очистить(); + Форма.Объект.ПредназначенДляЭлектронныхПисем = Истина; + Форма.Объект.ПредназначенДляSMS = Ложь; + Форма.Объект.ПредназначенДляВводаНаОсновании = Ложь; + Форма.Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ""; + Форма.Объект.ТемаПисьма = ""; + Форма.Объект.ТекстШаблонаSMS = ""; + Форма.Объект.ТекстШаблонаПисьма = ""; + Форма.Объект.ТекстШаблонаПисьмаHTML = ""; + Форма.Объект.ТипТекстаПисьма = ПредопределенноеЗначение("Перечисление.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст"); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьВТекстСообщенияПараметр() + + Если Элементы.Реквизиты.ВыделенныеСтроки <> Неопределено Тогда + Текст = ""; + Для каждого НомерСтроки Из Элементы.Реквизиты.ВыделенныеСтроки Цикл + НайденнаяСтрока = Реквизиты.НайтиПоИдентификатору(НомерСтроки); + Если НайденнаяСтрока <> Неопределено Тогда + ФорматВывода = ?(ПустаяСтрока(НайденнаяСтрока.Формат), "", "{" + НайденнаяСтрока.Формат +"}"); + Текст = Текст + "[" + НайденнаяСтрока.ПолноеПредставление + ФорматВывода + "] "; + КонецЕсли; + КонецЦикла; + Если Объект.ТипТекстаПисьма = ПредопределенноеЗначение("Перечисление.СпособыРедактированияЭлектронныхПисем.HTML") Тогда + Если ПустаяСтрока(Элементы.ТелоПисьмаВHTML.ВыделенныйТекст) Тогда + ЗакладкаДляВставкиНачало = Неопределено; + ЗакладкаДляВставкиКонец = Неопределено; + Элементы.ТелоПисьмаВHTML.ПолучитьГраницыВыделения(ЗакладкаДляВставкиНачало, ЗакладкаДляВставкиКонец); + ТелоПисьмаВHTML.Вставить(ЗакладкаДляВставкиКонец, Текст); + Иначе + Элементы.ТелоПисьмаВHTML.ВыделенныйТекст = Текст; + КонецЕсли; + Иначе + Если Объект.ПредназначенДляSMS Тогда + Элементы.ТелоСообщенияОбычныйТекстSMS.ВыделенныйТекст = Текст; + Иначе + Элементы.ТелоСообщенияОбычныйТекст.ВыделенныйТекст = Текст; + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Help/ru.html" new file mode 100644 index 00000000..e2ac4777 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/Help/ru.html" @@ -0,0 +1,16 @@ + +

        Предназначен для управления шаблонами сообщений. С помощью шаблонов можно создать "заготовки" на все случаи жизни. Большинство информационных писем и SMS сообщений являются одинаковыми для всех клиентов, а отличаются именно названиями клиентов.Поэтому использование шаблонов сообщений существенно облегчает работу с перепиской.

        +

        Открывается по ссылке Шаблоны сообщений в разделе Администрирование - Органайзер - Заметки, напоминания, анкетирование, шаблоны сообщений.

        +

        Отборы списка

        +
        • Для удобства поиска шаблонов в списке предусмотрены отборы. +
        • Можно отобрать с помощью поля Шаблон для: +
          • Электронных писем и SMS; +
          • Электронного письма; +
          • Сообщения SMS.
        • В поле Назначение можно отобрать шаблоны: +
          • Все; +
          • Общий - в программе имеется возможность сделать шаблон для любого сообщения; +
          • Можно выбрать конкретный вид шаблона, предназначенный для соответствующего вида документов.

        Ввод нового шаблона

        +
        • Нажмите кнопку Создать шаблон, выберите вид шаблона из выпадающего списка: +
          • Электронного письма; +
          • Сообщения SMS.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/ManagerModule.bsl" new file mode 100644 index 00000000..ed68fde1 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/ManagerModule.bsl" @@ -0,0 +1,323 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЗначениеРазрешено(Автор) + | ИЛИ НЕ ТолькоДляАвтора"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +// СтандартныеПодсистемы.ПодключаемыеКоманды + +// Определяет список команд создания на основании. +// +// Параметры: +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры +// +Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт + +КонецПроцедуры + +// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов. +// Добавляет в список команд создания на основании этот объект. +// +// Параметры: +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений, Неопределено - описание добавленной команды. +// +Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульСозданиеНаОсновании = ОбщегоНазначения.ОбщийМодуль("СозданиеНаОсновании"); + Команда = МодульСозданиеНаОсновании.ДобавитьКомандуСозданияНаОсновании(КомандыСозданияНаОсновании, Метаданные.Справочники.ШаблоныСообщений); + Если Команда <> Неопределено Тогда + Команда.ФункциональныеОпции = "ИспользоватьШаблоныСообщений"; + КонецЕсли; + Возврат Команда; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + + Если Параметры.Свойство("ВладелецШаблона") И ЗначениеЗаполнено(Параметры.ВладелецШаблона) Тогда + Параметры.Вставить("ВладелецШаблона", Параметры.ВладелецШаблона); + Если Параметры.Свойство("Новый") И Параметры.Новый <> Истина Тогда + Параметры.Вставить("Ключ", ШаблоныСообщенийСлужебный.ШаблонПоВладельцу(Параметры.ВладелецШаблона)); + КонецЕсли; + ВыбраннаяФорма = "Справочник.ШаблоныСообщений.ФормаОбъекта"; + СтандартнаяОбработка = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область ОбновлениеИнформационнойБазы + +// Регистрирует к обработке шаблоны сообщений. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ШаблоныСообщений.Ссылка КАК Ссылка, + | ШаблоныСообщений.ПолноеИмяТипаПараметраВводаНаОсновании КАК ПолноеИмяТипаПараметраВводаНаОсновании + |ИЗ + | Справочник.ШаблоныСообщений КАК ШаблоныСообщений + |ГДЕ + | ШаблоныСообщений.ПредназначенДляВводаНаОсновании = ИСТИНА"; + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + ШаблоныКОбработке = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка"); + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ШаблоныКОбработке); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформациейСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформациейСлужебный"); + Если МодульУправлениеКонтактнойИнформациейСлужебный.ВидыКонтактнойИнформацииОбновляются(Параметры.Очередь) Тогда + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ШаблоныСообщений"); + Возврат; + КонецЕсли; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + Если МодульДополнительныеОтчетыИОбработки.ДополнительныеОтчетыИОбработкиОбновляются(Параметры.Очередь) Тогда + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ШаблоныСообщений"); + Возврат; + КонецЕсли; + КонецЕсли; + + Шаблон = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ШаблоныСообщений"); + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + + Пока Шаблон.Следующий() Цикл + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ШаблоныСообщений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Шаблон.Ссылка); + + НачатьТранзакцию(); + Попытка + + Блокировка.Заблокировать(); + + ШаблонОбъект = Шаблон.Ссылка.ПолучитьОбъект(); + Если ШаблонОбъект = Неопределено Тогда // объект может быть уже удален в других сеансах + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Шаблон.Ссылка); + ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); + Продолжить; + КонецЕсли; + + ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(Шаблон.Ссылка); + СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона); + + МетаданныеОбъект = Метаданные.НайтиПоПолномуИмени(ПараметрыШаблона.ПолноеИмяТипаНазначения); + + Если МетаданныеОбъект = Неопределено Тогда + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Шаблон.Ссылка); + ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); + Продолжить; + КонецЕсли; + + ПараметрыДляЗамены = Новый Соответствие; + Префикс = МетаданныеОбъект.Имя + "."; + + ИдентификаторыФормулЗаполнены = Истина; + + Для каждого РеквизитОбъектаНазначения Из МетаданныеОбъект.Реквизиты Цикл + Если РеквизитОбъектаНазначения.Тип.Типы().Количество() = 1 Тогда + ТипОбъекта = Метаданные.НайтиПоТипу(РеквизитОбъектаНазначения.Тип.Типы()[0]); + Если ТипОбъекта <> Неопределено И СтрНачинаетсяС(ТипОбъекта.ПолноеИмя(), "Справочник") Тогда + МетаданныеВложенногоОбъект = Метаданные.НайтиПоПолномуИмени(ТипОбъекта.ПолноеИмя()); + ВложенныйПредмет = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ТипОбъекта.ПолноеИмя()).ПустаяСсылка(); + ПодготовитьПараметрыСвойствоИКИ(МетаданныеВложенногоОбъект, ВложенныйПредмет, + ПараметрыДляЗамены, Префикс + РеквизитОбъектаНазначения.Имя + ".", ИдентификаторыФормулЗаполнены); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Предмет = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПараметрыШаблона.ПолноеИмяТипаНазначения).ПустаяСсылка(); + ПодготовитьПараметрыСвойствоИКИ(МетаданныеОбъект, Предмет, ПараметрыДляЗамены, Префикс, ИдентификаторыФормулЗаполнены); + + СформироватьПараметрыДляЗамены(СведенияОШаблоне.ОбщиеРеквизиты.Строки, ПараметрыДляЗамены, "", ИдентификаторыФормулЗаполнены); + Если ИдентификаторыФормулЗаполнены Тогда + + Если ПараметрыШаблона.ТипШаблона = "Письмо" Тогда + + Для каждого РеквизитДляЗамены Из ПараметрыДляЗамены Цикл + ШаблонОбъект.ТемаПисьма = СтрЗаменить(ШаблонОбъект.ТемаПисьма, РеквизитДляЗамены.Ключ, РеквизитДляЗамены.Значение); + ШаблонОбъект.ТекстШаблонаПисьмаHTML = СтрЗаменить(ШаблонОбъект.ТекстШаблонаПисьмаHTML, РеквизитДляЗамены.Ключ, РеквизитДляЗамены.Значение); + ШаблонОбъект.ТекстШаблонаПисьма = СтрЗаменить(ШаблонОбъект.ТекстШаблонаПисьма, РеквизитДляЗамены.Ключ, РеквизитДляЗамены.Значение); + КонецЦикла; + + Иначе + + Для каждого РеквизитДляЗамены Из ПараметрыДляЗамены Цикл + ШаблонОбъект.ТекстШаблонаSMS = СтрЗаменить(ШаблонОбъект.ТекстШаблонаSMS, РеквизитДляЗамены.Ключ, РеквизитДляЗамены.Значение); + КонецЦикла; + + КонецЕсли; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ШаблонОбъект); + + ОбъектовОбработано = ОбъектовОбработано + 1; + Иначе + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + // Если не удалось обработать шаблон сообщения, повторяем попытку снова. + ОтменитьТранзакцию(); + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать шаблон сообщения: %1 по причине: %2'"), + Шаблон.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.Справочники.ШаблоныСообщений, Шаблон.Ссылка, ТекстСообщения); + КонецПопытки; + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ШаблоныСообщений"); + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые шаблоны сообщений (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.Справочники.ШаблоныСообщений,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию шаблонов сообщений: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +Процедура СформироватьПараметрыДляЗамены(Строки, РеквизитыДляЗамены, Префикс, ИдентификаторыФормулЗаполнены) + + Для каждого РеквизитОбъектаНазначения Из Строки Цикл + + Если РеквизитОбъектаНазначения.Тип.Типы().Количество() = 1 Тогда + ТипОбъекта = Метаданные.НайтиПоТипу(РеквизитОбъектаНазначения.Тип.Типы()[0]); + Если ТипОбъекта <> Неопределено И СтрНачинаетсяС(ТипОбъекта.ПолноеИмя(), "Справочник") Тогда + МетаданныеВложенногоОбъект = Метаданные.НайтиПоПолномуИмени(ТипОбъекта.ПолноеИмя()); + ВложенныйПредмет = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ТипОбъекта.ПолноеИмя()).ПустаяСсылка(); + ПодготовитьПараметрыСвойствоИКИ(МетаданныеВложенногоОбъект, ВложенныйПредмет, + РеквизитыДляЗамены, Префикс + РеквизитОбъектаНазначения.Имя + ".", ИдентификаторыФормулЗаполнены); + Продолжить; + КонецЕсли; + КонецЕсли; + + Если РеквизитОбъектаНазначения.Строки.Количество() > 0 Тогда + СформироватьПараметрыДляЗамены(РеквизитОбъектаНазначения.Строки, РеквизитыДляЗамены, Префикс, ИдентификаторыФормулЗаполнены); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ПодготовитьПараметрыСвойствоИКИ(Знач МетаданныеОбъект, Знач Предмет, Знач РеквизитыДляЗамены, Префикс, ИдентификаторыФормулЗаполнены) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + ВидыКонтактнойИнформацией = МодульУправлениеКонтактнойИнформацией.ВидыКонтактнойИнформацииОбъекта(Предмет); + Если ВидыКонтактнойИнформацией.Количество() > 0 Тогда + Для каждого ВидКонтактнойИнформацией Из ВидыКонтактнойИнформацией Цикл + + Если ПустаяСтрока(ВидКонтактнойИнформацией.ИдентификаторДляФормул) + И Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидКонтактнойИнформацией.Ссылка, "ЭтоГруппа") Тогда + ИдентификаторыФормулЗаполнены = Ложь; + Возврат; + КонецЕсли; + РеквизитыДляЗамены.Вставить("[" + Префикс + ВидКонтактнойИнформацией.Наименование + "]", "[" + Префикс + "~КИ." + ВидКонтактнойИнформацией.ИдентификаторДляФормул + "]"); + + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Свойства = Новый Массив; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + ПолучатьДопСведения = МодульУправлениеСвойствами.ИспользоватьДопСведения(Предмет); + ПолучатьДопРеквизиты = МодульУправлениеСвойствами.ИспользоватьДопРеквизиты(Предмет); + + Если ПолучатьДопРеквизиты Или ПолучатьДопСведения Тогда + Свойства = МодульУправлениеСвойствами.СвойстваОбъекта(Предмет, ПолучатьДопРеквизиты, ПолучатьДопСведения); + Для каждого Свойство Из Свойства Цикл + + Если ПустаяСтрока(Свойство.ИдентификаторДляФормул) + И Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Свойство.Ссылка, "ЭтоГруппа") Тогда + ИдентификаторыФормулЗаполнены = Ложь; + Возврат; + + КонецЕсли; + + РеквизитыДляЗамены.Вставить("[" + Префикс + Свойство.Наименование + "]", "[" + Префикс + "~Свойство." + Свойство.ИдентификаторДляФормул + "]"); + КонецЦикла; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/ObjectModule.bsl" new file mode 100644 index 00000000..91634619 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/ObjectModule.bsl" @@ -0,0 +1,114 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) + Если ДанныеЗаполнения <> Неопределено Тогда + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") + И ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее") Тогда + ЗаполнитьНаОснованииЭлектронноеПисьмоИсходящее(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка); + ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда + ЗаполнитьНаОснованииСтруктуры(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка); + КонецЕсли; + + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗаполнитьНаОснованииЭлектронноеПисьмоИсходящее(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) + + ТемаПисьма = ДанныеЗаполнения.Тема; + ТекстШаблонаПисьмаHTML = ДанныеЗаполнения.ТекстHTML; + ТекстШаблонаПисьма = ДанныеЗаполнения.Текст; + ТемаПисьма = ДанныеЗаполнения.Тема; + Наименование = ДанныеЗаполнения.Тема; + ПредназначенДляЭлектронныхПисем = Истина; + ПредназначенДляSMS = Ложь; + ПолноеИмяТипаПараметраВводаНаОсновании = НСтр("ru = 'Общий'"); + ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный"); + ТипыТекстовЭлектронныхПисемHTML = МодульРаботаСПочтовымиСообщениямиСлужебный.ТипТекстовЭлектронныхПисем("HTML"); + ТипыТекстовЭлектронныхПисемHTMLСКартинками = МодульРаботаСПочтовымиСообщениямиСлужебный.ТипТекстовЭлектронныхПисем("HTMLСКартинками"); + + Если ДанныеЗаполнения.ТипТекста = ТипыТекстовЭлектронныхПисемHTML + ИЛИ ДанныеЗаполнения.ТипТекста = ТипыТекстовЭлектронныхПисемHTMLСКартинками Тогда + ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +Процедура ЗаполнитьНаОснованииСтруктуры(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) + + ПараметрыШаблона = ШаблоныСообщений.ОписаниеПараметровШаблона(); + ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыШаблона, ДанныеЗаполнения, Истина); + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ПараметрыШаблона); + ФорматВложений = Новый ХранилищеЗначения(ПараметрыШаблона.ФорматыВложений); + + Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") + И ДанныеЗаполнения.Свойство("ПредназначенДляSMS") + И ДанныеЗаполнения.ПредназначенДляSMS Тогда + ПараметрыШаблона.ТипШаблона = "SMS"; + КонецЕсли; + + Если ЗначениеЗаполнено(ПараметрыШаблона.ВнешняяОбработка) Тогда + ШаблонПоВнешнейОбработке = Истина; + КонецЕсли; + + Если ЗначениеЗаполнено(ПараметрыШаблона.ПолноеИмяТипаНазначения) Тогда + МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПараметрыШаблона.ПолноеИмяТипаНазначения); + ПолноеИмяТипаПараметраВводаНаОсновании = ПараметрыШаблона.ПолноеИмяТипаНазначения; + Назначение= МетаданныеОбъекта.Представление(); + ПредназначенДляВводаНаОсновании = Истина; + КонецЕсли; + + Если ПараметрыШаблона.ТипШаблона = "Письмо" Тогда + + ПредназначенДляSMS = Ложь; + ПредназначенДляЭлектронныхПисем = Истина; + ТемаПисьма = ПараметрыШаблона.Тема; + + Если ПараметрыШаблона.ФорматПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + ТекстШаблонаПисьмаHTML = СтрЗаменить(ПараметрыШаблона.Текст, Символы.ПС, "
        "); + ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML; + Иначе + ТекстШаблонаПисьма = СтрЗаменить(ПараметрыШаблона.Текст, "
        ", Символы.ПС); + ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст; + КонецЕсли; + + ИначеЕсли ПараметрыШаблона.ТипШаблона = "SMS" Тогда + + ПредназначенДляSMS = Истина; + ПредназначенДляЭлектронныхПисем = Ложь; + ТекстШаблонаSMS = ПараметрыШаблона.Текст; + ОтправлятьВТранслите = ПараметрыШаблона.ПеревестиВТранслит; + + ИначеЕсли ПараметрыШаблона.ТипШаблона = "Общий" Тогда + + ПредназначенДляSMS = Ложь; + ПредназначенДляЭлектронныхПисем = Ложь; + + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271.mdo" new file mode 100644 index 00000000..e3fd7218 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271.mdo" @@ -0,0 +1,761 @@ + + + + + + + + + + ШаблоныСообщений + + ru + Шаблоны сообщений + + true + Catalog.ШаблоныСообщений.StandardAttribute.Description + Catalog.ШаблоныСообщений.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя шаблона сообщения + + + ShowError + Use + + + + + Use + Code + + ru + Код шаблона сообщения + + + Use + + + + Document.ЭлектронноеПисьмоИсходящее + Use + + + ru + + + Managed + Use + + ru + Шаблон сообщения + + 2 + true + 9 + 150 + String + Variable + true + true + AsDescription + InDialog + BothWays + Catalog.ШаблоныСообщений.Form.ФормаЭлемента + Catalog.ШаблоныСообщений.Form.ФормаСписка + + Автор + + ru + Автор + + + CatalogRef.Пользователи + + + ru + Автор или ответственный за шаблон сообщения + + + + + Use + Use + + + ВладелецШаблона + + ru + Владелец шаблона + + + DefinedType.ВладелецШаблонаСообщения + + + ru + Определяет владельца контекстного шаблона + + + + + Use + Use + + + ВнешняяОбработка + + ru + Внешняя обработка + + + CatalogRef.ДополнительныеОтчетыИОбработки + + + ru + Внешняя обработка, в которой содержится шаблон. + + + + + Use + Use + + + Назначение + + ru + Назначение + + + String + + 300 + + + + ru + Назначение шаблона сообщений + + + + + + + Use + Use + + + Отправитель + + ru + Отправитель + + + String + + 100 + + + + ru + Отправитель сообщения + + + + + + + Use + Use + + + ОтправлятьВТранслите + + ru + Отправлять в транслите + + + Boolean + + + ru + Признак необходимости конвертирования текста SMS сообщения в латиницу + + + + + Use + Use + + + ПолноеИмяТипаПараметраВводаНаОсновании + + ru + Полное имя типа параметра ввода на основании + + + String + + 250 + + + + ru + Полное имя объекта метаданных, на основании которого по данному шаблону будут создаваться сообщения. + + + + + + + Use + Use + + + ПредназначенДляSMS + + ru + Предназначен для SMS + + + Boolean + + + ru + Признак того, что шаблон предназначен для создания сообщений SMS. + + + + + Use + Use + + + ПредназначенДляВводаНаОсновании + + ru + Предназначен для ввода на основании + + + Boolean + + + ru + Признак того, что шаблон предназначен для ввода на основании другого документа. + + + + + Use + Use + + + ПредназначенДляЭлектронныхПисем + + ru + Предназначен для электронных писем + + + Boolean + + + ru + Признак того, что шаблон предназначен для создания электронных писем + + + + + Use + Use + + + ТекстШаблонаSMS + + ru + Текст шаблона SMS + + + String + + 1024 + + + + ru + Текст, который будет использоваться в качестве шаблона сообщения SMS. + + true + + + + + + Use + Use + + + ТекстШаблонаПисьма + + ru + Текст шаблона письма + + + String + + + + ru + Текст, который будет использоваться в качестве шаблона письма. + + + + + + + Use + Use + + + ТекстШаблонаПисьмаHTML + + ru + Текст шаблона письма HTML + + + String + + + + ru + Текст, который будет использоваться в качестве шаблона письма в формате HTML. + + + + + + + Use + Use + + + ТемаПисьма + + ru + Тема + + + String + + 1024 + + + + ru + Текст, который будет использоваться в качестве шаблона темы письма. + + + + + + + Use + Use + + + ТипТекстаПисьма + + ru + Тип текста письма + + + EnumRef.СпособыРедактированияЭлектронныхПисем + + + ru + Тип текста письма, в котором будет подготовлено сообщение - "Простой" или "HTML" + + + + + Use + Use + + + ТолькоДляАвтора + + ru + Только для автора + + + Boolean + + + ru + Влияет на доступность варианта из панели отчетов: +Флажок снят - вариант доступен всем пользователям. +Флажок установлен - шаблон сообщения доступен только автору. + + + + + Use + Use + + + ТранслитерироватьИменаФайлов + + ru + Транслитерировать имена файлов + + + Boolean + + + ru + Сформированные печатных формы и файлы будут иметь имена, содержащие только латинские буквы и цифры, для возможности переноса между различными операционными системами. Например, файл "Счет на оплату.pdf" будет сохранен с именем "Schet na oplaty.pdf". + + + + + Use + Use + + + УпаковатьВАрхив + + ru + Упаковать в архив + + + Boolean + + + ru + Признак того, что вложения - печатные формы должны быть упакованы в архив при отправке. + + + + + Use + Use + + + ФорматВложений + + ru + Формат вложений + + + ValueStorage + + + ru + Формат, в котором должны сохраняться вложения - печатные формы. + + + + + Use + Use + + + ШаблонПоВнешнейОбработке + + ru + Шаблон по внешней обработке + + + Boolean + + + ru + Признак, что шаблон формируется внешней обработкой. + + + + + Use + Use + + + ПодписьИПечать + + ru + Подпись и печать + + + Boolean + + + ru + Добавляет факсимильную подпись и печать в печатную форму + + + + + Use + Use + + + + + + + ПечатныеФормыИВложения + + ru + Печатные формы и вложения + + + Use + LineNumber + + Use + + + + + Идентификатор + + ru + Идентификатор + + + String + + 50 + + + + ru + Идентификатор печатной формы + + + + Use + Use + + + Имя + + ru + Имя + + + String + + 300 + + + + ru + Имя выбранной печатной формы + + + + Use + Use + + + + + + + + Параметры + + ru + Параметры + + + ru + Параметры шаблона. Их необходимо будет указать при создании сообщения. + + + Use + LineNumber + + Use + + + + + ИмяПараметра + + ru + Имя параметра + + + String + + 50 + + + + ru + Имя параметра шаблона. + + + + Use + Use + + + ТипПараметра + + ru + Тип параметра + + + ValueStorage + + + ru + Тип параметра шаблона. + + + + Use + Use + + + ПредставлениеПараметра + + ru + Представление параметра + + + String + + 150 + + + + ru + Представление параметра. Выступает в качестве заголовка элемента формы формы подготовки сообщения, в котором будет указываться параметр. + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + СформироватьСообщение + + ru + Сформировать сообщение + + + + ru + + + PersonalComputer + MobileDevice + + + ПроизвольныйПараметр + + ru + Произвольный параметр + + PersonalComputer + MobileDevice + + + ЗаполнитьПроизвольныеПараметры + + ru + Заполнить произвольные параметры + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..7ef684af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(ВладелецФайла)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..4c62c54e --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\321\213\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\271\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,856 @@ + + + + + + + + + + ШаблоныСообщенийПрисоединенныеФайлы + + ru + Присоединенные файлы (Шаблоны сообщений) + + true + Catalog.ШаблоныСообщенийПрисоединенныеФайлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + Use + + ru + Присоединенный файл (Шаблоны сообщений) + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Автор + + ru + Автор + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил файл в список + + + + ShowError + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Владелец файла + + + CatalogRef.ШаблоныСообщений + + + ru + Место размещения файла (объект) + + + + + Index + Use + + + ДатаЗаема + + ru + Дата заема + + + Date + + + + ru + ДЛФ=ДВ + + + ru + ДЛФ=ДВ + + + ru + Дата, когда файл был занят для редактирования + + false + + + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата модификации универсальная + + + Date + + + + ru + Дата изменения данных файла (универсальное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления файла в список + + + + ShowError + + 0001-01-01T00:00:00 + + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Use + + + Изменил + + ru + Изменил + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Последний пользователь, который отредактировал файл + + + + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ИндексКартинки + + ru + Индекс картинки + + + Number + + 10 + + + + ru + Индекс значка файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Краткое описание файла + + true + + + + + + Use + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + + + Use + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + + + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который занял файл для редактирования + + + + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или в информационной базе) + + + + ShowError + + Index + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (когда файл хранится в томе) + + + + + Index + Use + + + ФайлХранилище + + ru + Файл хранилище + + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + ИДФайлаЭлектронногоПисьма + + ru + ИД Файла электронного письма + + + String + + 200 + + + + ru + Идентификатор файла электронного письма. Используются в случае когда тело письма в формате HTML, а картинки, предназначенные для отображения в теле письма хранятся в присоединенных файлах + + + + + + + Use + + + ХранитьВерсии + + ru + Хранить версии + + + Boolean + + + ru + Добавлять версии файла при окончании редактирования. Если отключить, тогда будет хранится только последняя версия. + + false + + + + Use + Use + + + ПодписанЭП + + ru + Подписан ЭП + + + Boolean + + + ru + Признак того, что файл подписан электронно + + + + + Use + Use + + + + + + + УдалитьЭлектронныеПодписи + + ru + (не используется) электронные подписи + + + ru + Хранение электронных подписей файла + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Index + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + ДатаПроверкиПодписи + + ru + Дата проверки подписи + + + Date + + + + ru + Дата последней проверки подписи. + + + + Use + Use + + + ПодписьВерна + + ru + Подпись верна + + + Boolean + + + ru + Результат последней проверки подписи. + + + + Use + Use + + + + + + + + УдалитьСертификатыШифрования + + ru + (не используется) сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..7ef684af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(ВладелецФайла)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..eab1b86f --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\222\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,878 @@ + + + + + + + + + + ЭлектронноеПисьмоВходящееПрисоединенныеФайлы + + ru + Присоединенные файлы (Электронное письмо входящее) + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла + + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ВладелецФайла + Managed + Use + + ru + Присоединенный файл (Электронное письмо входящее) + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Автор + + ru + Автор + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил файл в список + + + + ShowError + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Размещение + + + DocumentRef.ЭлектронноеПисьмоВходящее + + + ru + Место размещения файла (объект) + + + + + Index + Use + + + ДатаЗаема + + ru + Дата заема + + + Date + + + + ru + ДЛФ=ДВ + + + ru + ДЛФ=ДВ + + + ru + Дата, когда файл был занят для редактирования + + false + + + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата изменения (универсальное время) + + + Date + + + + ru + Дата изменения данных файла (универсальное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления файла в список + + + + ShowError + + 0001-01-01T00:00:00 + + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Use + + + Изменил + + ru + Отредактировал + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Последний пользователь, который отредактировал файл + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ИндексКартинки + + ru + Индекс значка + + + Number + + 10 + + + + ru + Индекс значка файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Краткое описание файла + + true + + + + + + Use + Use + + + ПодписанЭП + + ru + Подписан электронно + + + Boolean + + + ru + Признак того, что файл подписан электронно + + + + + Use + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + + + Use + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + + + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который занял файл для редактирования + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или в информационной базе) + + + + ShowError + + Index + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (когда файл хранится в томе) + + + + + Index + Use + + + ФайлХранилище + + ru + Временное хранилище файла + + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + ИДФайлаЭлектронногоПисьма + + ru + Идентификатор файла электронного письма + + + String + + 200 + + + + ru + Идентификатор файла электронного письма. Используются в случае когда тело письма в формате HTML, а картинки, предназначенные для отображения в теле письма хранятся в присоединенных файлах + + + + + + + Use + + + ХранитьВерсии + + ru + Хранить версии + + + Boolean + + + ru + Добавлять версии файла при окончании редактирования. Если отключить, тогда будет хранится только последняя версия. + + false + + + + Use + Use + + + ЭтоВложениеПисьмо + + ru + Это вложение письмо + + + Boolean + + + ru + Признак того, что хранимый файл является электронным письмом. + + + + + Use + Use + + + + + + + УдалитьЭлектронныеПодписи + + ru + (не используется) электронные подписи + + + ru + Хранение электронных подписей файла + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Index + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + ДатаПроверкиПодписи + + ru + Дата проверки подписи + + + Date + + + + ru + Дата последней проверки подписи. + + + + Use + Use + + + ПодписьВерна + + ru + Подпись верна + + + Boolean + + + ru + Результат последней проверки подписи. + + + + Use + Use + + + + + + + + УдалитьСертификатыШифрования + + ru + (не используется) Сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" new file mode 100644 index 00000000..7ef684af --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ManagerModule.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтение + |ГДЕ + | ЧтениеОбъектаРазрешено(ВладелецФайла) + |; + |РазрешитьИзменениеЕслиРазрешеноЧтение + |ГДЕ + | ИзменениеОбъектаРазрешено(ВладелецФайла)"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..5341e8b8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\265\320\237\320\270\321\201\321\214\320\274\320\276\320\230\321\201\321\205\320\276\320\264\321\217\321\211\320\265\320\265\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,900 @@ + + + + + + + + + + ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы + + ru + Присоединенные файлы (Электронное письма исходящее) + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла + + + ShowError + Use + + + + + Use + Code + + Use + + + + DontUse + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ВладелецФайла + Managed + Use + + ru + Присоединенный файл (Электронное письма исходящее) + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + Автор + + ru + Автор + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который добавил файл в список + + + + ShowError + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Размещение + + + DocumentRef.ЭлектронноеПисьмоИсходящее + + + ru + Место размещения файла (объект) + + + + + Index + Use + + + ДатаЗаема + + ru + Дата заема + + + Date + + + + ru + ДЛФ=ДВ + + + ru + ДЛФ=ДВ + + + ru + Дата, когда файл был занят для редактирования + + false + + + + Use + Use + + + ДатаМодификацииУниверсальная + + ru + Дата изменения (универсальное время) + + + Date + + + + ru + Дата изменения данных файла (универсальное время) + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + + Date + + + + ru + Дата добавления файла в список + + + + ShowError + + 0001-01-01T00:00:00 + + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Use + + + Изменил + + ru + Отредактировал + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Последний пользователь, который отредактировал файл + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ИндексКартинки + + ru + Индекс значка + + + Number + + 10 + + + + ru + Индекс значка файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + + String + + + + ru + Краткое описание файла + + true + + + + + + Use + Use + + + ПодписанЭП + + ru + Подписан электронно + + + Boolean + + + ru + Признак того, что файл подписан электронно + + + + + Use + Use + + + ПутьКФайлу + + ru + Путь к файлу + + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + + + Use + Use + + + Размер + + ru + Размер (байт) + + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + + + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.УчетныеЗаписиСинхронизацииФайлов + CatalogRef.Пользователи + + + ru + Пользователь, который занял файл для редактирования + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или в информационной базе) + + + + ShowError + + Index + Use + + + Том + + ru + Том + + + CatalogRef.ТомаХраненияФайлов + + + ru + Том хранения файлов (когда файл хранится в томе) + + + + + Index + Use + + + ФайлХранилище + + ru + Временное хранилище файла + + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + ИДФайлаЭлектронногоПисьма + + ru + Идентификатор файла электронного письма + + + String + + 200 + + + + ru + Идентификатор файла электронного письма. Используется в случае когда тело письма в формате HTML, а картинки, предназначенные для отображения в теле письма хранятся в присоединенных файлах + + + + + + + Use + + + ХранитьВерсии + + ru + Хранить версии + + + Boolean + + + ru + Добавлять версии файла при окончании редактирования. Если отключить, тогда будет хранится только последняя версия. + + false + + + + Use + Use + + + ЭтоВложениеПисьмо + + ru + Это вложение письмо + + + Boolean + + + ru + Признак того, что хранимый файл является электронным письмом. + + + + + Use + Use + + + ПорядковыйНомерВоВложениях + + ru + Порядковый номер во вложениях + + + Number + + 3 + + + + ru + Порядковый номер вложения в таблице вложений электронного письма. + + + + + Use + Use + + + + + + + УдалитьЭлектронныеПодписи + + ru + (не используется) электронные подписи + + + ru + Хранение электронных подписей файла + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Index + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + ДатаПроверкиПодписи + + ru + Дата проверки подписи + + + Date + + + + ru + Дата последней проверки подписи. + + + + Use + Use + + + ПодписьВерна + + ru + Подпись верна + + + Boolean + + + ru + Результат последней проверки подписи. + + + + Use + Use + + + + + + + + УдалитьСертификатыШифрования + + ru + (не используется) Сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 28 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Владелец сертификата (фамилия имя, организация, должность) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\257\320\267\321\213\320\272\320\260\320\230\320\267\320\241\320\277\320\270\321\201\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\275\321\213\321\205/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\257\320\267\321\213\320\272\320\260\320\230\320\267\320\241\320\277\320\270\321\201\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\275\321\213\321\205/Form.form" new file mode 100644 index 00000000..71170ab8 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\257\320\267\321\213\320\272\320\260\320\230\320\267\320\241\320\277\320\270\321\201\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\275\321\213\321\205/Form.form" @@ -0,0 +1,696 @@ + + + + <key>ru</key> + <value>Выбор языков печатных форм</value> + + + КоманднаяПанель + 31 + + СписокВыбрать + 22 + true + true + + true + + + СписокВыбратьРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + + Поиск + 24 + true + true + + true + + + + СтрокаПоиска + + + None + + OnChange + ПоискПриИзменении + + + ПоискРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + ПоискКонтекстноеМеню + 25 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + AutoComplete + ПоискАвтоПодбор + + + Clearing + ПоискОчистка + + true + true + true + true + true + true + true + + ru + Найти... + + + + + КоманднаяПанельПраваяЧасть + 41 + + КомандыСПиска + 27 + true + true + + true + + + <key>ru</key> + <value>Команды с писка</value> + + + КомандыСПискаРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + Item.Список + + + true + true + + true + + + <key>ru</key> + <value>Командная панель правая часть</value> + + + КоманднаяПанельПраваяЧастьРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + ShowRowRearrangement + + СписокНаименование + 17 + VeryHigh + true + true + + true + + + + Список.Наименование + + + + СписокНаименованиеРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + СписокНаименованиеКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 40 + true + true + true + true + true + true + + + + СписокКод + 33 + VeryLow + + <key>ru</key> + <value>Код локализации</value> + + true + true + + true + + + + Список.Код + + + + СписокКодРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + + СписокКодКонтекстноеМеню + 34 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 15 + true + true + false + true + true + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + Selection + СписокВыбор + + + true + true + + true + + СписокСтрокаПоиска + 5 + + СписокСтрокаПоискаРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 6 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 8 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 9 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 11 + + СписокУправлениеПоискомРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 12 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + true + true + true + true + AsFileRef + None + +
        + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + 50 + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + Список + + <key>ru</key> + <value>Список</value> + + 1 + + ValueTable + + + true + + + true + + + Код + + <key>ru</key> + <value>Код языка</value> + + 1 + + String + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Язык</value> + + 2 + + String + + + + true + + + true + + + + СтрокаПоиска + 3 + + String + + + + true + + + true + + + + Страны + 4 + + String + + + + true + + + true + + + + + СтрокаПоиска + + <key>ru</key> + <value>Строка поиска</value> + + 2 + + String + + + + true + + + true + + + + Сворачивать + 3 + + Boolean + + + true + + + true + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать + + + true + + + + Выбрать + + + Auto + + + Отбор + + String + + + true + + + + + +
        diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\257\320\267\321\213\320\272\320\260\320\230\320\267\320\241\320\277\320\270\321\201\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\275\321\213\321\205/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\257\320\267\321\213\320\272\320\260\320\230\320\267\320\241\320\277\320\270\321\201\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\275\321\213\321\205/Module.bsl" new file mode 100644 index 00000000..933a323a --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\237\320\276\320\264\320\261\320\276\321\200\320\257\320\267\321\213\320\272\320\260\320\230\320\267\320\241\320\277\320\270\321\201\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\275\321\213\321\205/Module.bsl" @@ -0,0 +1,167 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТекущийЭлемент = Элементы.Поиск; + Элементы.Список.МножественныйВыбор = Не ЗначениеЗаполнено(Параметры.Отбор); + + Если ЗначениеЗаполнено(Параметры.Отбор) Тогда + Отбор = СтрРазделить(Параметры.Отбор, "_", Истина)[0]; + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр( + "ru = 'Выбор региональных настроек для языка %1'"), + МультиязычностьСервер.ПредставлениеЯзыка(Отбор)); + КонецЕсли; + + ЗаполнитьСписокДоступныхЯзыков(Сворачивать); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПоискОчистка(Элемент, СтандартнаяОбработка) + + УстановитьОтбор(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоискПриИзменении(Элемент) + + УстановитьОтбор(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Закрыть(ВыбранныеЯзыки()); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + + Закрыть(ВыбранныеЯзыки()); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьСписокДоступныхЯзыков(Свернуть = Истина) + + Список.Очистить(); + + Отбор = СтрРазделить(Параметры.Отбор, "_", Истина)[0]; + + Для Каждого Язык Из ПолучитьДопустимыеКодыЛокализации() Цикл + Если ЗначениеЗаполнено(Отбор) И Не СтрНачинаетсяС(Язык, Отбор) Тогда + Продолжить; + КонецЕсли; + + Представление = ПредставлениеКодаЛокализации(Язык); + ЧастиСтроки = СтрРазделить(Представление, " ", Истина); + ЧастиСтроки[0] = ТРег(ЧастиСтроки[0]); + Представление = СтрСоединить(ЧастиСтроки, " "); + + Если СтрНайти(Язык, "_") И Свернуть Тогда + ОписаниеЯзыка = Список.НайтиСтроки(Новый Структура("Код", СтрРазделить(Язык, "_", Истина)[0]))[0]; + Представление = Сред(Представление, СтрДлина(ОписаниеЯзыка.Наименование) + 1); + + Страны = СтрРазделить(ОписаниеЯзыка.Страны, ",", Ложь); + + ПозицияНачала = СтрНайти(Представление, "("); + Если ПозицияНачала > 0 Тогда + ПозицияКонца = СтрНайти(Представление, ")", НаправлениеПоиска.СКонца); + Если ПозицияКонца > 0 Тогда + СписокСтранСтрокой = Сред(Представление, ПозицияНачала + 1, ПозицияКонца - ПозицияНачала - 1); + СтраныЯзыка = СтрРазделить(СписокСтранСтрокой, ",", Ложь); + Для Каждого Страна Из СтраныЯзыка Цикл + Страна = СокрЛП(Страна); + Если Страны.Найти(Страна) = Неопределено Тогда + Страны.Добавить(Страна); + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + ОписаниеЯзыка.Страны = СтрСоединить(Страны, ","); + ОписаниеЯзыка.СтрокаПоиска = СтрокаПоиска(ОписаниеЯзыка.Наименование) + " " + ОписаниеЯзыка.Код + " " + СтрокаПоиска(ОписаниеЯзыка.Страны); + Иначе + ОписаниеЯзыка = Список.Добавить(); + ОписаниеЯзыка.Код = Язык; + ОписаниеЯзыка.Наименование = Представление; + ОписаниеЯзыка.СтрокаПоиска = СтрокаПоиска(ОписаниеЯзыка.Наименование) + " " + ОписаниеЯзыка.Код; + КонецЕсли; + + КонецЦикла; + + Для Каждого ОписаниеЯзыка Из Список Цикл + ОписаниеЯзыка.Страны = СтрЗаменить(ОписаниеЯзыка.Страны, ",", ", "); + КонецЦикла; + + Список.Сортировать("СтрокаПоиска"); + +КонецПроцедуры + +&НаСервере +Функция СтрокаПоиска(Строка) + Возврат СтрСоединить(СтрРазделить(Строка, "(), ", Ложь), " "); +КонецФункции + +&НаКлиенте +Функция ВыбранныеЯзыки() + + Результат = Новый Массив; + Для Каждого ВыделеннаяСтрока Из Элементы.Список.ВыделенныеСтроки Цикл + ВыбранныйЯзык = Список.НайтиПоИдентификатору(ВыделеннаяСтрока); + Результат.Добавить(Новый Структура("Код,Наименование", ВыбранныйЯзык.Код, ВыбранныйЯзык.Наименование)); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ПоискАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) + + УстановитьОтбор(Текст); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьОтбор(Текст = Неопределено); + + Если Текст = Неопределено Тогда + Текст = СтрокаПоиска; + КонецЕсли; + + СтруктураОтбора = Новый Структура; + СтруктураОтбора.Вставить("СтрокаПоиска", Текст); + Элементы.Список.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураОтбора); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..41d34030 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + РеквизитДопУпорядочивания + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..8112b492 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,678 @@ + + + + ГруппаДополнительнаяИнформация + 40 + + КартинкаИнформации + 42 + + <key>ru</key> + <value>Картинка информации</value> + + true + true + + true + + + КартинкаИнформацииРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + КартинкаИнформацииКонтекстноеМеню + 43 + true + true + + true + + true + + true + true + + + CommonPicture.Информация + + + + + ДополнительнаяИнформация + 45 + + <key>ru</key> + <value>Для того чтобы выводить печатные формы на других языках, необходимо выполнить <link ПерейтиКМакетамПечатныхФорм>перевод макетов</>.</value> + + true + true + + true + + + ДополнительнаяИнформацияРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + ДополнительнаяИнформацияКонтекстноеМеню + 46 + true + true + + true + + true + + true + Label + true + true + + + URLProcessing + ДополнительнаяИнформацияОбработкаНавигационнойСсылки + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Дополнительная информация</value> + + + ГруппаДополнительнаяИнформацияРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 16 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Наименование + + + true + + НаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Код + 19 + true + true + + true + + + + Список.Code + + + + КодРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 20 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 26 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 27 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + OnActivateRow + СписокПриАктивизацииСтроки + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + AsFileRef + + Список.DefaultPicture + + + + OnGetDataAtServer + СписокПриПолученииДанныхНаСервере + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
        + + ФормаКоманднаяПанель + -1 + + ФормаСоздать + 22 + + <key>ru</key> + <value>Добавить язык</value> + + true + true + + true + + + ФормаСоздатьРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Создать + true + true + true + UserCmds + + StdPicture.CreateListItem + + Auto + + + Группа1 + 24 + true + true + + true + + + Группа1РасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + Form + + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + Change + Copy + Create + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
        true
        + + ВЫБРАТЬ + СправочникЯзыкиПечатныхФорм.Ссылка, + СправочникЯзыкиПечатныхФорм.ПометкаУдаления, + СправочникЯзыкиПечатныхФорм.Код, + ВЫРАЗИТЬ(NULL КАК СТРОКА(80)) КАК Наименование, + СправочникЯзыкиПечатныхФорм.РеквизитДопУпорядочивания, + СправочникЯзыкиПечатныхФорм.Предопределенный, + СправочникЯзыкиПечатныхФорм.ИмяПредопределенныхДанных +ИЗ + Справочник.ЯзыкиПечатныхФорм КАК СправочникЯзыкиПечатныхФорм + Catalog.ЯзыкиПечатныхФорм + true + true + true + true + true + +
        + + Создать + + <key>ru</key> + <value>Создать</value> + + 1 + + ru + Создать + + + true + + + + Создать + + + Auto + + + + + + +
        diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..42dba132 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,165 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ФормаСоздать.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ДополнительнаяИнформацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + Если НавигационнаяСсылкаФорматированнойСтроки = "ПерейтиКМакетамПечатныхФорм" Тогда + СтандартнаяОбработка = Ложь; + ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + Для Каждого Строка Из Строки Цикл + Строка.Значение.Данные["Наименование"] = МультиязычностьСервер.ПредставлениеЯзыка(Строка.Значение.Данные["Код"]); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Создать(Команда) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореЯзыка", ЭтотОбъект); + ОткрытьФорму("Справочник.ЯзыкиПечатныхФорм.Форма.ПодборЯзыкаИзСпискаДоступных", , ЭтотОбъект, , , , ОписаниеОповещения); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +// Параметры: +// ВыбранныеЯзыки - Массив из Структура: +// * Код - Строка +// * Наименование - Строка +// +&НаКлиенте +Процедура ПриВыбореЯзыка(ВыбранныеЯзыки, ДополнительныеПараметры) Экспорт + + Если ВыбранныеЯзыки = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавленныеЯзыки = ДобавитьЯзыки(ВыбранныеЯзыки); + ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъектов(ДобавленныеЯзыки); + Элементы.Список.ТекущаяСтрока = ДобавленныеЯзыки[0]; + Элементы.Список.ВыделенныеСтроки.Очистить(); + Для Каждого Язык Из ДобавленныеЯзыки Цикл + Элементы.Список.ВыделенныеСтроки.Добавить(Язык); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ДобавитьЯзыки(ВыбранныеЯзыки) + + Результат = Новый Массив; + Для Каждого ОписаниеЯзыка Из ВыбранныеЯзыки Цикл + ЯзыкСсылка = Справочники.ЯзыкиПечатныхФорм.НайтиПоКоду(ОписаниеЯзыка.Код); + Если ЗначениеЗаполнено(ЯзыкСсылка) Тогда + ЯзыкОбъект = ЯзыкСсылка.ПолучитьОбъект(); + Иначе + ЯзыкОбъект = Справочники.ЯзыкиПечатныхФорм.СоздатьЭлемент(); + КонецЕсли; + ЗаполнитьЗначенияСвойств(ЯзыкОбъект, ОписаниеЯзыка); + ЯзыкОбъект.ПометкаУдаления = Ложь; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ЯзыкиПечатныхФорм"); + ЭлементБлокировки.УстановитьЗначение("Код", ЯзыкОбъект.Код); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + ЯзыкОбъект.Записать(); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Результат.Добавить(ЯзыкОбъект.Ссылка); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..412209b3 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,183 @@ + + + + Язык + 4 + true + true + + true + + + + Язык + + + + ЯзыкРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + ЯзыкКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ЯзыкНачалоВыбора + + true + true + true + true + true + true + true + + Style.ФонУправляющегоПоля + + + + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Show + + ru + Изменение кода локализации вручную не рекомендуется + + EnterOnInput + true + Left + true + + true + true + false + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + CatalogObject.ЯзыкиПечатныхФорм + + + true + + + true + +
        true
        + true +
        + + Язык + + <key>ru</key> + <value>Язык</value> + + 2 + + String + + + + true + + + true + + + + + + + +
        diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..4d9c9f09 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,57 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Объект.Код) Тогда + Язык = МультиязычностьСервер.ПредставлениеЯзыка(Объект.Код); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ЯзыкНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореЯзыка", ЭтотОбъект); + ПараметрыОткрытия = Новый Структура("Отбор", Объект.Код); + + ОткрытьФорму("Справочник.ЯзыкиПечатныхФорм.Форма.ПодборЯзыкаИзСпискаДоступных", + ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Параметры: +// ВыбранныеЯзыки - Массив из Структура: +// * Код - Строка +// * Наименование - Строка +// +&НаКлиенте +Процедура ПриВыбореЯзыка(ВыбранныеЯзыки, ДополнительныеПараметры) Экспорт + + Если Не ЗначениеЗаполнено(ВыбранныеЯзыки) Тогда + Возврат; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(Объект, ВыбранныеЯзыки[0]); + Язык = ВыбранныеЯзыки[0].Наименование; + Модифицированность = Истина; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Help/ru.html" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Help/ru.html" new file mode 100644 index 00000000..5e7905c4 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/Help/ru.html" @@ -0,0 +1,6 @@ +Предназначен для выбора дополнительного языка печатных форм. +
        Формирование печатных форм на разных языках полезно, если необходимо предоставить какие-либо документы иностранному контрагенту.
        +
        После выбора дополнительного языка появляется возможность перевода наименований в списках и макетов печатных форм на этот язык, а также формирования печатных форм на этом языке.
        +

        Как добавить дополнительный язык печатной формы

        +
        +
        • Нажмите на кнопку Добавить, выберите из списка язык, при необходимости уточните регион. Выбор региональных настроек влияет на вывод дат и чисел.
        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/ManagerModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/ManagerModule.bsl" new file mode 100644 index 00000000..c05c7793 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/ManagerModule.bsl" @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ЗаполнитьПоставляемыеЯзыки() Экспорт + + Для Каждого КодЯзыка Из СтандартныеПодсистемыСервер.ЯзыкиКонфигурации() Цикл + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ЯзыкиПечатныхФорм"); + ЭлементБлокировки.УстановитьЗначение("Код", КодЯзыка); + Блокировка.Заблокировать(); + + Если Не ЗначениеЗаполнено(Справочники.ЯзыкиПечатныхФорм.НайтиПоКоду(КодЯзыка)) Тогда + Язык = Справочники.ЯзыкиПечатныхФорм.СоздатьЭлемент(); + Язык.Код = КодЯзыка; + Язык.Записать(); + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ДоступныеЯзыки(СРегиональнымиНастройками = Ложь, ТолькоДополнительные = Ложь) Экспорт + + ТекстЗапроса = + "ВЫБРАТЬ + | ЯзыкиПечатныхФорм.Код КАК Код + |ИЗ + | Справочник.ЯзыкиПечатныхФорм КАК ЯзыкиПечатныхФорм + |ГДЕ + | НЕ ЯзыкиПечатныхФорм.ПометкаУдаления + | И НЕ ЯзыкиПечатныхФорм.Код В (&СписокИсключений) + | + |УПОРЯДОЧИТЬ ПО + | ЯзыкиПечатныхФорм.РеквизитДопУпорядочивания, + | ЯзыкиПечатныхФорм.Ссылка"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("СписокИсключений", ?(ТолькоДополнительные, + СтандартныеПодсистемыСервер.ЯзыкиКонфигурации(), Новый Массив)); + + Языки = Запрос.Выполнить().Выгрузить(); + + Если Не СРегиональнымиНастройками Тогда + Для Каждого Язык Из Языки Цикл + Язык.Код = СтрРазделить(Язык.Код, "_", Истина)[0]; + КонецЦикла; + Языки.Свернуть("Код"); + КонецЕсли; + + Возврат Языки.ВыгрузитьКолонку("Код"); + +КонецФункции + +Функция ДополнительныеЯзыкиПечатныхФорм() Экспорт + + Возврат ДоступныеЯзыки(Ложь, Истина); + +КонецФункции + +Функция ЭтоДополнительныйЯзыкПечатныхФорм(КодЯзыка) Экспорт + + Если Не ЗначениеЗаполнено(КодЯзыка) Тогда + Возврат Ложь; + КонецЕсли; + + Возврат СтандартныеПодсистемыСервер.ЯзыкиКонфигурации().Найти(КодЯзыка) = Неопределено; + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/ObjectModule.bsl" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.mdo" "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.mdo" new file mode 100644 index 00000000..bc572278 --- /dev/null +++ "b/tests/metadata/ssl/src/Catalogs/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274/\320\257\320\267\321\213\320\272\320\270\320\237\320\265\321\207\320\260\321\202\320\275\321\213\321\205\320\244\320\276\321\200\320\274.mdo" @@ -0,0 +1,172 @@ + + + + + + + + + + ЯзыкиПечатныхФорм + + ru + Языки печатных форм + + true + Catalog.ЯзыкиПечатныхФорм.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + ru + Код локализации + + + Use + + + + Use + + + ru + + + Catalog.ЯзыкиПечатныхФорм.StandardAttribute.Code + Managed + Use + + ru + Язык + + 2 + true + 13 + String + Variable + true + InDialog + BothWays + Catalog.ЯзыкиПечатныхФорм.Form.ФормаЭлемента + Catalog.ЯзыкиПечатныхФорм.Form.ФормаСписка + + РеквизитДопУпорядочивания + + ru + Порядок + + + Number + + 5 + + + + ru + Используется для упорядочивания (служебный) + + + + + 0 + + IndexWithAdditionalOrder + Use + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ПодборЯзыкаИзСпискаДоступных + + ru + Подбор языка из списка доступных + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" new file mode 100644 index 00000000..835ba72f --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Form.form" @@ -0,0 +1,404 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Код + 4 + true + true + + true + + + + Список.Code + + + true + + КодExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 10 + true + true + false + + + + Наименование + 6 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 30 + true + true + + + + Ссылка + 11 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 12 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокSearchString + 14 + + СписокSearchStringExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 15 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 17 + + СписокViewStatusExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 18 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 20 + + СписокSearchControlExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 21 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + +
        + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
        true
        + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования + true + true + true + true + +
        + + + + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..d7e58baa --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260/Help/ru.html" @@ -0,0 +1,17 @@ + +

        Предназначен для выбора вопросов.

        +

        Открывается при выборе вопроса по команде Добавить - простой вопрос в шаблоне анкеты или в Помощнике создания табличных вопросов.

        +

        Одним из важных этапов подготовки анкет является составление вопросов.

        +

        В общем списке содержатся вопросы, которые могут быть включены в любую анкету. Эти вопросы называются элементарными, т.к. могут использоваться в качестве элементов более сложных конструкций.

        +

        В списке выводится:

        +
        • Код - проставляется автоматически; +
        • Наименование - краткое наименование вопроса.

        Выбор вопроса

        +
        • +
          Выделите вопрос, нажмите Выбрать.
          +
        • +

          Также можно выбирать вопросы двойным щелчком мыши.

        Ввод нового вопроса

        +
        • Для того чтобы добавить в список отсутствующий вопрос, нажмите Создать, заполните необходимые поля.

        Группировка вопросов

        +
        • Вопросы в списке можно группировать, например, по темам анкет. +
        • Нажмите Создать группу, введите Наименование группы. Можно подчинить эту группу одной из имеющихся. Для этого в поле Родитель выберите группу из списка. +
        • Введите необходимое количество групп. Перетащите вопросы в соответствующие группы или введите вопросы в выбранную группу.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..f5a176d8 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,491 @@ + + + + ГруппаПользовательскихНастроек + 17 + true + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + Auto + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Код + 4 + true + true + + true + + + + Список.Code + + + true + + КодExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 8 + true + true + false + + + + Наименование + 6 + true + true + + true + + + + Список.Description + + + true + + НаименованиеExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 7 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 20 + true + true + false + + + + Формулировка + 8 + true + true + + true + + + + Список.Формулировка + + + true + + ФормулировкаExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + + ФормулировкаКонтекстноеМеню + 9 + true + true + + true + + true + + LabelField + Enter + true + true + Left + true + + 30 + true + true + false + + + + Ссылка + 14 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 15 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 19 + + СписокСтрокаПоискаРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 20 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 22 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 23 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 25 + + СписокУправлениеПоискомРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 26 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
        + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
        true
        + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования + true + true + true + true + +
        + + + + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..41d34030 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\222\320\260\321\200\320\270\320\260\320\275\321\202\321\213\320\236\321\202\320\262\320\265\321\202\320\276\320\262/ExtInfo/ListSettings.dcss" @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + РеквизитДопУпорядочивания + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..6e378435 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,2082 @@ + + + + НаименованиеКод + 17 + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + OnChange + НаименованиеПриИзменении + + + НаименованиеExtendedTooltip + 94 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 44 + true + false + true + true + true + true + + + + Код + 1 + true + true + + true + + + + Объект.Code + + + + КодExtendedTooltip + 95 + true + true + + true + + Label + true + true + + Left + + + + КодКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 11 + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование код</value> + + + НаименованиеКодExtendedTooltip + 93 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Родитель + 5 + true + true + + true + + + + Объект.Parent + + + + РодительExtendedTooltip + 96 + true + true + + true + + Label + true + true + + Left + + + + РодительКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 44 + true + true + false + true + true + true + true + + + + Представление + 7 + true + true + + true + + + + Объект.Формулировка + + + Left + + ПредставлениеExtendedTooltip + 97 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + ПредставлениеНачалоВыбора + + 61 + true + 2 + true + false + false + true + true + true + true + true + true + + + + Комментарий + 18 + + ТребуетсяКомментарий + 11 + + <key>ru</key> + <value>Попросить респондента прокомментировать ответ, пояснив характер комментария:</value> + + true + true + + true + + + + Объект.ТребуетсяКомментарий + + + Right + + OnChange + ТребуетсяКомментарийПриИзменении + + + ТребуетсяКомментарийExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + + ТребуетсяКомментарийКонтекстноеМеню + 12 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ПояснениеКомментария + 13 + true + true + + true + + + + Объект.ПояснениеКомментария + + + None + + ПояснениеКомментарияExtendedTooltip + 100 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеКомментарияКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 54 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + КомментарийExtendedTooltip + 98 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаТипОтвета + 144 + + ТипОтвета + 9 + true + true + + true + + + + ТипОтвета + + + + OnChange + ТипОтветаПриИзменении + + + ТипОтветаExtendedTooltip + 102 + true + true + + true + + Label + true + true + + Left + + + + ТипОтветаКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 43 + true + true + false + true + true + false + ShowInInputField + false + false + false + false + true + true + true + true + + Style.ФонУправляющегоПоля + + 43 + + + + ГруппаВидПереключателя + 146 + + ГруппаВидПереключателяНеОтображать + 150 + + ДекорацияНеОтображатьВидПереключателя + 152 + true + true + + true + + + ДекорацияНеОтображатьВидПереключателяРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияНеОтображатьВидПереключателяКонтекстноеМеню + 153 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Вид переключателя не отображать</value> + + + ГруппаВидПереключателяНеОтображатьРасширеннаяПодсказка + 151 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ГруппаВидПереключателяОтображать + 148 + + ВидПереключателя + 141 + + <key>ru</key> + <value>Вид</value> + + true + true + + true + + + + Объект.ВидПереключателя + + + + ВидПереключателяРасширеннаяПодсказка + 143 + true + true + + true + + Label + true + true + + Left + + + + ВидПереключателяКонтекстноеМеню + 142 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 12 + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Вид переключателя отображать</value> + + + ГруппаВидПереключателяОтображатьРасширеннаяПодсказка + 149 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ГруппаВидОтображенияБулевоОтображать + 162 + + ВидОтображенияБулево + 164 + + <key>ru</key> + <value>Вид</value> + + true + true + + true + + + + Объект.ВидФлажка + + + + ВидОтображенияБулевоРасширеннаяПодсказка + 166 + true + true + + true + + Label + true + true + + Left + + + + ВидОтображенияБулевоКонтекстноеМеню + 165 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 12 + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Вид переключателя отображать</value> + + + ГруппаВидОтображенияБулевоОтображатьРасширеннаяПодсказка + 163 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Вид переключателя</value> + + + ГруппаВидПереключателяРасширеннаяПодсказка + 147 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Тип ответа</value> + + + ГруппаТипОтветаРасширеннаяПодсказка + 145 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ЗависимыеПараметры + 20 + + СтраницаЧисло + 21 + + РеквизитыЧисла + 84 + + Длина + 75 + true + true + + true + + + + Объект.Длина + + + + OnChange + ДлинаПриИзменении + + + ДлинаExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + + ДлинаКонтекстноеМеню + 76 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 5 + true + true + false + true + true + true + true + + + + Точность + 82 + true + true + + true + + + + Объект.Точность + + + + OnChange + ТочностьПриИзменении + + + ТочностьExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + + ТочностьКонтекстноеМеню + 83 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 4 + true + true + true + true + true + true + + + + МинимальноеЗначение + 24 + true + true + + true + + + + Объект.МинимальноеЗначение + + + + МинимальноеЗначениеExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + + МинимальноеЗначениеКонтекстноеМеню + 25 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + МаксимальноеЗначение + 26 + true + true + + true + + + + Объект.МаксимальноеЗначение + + + + МаксимальноеЗначениеExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + + МаксимальноеЗначениеКонтекстноеМеню + 27 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Реквизиты числа</value> + + + РеквизитыЧислаExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + АгрегироватьСуммуВОтчетах + 85 + true + true + + true + + + + Объект.АгрегироватьСуммуВОтчетах + + + Right + + АгрегироватьСуммуВОтчетахExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + + АгрегироватьСуммуВОтчетахКонтекстноеМеню + 86 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Страница число</value> + + + СтраницаЧислоExtendedTooltip + 105 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаСтрока + 72 + + ДлинаСтроки + 91 + true + true + + true + + + + ДлинаСтроки + + + + ДлинаСтрокиExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + + ДлинаСтрокиКонтекстноеМеню + 92 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 0 + + + + true + true + + true + + + <key>ru</key> + <value>Страница строка</value> + + + СтраницаСтрокаExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + ВариантыОтветов + 33 + + ВариантыОтветовИнформация + 77 + + ИнформацияВариантыОтветов + 80 + true + true + + true + + + + ИнформацияВариантыОтветов + + + None + + ИнформацияВариантыОтветовExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияВариантыОтветовКонтекстноеМеню + 81 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 72 + true + true + false + + + true + true + + true + + + <key>ru</key> + <value>Варианты ответов информация</value> + + true + + ВариантыОтветовИнформацияExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + LeftNarrowest + Auto + Auto + + + + ТаблицаВариантыОтветов + 55 + + <key>ru</key> + <value>Таблица варианты ответов</value> + + true + true + + true + + + ВариантыОтветов + + false + None + + Владелец + 70 + + true + + + + ВариантыОтветов.Owner + + + + ВладелецExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 71 + true + true + + true + + true + + LabelField + true + Left + true + + true + true + + + + ВариантыОтветовРеквизитДопУпорядочивания + 89 + true + true + + + + ВариантыОтветов.РеквизитДопУпорядочивания + + + + ВариантыОтветовРеквизитДопУпорядочиванияExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + + ВариантыОтветовРеквизитДопУпорядочиванияКонтекстноеМеню + 90 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 3 + true + true + false + + + + Ответ + 58 + + <key>ru</key> + <value>Ответ</value> + + true + true + + true + + + + ВариантыОтветов.Description + + + + ОтветExtendedTooltip + 124 + true + true + + true + + Label + true + true + + Left + + + + ОтветКонтекстноеМеню + 59 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + true + true + + + + ТребуетОткрытогоОтвета + 64 + true + true + + true + + + + ВариантыОтветов.ТребуетОткрытогоОтвета + + + None + + ТребуетОткрытогоОтветаExtendedTooltip + 125 + true + true + + true + + Label + true + true + + Left + + + + ТребуетОткрытогоОтветаКонтекстноеМеню + 65 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + + CommonPicture.Комментарий + + Left + true + + + + ТаблицаВариантыОтветовСсылка + 129 + true + true + + + + ВариантыОтветов.Ref + + + + ТаблицаВариантыОтветовСсылкаРасширеннаяПодсказка + 131 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаВариантыОтветовСсылкаКонтекстноеМеню + 130 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ТаблицаВариантыОтветовКоманднаяПанель + 57 + true + true + + true + + Left + true + + + Selection + ТаблицаВариантыОтветовВыбор + + + BeforeAddRow + ТаблицаВариантыОтветовПередНачаломДобавления + + + BeforeRowChange + ТаблицаВариантыОтветовПередНачаломИзменения + + + true + true + + true + + ТаблицаВариантыОтветовСтрокаПоиска + 132 + + ТаблицаВариантыОтветовСтрокаПоискаРасширеннаяПодсказка + 134 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаВариантыОтветовСтрокаПоискаКонтекстноеМеню + 133 + true + true + + true + + true + + + true + + + + true + true + + true + + ТаблицаВариантыОтветовСостояниеПросмотра + 135 + + ТаблицаВариантыОтветовСостояниеПросмотраРасширеннаяПодсказка + 137 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаВариантыОтветовСостояниеПросмотраКонтекстноеМеню + 136 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ТаблицаВариантыОтветовУправлениеПоиском + 138 + + ТаблицаВариантыОтветовУправлениеПоискомРасширеннаяПодсказка + 140 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаВариантыОтветовУправлениеПоискомКонтекстноеМеню + 139 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТаблицаВариантыОтветовExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаВариантыОтветовКонтекстноеМеню + 56 + true + true + + true + + true + + true + true + true + 8 + true + Row +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + + ВариантыОтветов.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + +
        + true + true + + true + + + <key>ru</key> + <value>Варианты ответов</value> + + + ВариантыОтветовExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + Пустая + 51 + + Декорация + 52 + true + true + + true + + + ДекорацияExtendedTooltip + 128 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияКонтекстноеМеню + 53 + true + true + + true + + true + + Label + true + false + + Left + + + true + true + + true + + + <key>ru</key> + <value>Пустая</value> + + + ПустаяExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Зависимые параметры</value> + + 72 + + ЗависимыеПараметрыExtendedTooltip + 104 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
        + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + ChartOfCharacteristicTypesObject.ВопросыДляАнкетирования + + + true + + + true + +
        true
        + true +
        + + ВариантыОтветов + + <key>ru</key> + <value>Варианты ответов</value> + + 3 + + DynamicList + + + true + + + true + + + ВариантыОтветов.Description + + + ВариантыОтветов.Ref + + + ВариантыОтветов.РеквизитДопУпорядочивания + + + ВариантыОтветов.ТребуетОткрытогоОтвета + + + Catalog.ВариантыОтветовАнкет + true + true + true + true + + + + ТипОтвета + + <key>ru</key> + <value>Тип ответа</value> + + 2 + + EnumRef.ТипыОтветовНаВопрос + TypeDescription + + + true + + + true + + + + ИнформацияВариантыОтветов + + <key>ru</key> + <value>Информация варианты ответов</value> + + 6 + + String + + + + true + + + true + + + + ДлинаСтроки + + <key>ru</key> + <value>Длина строки</value> + + 5 + + Number + + 4 + true + + + + true + + + true + + + + НаименованиеДоРедактирования + 7 + + String + + + + true + + + true + + + + + + Catalog.ВариантыОтветовАнкет.StandardCommand.OpenByValue + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + BeforeWrite + ПередЗаписью + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..700db44a --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,26 @@ + +

        Предназначена для ввода вопроса.

        +

        Одним из важных этапов подготовки анкет является составление вопросов.

        +

        Данный вопрос называется элементарным, т.к. может использоваться в качестве элементов более сложных конструкций.

        +

        Ввод вопроса

        +
        • В поле Наименование введите краткое представление вопроса, которое выводится при подборе вопросов в шаблоны анкет. +
        • Для того чтобы поместить вопрос в одну из групп, в поле Группа вопросов выберите группу из списка. +
        • В поле Формулировка можно ввести развернутый текст вопроса, который будет затем выведен в соответствующее поле шаблона анкеты. По умолчанию, текст автоматически подставляется из поля Наименование. +
        • Содержание и формы ответов респондента зависят от значения поля Тип ответа, которое может быть одним из следующих: +
          • Строка - в этом случае от респондента требуется ввести ответ в виде текстовой строки, +
            • В поле Длина строки задайте ограничение по количеству символов строки. Поле является обязательным.
          • Текст - ответ вводится респондентов в текстовом поле длиной до 1024 символов. Длинный ответ можно ввести в отдельном окне. +
          • Число - при ответе на вопрос этого типа респондент вводит число. +
            • В поле Длина задайте количество знаков числа. Поле является обязательным. +
            • В поле Точность задайте количество знаков после запятой. По умолчанию равна 0. +
            • Можно задать Минимальное и Максимальное значение числа. При попытке ввода респондентом числа, которое не удовлетворяет ограничению, указанного в полях Минимальное значение и Максимальное значение, будет выдано предупреждение о вводе некорректных данных. +
            • Включите флажок Агрегировать сумму в отчетах, для того чтобы в отчете Анализ опроса выводилась общая сумму по всем анкетам, в которых заполнен ответ на этот вопрос.
          • Дата - при ответе на вопрос этого типа респондент вводит дату. +
          • Булево - респонденту доступен выбор одного из двух значений: Да или Нет. +
          • Выбор одного варианта ответа из предложенных - с помощью этого типа ответа можно предложить респонденту выбрать один из вариантов ответа с помощью переключателей. Возможные варианты ответов составитель может задать в списке. +
            • С помощью поля Вид можно определить, как будет выглядеть выбор варианта ответа в шаблоне анкеты: +
              • Переключатель; +
              • Тумблер.
          • Выбор нескольких вариантов ответа из предложенных - респондент может отметить произвольное количество вариантов ответа с помощью флажков. Возможные варианты ответов составитель может задать в списке. +
            • Если в списке у варианта ответа установить флажок Требует открытого ответа, то респонденту будет предложено дать развернутый ответ в текстовом поле под вариантами ответа, прокомментировав таким образом свой выбор.
          • Помимо перечисленных типов ответов, также имеется возможность выбрать в качестве типа ответа один из некоторых списков программы. В этом случае респондент будет выбирать в качестве ответа на вопрос элемент списка программы.
        • Включение флажка Попросить респондента прокомментировать ответ, пояснив характер комментария на этапе подготовки вопроса позволит респонденту при заполнении анкеты в текстовом поле рядом с ответом разъяснить свой ответ. +
          • В случае установки флажка в поле ниже нужно указать текст, который будет выводиться перед текстовым полем разъяснения респондента. Поле является обязательным. +
          • Флажок Попросить респондента прокомментировать ответ, пояснив характер комментария недоступен при выборе типа ответа Текст и Выбор нескольких вариантов ответа из предложенных. В ответе типа Текст и так можно дать развернутый ответ. Для ответа типа Выбор нескольких вариантов ответа из предложенных при необходимости предусмотрен вывод поля с комментарием для каждого варианта ответа.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..b9c39a2a --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,486 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект); + + // Установим отбор по владельцу на динамическом списке справочника "Варианты ответов анкет". + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ВариантыОтветов,"Владелец", Объект.Ссылка, ВидСравненияКомпоновкиДанных.Равно, ,Истина); + + УстановитьТипОтвета(); + + Если ТипОтвета = Перечисления.ТипыОтветовНаВопрос.Строка Тогда + ДлинаСтроки = Объект.Длина; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.Переключатель; + Объект.ВидФлажка = Перечисления.ВидыФлажкаВАнкетах.ПолеВвода; + КонецЕсли; + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения(); + ПараметрыРазмещения.Источники = Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ВопросыДляАнкетирования"); + ПараметрыРазмещения.КоманднаяПанель = Элементы.ФормаКоманднаяПанель; + ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения); + + ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения(); + ПараметрыРазмещения.Источники = Новый ОписаниеТипов("СправочникСсылка.ВариантыОтветовАнкет"); + ПараметрыРазмещения.КоманднаяПанель = Элементы.ТаблицаВариантыОтветовКоманднаяПанель; + ПараметрыРазмещения.ПрефиксГрупп = "ВариантыОтветовАнкет"; + ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + НаименованиеДоРедактирования = Объект.Наименование; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Объект.Ссылка.Пустая() Тогда + ПриИзмененииТипаОтвета(); + КонецЕсли; + УправлениеВидимостью(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + Если Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Число") Тогда + + Если Объект.МинимальноеЗначение > Объект.МаксимальноеЗначение Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Минимально допустимое значение не может быть больше чем максимальное.'"),, + "Объект.МинимальноеЗначение"); + Отказ = Истина; + КонецЕсли; + + ИначеЕсли Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Строка") Тогда + + Объект.Длина = ДлинаСтроки; + Если ДлинаСтроки = 0 Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не заполнено значение длины строки.'"),,"ДлинаСтроки"); + Отказ = Истина; + КонецЕсли; + + ИначеЕсли Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Текст") Тогда + + Объект.Длина = 1024; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + ДоступностьТаблицыВариантыОтветов(ЭтотОбъект); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ВариантыОтветов, + "Владелец", + Объект.Ссылка, + ВидСравненияКомпоновкиДанных.Равно, + , + Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ТипОтветаПриИзменении(Элемент) + + ПриИзмененииТипаОтвета(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТаблицаВариантыОтветовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + ОткрытьФормуЭлементаСправочникаВопросыОтветовАнкет(Элемент,Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ТребуетсяКомментарийПриИзменении(Элемент) + + ДоступностьНеобходимостьПояснениеКомментария(); + +КонецПроцедуры + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + + Если Объект.Формулировка = НаименованиеДоРедактирования Тогда + + Объект.Формулировка = Объект.Наименование; + + КонецЕсли; + + НаименованиеДоРедактирования = Объект.Наименование; + +КонецПроцедуры + +&НаКлиенте +Процедура ТаблицаВариантыОтветовПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + ОткрытьФормуЭлементаСправочникаВопросыОтветовАнкет(Элемент,Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ТаблицаВариантыОтветовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ОткрытьФормуЭлементаСправочникаВопросыОтветовАнкет(Элемент,Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ДлинаПриИзменении(Элемент) + + УстановитьТочностьВЗависимостиОтДлиныЧисла(); + + ОтключитьОтметкуНезаполненного(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТочностьПриИзменении(Элемент) + + УстановитьТочностьВЗависимостиОтДлиныЧисла(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОповещениеОЗакрытии = Новый ОписаниеОповещения("РедактированиеФормулировкиПриЗакрытии", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(ОповещениеОЗакрытии, Элемент.ТекстРедактирования, НСтр("ru = 'Формулировка'")); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +// СтандартныеПодсистемы.ПодключаемыеКоманды +// +// Параметры: +// Команда - КомандаФормы +// +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + Если СтрНачинаетсяС(Команда.Имя, "ВариантыОтветовАнкет") Тогда + ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.ТаблицаВариантыОтветов); + Иначе + ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + Если СтрНачинаетсяС(ПараметрыВыполнения.ИмяКомандыВФорме, "ВариантыОтветовАнкет") Тогда + ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.ТаблицаВариантыОтветов); + Иначе + ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.ТаблицаВариантыОтветов); +КонецПроцедуры +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Длина.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Длина"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + + ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТипОтвета"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыОтветовНаВопрос.Строка; + + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТипОтвета"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыОтветовНаВопрос.Число; + + Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТипОтвета.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТипОтвета"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыОтветовНаВопрос.ЗначениеИнформационнойБазы; + + Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина); + +КонецПроцедуры + +// Управляет видимостью страниц и элементов формы. +&НаКлиенте +Процедура УправлениеВидимостью() + + ВозможенКомментарий = НЕ (Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.НесколькоВариантовИз") + ИЛИ Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Текст")); + Элементы.ТребуетсяКомментарий.Доступность = ВозможенКомментарий; + Элементы.Комментарий.Доступность = ВозможенКомментарий; + Если НЕ ВозможенКомментарий Тогда + Объект.ТребуетсяКомментарий = Ложь; + Объект.ПояснениеКомментария = ""; + КонецЕсли; + ДоступностьНеобходимостьПояснениеКомментария(); + + Если Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Строка") Тогда + + Элементы.ЗависимыеПараметры.ТекущаяСтраница = Элементы.СтраницаСтрока; + + ИначеЕсли Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Число") Тогда + + Элементы.ЗависимыеПараметры.ТекущаяСтраница = Элементы.СтраницаЧисло; + + ИначеЕсли Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ЗначениеИнформационнойБазы") Тогда + + Элементы.ЗависимыеПараметры.ТекущаяСтраница = Элементы.Пустая; + + ИначеЕсли Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ОдинВариантИз") + ИЛИ Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.НесколькоВариантовИз") Тогда + + Элементы.ЗависимыеПараметры.ТекущаяСтраница = Элементы.ВариантыОтветов; + + ДоступностьТаблицыВариантыОтветов(ЭтотОбъект); + + Иначе + + Элементы.ЗависимыеПараметры.ТекущаяСтраница = Элементы.Пустая; + + КонецЕсли; + + Если Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ОдинВариантИз") Тогда + + Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидПереключателяОтображать; + + ИначеЕсли Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Булево") Тогда + + Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидОтображенияБулевоОтображать; + + Иначе + + Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидПереключателяНеОтображать; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииТипаОтвета() + + Если ТипЗнч(ТипОтвета) = Тип("ПеречислениеСсылка.ТипыОтветовНаВопрос") Тогда + + Объект.ТипОтвета = ТипОтвета; + + ИначеЕсли ТипЗнч(ТипОтвета) = Тип("ОписаниеТипов") Тогда + + Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ЗначениеИнформационнойБазы"); + Объект.ТипЗначения = ТипОтвета; + + КонецЕсли; + + УправлениеВидимостью(); + + Если Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Число") Тогда + УстановитьТочностьВЗависимостиОтДлиныЧисла(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДоступностьНеобходимостьПояснениеКомментария() + + Элементы.ПояснениеКомментария.АвтоОтметкаНезаполненного = Объект.ТребуетсяКомментарий; + Элементы.ПояснениеКомментария.ТолькоПросмотр = НЕ Объект.ТребуетсяКомментарий; + + ОтключитьОтметкуНезаполненного(); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ДоступностьТаблицыВариантыОтветов(Форма) + + Если Форма.Объект.Ссылка.Пустая() Тогда + Форма.Элементы.ТаблицаВариантыОтветов.ТолькоПросмотр = Истина; + Форма.ИнформацияВариантыОтветов = НСтр("ru = 'Для редактирования вариантов ответов необходимо записать вопрос для анкетирования'"); + Иначе + Форма.Элементы.ТаблицаВариантыОтветов.ТолькоПросмотр = Ложь; + Форма.ИнформацияВариантыОтветов = НСтр("ru = 'Варианты ответов на вопрос:'"); + КонецЕсли; + + Если Форма.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.ОдинВариантИз") Тогда + Форма.Элементы.ТребуетОткрытогоОтвета.Видимость = Ложь; + ИначеЕсли Форма.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.НесколькоВариантовИз") Тогда + Форма.Элементы.ТребуетОткрытогоОтвета.Видимость = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуЭлементаСправочникаВопросыОтветовАнкет(Элемент,РежимДобавления) + + СтруктураПараметров = Новый Структура; + СтруктураПараметров.Вставить("Владелец",Объект.Ссылка); + СтруктураПараметров.Вставить("ТипОтвета",Объект.ТипОтвета); + СтруктураПараметров.Вставить("Наименование",Объект.ТипОтвета); + + Если Не РежимДобавления Тогда + ТекущиеДанные = Элементы.ТаблицаВариантыОтветов.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + СтруктураПараметров.Вставить("Ключ",ТекущиеДанные.Ссылка); + Иначе + ТекущиеДанные = Элементы.ТаблицаВариантыОтветов.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + СтруктураПараметров.Вставить("Наименование",ТекущиеДанные.Наименование); + КонецЕсли; + КонецЕсли; + + ОткрытьФорму("Справочник.ВариантыОтветовАнкет.Форма.ФормаЭлемента",СтруктураПараметров,Элемент); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьТипОтвета() + + Для каждого ЗначениеПеречисления Из Метаданные.Перечисления.ТипыОтветовНаВопрос.ЗначенияПеречисления Цикл + + Если Перечисления.ТипыОтветовНаВопрос[ЗначениеПеречисления.Имя] = Перечисления.ТипыОтветовНаВопрос.ЗначениеИнформационнойБазы Тогда + + Для каждого ДоступныйТип Из РеквизитФормыВЗначение("Объект").Метаданные().Тип.Типы() Цикл + + Если ДоступныйТип = Тип("Строка") ИЛИ ДоступныйТип = Тип("Булево") ИЛИ ДоступныйТип = Тип("Число") ИЛИ ДоступныйТип = Тип("Дата") ИЛИ ДоступныйТип = Тип("СправочникСсылка.ВариантыОтветовАнкет") Тогда + Продолжить; + КонецЕсли; + + МассивТипов = Новый Массив; + МассивТипов.Добавить(ДоступныйТип); + Элементы.ТипОтвета.СписокВыбора.Добавить(Новый ОписаниеТипов(МассивТипов)); + + КонецЦикла; + + Иначе + Элементы.ТипОтвета.СписокВыбора.Добавить(Перечисления.ТипыОтветовНаВопрос[ЗначениеПеречисления.Имя]); + КонецЕсли; + + КонецЦикла; + + Если Объект.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.ЗначениеИнформационнойБазы Тогда + + ТипОтвета = Объект.ТипЗначения; + + ИначеЕсли Объект.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.ПустаяСсылка() Тогда + + ТипОтвета = Элементы.ТипОтвета.СписокВыбора[0].Значение; + + Иначе + + ТипОтвета = Объект.ТипОтвета; + + КонецЕсли; + +КонецПроцедуры + +// Устанавливает точность числового ответа в зависимости от выбранной длины. +// +&НаКлиенте +Процедура УстановитьТочностьВЗависимостиОтДлиныЧисла() + + Если Объект.Длина > 15 Тогда + Объект.Длина = 15; + КонецЕсли; + + Если Объект.Длина = 0 Тогда + Объект.Точность = 0; + ИначеЕсли Объект.Длина <= Объект.Точность Тогда + Объект.Точность = Объект.Длина - 1; + КонецЕсли; + + Если Объект.Точность > 3 Тогда + Объект.Точность = 3; + КонецЕсли; + + Если (Объект.Длина - Объект.Точность) > 12 Тогда + Объект.Длина = Объект.Точность + 12; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РедактированиеФормулировкиПриЗакрытии(ТекстВозврата, ДополнительныеПараметры) Экспорт + + Если Объект.Формулировка <> ТекстВозврата Тогда + Объект.Формулировка = ТекстВозврата; + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..8e9f0c84 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,14 @@ + +

        Подготовка вопросов для анкетирования.

        +

        Открывается по команде Вопросы для анкетирования в разделе Анкетирование.

        +

        Одним из важных этапов подготовки анкет является составление вопросов.

        +

        В общем списке содержатся вопросы, которые могут быть включены в любую анкету. Эти вопросы называются элементарными, т.к. могут использоваться в качестве элементов более сложных конструкций.

        +

        В списке выводится:

        +
        • Код - проставляется автоматически; +
        • Наименование - краткое наименование вопроса; +
        • Формулировка - полная формулировка вопроса.

        Ввод нового вопроса

        +
        • Нажмите Создать, заполните необходимые поля.

        Группировка вопросов

        +
        • Вопросы в списке можно группировать, например, по темам анкет. +
        • Нажмите Создать группу, введите Наименование группы. Можно подчинить эту группу одной из имеющихся. Для этого в поле Родитель выберите группу из списка. +
        • Введите необходимое количество групп. Перетащите вопросы в соответствующие группы или введите вопросы в выбранную группу.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" new file mode 100644 index 00000000..12629ff1 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ManagerModule.bsl" @@ -0,0 +1,141 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики обновления. + +// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, +// которые необходимо обновить на новую версию. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ВопросыДляАнкетирования.Ссылка + |ИЗ + | ПланВидовХарактеристик.ВопросыДляАнкетирования КАК ВопросыДляАнкетирования + |ГДЕ + | (ВопросыДляАнкетирования.ВидПереключателя = ЗНАЧЕНИЕ(Перечисление.ВидыПереключателяВАнкетах.ПустаяСсылка) + | ИЛИ ВопросыДляАнкетирования.ВидФлажка = ЗНАЧЕНИЕ(Перечисление.ВидыФлажкаВАнкетах.ПустаяСсылка))"; + Результат = Запрос.Выполнить().Выгрузить(); + МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); + +КонецПроцедуры + +// Заполнить значение нового реквизита ВидПереключателя у плана видов характеристик ВопросыДляАнкетирования. +// +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "ПланВидовХарактеристик.ВопросыДляАнкетирования"); + + Пока Выборка.Следующий() Цикл + + Попытка + + ЗаполнитьНовыеРеквизиты(Выборка.Ссылка); + + Исключение + // Если не удалось обработать объект, повторяем попытку снова. + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать вопрос для анкетирования: %1 по причине: + |%2'"), + Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.ПланыВидовХарактеристик.ВопросыДляАнкетирования, Выборка.Ссылка, ТекстСообщения); + КонецПопытки; + + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "ПланВидовХарактеристик.ВопросыДляАнкетирования"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Заполняет значения новых реквизитов ВидПереключателя и ВидФлажка у переданного объекта. +// +Процедура ЗаполнитьНовыеРеквизиты(ВопросДляАнкетирования) + + НачатьТранзакцию(); + Попытка + + // Блокируем объект от изменения другими сеансами. + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("ПланВидовХарактеристик.ВопросыДляАнкетирования"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ВопросДляАнкетирования); + Блокировка.Заблокировать(); + + Объект = ВопросДляАнкетирования.ПолучитьОбъект(); + + // Если объект ранее был удален или обработан другими сеансами, пропускаем его. + Если Объект = Неопределено Тогда + ОтменитьТранзакцию(); + Возврат; + КонецЕсли; + Если Объект.ВидПереключателя <> Перечисления.ВидыПереключателяВАнкетах.ПустаяСсылка() И Объект.ВидФлажка <> Перечисления.ВидыФлажкаВАнкетах.ПустаяСсылка() Тогда + ОтменитьТранзакцию(); + Возврат; + КонецЕсли; + + // Обработка объекта. + Если Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.ПустаяСсылка() Тогда + Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.Переключатель; + КонецЕсли; + + Если Объект.ВидФлажка = Перечисления.ВидыФлажкаВАнкетах.ПустаяСсылка() Тогда + Объект.ВидФлажка = Перечисления.ВидыФлажкаВАнкетах.Флажок; + КонецЕсли; + + // Запись обработанного объекта. + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" new file mode 100644 index 00000000..04d87976 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/ObjectModule.bsl" @@ -0,0 +1,133 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Если ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + МассивНепроверяемыхРеквизитов = Новый Массив(); + + Если Не ТребуетсяКомментарий Тогда + МассивНепроверяемыхРеквизитов.Добавить("ПояснениеКомментария"); + КонецЕсли; + + Если (ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Строка) + И (ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Число) Тогда + МассивНепроверяемыхРеквизитов.Добавить("Длина"); + КонецЕсли; + Если ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.ЗначениеИнформационнойБазы Тогда + МассивНепроверяемыхРеквизитов.Добавить("ТипЗначения"); + КонецЕсли; + + ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов); + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + + Если Не ЭтоГруппа Тогда + ОчиститьНенужныеРеквизиты(); + УстановкаТипаПВХ(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Процедура очищает значения ненужных реквизитов, +// Такая ситуация возникает, когда пользователь изменяет тип ответа при редактировании. +// +Процедура ОчиститьНенужныеРеквизиты() + + Если ((ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Число) И (ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Строка) И (ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Текст)) + И (Длина <> 0)Тогда + + Длина = 0; + + КонецЕсли; + + Если (ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Число) Тогда + + МинимальноеЗначение = 0; + МаксимальноеЗначение = 0; + АгрегироватьСуммуВОтчетах = Ложь; + + КонецЕсли; + + Если ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз Тогда + ТребуетсяКомментарий = Ложь; + ПояснениеКомментария = ""; + КонецЕсли; + +КонецПроцедуры + +// Устанавливает тип значения ПВХ в зависимости от типа ответа. +Процедура УстановкаТипаПВХ() + + ТипыОтветовНаВопрос = Перечисления.ТипыОтветовНаВопрос; + + // Квалификаторы + КЧ = Новый КвалификаторыЧисла(?(Длина = 0,15,Длина),Точность); + КС = Новый КвалификаторыСтроки(Длина); + КД = Новый КвалификаторыДаты(ЧастиДаты.Дата); + + // Описание типов + ОписаниеТиповЧисло = Новый ОписаниеТипов("Число",,КЧ); + ОписаниеТиповСтрока = Новый ОписаниеТипов("Строка", , КС); + ОписаниеТиповДата = Новый ОписаниеТипов("Дата",КД , , ); + ОписаниеТиповБулево = Новый ОписаниеТипов("Булево"); + ОписаниеТиповВО = Новый ОписаниеТипов("СправочникСсылка.ВариантыОтветовАнкет"); + + Если ТипОтвета = ТипыОтветовНаВопрос.Строка Тогда + + ТипЗначения = ОписаниеТиповСтрока; + + ИначеЕсли ТипОтвета = ТипыОтветовНаВопрос.Текст Тогда + + ТипЗначения = ОписаниеТиповСтрока; + + ИначеЕсли ТипОтвета = ТипыОтветовНаВопрос.Число Тогда + + ТипЗначения = ОписаниеТиповЧисло; + + ИначеЕсли ТипОтвета = ТипыОтветовНаВопрос.Дата Тогда + + ТипЗначения = ОписаниеТиповДата; + + ИначеЕсли ТипОтвета = ТипыОтветовНаВопрос.Булево Тогда + + ТипЗначения = ОписаниеТиповБулево; + + ИначеЕсли ТипОтвета =ТипыОтветовНаВопрос.ОдинВариантИз + ИЛИ ТипОтвета = ТипыОтветовНаВопрос.НесколькоВариантовИз Тогда + + ТипЗначения = ОписаниеТиповВО; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..51ff86f3 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\222\320\276\320\277\321\200\320\276\321\201\321\213\320\224\320\273\321\217\320\220\320\275\320\272\320\265\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" @@ -0,0 +1,462 @@ + + + + + + + + + + + ВопросыДляАнкетирования + + ru + Вопросы для анкетирования + + true + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.Description + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + ValueType + + ShowError + Use + + + + + Use + Description + + ru + Наименование вопроса для представления в списке вопросов. Не выводится респонденту. + + + ShowError + Use + + + + + Use + Code + + ru + Код вопроса в плане видов характеристик + + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Parent + + ru + Группа вопросов + + + ru + Группа вопросов для анкетирования. + + true + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.EmptyRef + + Use + + + + + Use + Predefined + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + Ref + + Use + + + + DontUse + + + ru + + + Managed + Use + + ru + Вопрос для анкетирования + + Catalog.ВариантыОтветовАнкет + + Boolean + String + Date + Number + CatalogRef.ВариантыОтветовАнкет + + 15 + 3 + + + 1024 + + + Date + + + true + true + 9 + Variable + 100 + true + true + AsDescription + InDialog + BothWays + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Form.ФормаЭлемента + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Form.ФормаСписка + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Form.ФормаВыбора + + Формулировка + + ru + Формулировка + + + String + + 300 + + + + ru + Формулировка вопроса, как её увидит респондент + + true + + + ShowError + + + + Use + Use + + + ТипОтвета + + ru + Тип ответа + + + EnumRef.ТипыОтветовНаВопрос + + + ru + Тип ответа на вопрос + + + + ShowError + true + + Enum.ТипыОтветовНаВопрос.EmptyRef + + Index + Use + Use + + + ТребуетсяКомментарий + + ru + Требуется комментарий + + + Boolean + + + ru + Признак необходимости прокомментировать данный ответ респондентом + + + + + Use + Use + + + ПояснениеКомментария + + ru + Пояснение комментария + + + String + + 150 + + + + ru + Текст, который будет отображаться как пояснение к полю комментарий вопроса + + + + ShowError + + + + Use + Use + + + ЗаполнятьАвтоматически + + ru + Заполнять автоматически + + + Boolean + + + ru + Доступен для предопределенных вопросов + + + + + Use + Use + + + Длина + + ru + Длина + + + Number + + 10 + true + + + + ru + Длина строкового или числового типа ответа + + + + ShowError + + 0 + + Use + Use + + + МинимальноеЗначение + + ru + Минимальное значение + + + Number + + 15 + + + + ru + Минимально возможное значение ответа + + + + + 0 + + Use + Use + + + МаксимальноеЗначение + + ru + Максимальное значение + + + Number + + 15 + + + + ru + Максимально возможное значение ответа + + + + + 0 + + Use + Use + + + Точность + + ru + Точность + + + Number + + 1 + true + + + + ru + Точность числовых ответов + + + + + Use + Use + + + АгрегироватьСуммуВОтчетах + + ru + Агрегировать сумму в отчетах + + + Boolean + + + ru + Признак определяет, будет ли выполняться агрегирование ответов на данный вопрос в отчете "Анализ опроса" + + + + + Use + Use + + + ВидПереключателя + + ru + Вид переключателя + + + EnumRef.ВидыПереключателяВАнкетах + + + ru + Вид переключателя для выбора одного варианта ответа из предложенных + + + + + Use + Use + + + ВидФлажка + + ru + Вид флажка + + + EnumRef.ВидыФлажкаВАнкетах + + + ru + Внешний вид флажка для выбора одного из двух значений - Да или Нет + + + + + Enum.ВидыПереключателяВАнкетах.EnumValue.Переключатель + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260/Form.form" new file mode 100644 index 00000000..432076ba --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260/Form.form" @@ -0,0 +1,494 @@ + + + + <key>ru</key> + <value>Выбор реквизита</value> + + + РеквизитыОбъекта + 1 + + <key>ru</key> + <value>Реквизиты объекта</value> + + true + true + + true + + + РеквизитыОбъекта + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + SelectAll + ShowMultipleSelection + ShowRowRearrangement + SortListAsc + SortListDesc + + РеквизитыОбъектаПредставление + 14 + true + true + + true + + + + РеквизитыОбъекта.Представление + + + + РеквизитыОбъектаПредставлениеРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыОбъектаПредставлениеКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + РеквизитыОбъектаКоманднаяПанель + 3 + true + true + + true + + Left + + + Selection + РеквизитыОбъектаВыбор + + + true + true + + true + + РеквизитыОбъектаСтрокаПоиска + 5 + + РеквизитыОбъектаСтрокаПоискаРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыОбъектаСтрокаПоискаКонтекстноеМеню + 6 + true + true + + true + + true + + + true + + + + true + true + + true + + РеквизитыОбъектаСостояниеПросмотра + 8 + + РеквизитыОбъектаСостояниеПросмотраРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыОбъектаСостояниеПросмотраКонтекстноеМеню + 9 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + РеквизитыОбъектаУправлениеПоиском + 11 + + РеквизитыОбъектаУправлениеПоискомРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыОбъектаУправлениеПоискомКонтекстноеМеню + 12 + true + true + + true + + true + + SearchControlAddition + + true + + + + РеквизитыОбъектаРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + + РеквизитыОбъектаКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + + РеквизитыОбъекта.НомерКартинки + + + CommonPicture.ВидыОпераций + + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаКомандаВыбрать + 17 + true + true + + true + + + ФормаКомандаВыбратьРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаВыбрать + Auto + true + true + true + UserCmds + Auto + + + ФормаКомандаОтмена + 19 + true + true + + true + + + ФормаКомандаОтменаРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаОтмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + РеквизитыОбъекта + + <key>ru</key> + <value>Реквизиты объекта</value> + + 1 + + ValueTable + + + true + + + true + + + Реквизит + 1 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + String + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + ТипЗначения + 4 + + TypeDescription + + + true + + + true + + + + НомерКартинки + 5 + + Number + + 10 + + + + true + + + true + + + + РежимВыбора + 3 + + + true + + + true + + + + + КомандаВыбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Команда выбрать + + + true + + + + КомандаВыбрать + + + DontUse + + + КомандаОтмена + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Команда отмена + + + true + + + + КомандаОтмена + + + DontUse + + + РеквизитыОбъекта + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..f9d25675 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\222\321\213\320\261\320\276\321\200\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260/Module.bsl" @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТаблицаРеквизитов = ПолучитьИзВременногоХранилища(Параметры.РеквизитыОбъекта); + ЗначениеВРеквизитФормы(ТаблицаРеквизитов, "РеквизитыОбъекта"); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КомандаВыбрать(Команда) + ВыбратьЭлементИЗакрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаОтмена(Команда) + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура РеквизитыОбъектаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + ВыбратьЭлементИЗакрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ВыбратьЭлементИЗакрыть() + ВыбраннаяСтрока = Элементы.РеквизитыОбъекта.ТекущиеДанные; + ПараметрыВыбора = Новый Структура; + ПараметрыВыбора.Вставить("Реквизит", ВыбраннаяСтрока.Реквизит); + ПараметрыВыбора.Вставить("Представление", ВыбраннаяСтрока.Представление); + ПараметрыВыбора.Вставить("ТипЗначения", ВыбраннаяСтрока.ТипЗначения); + ПараметрыВыбора.Вставить("РежимВыбора", ВыбраннаяСтрока.РежимВыбора); + + Оповестить("Свойства_ВыборРеквизитаОбъекта", ПараметрыВыбора); + + Закрыть(); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Form.form" new file mode 100644 index 00000000..ea5c2e48 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Form.form" @@ -0,0 +1,888 @@ + + + + ЗависимостиРеквизитов + 5 + + <key>ru</key> + <value>Зависит от значения свойств и реквизитов</value> + + true + true + + true + + + ЗависимостиРеквизитов + + Top + Add + Change + Copy + EndEdit + MoveDown + MoveUp + SelectAll + ShowMultipleSelection + ShowRowRearrangement + SortListAsc + SortListDesc + + ЗависимостиРеквизитовРеквизит + 18 + true + true + + true + + + + ЗависимостиРеквизитов.Представление + + + + ЗависимостиРеквизитовРеквизитРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + + ЗависимостиРеквизитовРеквизитКонтекстноеМеню + 19 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + ЗависимостиРеквизитовРеквизитНачалоВыбора + + true + true + true + true + true + true + true + true + + + + ЗависимостиРеквизитовВидСравнения + 21 + true + true + + true + + + + ЗависимостиРеквизитов.Условие + + + + OnChange + ЗависимостиРеквизитовВидСравненияПриИзменении + + + ЗависимостиРеквизитовВидСравненияРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + + ЗависимостиРеквизитовВидСравненияКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + ru + Равно + + + Равно + + + + + ru + Не равно + + + НеРавно + + + + + ru + Заполнено + + + Заполнено + + + + + ru + Не заполнено + + + НеЗаполнено + + + + + ru + В списке + + + ВСписке + + + + + ru + Не в списке + + + НеВСписке + + + + + + ЗависимостиРеквизитовПравоеЗначение + 24 + true + true + + true + + + + ЗависимостиРеквизитов.Значение + + + + ЗависимостиРеквизитовПравоеЗначениеРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + ЗависимостиРеквизитовПравоеЗначениеКонтекстноеМеню + 25 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ЗависимостиРеквизитовКоманднаяПанель + 7 + + ЗависимостиРеквизитовДобавитьУсловие + 34 + true + true + + true + + + ЗависимостиРеквизитовДобавитьУсловиеРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьУсловие + Auto + true + true + UserCmds + Auto + + + ЗависимостиРеквизитовУдалитьУсловие + 29 + + <key>ru</key> + <value>Удалить условие</value> + + true + true + + true + + + ЗависимостиРеквизитовУдалитьУсловиеРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ЗависимостиРеквизитов.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Left + true + + + BeforeAddRow + ЗависимостиРеквизитовПередНачаломДобавления + + + BeforeRowChange + ЗависимостиРеквизитовПередНачаломИзменения + + + true + true + + true + + ЗависимостиРеквизитовСтрокаПоиска + 9 + + ЗависимостиРеквизитовСтрокаПоискаРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + + ЗависимостиРеквизитовСтрокаПоискаКонтекстноеМеню + 10 + true + true + + true + + true + + + true + + + + true + true + + true + + ЗависимостиРеквизитовСостояниеПросмотра + 12 + + ЗависимостиРеквизитовСостояниеПросмотраРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + ЗависимостиРеквизитовСостояниеПросмотраКонтекстноеМеню + 13 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ЗависимостиРеквизитовУправлениеПоиском + 15 + + ЗависимостиРеквизитовУправлениеПоискомРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + ЗависимостиРеквизитовУправлениеПоискомКонтекстноеМеню + 16 + true + true + + true + + true + + SearchControlAddition + + true + + + + ЗависимостиРеквизитовРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + + ЗависимостиРеквизитовКонтекстноеМеню + 6 + true + true + + true + + true + + true + true + 70 + true + 80 + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
        + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаКомандаОк + 3 + true + true + + true + + + ФормаКомандаОкРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаОк + Auto + true + true + true + UserCmds + Auto + + + ФормаКомандаОтмена + 1 + true + true + + true + + + ФормаКомандаОтменаРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаОтмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ЗависимостиРеквизитов + + <key>ru</key> + <value>Зависимости реквизитов</value> + + 1 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Реквизит</value> + + 1 + + String + + + + true + + + true + + + + Условие + + <key>ru</key> + <value>Вид сравнения</value> + + 2 + + String + + + + true + + + true + + + + Значение + + <key>ru</key> + <value>Значение</value> + + 3 + + ValueList + Boolean + String + Date + Number + AnyRef + + 10 + + + + + + true + + + true + + + + Реквизит + 4 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + String + + + + true + + + true + + + + ТипЗначения + 7 + + TypeDescription + + + true + + + true + + + + ЗависимоеСвойство + 5 + + String + + + + true + + + true + + + + РежимВыбора + 6 + + + true + + + true + + + + НаборСвойств + 8 + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + + + + + РеквизитыОбъектаВХранилище + 2 + + String + + + + true + + + true + + + + НастраиваемоеСвойство + 3 + + String + + + + true + + + true + + + + ДобавлениеСтроки + 4 + + Boolean + + + true + + + true + + + + НажатаОтмена + 5 + + Boolean + + + true + + + true + + + + НаборСвойств + 6 + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + + + + КомандаОк + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + Команда ок + + + true + + + + КомандаОк + + + DontUse + + + КомандаОтмена + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Команда отмена + + + true + + + + КомандаОтмена + + + DontUse + + + ДобавитьУсловие + + <key>ru</key> + <value>Добавить условие</value> + + 3 + + ru + Добавить условие + + + true + + + + ДобавитьУсловие + + + DontUse + + + НастраиваемоеСвойство + + String + + + + + ДополнительныйРеквизит + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + + Набор + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + + ЗависимостиРеквизитов + + + + + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..962a602d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Help/ru.html" @@ -0,0 +1,8 @@ + +

        Предусмотрена для указания свойств одного дополнительного реквизита в зависимости от значения других реквизитов.

        +

        Для общих дополнительных реквизитов данная настройка недоступна.

        +

        Для ввода новых условий нажмите кнопку Добавить условие.

        +

        Таблица для ввода условий состоит из колонок:

        +
        • выберите Реквизит из списка с помощью кнопки ; +
        • выберите Вид сравнения; +
        • выберите из списка или напишите нужное Значение (в зависимости от выбранного реквизита способ указания значения может меняться).

        Если условие не устраивает, уберите его из таблицы с помощью кнопки Удалить условие.

        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..f1072fcc --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Module.bsl" @@ -0,0 +1,461 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + НастраиваемоеСвойство = Параметры.НастраиваемоеСвойство; + + СвойстваОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Параметры.ДополнительныйРеквизит, "Заголовок"); + + Заголовок = НСтр("ru = '%1 дополнительного реквизита ""%2""'"); + Если НастраиваемоеСвойство = "Доступен" Тогда + ПредставлениеСвойства = НСтр("ru = 'Доступность'"); + ИначеЕсли НастраиваемоеСвойство = "ЗаполнятьОбязательно" Тогда + ПредставлениеСвойства = НСтр("ru = 'Обязательность заполнения'"); + Иначе + ПредставлениеСвойства = НСтр("ru = 'Видимость'"); + КонецЕсли; + Заголовок = СтрЗаменить(Заголовок, "%1", ПредставлениеСвойства); + Заголовок = СтрЗаменить(Заголовок, "%2", СвойстваОбъекта.Заголовок); + + Если Не ЗначениеЗаполнено(СвойстваОбъекта.Заголовок) Тогда + Заголовок = СтрЗаменить(Заголовок, """", ""); + КонецЕсли; + + НаборСвойств = Параметры.Набор; + + Если Не ЗначениеЗаполнено(НаборСвойств) Тогда + ТекстИсключения = НСтр("ru = 'Настройка видимости, доступности и обязательности заполнения + |доступна только при открытии дополнительного реквизита + |из списка ""Дополнительные реквизиты"".'"); + ТекстИсключения = СтрЗаменить(ТекстИсключения, Символы.ПС, " "); + ВызватьИсключение ТекстИсключения; + КонецЕсли; + + Родитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НаборСвойств, "Родитель"); + Если Не ЗначениеЗаполнено(Родитель) Тогда + Родитель = НаборСвойств; + КонецЕсли; + + НаборДополнительныхРеквизитов = Родитель.ДополнительныеРеквизиты; + + ПредопределенныеНаборыСвойств = УправлениеСвойствамиПовтИсп.ПредопределенныеНаборыСвойств(); + ОписаниеНабора = ПредопределенныеНаборыСвойств.Получить(Родитель); // см. Справочники.НаборыДополнительныхРеквизитовИСведений.СвойстваНабора + Если ОписаниеНабора = Неопределено Тогда + ИмяПредопределенныхДанных = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Родитель, "ИмяПредопределенныхДанных"); + Иначе + ИмяПредопределенныхДанных = ОписаниеНабора.Имя; + КонецЕсли; + + ПозицияЗаменяемогоСимвола = СтрНайти(ИмяПредопределенныхДанных, "_"); + ПолноеИмяОбъектаМетаданных = Лев(ИмяПредопределенныхДанных, ПозицияЗаменяемогоСимвола - 1) + + "." + + Сред(ИмяПредопределенныхДанных, ПозицияЗаменяемогоСимвола + 1); + + РеквизитыОбъекта = СписокРеквизитовДляОтбора(ПолноеИмяОбъектаМетаданных, НаборДополнительныхРеквизитов); + + СтрокаОтбора = Неопределено; + ЗависимостиДополнительныхРеквизитов = Параметры.ЗависимостиРеквизитов; + Для Каждого СтрокаТабличнойЧасти Из ЗависимостиДополнительныхРеквизитов Цикл + Если СтрокаТабличнойЧасти.НаборСвойств <> НаборСвойств Тогда + Продолжить; + КонецЕсли; + Если СтрокаТабличнойЧасти.ЗависимоеСвойство = НастраиваемоеСвойство Тогда + УсловиеЧастями = СтрРазделить(СтрокаТабличнойЧасти.Условие, " "); + НовоеУсловие = ""; + Если УсловиеЧастями.Количество() > 0 Тогда + Для Каждого ЧастьУсловия Из УсловиеЧастями Цикл + НовоеУсловие = НовоеУсловие + ВРег(Лев(ЧастьУсловия, 1)) + Сред(ЧастьУсловия, 2); + КонецЦикла; + КонецЕсли; + + Если ЗначениеЗаполнено(НовоеУсловие) Тогда + СтрокаТабличнойЧасти.Условие = НовоеУсловие; + КонецЕсли; + + РеквизитСМножественнымЗначением = (СтрокаТабличнойЧасти.Условие = "ВСписке") + Или (СтрокаТабличнойЧасти.Условие = "НеВСписке"); + + Если РеквизитСМножественнымЗначением Тогда + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Реквизит", СтрокаТабличнойЧасти.Реквизит); + ПараметрыОтбора.Вставить("Условие", СтрокаТабличнойЧасти.Условие); + + РезультатПоиска = ЗависимостиРеквизитов.НайтиСтроки(ПараметрыОтбора); + Если РезультатПоиска.Количество() = 0 Тогда + СтрокаОтбора = ЗависимостиРеквизитов.Добавить(); + ЗаполнитьЗначенияСвойств(СтрокаОтбора, СтрокаТабличнойЧасти,, "Значение"); + + Значения = Новый СписокЗначений; + Значения.Добавить(СтрокаТабличнойЧасти.Значение); + СтрокаОтбора.Значение = Значения; + Иначе + СтрокаОтбора = РезультатПоиска[0]; + СтрокаОтбора.Значение.Добавить(СтрокаТабличнойЧасти.Значение); + КонецЕсли; + Иначе + СтрокаОтбора = ЗависимостиРеквизитов.Добавить(); + ЗаполнитьЗначенияСвойств(СтрокаОтбора, СтрокаТабличнойЧасти); + КонецЕсли; + + ОписаниеРеквизита = РеквизитыОбъекта.Найти(СтрокаОтбора.Реквизит, "Реквизит"); + Если ОписаниеРеквизита = Неопределено Тогда + Продолжить; // Реквизит объекта не найден. + КонецЕсли; + СтрокаОтбора.РежимВыбора = ОписаниеРеквизита.РежимВыбора; + СтрокаОтбора.Представление = ОписаниеРеквизита.Представление; + СтрокаОтбора.ТипЗначения = ОписаниеРеквизита.ТипЗначения; + Если РеквизитСМножественнымЗначением Тогда + СтрокаОтбора.Значение.ТипЗначения = ОписаниеРеквизита.ТипЗначения; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "Свойства_ВыборРеквизитаОбъекта" Тогда + ТекущаяСтрока = ЗависимостиРеквизитов.НайтиПоИдентификатору(Элементы.ЗависимостиРеквизитов.ТекущаяСтрока); + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Реквизит", Параметр.Реквизит); + НайденныеСтроки = ЗависимостиРеквизитов.НайтиСтроки(ПараметрыОтбора); + Если НайденныеСтроки.Количество() > 0 Тогда + Элементы.ЗависимостиРеквизитов.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор(); + ЗависимостиРеквизитов.Удалить(ТекущаяСтрока); + Возврат; + КонецЕсли; + ЗаполнитьЗначенияСвойств(ТекущаяСтрока, Параметр); + ТекущаяСтрока.НаборСвойств = НаборСвойств; + ЗависимостиРеквизитовУстановитьОграничениеТиповДляЗначения(); + ТекущаяСтрока.ЗависимоеСвойство = НастраиваемоеСвойство; + ТекущаяСтрока.Условие = "Равно"; + ТекущаяСтрока.Значение = ТекущаяСтрока.ТипЗначения.ПривестиЗначение(Неопределено); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ЗависимостиРеквизитовРеквизитНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОткрытьФормуВыбораРеквизита(); +КонецПроцедуры + +&НаКлиенте +Процедура ЗависимостиРеквизитовПередНачаломИзменения(Элемент, Отказ) + ЗависимостиРеквизитовУстановитьОграничениеТиповДляЗначения(); +КонецПроцедуры + +&НаКлиенте +Процедура ЗависимостиРеквизитовВидСравненияПриИзменении(Элемент) + ЗависимостиРеквизитовУстановитьОграничениеТиповДляЗначения(); + + ТаблицаФормы = Элементы.ЗависимостиРеквизитов; + ТекущаяСтрока = ЗависимостиРеквизитов.НайтиПоИдентификатору(ТаблицаФормы.ТекущаяСтрока); + + Если ТаблицаФормы.ТекущиеДанные.Условие = "ВСписке" + Или ТаблицаФормы.ТекущиеДанные.Условие = "НеВСписке" Тогда + Если ТипЗнч(ТекущаяСтрока.Значение) <> Тип("СписокЗначений") Тогда + СтароеЗначение = ТекущаяСтрока.Значение; + ТекущаяСтрока.Значение = Новый СписокЗначений; + ТекущаяСтрока.Значение.ТипЗначения = ТаблицаФормы.ТекущиеДанные.ТипЗначения; + Если ЗначениеЗаполнено(СтароеЗначение) Тогда + ТекущаяСтрока.Значение.Добавить(СтароеЗначение); + КонецЕсли; + КонецЕсли; + ИначеЕсли ТаблицаФормы.ТекущиеДанные.Условие = "Равно" + Или ТаблицаФормы.ТекущиеДанные.Условие = "НеРавно" Тогда + Если ТипЗнч(ТекущаяСтрока.Значение) = Тип("СписокЗначений") + И ТекущаяСтрока.Значение.Количество() > 0 Тогда + ТекущаяСтрока.Значение = ТекущаяСтрока.Значение[0].Значение; + КонецЕсли; + Иначе + ТекущаяСтрока.Значение = Неопределено; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗависимостиРеквизитовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Если Не ДобавлениеСтроки Тогда + Отказ = Истина; + Иначе + ОткрытьФормуВыбораРеквизита(); + ДобавлениеСтроки = Ложь; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуВыбораРеквизита() + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РеквизитыОбъекта", РеквизитыОбъектаВХранилище); + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ВыборРеквизита", ПараметрыФормы); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ДобавитьУсловие(Команда) + ДобавлениеСтроки = Истина; + Элементы.ЗависимостиРеквизитов.ДобавитьСтроку(); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаОк(Команда) + Результат = Новый Структура; + Результат.Вставить(НастраиваемоеСвойство, НастройкиОтбораВХранилищеЗначений()); + Оповестить("Свойства_УстановленаЗависимостьРеквизита", Результат); + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаОтмена(Команда) + Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция НастройкиОтбораВХранилищеЗначений() + + Если ЗависимостиРеквизитов.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + + ТаблицаЗависимостей = РеквизитФормыВЗначение("ЗависимостиРеквизитов"); + КопияТаблицы = ТаблицаЗависимостей.Скопировать(); + КопияТаблицы.Колонки.Удалить("Представление"); + КопияТаблицы.Колонки.Удалить("ТипЗначения"); + + ПараметрОтбора = Новый Структура; + ПараметрОтбора.Вставить("Условие", "ВСписке"); + ПреобразоватьЗависимостиВСписке(КопияТаблицы, ПараметрОтбора); + ПараметрОтбора.Условие = "НеВСписке"; + ПреобразоватьЗависимостиВСписке(КопияТаблицы, ПараметрОтбора); + + Возврат Новый ХранилищеЗначения(КопияТаблицы); + +КонецФункции + +&НаСервере +Процедура ПреобразоватьЗависимостиВСписке(Таблица, Отбор) + НайденныеСтроки = Таблица.НайтиСтроки(Отбор); + Для Каждого Строка Из НайденныеСтроки Цикл + Для Каждого Элемент Из Строка.Значение Цикл + НоваяСтрока = Таблица.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); + НоваяСтрока.Значение = Элемент.Значение; + КонецЦикла; + Таблица.Удалить(Строка); + КонецЦикла; +КонецПроцедуры + +&НаСервере +Функция СписокРеквизитовДляОтбора(ПолноеИмяОбъектаМетаданных, НаборДополнительныхРеквизитов) + + РеквизитыОбъекта = Новый ТаблицаЗначений; + РеквизитыОбъекта.Колонки.Добавить("Реквизит"); + РеквизитыОбъекта.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); + РеквизитыОбъекта.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов); + РеквизитыОбъекта.Колонки.Добавить("НомерКартинки", Новый ОписаниеТипов("Число")); + РеквизитыОбъекта.Колонки.Добавить("РежимВыбора", Новый ОписаниеТипов("ИспользованиеГруппИЭлементов")); + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных); + + Для Каждого ДополнительныйРеквизит Из НаборДополнительныхРеквизитов Цикл + СвойстваОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДополнительныйРеквизит.Свойство, "Наименование, ТипЗначения"); + СтрокаРеквизит = РеквизитыОбъекта.Добавить(); + СтрокаРеквизит.Реквизит = ДополнительныйРеквизит.Свойство; + СтрокаРеквизит.Представление = СвойстваОбъекта.Наименование; + СтрокаРеквизит.НомерКартинки = 2; + СтрокаРеквизит.ТипЗначения = СвойстваОбъекта.ТипЗначения; + КонецЦикла; + + Для Каждого Реквизит Из ОбъектМетаданных.СтандартныеРеквизиты Цикл + ДобавитьРеквизитВТаблицу(РеквизитыОбъекта, Реквизит, Истина); + КонецЦикла; + + Для Каждого Реквизит Из ОбъектМетаданных.Реквизиты Цикл + ДобавитьРеквизитВТаблицу(РеквизитыОбъекта, Реквизит, Ложь); + КонецЦикла; + + РеквизитыОбъекта.Сортировать("Представление Возр"); + + РеквизитыОбъектаВХранилище = ПоместитьВоВременноеХранилище(РеквизитыОбъекта, УникальныйИдентификатор); + + Возврат РеквизитыОбъекта; + +КонецФункции + +&НаСервере +Процедура ДобавитьРеквизитВТаблицу(РеквизитыОбъекта, Реквизит, Стандартный) + СтрокаРеквизит = РеквизитыОбъекта.Добавить(); + СтрокаРеквизит.Реквизит = Реквизит.Имя; + СтрокаРеквизит.Представление = Реквизит.Представление(); + СтрокаРеквизит.НомерКартинки = 1; + СтрокаРеквизит.ТипЗначения = Реквизит.Тип; + Если Стандартный Тогда + СтрокаРеквизит.РежимВыбора = ?(Реквизит.Имя = "Родитель", ИспользованиеГруппИЭлементов.Группы, Неопределено); + Иначе + СтрокаРеквизит.РежимВыбора = Реквизит.ВыборГруппИЭлементов; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗависимостиРеквизитовУстановитьОграничениеТиповДляЗначения() + + ТаблицаФормы = Элементы.ЗависимостиРеквизитов; + ПолеВвода = Элементы.ЗависимостиРеквизитовПравоеЗначение; + + ПараметрыВыбораМассив = Новый Массив; + Если ТипЗнч(ТаблицаФормы.ТекущиеДанные.Реквизит) <> Тип("Строка") Тогда + ПараметрыВыбораМассив.Добавить(Новый ПараметрВыбора("Отбор.Владелец", ТаблицаФормы.ТекущиеДанные.Реквизит)); + КонецЕсли; + + РежимВыбора = ТаблицаФормы.ТекущиеДанные.РежимВыбора; + Если РежимВыбора = ИспользованиеГруппИЭлементов.Группы Тогда + ПолеВвода.ВыборГруппИЭлементов = ГруппыИЭлементы.Группы; + ИначеЕсли РежимВыбора = ИспользованиеГруппИЭлементов.Элементы Тогда + ПолеВвода.ВыборГруппИЭлементов = ГруппыИЭлементы.Элементы; + ИначеЕсли РежимВыбора = ИспользованиеГруппИЭлементов.ГруппыИЭлементы Тогда + ПолеВвода.ВыборГруппИЭлементов = ГруппыИЭлементы.ГруппыИЭлементы; + КонецЕсли; + + ПолеВвода.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораМассив); + Если ТаблицаФормы.ТекущиеДанные.Условие = "ВСписке" + Или ТаблицаФормы.ТекущиеДанные.Условие = "НеВСписке" Тогда + ПолеВвода.ОграничениеТипа = Новый ОписаниеТипов("СписокЗначений"); + Иначе + ПолеВвода.ОграничениеТипа = ТаблицаФормы.ТекущиеДанные.ТипЗначения; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементДоступность = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Доступность"); + ЭлементДоступность.Значение = Ложь; + ЭлементДоступность.Использование = Истина; + + ЗначенияСравнения = Новый СписокЗначений; + ЗначенияСравнения.Добавить("Заполнено"); + ЗначенияСравнения.Добавить("НеЗаполнено"); // исключение, является идентификатором. + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗависимостиРеквизитов.Условие"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; + ЭлементОтбораДанных.ПравоеЗначение = ЗначенияСравнения; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ЗависимостиРеквизитовПравоеЗначение"); + ЭлементОформляемогоПоля.Использование = Истина; + + // + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗависимостиРеквизитовВидСравнения.Имя); + + ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗависимостиРеквизитов.Условие"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = "НеРавно"; + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Не равно'")); + + // + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗависимостиРеквизитовВидСравнения.Имя); + + ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗависимостиРеквизитов.Условие"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = "Равно"; + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Равно'")); + + // + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗависимостиРеквизитовВидСравнения.Имя); + + ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗависимостиРеквизитов.Условие"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = "НеЗаполнено"; + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Не заполнено'")); + + // + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗависимостиРеквизитовВидСравнения.Имя); + + ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗависимостиРеквизитов.Условие"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = "Заполнено"; + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Заполнено'")); + + // + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗависимостиРеквизитовВидСравнения.Имя); + + ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗависимостиРеквизитов.Условие"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = "ВСписке"; + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'В списке'")); + + // + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗависимостиРеквизитовВидСравнения.Имя); + + ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗависимостиРеквизитов.Условие"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = "НеВСписке"; + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Не в списке'")); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\260/Form.form" new file mode 100644 index 00000000..e3e58dae --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\260/Form.form" @@ -0,0 +1,1427 @@ + + + + <key>ru</key> + <value>Изменить настройку дополнительного реквизита</value> + + + ТипыСвойства + 40 + + ДополнительныйРеквизит + 17 + + РеквизитПредупреждение + 52 + + РеквизитПредупреждениеКартинка + 48 + + <key>ru</key> + <value>Реквизит предупреждение картинка</value> + + true + true + + true + + + РеквизитПредупреждениеКартинкаExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + + РеквизитПредупреждениеКартинкаКонтекстноеМеню + 49 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + РеквизитПредупреждениеКомментарий + 50 + + <key>ru</key> + <value>Перенастройка дополнительного реквизита необратима и может занять длительное время, в зависимости от числа документов, в которых заполнен этот реквизит. +Вместо этого можно добавить новый реквизит со своим списком значений, и выполнить вручную постепенный переход от использования этого реквизита к новому (очистить значения этого реквизита и заполнить значения нового).</value> + + true + true + + true + + + РеквизитПредупреждениеКомментарийExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + + РеквизитПредупреждениеКомментарийКонтекстноеМеню + 51 + true + true + + true + + true + + Label + 80 + true + + Style.ПоясняющийТекст + + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Реквизит предупреждение</value> + + + РеквизитПредупреждениеExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ОтдельныеЗначенияРеквизита + 8 + true + true + + true + + + + ОтдельноеСвойствоСОтдельнымСпискомЗначений + + + None + + OnChange + ВидПриИзменении + + + ОтдельныеЗначенияРеквизитаExtendedTooltip + 66 + true + true + + true + + Label + true + true + + Left + + + + ОтдельныеЗначенияРеквизитаКонтекстноеМеню + 9 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Реквизит со своим списком значений + + + 1 + + + + + + ОтдельныеЗначенияРеквизитаКомментарий + 14 + + <key>ru</key> + <value>Данный реквизит входит только в один набор %1, и у него свой собственный список значений.</value> + + true + true + + true + + + ОтдельныеЗначенияРеквизитаКомментарийExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + + ОтдельныеЗначенияРеквизитаКомментарийКонтекстноеМеню + 15 + true + true + + true + + true + + Label + 80 + true + + Style.ПоясняющийТекст + + + Left + + + + ВидыРеквизита + 30 + + ВидОбщиеЗначенияРеквизитов + 32 + + ОбщиеЗначенияРеквизитов + 6 + true + true + + true + + + + ОтдельноеСвойствоСОбщимСпискомЗначений + + + None + + OnChange + ВидПриИзменении + + + ОбщиеЗначенияРеквизитовExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеЗначенияРеквизитовКонтекстноеМеню + 7 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Реквизит с общим списком значений + + + 1 + + + + + + ОбщиеЗначенияРеквизитовКомментарий + 12 + + <key>ru</key> + <value>У данного реквизита общий список значений с другими реквизитами, добавленными по образцу. С помощью этого варианта удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов (например, "Цвет одежды", "Цвет обуви" и пр.).</value> + + true + true + + true + + + ОбщиеЗначенияРеквизитовКомментарийExtendedTooltip + 71 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеЗначенияРеквизитовКомментарийКонтекстноеМеню + 13 + true + true + + true + + true + + Label + 80 + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Вид общие значения реквизитов</value> + + + ВидОбщиеЗначенияРеквизитовExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ВидОбщийРеквизит + 31 + + ОбщийРеквизит + 4 + true + true + + true + + + + ОбщееСвойство + + + None + + OnChange + ВидПриИзменении + + + ОбщийРеквизитExtendedTooltip + 73 + true + true + + true + + Label + true + true + + Left + + + + ОбщийРеквизитКонтекстноеМеню + 5 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Общий реквизит + + + 1 + + + + + + ОбщийРеквизитКомментарий + 10 + + <key>ru</key> + <value>Данный реквизит входит сразу в несколько наборов. Этот вариант подходит для тех случаев, когда общим +должен быть не только список значений, но и сам реквизит. В списках и отчетах по элементам различных +справочников и документов, общие реквизиты группируются и выводятся как один реквизит, в одной колонке или поле. +Например, с помощью общего реквизита "Цвет" можно быстро отобрать всю желтую одежду и обувь.</value> + + true + true + + true + + + ОбщийРеквизитКомментарийExtendedTooltip + 74 + true + true + + true + + Label + true + true + + Left + + + + ОбщийРеквизитКомментарийКонтекстноеМеню + 11 + true + true + + true + + true + + Label + 80 + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Вид общий реквизит</value> + + + ВидОбщийРеквизитExtendedTooltip + 72 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Виды реквизита</value> + + + ВидыРеквизитаExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Дополнительный реквизит</value> + + + ДополнительныйРеквизитРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ДополнительноеСведение + 16 + + СведениеПредупреждение + 54 + + СведениеПредупреждениеКартинка + 56 + + <key>ru</key> + <value>Сведение предупреждение картинка</value> + + true + true + + true + + + СведениеПредупреждениеКартинкаExtendedTooltip + 77 + true + true + + true + + Label + true + true + + Left + + + + СведениеПредупреждениеКартинкаКонтекстноеМеню + 57 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + СведениеПредупреждениеКомментарий + 58 + + <key>ru</key> + <value>Перенастройка дополнительного сведения необратима и может занять длительное время, в зависимости от числа документов, в которых заполнено это сведение. +Вместо этого можно добавить новое сведение со своим списком значений, и выполнить вручную постепенный переход от использования этого сведения к новому (очистить значения этого сведения и заполнить значения нового).</value> + + true + true + + true + + + СведениеПредупреждениеКомментарийExtendedTooltip + 78 + true + true + + true + + Label + true + true + + Left + + + + СведениеПредупреждениеКомментарийКонтекстноеМеню + 59 + true + true + + true + + true + + Label + 80 + true + + Style.ПоясняющийТекст + + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Сведение предупреждение</value> + + + СведениеПредупреждениеExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ОтдельныеЗначенияСведения + 26 + true + true + + true + + + + ОтдельноеСвойствоСОтдельнымСпискомЗначений + + + None + + OnChange + ВидПриИзменении + + + ОтдельныеЗначенияСведенияExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + + ОтдельныеЗначенияСведенияКонтекстноеМеню + 27 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Сведение со своим списком значений + + + 1 + + + + + + ОтдельныеЗначенияСведенияКомментарий + 28 + + <key>ru</key> + <value>Данное сведение входит только в один набор %1, и у него свой собственный список значений.</value> + + true + true + + true + + + ОтдельныеЗначенияСведенияКомментарийExtendedTooltip + 80 + true + true + + true + + Label + true + true + + Left + + + + ОтдельныеЗначенияСведенияКомментарийКонтекстноеМеню + 29 + true + true + + true + + true + + Label + 80 + true + + Style.ПоясняющийТекст + + + Left + + + + ВидыСведения + 33 + + ВидОбщиеЗначенияСведений + 39 + + ОбщиеЗначенияСведений + 22 + true + true + + true + + + + ОтдельноеСвойствоСОбщимСпискомЗначений + + + None + + OnChange + ВидПриИзменении + + + ОбщиеЗначенияСведенийExtendedTooltip + 83 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеЗначенияСведенийКонтекстноеМеню + 23 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Сведение с общим списком значений + + + 1 + + + + + + ОбщиеЗначенияСведенийКомментарий + 24 + + <key>ru</key> + <value>У этого сведения общий список значений с другими сведениями, добавленными по образцу. С помощью этого варианта удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных сведений (например, "Цвет одежды", "Цвет обуви" и пр.).</value> + + true + true + + true + + + ОбщиеЗначенияСведенийКомментарийExtendedTooltip + 84 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеЗначенияСведенийКомментарийКонтекстноеМеню + 25 + true + true + + true + + true + + Label + 80 + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Вид общие значения сведений</value> + + + ВидОбщиеЗначенияСведенийExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ВидОбщееСведение + 34 + + ОбщееСведение + 18 + true + true + + true + + + + ОбщееСвойство + + + None + + OnChange + ВидПриИзменении + + + ОбщееСведениеExtendedTooltip + 86 + true + true + + true + + Label + true + true + + Left + + + + ОбщееСведениеКонтекстноеМеню + 19 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Общее сведение + + + 1 + + + + + + ОбщееСведениеКомментарий + 20 + + <key>ru</key> + <value>Данное сведение входит сразу в несколько наборов. Этот вариант подходит для тех случаев, когда общим +должен быть не только список значений, но и само сведение. В списках и отчетах по элементам различных +справочников и документов, общие сведения группируются и выводятся как одно сведение, в одной колонке или поле. +Например, с помощью общего сведения "Цвет" можно быстро отобрать всю желтую одежду и обувь.</value> + + true + true + + true + + + ОбщееСведениеКомментарийExtendedTooltip + 87 + true + true + + true + + Label + true + true + + Left + + + + ОбщееСведениеКомментарийКонтекстноеМеню + 21 + true + true + + true + + true + + Label + 80 + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Вид общее сведение</value> + + + ВидОбщееСведениеExtendedTooltip + 85 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Виды сведения</value> + + + ВидыСведенияExtendedTooltip + 81 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Дополнительное сведение</value> + + + ДополнительноеСведениеРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Типы свойства</value> + + + ТипыСвойстваExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 41 + true + true + + true + + + ФормаЗаписатьИЗакрытьExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Left + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ОбщееСвойство + + <key>ru</key> + <value>Общее свойство</value> + + 1 + + Number + + 1 + true + + + + true + + + true + + true + + + ОтдельноеСвойствоСОбщимСпискомЗначений + + <key>ru</key> + <value>Отдельное свойство с общим списком значений</value> + + 2 + + Number + + 1 + true + + + + true + + + true + + true + + + ОтдельноеСвойствоСОтдельнымСпискомЗначений + + <key>ru</key> + <value>Отдельное свойство с отдельным списком значений</value> + + 3 + + Number + + 1 + true + + + + true + + + true + + true + + + Свойство + 4 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + + + ЭтоДополнительноеСведение + 5 + + Boolean + + + true + + + true + + + + ТекущийНаборСвойств + 6 + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + TextPicture + DontUse + + + ЭтоДополнительноеСведение + + Boolean + + + + ВладелецДополнительныхЗначений + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + + НаборСвойств + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + + Свойство + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + + ТекущийНаборСвойств + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + + + + + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\260/Module.bsl" new file mode 100644 index 00000000..44f66130 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\260/Module.bsl" @@ -0,0 +1,168 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.ЭтоДополнительноеСведение Тогда + Элементы.ТипыСвойства.ТекущаяСтраница = Элементы.ДополнительноеСведение; + Заголовок = НСтр("ru = 'Изменить настройку дополнительного сведения'"); + Иначе + Элементы.ТипыСвойства.ТекущаяСтраница = Элементы.ДополнительныйРеквизит; + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.ВладелецДополнительныхЗначений) Тогда + Элементы.ВидыРеквизита.ТекущаяСтраница = Элементы.ВидОбщиеЗначенияРеквизитов; + Элементы.ВидыСведения.ТекущаяСтраница = Элементы.ВидОбщиеЗначенияСведений; + ОтдельноеСвойствоСОбщимСпискомЗначений = 1; + Иначе + Элементы.ВидыРеквизита.ТекущаяСтраница = Элементы.ВидОбщийРеквизит; + Элементы.ВидыСведения.ТекущаяСтраница = Элементы.ВидОбщееСведение; + ОбщееСвойство = 1; + КонецЕсли; + + Свойство = Параметры.Свойство; + ТекущийНаборСвойств = Параметры.ТекущийНаборСвойств; + ЭтоДополнительноеСведение = Параметры.ЭтоДополнительноеСведение; + + Элементы.ОтдельныеЗначенияРеквизитаКомментарий.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ОтдельныеЗначенияРеквизитаКомментарий.Заголовок, ТекущийНаборСвойств); + + Элементы.ОбщиеЗначенияРеквизитовКомментарий.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ОбщиеЗначенияРеквизитовКомментарий.Заголовок, ТекущийНаборСвойств); + + Элементы.ОтдельныеЗначенияСведенияКомментарий.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ОтдельныеЗначенияСведенияКомментарий.Заголовок, ТекущийНаборСвойств); + + Элементы.ОбщиеЗначенияСведенийКомментарий.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ОбщиеЗначенияСведенийКомментарий.Заголовок, ТекущийНаборСвойств); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьЗавершение", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВидПриИзменении(Элемент) + + ВидПриИзмененииНаСервере(Элемент.Имя); + +КонецПроцедуры + +&НаСервере +Процедура ВидПриИзмененииНаСервере(ИмяЭлемента) + + ОтдельноеСвойствоСОбщимСпискомЗначений = 0; + ОтдельноеСвойствоСОтдельнымСпискомЗначений = 0; + ОбщееСвойство = 0; + + ЭтотОбъект[Элементы[ИмяЭлемента].ПутьКДанным] = 1; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + ЗаписатьИЗакрытьЗавершение(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ЗаписатьИЗакрытьЗавершение(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт + + Если ОтдельноеСвойствоСОтдельнымСпискомЗначений = 1 Тогда + ЗаписатьНачало(); + Иначе + ЗаписатьЗавершение(Неопределено); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьНачало() + + РезультатВыполнения = ЗаписатьНаСервере(); + + Если РезультатВыполнения.Статус = "Выполнено" Тогда + ОткрытьСвойство = ПолучитьИзВременногоХранилища(РезультатВыполнения.АдресРезультата); + ЗаписатьЗавершение(ОткрытьСвойство); + Иначе + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗаписатьПродолжение", ЭтотОбъект); + + ДлительныеОперацииКлиент.ОжидатьЗавершение(РезультатВыполнения, ОповещениеОЗавершении, ПараметрыОжидания); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьПродолжение(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + ОткрытьСвойство = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); + + ЗаписатьЗавершение(ОткрытьСвойство); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьЗавершение(ОткрытьСвойство) + + Модифицированность = Ложь; + + Оповестить("Запись_ДополнительныеРеквизитыИСведения", + Новый Структура("Ссылка", Свойство), Свойство); + + Оповестить("Запись_НаборыДополнительныхРеквизитовИСведений", + Новый Структура("Ссылка", ТекущийНаборСвойств), ТекущийНаборСвойств); + + ОповеститьОВыборе(ОткрытьСвойство); + +КонецПроцедуры + +&НаСервере +Функция ЗаписатьНаСервере() + + НаименованиеЗадания = НСтр("ru = 'Изменение настройки дополнительного свойства'"); + + ПараметрыПроцедуры = Новый Структура; + ПараметрыПроцедуры.Вставить("Свойство", Свойство); + ПараметрыПроцедуры.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.ОжидатьЗавершение = 2; + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания; + + Результат = ДлительныеОперации.ВыполнитьВФоне("ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ИзменитьНастройкуСвойства", + ПараметрыПроцедуры, ПараметрыВыполнения); + + Возврат Результат; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\240\320\260\320\267\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\240\320\260\320\267\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Form.form" new file mode 100644 index 00000000..0608e60f --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\240\320\260\320\267\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Form.form" @@ -0,0 +1,702 @@ + + + + ДиалогиПользователя + 1 + + ОбъектНеИспользуется + 2 + + Пояснения + 12 + + ПояснениеДополнительногоРеквизита + 22 + + ТекстПоясненияДополнительногоРеквизита + 23 + + <key>ru</key> + <value>Дополнительный реквизит не используется в документах программы. + +Тип значения и имя дополнительного реквизита можно изменять.</value> + + true + true + + true + + + ТекстПоясненияДополнительногоРеквизитаExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + ТекстПоясненияДополнительногоРеквизитаКонтекстноеМеню + 24 + true + true + + true + + true + + Label + true + true + false + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Пояснение дополнительного реквизита</value> + + + ПояснениеДополнительногоРеквизитаExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + + ПояснениеДополнительногоСведения + 25 + + ТекстПоясненияДополнительногоСведения + 26 + + <key>ru</key> + <value>Дополнительное сведение не используется в информационной базе. + +Тип значения и имя дополнительного сведения можно изменять.</value> + + true + true + + true + + + ТекстПоясненияДополнительногоСведенияExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + ТекстПоясненияДополнительногоСведенияКонтекстноеМеню + 27 + true + true + + true + + true + + Label + true + true + false + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Пояснение дополнительного сведения</value> + + + ПояснениеДополнительногоСведенияExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + true + true + + true + + + <key>ru</key> + <value>Пояснения</value> + + + ПоясненияExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Объект не используется</value> + + + ОбъектНеИспользуетсяExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + + ОбъектИспользуется + 3 + + Предупреждения + 17 + + ПредупреждениеДополнительногоРеквизита + 18 + + ТекстПредупрежденияДополнительногоРеквизита + 6 + + <key>ru</key> + <value>Внимание! Дополнительный реквизит уже используется в информационной базе. + +Изменение типа значения дополнительного реквизита может привести к потере ранее установленных значений его текущего типа.</value> + + true + true + + true + + + ТекстПредупрежденияДополнительногоРеквизитаExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + ТекстПредупрежденияДополнительногоРеквизитаКонтекстноеМеню + 7 + true + true + + true + + true + + Label + true + true + false + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Предупреждение дополнительного реквизита</value> + + + ПредупреждениеДополнительногоРеквизитаExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + + ПредупреждениеДополнительногоСведения + 19 + + ТекстПредупрежденияДополнительногоСведения + 20 + + <key>ru</key> + <value>Внимание! Дополнительное сведение уже используется в информационной базе. + +Изменение типа значения дополнительного сведения может привести к потере ранее установленных значений его текущего типа.</value> + + true + true + + true + + + ТекстПредупрежденияДополнительногоСведенияExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + ТекстПредупрежденияДополнительногоСведенияКонтекстноеМеню + 21 + true + true + + true + + true + + Label + true + true + false + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Предупреждение дополнительного сведения</value> + + + ПредупреждениеДополнительногоСведенияExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + true + true + + true + + + <key>ru</key> + <value>Предупреждения</value> + + + ПредупрежденияExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Объект используется</value> + + + ОбъектИспользуетсяExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + true + true + + true + + + <key>ru</key> + <value>Диалоги пользователя</value> + + + ДиалогиПользователяExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + КнопкиПояснения + 13 + + ОК + 16 + + <key>ru</key> + <value>ОК</value> + + true + true + + true + + false + + ОКExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РазрешитьРедактирование + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопки пояснения</value> + + Bottom + + КнопкиПоясненияExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + + + КнопкиПредупреждения + 8 + + РазрешитьРедактирование + 9 + true + true + + true + + false + + РазрешитьРедактированиеExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РазрешитьРедактирование + Auto + true + true + UserCmds + Auto + + + Отмена + 11 + true + true + + true + + false + + ОтменаExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопки предупреждения</value> + + Bottom + + КнопкиПредупрежденияExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + РазрешитьРедактирование + + <key>ru</key> + <value>Разрешить редактирование</value> + + 1 + + ru + Разрешить редактирование + + + true + + + + РазрешитьРедактирование + + + DontUse + + + Ссылка + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + + ЭтоДополнительныйРеквизит + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\240\320\260\320\267\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\240\320\260\320\267\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..9736dae6 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\240\320\260\320\267\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\262/Module.bsl" @@ -0,0 +1,66 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если УправлениеСвойствамиСлужебный.ДополнительноеСвойствоИспользуется(Параметры.Ссылка) Тогда + + Элементы.ДиалогиПользователя.ТекущаяСтраница = Элементы.ОбъектИспользуется; + + Элементы.РазрешитьРедактирование.КнопкаПоУмолчанию = Истина; + + Если Параметры.ЭтоДополнительныйРеквизит = Истина Тогда + Элементы.Предупреждения.ТекущаяСтраница = Элементы.ПредупреждениеДополнительногоРеквизита; + Иначе + Элементы.Предупреждения.ТекущаяСтраница = Элементы.ПредупреждениеДополнительногоСведения; + КонецЕсли; + + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "СвойствоИспользуется"); + Элементы.КнопкиПояснения.Видимость = Ложь; + Иначе + Элементы.ДиалогиПользователя.ТекущаяСтраница = Элементы.ОбъектНеИспользуется; + Элементы.ОбъектИспользуется.Видимость = Ложь; // Для компактного отображения формы. + + Элементы.ОК.КнопкаПоУмолчанию = Истина; + + Если Параметры.ЭтоДополнительныйРеквизит = Истина Тогда + Элементы.Пояснения.ТекущаяСтраница = Элементы.ПояснениеДополнительногоРеквизита; + Иначе + Элементы.Пояснения.ТекущаяСтраница = Элементы.ПояснениеДополнительногоСведения; + КонецЕсли; + + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "СвойствоНеИспользуется"); + Элементы.КнопкиПредупреждения.Видимость = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура РазрешитьРедактирование(Команда) + + РазблокируемыеРеквизиты = Новый Массив; + РазблокируемыеРеквизиты.Добавить("ТипЗначения"); + РазблокируемыеРеквизиты.Добавить("Имя"); + РазблокируемыеРеквизиты.Добавить("ИдентификаторДляФормул"); + + Закрыть(РазблокируемыеРеквизиты); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..944c6043 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,523 @@ + + + + ГруппаПользовательскихНастроек + 16 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 14 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 4 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + + НаименованиеExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ТипЗначения + 6 + + <key>ru</key> + <value>Тип значения</value> + + true + true + + true + + + + Список.ValueType + + + true + + ТипЗначенияExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + ТипЗначенияКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Ссылка + 11 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 12 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокSearchString + 18 + + СписокSearchStringExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 19 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 21 + + СписокViewStatusExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 22 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 24 + + СписокSearchControlExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 25 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + true + true + + true + + true + + HierarchicalList + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + Список.НомерКартинки + + + CommonPicture.ДополнительныеРеквизитыСведения + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
        + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + + + Список.ЗаголовокФормыВыбораЗначения + +
        true
        + + ВЫБРАТЬ + Свойства.Ссылка, + Свойства.ВерсияДанных, + Свойства.ПометкаУдаления, + Свойства.Предопределенный, + Свойства.Заголовок, + ВЫБОР + КОГДА Свойства.ЭтоДополнительноеСведение + ТОГДА &ПредставлениеДополнительныеСведения + ИНАЧЕ &ПредставлениеДополнительныеРеквизиты + КОНЕЦ КАК НаборСвойствГруппировка, + Свойства.ДополнительныеЗначенияИспользуются, + Свойства.ВладелецДополнительныхЗначений, + Свойства.Наименование, + Свойства.ТипЗначения, + Свойства.ЭтоДополнительноеСведение, + Свойства.МногострочноеПолеВвода, + Свойства.ЗаполнятьОбязательно, + Свойства.ЗаголовокФормыЗначения, + Свойства.ЗаголовокФормыВыбораЗначения, + Свойства.ФорматСвойства, + Свойства.Комментарий, + Свойства.Подсказка, + ВЫБОР + КОГДА Свойства.ЭтоДополнительноеСведение + ТОГДА 2 + ИНАЧЕ 1 + КОНЕЦ + ВЫБОР + КОГДА Свойства.Предопределенный + ТОГДА 6 + КОГДА Свойства.ПометкаУдаления + ТОГДА 3 + ИНАЧЕ 0 + КОНЕЦ КАК НомерКартинки +ИЗ + ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения + true + true + true + true + true + +
        + + + + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..046d8fe3 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,39 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, + "ПредставлениеДополнительныеСведения", + НСтр("ru = 'Дополнительные сведения'"), + Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, + "ПредставлениеДополнительныеРеквизиты", + НСтр("ru = 'Дополнительные реквизиты'"), + Истина); + + // Группировка свойств по наборам. + ГруппировкаДанных = Список.КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); + ГруппировкаДанных.ИдентификаторПользовательскойНастройки = "ГруппировкаСвойствПоНаборам"; + ГруппировкаДанных.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + + ПоляГруппировки = ГруппировкаДанных.ПоляГруппировки; + + ЭлементГруппировкиДанных = ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ЭлементГруппировкиДанных.Поле = Новый ПолеКомпоновкиДанных("НаборСвойствГруппировка"); + ЭлементГруппировкиДанных.Использование = Истина; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\236\320\261\321\211\320\270\320\265\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\236\320\261\321\211\320\270\320\265\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Attributes/\320\236\320\261\321\211\320\270\320\265\320\235\320\260\320\261\320\276\321\200\321\213\320\241\320\262\320\276\320\271\321\201\321\202\320\262/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..a2b6c996 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,6477 @@ + + + + СтраницыПомощникКарточка + 200 + + ВыборРеквизита + 202 + + ГруппаЗаголовок + 336 + + ДекорацияЗаголовок + 338 + + <key>ru</key> + <value>Выберите %1 для включения в набор "%2":</value> + + true + true + + true + + + ДекорацияЗаголовокРасширеннаяПодсказка + 340 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияЗаголовокКонтекстноеМеню + 339 + true + true + + true + + true + + Label + true + + Left + + + + ПанельЕще + 408 + + ПодменюЕще + 410 + + НеиспользуемыеРеквизиты + 412 + true + true + + true + + + НеиспользуемыеРеквизитыРасширеннаяПодсказка + 413 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НеиспользуемыеРеквизиты + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Еще</value> + + + ПодменюЕщеРасширеннаяПодсказка + 411 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Панель еще</value> + + + ПанельЕщеРасширеннаяПодсказка + 409 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Заголовок</value> + + + ГруппаЗаголовокРасширеннаяПодсказка + 337 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаСодержимое + 341 + + ГруппаНаборыСвойств + 343 + + СтраницыНаборыСвойств + 414 + + СтраницаВсеНаборы + 416 + + НаборыСвойств + 345 + VeryHigh + + <key>ru</key> + <value>Наборы свойств</value> + + true + true + + true + + + НаборыСвойств + + false + None + Change + + Представление + 396 + + <key>ru</key> + <value>Представление набора</value> + + true + true + + true + + + + НаборыСвойств.Представление + + + + ПредставлениеРасширеннаяПодсказка + 398 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтекстноеМеню + 397 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 399 + true + true + + + + НаборыСвойств.Ссылка + + + + СсылкаРасширеннаяПодсказка + 401 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 400 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + НаборыСвойствКоманднаяПанель + 347 + true + true + + true + + Left + true + + + OnActivateRow + НаборыСвойствПриАктивизацииСтроки + + + BeforeRowChange + НаборыСвойствПередНачаломИзменения + + + true + true + + true + + НаборыСвойствСтрокаПоиска + 349 + + НаборыСвойствСтрокаПоискаРасширеннаяПодсказка + 351 + true + true + + true + + Label + true + true + + Left + + + + НаборыСвойствСтрокаПоискаКонтекстноеМеню + 350 + true + true + + true + + true + + + true + + + + true + true + + true + + НаборыСвойствСостояниеПросмотра + 352 + + НаборыСвойствСостояниеПросмотраРасширеннаяПодсказка + 354 + true + true + + true + + Label + true + true + + Left + + + + НаборыСвойствСостояниеПросмотраКонтекстноеМеню + 353 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НаборыСвойствУправлениеПоиском + 355 + + НаборыСвойствУправлениеПоискомРасширеннаяПодсказка + 357 + true + true + + true + + Label + true + true + + Left + + + + НаборыСвойствУправлениеПоискомКонтекстноеМеню + 356 + true + true + + true + + true + + SearchControlAddition + + true + + + + НаборыСвойствРасширеннаяПодсказка + 348 + true + true + + true + + Label + true + true + + Left + + + + НаборыСвойствКонтекстноеМеню + 346 + true + true + + true + + true + + Tree + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + + НаборыСвойств.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + SelectionPresentation + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + true + true + + true + + + <key>ru</key> + <value>Страница все наборы</value> + + + СтраницаВсеНаборыРасширеннаяПодсказка + 417 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаОбщиеНаборы + 418 + + ОбщиеНаборыСвойств + 420 + + <key>ru</key> + <value>Общие наборы свойств</value> + + true + true + + true + + + ОбщиеНаборыСвойств + + false + None + ListSettings + + ОбщиеНаборыСвойствПредставление + 436 + + <key>ru</key> + <value>Представление</value> + + true + true + + true + + + + ОбщиеНаборыСвойств.Представление + + + + ОбщиеНаборыСвойствПредставлениеРасширеннаяПодсказка + 438 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеНаборыСвойствПредставлениеКонтекстноеМеню + 437 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ОбщиеНаборыСвойствКоманднаяПанель + 422 + true + true + + true + + Left + true + + + true + true + + true + + ОбщиеНаборыСвойствСтрокаПоиска + 424 + + ОбщиеНаборыСвойствСтрокаПоискаРасширеннаяПодсказка + 426 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеНаборыСвойствСтрокаПоискаКонтекстноеМеню + 425 + true + true + + true + + true + + + true + + + + true + true + + true + + ОбщиеНаборыСвойствСостояниеПросмотра + 427 + + ОбщиеНаборыСвойствСостояниеПросмотраРасширеннаяПодсказка + 429 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеНаборыСвойствСостояниеПросмотраКонтекстноеМеню + 428 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОбщиеНаборыСвойствУправлениеПоиском + 430 + + ОбщиеНаборыСвойствУправлениеПоискомРасширеннаяПодсказка + 432 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеНаборыСвойствУправлениеПоискомКонтекстноеМеню + 431 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОбщиеНаборыСвойствРасширеннаяПодсказка + 423 + true + true + + true + + Label + true + true + + Left + + + + ОбщиеНаборыСвойствКонтекстноеМеню + 421 + true + true + + true + + true + + Tree + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + + ОбщиеНаборыСвойств.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + SelectionPresentation + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + true + true + + true + + + <key>ru</key> + <value>Страница общие наборы</value> + + + СтраницаОбщиеНаборыРасширеннаяПодсказка + 419 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы наборы свойств</value> + + + СтраницыНаборыСвойствРасширеннаяПодсказка + 415 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Наборы свойств</value> + + + ГруппаНаборыСвойствРасширеннаяПодсказка + 344 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + Auto + Auto + + + + РасшифровкаРеквизита + 364 + + Свойства + 366 + VeryLow + + <key>ru</key> + <value>Свойства</value> + + true + true + + true + + + Свойства + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + ShowRowRearrangement + SortListAsc + SortListDesc + + СвойстваЗаголовок + 379 + true + true + + true + + + + Свойства.Заголовок + + + + СвойстваЗаголовокРасширеннаяПодсказка + 381 + true + true + + true + + Label + true + true + + Left + + + + СвойстваЗаголовокКонтекстноеМеню + 380 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + Top + + СвойстваКоманднаяПанель + 368 + true + true + + true + + Left + + + Selection + СвойстваВыбор + + + true + true + + true + + СвойстваСтрокаПоиска + 370 + + СвойстваСтрокаПоискаРасширеннаяПодсказка + 372 + true + true + + true + + Label + true + true + + Left + + + + СвойстваСтрокаПоискаКонтекстноеМеню + 371 + true + true + + true + + true + + + true + + + + true + true + + true + + СвойстваСостояниеПросмотра + 373 + + СвойстваСостояниеПросмотраРасширеннаяПодсказка + 375 + true + true + + true + + Label + true + true + + Left + + + + СвойстваСостояниеПросмотраКонтекстноеМеню + 374 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СвойстваУправлениеПоиском + 376 + + СвойстваУправлениеПоискомРасширеннаяПодсказка + 378 + true + true + + true + + Label + true + true + + Left + + + + СвойстваУправлениеПоискомКонтекстноеМеню + 377 + true + true + + true + + true + + SearchControlAddition + + true + + + + СвойстваРасширеннаяПодсказка + 369 + true + true + + true + + Label + true + true + + Left + + + + СвойстваКонтекстноеМеню + 367 + + СвойстваКонтекстноеМенюИзменить + 382 + true + true + + true + + + СвойстваКонтекстноеМенюИзменитьРасширеннаяПодсказка + 383 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Изменить + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + true + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + true + true + + Свойства.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + + + + ГруппаДополнительнаяИнформация + 469 + + СписокДополнительныхРеквизитовТипЗначения + 384 + true + true + + true + + + + Items.Свойства.CurrentData.ТипЗначения + + + Top + + СписокДополнительныхРеквизитовТипЗначенияРасширеннаяПодсказка + 386 + true + true + + true + + Label + true + true + + Left + + + + СписокДополнительныхРеквизитовТипЗначенияКонтекстноеМеню + 385 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + СписокДополнительныхРеквизитовПодсказка + 387 + + <key>ru</key> + <value>Всплывающая подсказка</value> + + true + true + + true + + + + Items.Свойства.CurrentData.Подсказка + + + Top + + СписокДополнительныхРеквизитовПодсказкаРасширеннаяПодсказка + 389 + true + true + + true + + Label + true + true + + Left + + + + СписокДополнительныхРеквизитовПодсказкаКонтекстноеМеню + 388 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + ru + Не задана + + + + + СписокДополнительныхРеквизитовЗаголовокФормыЗначения + 390 + true + true + + true + + + + Items.Свойства.CurrentData.ЗаголовокФормыЗначения + + + Top + + СписокДополнительныхРеквизитовЗаголовокФормыЗначенияРасширеннаяПодсказка + 392 + true + true + + true + + Label + true + true + + Left + + + + СписокДополнительныхРеквизитовЗаголовокФормыЗначенияКонтекстноеМеню + 391 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + ru + Не задан + + + + + СписокДополнительныхРеквизитовЗаголовокФормыВыбораЗначения + 393 + true + true + + true + + + + Items.Свойства.CurrentData.ЗаголовокФормыВыбораЗначения + + + Top + + СписокДополнительныхРеквизитовЗаголовокФормыВыбораЗначенияРасширеннаяПодсказка + 395 + true + true + + true + + Label + true + true + + Left + + + + СписокДополнительныхРеквизитовЗаголовокФормыВыбораЗначенияКонтекстноеМеню + 394 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + ru + Не задан + + + + true + true + + true + + + <key>ru</key> + <value>Дополнительная информация</value> + + + ГруппаДополнительнаяИнформацияРасширеннаяПодсказка + 470 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Дополнительные реквизиты</value> + + + Style.FormTextColor + + true + + РасшифровкаРеквизитаРасширеннаяПодсказка + 365 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Содержимое</value> + + + ГруппаСодержимоеРасширеннаяПодсказка + 342 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Выбор реквизита</value> + + + ВыборРеквизитаРасширеннаяПодсказка + 203 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + LeftWidest + + + + ВыборДействия + 204 + + РежимДобавленияРеквизита + 237 + + <key>ru</key> + <value>Выберите вариант добавления дополнительного %1 "%2" в набор "%3"</value> + + true + true + + true + + + + РежимДобавленияРеквизита + + + Top + ShowBottom + + РежимДобавленияРеквизитаРасширеннаяПодсказка + 239 + true + true + + true + + Label + true + true + + Left + + + + РежимДобавленияРеквизитаКонтекстноеМеню + 238 + true + true + + true + + true + + RadioButtonField + Top + Enter + true + Left + true + + RadioButtons + 1 + + + ru + 1 + +1 + + + 1 + + + + + true + true + + true + + + <key>ru</key> + <value>Выбор действия</value> + + + ВыборДействияРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + + КарточкаРеквизита + 206 + + ГруппаНаименованиеРеквизита + 79 + + Заголовок + 1 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Объект.Заголовок + + + true + Left + + ru + Краткое представление свойства, которое +выводится в формах редактирования его значения. + + + OnChange + ЗаголовокПриИзменении + + + ЗаголовокExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ЭтоДополнительноеСведение + 20 + true + + true + + + + ЭтоДополнительноеСведение + + + None + + OnChange + ЭтоДополнительноеСведениеПриИзменении + + + ЭтоДополнительноеСведениеExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + + ЭтоДополнительноеСведениеКонтекстноеМеню + 21 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 2 + + + ru + Дополнительный реквизит + + + 0 + + + + + ru + Дополнительное сведение + + + 1 + + + + + true + true + + true + + + <key>ru</key> + <value>Наименование реквизита</value> + + + ГруппаНаименованиеРеквизитаРасширеннаяПодсказка + 115 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ТипЗначенияРеквизита + 43 + + ГруппаТипЗначения + 471 + + ТипЗначения + 5 + + <key>ru</key> + <value>Тип значения</value> + + true + true + + true + + + + Объект.ValueType + + + Left + + ru + В реквизите будут указываться данные выбранного типа. Например, текст, дата, число и т.п. + + Button + + OnChange + ТипЗначенияПриИзменении + + + ТипЗначенияExtendedTooltip + 126 + true + true + + true + + Label + true + true + + Left + + + + ТипЗначенияКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + РедактироватьФорматЗначения + 37 + true + true + + true + + + РедактироватьФорматЗначенияExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.РедактироватьФорматЗначения + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Тип значения</value> + + + ГруппаТипЗначенияРасширеннаяПодсказка + 472 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПояснениеТипаЗначения + 476 + + КартинкаПояснение + 478 + true + true + + true + + + КартинкаПояснениеРасширеннаяПодсказка + 480 + true + true + + true + + Label + true + true + + Left + + + + КартинкаПояснениеКонтекстноеМеню + 479 + true + true + + true + + true + + true + true + + + CommonPicture.Информация + + AsFileRef + + + + ПояснениеОДлинеСтроки + 473 + + <key>ru</key> + <value>Максимальная длина строки составляет 1024 символа</value> + + true + true + + true + + + ПояснениеОДлинеСтрокиРасширеннаяПодсказка + 475 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеОДлинеСтрокиКонтекстноеМеню + 474 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Пояснение типа значения</value> + + + ГруппаПояснениеТипаЗначенияРасширеннаяПодсказка + 477 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Тип значения реквизита</value> + + + ТипЗначенияРеквизитаРасширеннаяПодсказка + 125 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаМногострочность + 38 + + ГруппаОднострочноеПолеВводаНастройки + 448 + + ОднострочныйВид + 442 + true + true + + true + + + + ПредставлениеРеквизита + + + None + + OnChange + ВидРеквизитаПриИзменении + + + ОднострочныйВидРасширеннаяПодсказка + 444 + true + true + + true + + Label + true + true + + Left + + + + ОднострочныйВидКонтекстноеМеню + 443 + true + true + + true + + true + + RadioButtonField + Top + Enter + true + Left + true + + RadioButtons + 1 + + + ru + Однострочное поле ввода + + + ОднострочноеПолеВвода + + + + + + ВыводитьВВидеГиперссылки + 445 + true + true + + true + + + + Объект.ВыводитьВВидеГиперссылки + + + Right + + ВыводитьВВидеГиперссылкиРасширеннаяПодсказка + 447 + true + true + + true + + Label + true + true + + Left + + + + ВыводитьВВидеГиперссылкиКонтекстноеМеню + 446 + true + true + + true + + true + + CheckBoxField + Top + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Однострочное поле ввода настройки</value> + + + ГруппаОднострочноеПолеВводаНастройкиРасширеннаяПодсказка + 449 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + + ГруппаМногострочноеПолеВводаНастройки + 46 + + МногострочныйВид + 450 + true + true + + true + + + + ПредставлениеРеквизита + + + None + + OnChange + ВидРеквизитаПриИзменении + + + МногострочныйВидРасширеннаяПодсказка + 452 + true + true + + true + + Label + true + true + + Left + + + + МногострочныйВидКонтекстноеМеню + 451 + true + true + + true + + true + + RadioButtonField + Top + Enter + true + Left + true + + RadioButtons + 1 + + + ru + Многострочное поле ввода + + + МногострочноеПолеВвода + + + + + + МногострочноеПолеВводаЧисло + 41 + + <key>ru</key> + <value> строк</value> + + true + true + + true + + + + МногострочноеПолеВводаЧисло + + + Right + + OnChange + МногострочноеПолеВводаЧислоПриИзменении + + + МногострочноеПолеВводаЧислоExtendedTooltip + 132 + true + true + + true + + Label + true + true + + Left + + + + МногострочноеПолеВводаЧислоКонтекстноеМеню + 42 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 1 + + + 10 + + + + true + true + + true + + + <key>ru</key> + <value>Многострочное поле ввода настройки</value> + + + ГруппаМногострочноеПолеВводаНастройкиExtendedTooltip + 130 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Многострочность</value> + + + ГруппаМногострочностьExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Half + true + true + Auto + Auto + + + + Страницы + 167 + + ГлавнаяСтраница + 169 + + ГруппаСвойстваИЗависимости + 324 + + ГруппаВиден + 463 + + Виден + 402 + + <key>ru</key> + <value>Виден:</value> + + true + true + + true + + + ВиденРасширеннаяПодсказка + 404 + true + true + + true + + Label + true + true + + Left + + + + ВиденКонтекстноеМеню + 403 + true + true + + true + + true + + Label + true + true + + Left + + + + ЗадатьУсловиеВидимости + 333 + + <key>ru</key> + <value>всегда</value> + + true + true + + true + + + ЗадатьУсловиеВидимостиРасширеннаяПодсказка + 335 + true + true + + true + + Label + true + true + + Left + + + + ЗадатьУсловиеВидимостиКонтекстноеМеню + 334 + true + true + + true + + true + + Label + true + + + Click + ЗадатьУсловиеВидимостиНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Виден</value> + + + ГруппаВиденРасширеннаяПодсказка + 464 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + + ГруппаДоступен + 465 + + Доступен + 405 + + <key>ru</key> + <value>Доступен:</value> + + true + true + + true + + + ДоступенРасширеннаяПодсказка + 407 + true + true + + true + + Label + true + true + + Left + + + + ДоступенКонтекстноеМеню + 406 + true + true + + true + + true + + Label + true + true + + Left + + + + ЗадатьУсловиеДоступности + 194 + + <key>ru</key> + <value>всегда</value> + + true + true + + true + + + ЗадатьУсловиеДоступностиРасширеннаяПодсказка + 196 + true + true + + true + + Label + true + true + + Left + + + + ЗадатьУсловиеДоступностиКонтекстноеМеню + 195 + true + true + + true + + true + + Label + true + + + Click + ЗадатьУсловиеДоступностиНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Доступен</value> + + + ГруппаДоступенРасширеннаяПодсказка + 466 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + + ГруппаЗаполнятьОбязательно + 467 + + ЗаполнятьОбязательно + 184 + + <key>ru</key> + <value>Заполнять обязательно:</value> + + true + true + + true + + + + Объект.ЗаполнятьОбязательно + + + Right + + OnChange + ЗаполнятьОбязательноПриИзменении + + + ЗаполнятьОбязательноРасширеннаяПодсказка + 186 + true + true + + true + + Label + true + true + + Left + + + + ЗаполнятьОбязательноКонтекстноеМеню + 185 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ЗадатьУсловиеЗаполнения + 197 + + <key>ru</key> + <value>всегда</value> + + true + true + + true + + + ЗадатьУсловиеЗаполненияРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + + ЗадатьУсловиеЗаполненияКонтекстноеМеню + 198 + true + true + + true + + true + + Label + true + + + Click + ЗадатьУсловиеНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Заполнять обязательно</value> + + + ГруппаЗаполнятьОбязательноРасширеннаяПодсказка + 468 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Свойства и зависимости</value> + + + ГруппаСвойстваИЗависимостиРасширеннаяПодсказка + 325 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ОстальныеРеквизиты + 107 + + ГруппаИдентификаторДляФормул + 481 + + ИдентификаторДляФормул + 483 + true + true + + true + + + + Объект.ИдентификаторДляФормул + + + + ИдентификаторДляФормулРасширеннаяПодсказка + 485 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторДляФормулКонтекстноеМеню + 484 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ЗаполнитьИдентификаторДляФормул + 486 + true + true + + true + + + ЗаполнитьИдентификаторДляФормулРасширеннаяПодсказка + 487 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ЗаполнитьИдентификаторДляФормул + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Идентификатор для формул</value> + + + ГруппаИдентификаторДляФормулРасширеннаяПодсказка + 482 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Подсказка + 30 + + <key>ru</key> + <value>Всплывающая подсказка</value> + + true + true + + true + + + + Объект.Подсказка + + + 2 + + ПодсказкаExtendedTooltip + 155 + true + true + + true + + Label + true + true + + Left + + + + ПодсказкаКонтекстноеМеню + 31 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаЗаголовкиФормЗначений + 32 + + ЗаголовокФормыЗначения + 33 + true + true + + true + + + + Объект.ЗаголовокФормыЗначения + + + 2 + + ru + Используется в заголовке формы дополнительного значения свойства. + + + ЗаголовокФормыЗначенияExtendedTooltip + 157 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокФормыЗначенияКонтекстноеМеню + 34 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + true + + + + ЗаголовокФормыВыбораЗначения + 35 + true + true + + true + + + + Объект.ЗаголовокФормыВыбораЗначения + + + 2 + + ru + Используется в заголовке формы выбора дополнительного значения свойства. + + + ЗаголовокФормыВыбораЗначенияExtendedTooltip + 158 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокФормыВыбораЗначенияКонтекстноеМеню + 36 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Заголовки форм значений</value> + + + ГруппаЗаголовкиФормЗначенийExtendedTooltip + 156 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + Комментарий + 28 + true + true + + true + + + + Объект.Комментарий + + + Left + + КомментарийExtendedTooltip + 159 + true + true + + true + + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 29 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + КомментарийНачалоВыбора + + + Opening + КомментарийОткрытие + + true + true + false + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Остальные реквизиты</value> + + + ОстальныеРеквизитыExtendedTooltip + 154 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + УточнениеНаборов + 96 + + УточнениеНаборовКомментарий + 99 + + <key>ru</key> + <value>Общий реквизит входит в набор "Расходный кассовый ордер" </value> + + true + true + + true + + + ru + Переход к набору. + + + УточнениеНаборовКомментарийExtendedTooltip + 161 + true + true + + true + + Label + true + true + + Left + + + + УточнениеНаборовКомментарийКонтекстноеМеню + 100 + true + true + + true + + true + + Label + true + + + Click + УточнениеНаборовКомментарийНажатие + + true + Left + + + + УточнениеНаборовИзменить + 106 + true + true + + true + + + УточнениеНаборовИзменитьExtendedTooltip + 162 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УточнениеНаборовИзменить + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Уточнение наборов</value> + + + УточнениеНаборовExtendedTooltip + 160 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Главное</value> + + + ГлавнаяСтраницаРасширеннаяПодсказка + 170 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаЗначения + 182 + + СтраницыЗначенияРеквизита + 287 + + ДополнительныеЗначения + 56 + + Значения + 57 + + <key>ru</key> + <value>Значения</value> + + true + true + + true + + + Значения + + None + Copy + Delete + + ЗначенияНаименование + 60 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Значения.Наименование + + + + ЗначенияНаименованиеExtendedTooltip + 148 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияНаименованиеКонтекстноеМеню + 61 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ЗначенияВес + 83 + true + true + + true + + + + Значения.Вес + + + + ЗначенияВесExtendedTooltip + 149 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияВесКонтекстноеМеню + 84 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 16 + true + true + + + + ЗначенияСсылка + 460 + true + true + + + + Значения.Ref + + + + ЗначенияСсылкаРасширеннаяПодсказка + 462 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияСсылкаКонтекстноеМеню + 461 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ЗначенияКоманднаяПанель + 59 + + ЗначенияКоманднаяПанельРедактирования + 108 + + ЗначенияСоздать + 62 + true + true + + true + + + ЗначенияСоздатьExtendedTooltip + 141 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ЗначенияСоздатьГруппу + 68 + true + true + + true + + + ЗначенияСоздатьГруппуExtendedTooltip + 142 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + + ЗначенияИзменить + 64 + true + true + + true + + + ЗначенияИзменитьExtendedTooltip + 143 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ЗначенияУстановитьПометкуУдаления + 65 + true + true + + true + + + ЗначенияУстановитьПометкуУдаленияExtendedTooltip + 144 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Значения командная панель редактирования</value> + + + ЗначенияКоманднаяПанельРедактированияExtendedTooltip + 140 + true + true + + true + + Label + true + true + + Left + + + + + + ЗначенияНайти + 66 + true + true + + true + + + ЗначенияНайтиExtendedTooltip + 145 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.Find + Auto + true + true + UserCmds + Auto + + + ЗначенияОтменитьПоиск + 67 + true + true + + true + + + ЗначенияОтменитьПоискExtendedTooltip + 146 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + + + ФормаПоискИУдалениеДублей + 322 + true + true + + true + + + ФормаПоискИУдалениеДублейРасширеннаяПодсказка + 323 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоискИУдалениеДублей + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + + + BeforeAddRow + ЗначенияПередНачаломДобавления + + + BeforeRowChange + ЗначенияПередНачаломИзменения + + + OnChange + ЗначенияПриИзменении + + + true + true + + true + + ЗначенияСтрокаПоиска + 173 + + ЗначенияСтрокаПоискаРасширеннаяПодсказка + 175 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияСтрокаПоискаКонтекстноеМеню + 174 + true + true + + true + + true + + + true + + + + true + true + + true + + ЗначенияСостояниеПросмотра + 176 + + ЗначенияСостояниеПросмотраРасширеннаяПодсказка + 178 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияСостояниеПросмотраКонтекстноеМеню + 177 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ЗначенияУправлениеПоиском + 179 + + ЗначенияУправлениеПоискомРасширеннаяПодсказка + 181 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияУправлениеПоискомКонтекстноеМеню + 180 + true + true + + true + + true + + SearchControlAddition + + true + + + + ЗначенияExtendedTooltip + 147 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияКонтекстноеМеню + 58 + + ЗначенияКонтекстноеМенюРедактирования + 109 + + ЗначенияСоздатьКонтекстноеМеню + 110 + true + true + + true + + + ЗначенияСоздатьКонтекстноеМенюРасширеннаяПодсказка + 135 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ЗначенияСоздатьГруппуКонтекстноеМеню + 111 + true + true + + true + + + ЗначенияСоздатьГруппуКонтекстноеМенюРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + + ЗначенияИзменитьКонтекстноеМеню + 112 + true + true + + true + + + ЗначенияИзменитьКонтекстноеМенюРасширеннаяПодсказка + 137 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ЗначенияУстановитьПометкуУдаленияКонтекстноеМеню + 113 + true + true + + true + + + ЗначенияУстановитьПометкуУдаленияКонтекстноеМенюРасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.SetDeletionMark + Auto + true + true + UserCmds + Auto + + + ЗначенияКонтекстноеМенюСтандартныеКоманды + 86 + true + true + + true + + + <key>ru</key> + <value>Значения контекстное меню стандартные команды</value> + + + ЗначенияКонтекстноеМенюСтандартныеКомандыExtendedTooltip + 139 + true + true + + true + + Label + true + true + + Left + + + + Item.Значения + + + true + true + + true + + + <key>ru</key> + <value>Значения контекстное меню редактирования</value> + + + ЗначенияКонтекстноеМенюРедактированияExtendedTooltip + 134 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + Tree + true + true + true + 9 + true + 7 + true + MultiRow + Row +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + Значения.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + +
        + true + true + + true + + + <key>ru</key> + <value>Дополнительные значения:</value> + + + ДополнительныеЗначенияExtendedTooltip + 133 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + СтраницаДеревоЗначений + 289 + + ЗначенияДополнительногоРеквизита + 291 + + <key>ru</key> + <value>Значения дополнительного реквизита</value> + + true + true + + true + + + ЗначенияДополнительныхРеквизитов + + None + Add + Change + Copy + CopyToClipboard + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + OutputList + SelectAll + ShowMultipleSelection + ShowRowRearrangement + SortListAsc + SortListDesc + Tree + + ЗначенияДополнительногоРеквизитаНаименование + 304 + true + true + + true + + + + ЗначенияДополнительныхРеквизитов.Наименование + + + + ЗначенияДополнительногоРеквизитаНаименованиеРасширеннаяПодсказка + 306 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДополнительногоРеквизитаНаименованиеКонтекстноеМеню + 305 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ЗначенияДополнительногоРеквизитаВес + 307 + + <key>ru</key> + <value>Весовой коэффициент</value> + + true + true + + true + + + + ЗначенияДополнительныхРеквизитов.Вес + + + + ЗначенияДополнительногоРеквизитаВесРасширеннаяПодсказка + 309 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДополнительногоРеквизитаВесКонтекстноеМеню + 308 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ЗначенияДополнительногоРеквизитаКоманднаяПанель + 293 + + ЗначенияДополнительныхРеквизитов1Группа1 + 310 + + ЗначенияДополнительногоРеквизитаСоздать + 312 + true + true + + true + + + ЗначенияДополнительногоРеквизитаСоздатьРасширеннаяПодсказка + 313 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + ЗначенияДополнительногоРеквизитаГруппу + 314 + true + true + + true + + + ЗначенияДополнительногоРеквизитаГруппуРасширеннаяПодсказка + 315 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Значения дополнительных реквизитов 1 группа 1</value> + + + ЗначенияДополнительныхРеквизитов1Группа1РасширеннаяПодсказка + 311 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + Left + + + true + true + + true + + ЗначенияДополнительногоРеквизитаСтрокаПоиска + 295 + + ЗначенияДополнительногоРеквизитаСтрокаПоискаРасширеннаяПодсказка + 297 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДополнительногоРеквизитаСтрокаПоискаКонтекстноеМеню + 296 + true + true + + true + + true + + + true + + + + true + true + + true + + ЗначенияДополнительногоРеквизитаСостояниеПросмотра + 298 + + ЗначенияДополнительногоРеквизитаСостояниеПросмотраРасширеннаяПодсказка + 300 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДополнительногоРеквизитаСостояниеПросмотраКонтекстноеМеню + 299 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ЗначенияДополнительногоРеквизитаУправлениеПоиском + 301 + + ЗначенияДополнительногоРеквизитаУправлениеПоискомРасширеннаяПодсказка + 303 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДополнительногоРеквизитаУправлениеПоискомКонтекстноеМеню + 302 + true + true + + true + + true + + SearchControlAddition + + true + + + + ЗначенияДополнительногоРеквизитаРасширеннаяПодсказка + 294 + true + true + + true + + Label + true + true + + Left + + + + ЗначенияДополнительногоРеквизитаКонтекстноеМеню + 292 + + КонтекстноеМенюЗначенияДополнительногоРеквизитаСоздать1 + 318 + true + true + + true + + + КонтекстноеМенюЗначенияДополнительногоРеквизитаСоздать1РасширеннаяПодсказка + 319 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюЗначенияДополнительногоРеквизитаГруппу + 316 + true + true + + true + + + КонтекстноеМенюЗначенияДополнительногоРеквизитаГруппуРасширеннаяПодсказка + 317 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Значения.StandardCommand.CreateFolder + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + Tree + true + true + true + true + 7 + true + MultiRow + Row +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + ЗначенияДополнительныхРеквизитов.КодКартинки + + + StdPicture.Attribute + +
        + true + true + + true + + + <key>ru</key> + <value>Страница дерево значений</value> + + + СтраницаДеревоЗначенийРасширеннаяПодсказка + 290 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + true + true + + true + + + <key>ru</key> + <value>Страницы значения реквизита</value> + + 65 + false + + СтраницыЗначенияРеквизитаРасширеннаяПодсказка + 288 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
        + + ДополнительныеЗначенияСВесом + 69 + true + true + + true + + + + Объект.ДополнительныеЗначенияСВесом + + + Right + + OnChange + ДополнительныеЗначенияСВесомПриИзменении + + + ДополнительныеЗначенияСВесомExtendedTooltip + 150 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныеЗначенияСВесомКонтекстноеМеню + 70 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + УточнениеСпискаЗначений + 89 + + УточнениеСпискаЗначенийКомментарий + 87 + + <key>ru</key> + <value>Список значений общий с реквизитом "Цвет" набора "Номенклатура (сумки)" </value> + + true + true + + true + + + ru + Переход к редактированию списка значений. + + + УточнениеСпискаЗначенийКомментарийExtendedTooltip + 152 + true + true + + true + + Label + true + true + + Left + + + + УточнениеСпискаЗначенийКомментарийКонтекстноеМеню + 88 + true + true + + true + + true + + Label + true + + + Click + УточнениеСпискаЗначенийКомментарийНажатие + + true + Left + + + + УточнениеСпискаЗначенийИзменить + 105 + true + true + + true + + + УточнениеСпискаЗначенийИзменитьExtendedTooltip + 153 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УточнениеСпискаЗначенийИзменить + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Уточнение списка значений</value> + + + УточнениеСпискаЗначенийExtendedTooltip + 151 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Значения</value> + + + СтраницаЗначенияРасширеннаяПодсказка + 183 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 168 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
        + + ГруппаДляРазработчиков + 455 + + Имя + 457 + true + true + + true + + + + Объект.Имя + + + + ru + Требуется для программного обращения к дополнительным реквизитам или сведениям. +Имя должно состоять из одного слова, начинаться с буквы и не содержать специальных символов, кроме «_». +Если не указано - заполняется автоматически при записи. + + Button + + ИмяРасширеннаяПодсказка + 459 + true + true + + true + + Label + true + true + + Left + + + + ИмяКонтекстноеМеню + 458 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Для разработчиков</value> + + + ГруппаДляРазработчиковРасширеннаяПодсказка + 456 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + true + Picture + WeakSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Карточка реквизита</value> + + + КарточкаРеквизитаРасширеннаяПодсказка + 207 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + +
        + true + true + + true + + + <key>ru</key> + <value>Страницы помощник карточка</value> + + + СтраницыПомощникКарточкаРасширеннаяПодсказка + 201 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
        + + КоманднаяПанельПомощника + 227 + + КоманднаяПанельЛево + 229 + + КомандаНазад + 233 + true + true + + true + + + КомандаНазадРасширеннаяПодсказка + 234 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаНазад + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель лево</value> + + + КоманднаяПанельЛевоРасширеннаяПодсказка + 230 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + КоманднаяПанельПраво + 231 + + КомандаДалее + 235 + true + true + + true + + + КомандаДалееРасширеннаяПодсказка + 236 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаДалее + Auto + true + true + UserCmds + Auto + + + Закрыть + 242 + true + true + + true + + + ЗакрытьРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗакрытьФорму + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель право</value> + + + КоманднаяПанельПравоРасширеннаяПодсказка + 232 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Командная панель помощника</value> + + true + + КоманднаяПанельПомощникаРасширеннаяПодсказка + 228 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Bottom + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаУстановитьСнятьПометкуУдаления + 453 + true + true + + true + + + ФормаУстановитьСнятьПометкуУдаленияРасширеннаяПодсказка + 454 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьСнятьПометкуУдаления + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + ChoiceProcessing + ОбработкаВыбора + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + SetDeletionMark + true + Vertical + true + true + true + UseIfNecessary + true + true + + Объект + 1 + + ChartOfCharacteristicTypesObject.ДополнительныеРеквизитыИСведения + + + true + + + true + +
        true
        + true +
        + + ЭтоДополнительноеСведение + + <key>ru</key> + <value>Это дополнительное сведение</value> + + 3 + + Number + + 1 + + + + true + + + true + + FunctionalOption.ИспользоватьДополнительныеРеквизитыИСведения + true + + + СписокНаборов + 2 + + ValueList + + + true + + + true + + + + + + + МногострочноеПолеВвода + 7 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьДополнительныеРеквизитыИСведения + true + + + МногострочноеПолеВводаЧисло + + <key>ru</key> + <value>Многострочное поле ввода число</value> + + 8 + + Number + + 2 + true + + + + true + + + true + + FunctionalOption.ИспользоватьДополнительныеРеквизитыИСведения + true + + + Значения + + <key>ru</key> + <value>Значения</value> + + 9 + + DynamicList + + + true + + + true + + + Значения.Ref + + + ВЫБРАТЬ + ЗначенияПереопределяемый.Ссылка, + ЗначенияПереопределяемый.ВерсияДанных, + ЗначенияПереопределяемый.ПометкаУдаления, + ЗначенияПереопределяемый.Предопределенный, + ЗначенияПереопределяемый.Владелец, + ЗначенияПереопределяемый.Родитель, + ЗначенияПереопределяемый.ЭтоГруппа, + ВЫБОР + КОГДА &ЭтоОсновнойЯзык + ТОГДА ЗначенияПереопределяемый.Наименование + ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставленияПереопределяемый.Наименование, ЗначенияПереопределяемый.Наименование) КАК СТРОКА(150)) + КОНЕЦ КАК Наименование, + ЗначенияПереопределяемый.Вес +ИЗ + Справочник.ЗначенияСвойствОбъектов КАК ЗначенияПереопределяемый + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставленияПереопределяемый + ПО (ЗначенияПредставленияПереопределяемый.Ссылка = ЗначенияПереопределяемый.Ссылка) + И ЗначенияПредставленияПереопределяемый.КодЯзыка = &КодЯзыка + Catalog.ЗначенияСвойствОбъектов + true + true + true + true + true + + + + ПоказатьУточнениеНабора + 10 + + Boolean + + + true + + + true + + + + ТекущийНаборСвойств + 4 + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + + + + ПереданныеПараметрыФормы + 13 + + + true + + + true + + + + РежимДобавленияРеквизита + + <key>ru</key> + <value>Режим добавления реквизита</value> + + 14 + + String + + + + true + + + true + + + + РежимПомощника + 15 + + Boolean + + + true + + + true + + + + ЗначенияДополнительныхРеквизитов + + <key>ru</key> + <value>Значения дополнительных реквизитов</value> + + 16 + + ValueTree + + + true + + + true + + + Ссылка + 1 + + CatalogRef.ЗначенияСвойствОбъектовИерархия + CatalogRef.ЗначенияСвойствОбъектов + + + true + + + true + + + + КодКартинки + 3 + + Number + + 10 + + + + true + + + true + + + + Вес + + <key>ru</key> + <value>Вес</value> + + 2 + + Number + + 10 + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 4 + + String + + + + true + + + true + + + + + ПустаяСсылка + 17 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + + + УсловияЗависимостиРеквизитов + 18 + + ValueList + + + true + + + true + + + + + + + ИзмененыУсловияЗависимостиРеквизитов + 19 + + Boolean + + + true + + + true + + + + ВыбранныйНаборСвойств + 20 + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + true + + + true + + + + НаборыСвойств + + <key>ru</key> + <value>Наборы свойств</value> + + 21 + + DynamicList + + + true + + + true + + + НаборыСвойств.Родитель + + + НаборыСвойств.Ссылка + + + НаборыСвойств.ЭтоГруппа + + + ВЫБРАТЬ + Наборы.Ссылка КАК Ссылка, + Наборы.ВерсияДанных КАК ВерсияДанных, + Наборы.ПометкаУдаления КАК ПометкаУдаления, + Наборы.Предопределенный КАК Предопределенный, + Наборы.Родитель КАК Родитель, + Наборы.ЭтоГруппа КАК ЭтоГруппа, + Наборы.Наименование КАК Наименование, + Наборы.Используется КАК Используется, + ВЫБОР + КОГДА Наборы.ЭтоГруппа + ТОГДА Наборы.Наименование + КОГДА &ЭтоДополнительноеСведение + ТОГДА ВЫБОР + КОГДА Наборы.КоличествоСведений = "" + ТОГДА ВЫБОР + КОГДА &ЭтоОсновнойЯзык + ТОГДА Наборы.Наименование + ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(НаборыПредставления.Наименование, Наборы.Наименование) КАК СТРОКА(150)) + КОНЕЦ + КОГДА Наборы.КоличествоСведений <> "" + И &ЭтоОсновнойЯзык + ТОГДА Наборы.Наименование + " (" + Наборы.КоличествоСведений + ")" + ИНАЧЕ (ВЫРАЗИТЬ(ЕСТЬNULL(НаборыПредставления.Наименование, Наборы.Наименование) КАК СТРОКА(150))) + " (" + Наборы.КоличествоСведений + ")" + КОНЕЦ + ИНАЧЕ ВЫБОР + КОГДА Наборы.КоличествоРеквизитов = "" + ТОГДА ВЫБОР + КОГДА &ЭтоОсновнойЯзык + ТОГДА Наборы.Наименование + ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(НаборыПредставления.Наименование, Наборы.Наименование) КАК СТРОКА(150)) + КОНЕЦ + КОГДА Наборы.КоличествоРеквизитов <> "" + И &ЭтоОсновнойЯзык + ТОГДА Наборы.Наименование + " (" + Наборы.КоличествоРеквизитов + ")" + ИНАЧЕ (ВЫРАЗИТЬ(ЕСТЬNULL(НаборыПредставления.Наименование, Наборы.Наименование) КАК СТРОКА(150))) + " (" + Наборы.КоличествоРеквизитов + ")" + КОНЕЦ + КОНЕЦ КАК Представление, + ВЫБОР + КОГДА Наборы.ПометкаУдаления + ТОГДА 1 + ИНАЧЕ 0 + КОНЕЦ + ВЫБОР + КОГДА Наборы.Предопределенный + ТОГДА 2 + ИНАЧЕ 0 + КОНЕЦ КАК НомерКартинки +ИЗ + Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.Представления КАК НаборыПредставления + ПО (НаборыПредставления.Ссылка = Наборы.Ссылка) + И (НаборыПредставления.КодЯзыка = &КодЯзыка) +ГДЕ + ВЫБОР + КОГДА Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) + ТОГДА Наборы.Ссылка В (&Наборы) + ИНАЧЕ Наборы.Родитель В (&Наборы) + КОНЕЦ + И Наборы.Используется + И ЕСТЬNULL(Наборы.Родитель.Используется, ИСТИНА) + И НЕ Наборы.Ссылка В (&ИсключаемыеНаборы) + Catalog.НаборыДополнительныхРеквизитовИСведений + true + true + true + true + + + + Свойства + + <key>ru</key> + <value>Свойства</value> + + 22 + + ValueTable + + + true + + + true + + + Заголовок + + <key>ru</key> + <value>Реквизит</value> + + 1 + + String + + + + true + + + true + + + + ПометкаУдаления + 4 + + Boolean + + + true + + + true + + + + Свойство + 5 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + + + НомерСтроки + 6 + + Number + + 10 + true + + + + true + + + true + + + + ВладелецДополнительныхЗначений + 7 + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + true + + + true + + + + НомерКартинки + 2 + + Number + + 1 + true + + + + true + + + true + + + + ТипЗначения + + <key>ru</key> + <value>Тип значения</value> + + 8 + + String + + + + true + + + true + + + + Подсказка + + <key>ru</key> + <value>Подсказка</value> + + 3 + + String + + + + true + + + true + + + + ЗаголовокФормыЗначения + + <key>ru</key> + <value>Заголовок формы значения</value> + + 9 + + String + + + + true + + + true + + + + ЗаголовокФормыВыбораЗначения + + <key>ru</key> + <value>Заголовок формы выбора значения</value> + + 10 + + String + + + + true + + + true + + + + Общее + 11 + + Boolean + + + true + + + true + + + + ОбщиеЗначения + 12 + + Boolean + + + true + + + true + + + + + ОбщиеНаборыСвойств + + <key>ru</key> + <value>Общие наборы свойств</value> + + 23 + + DynamicList + + + true + + + true + + + ВЫБРАТЬ + ВЫБОР + КОГДА &ЭтоДополнительноеСведение + ТОГДА &ОбщиеДополнительныеСведения + ИНАЧЕ &ОбщиеДополнительныеРеквизиты + КОНЕЦ КАК Представление, + 0 КАК НомерКартинки + true + true + true + true + + + + ПредставлениеРеквизита + + <key>ru</key> + <value>Представление реквизита</value> + + 24 + + String + + + + true + + + true + + true + + + ТекущийЗаголовок + 5 + + String + + + + true + + + true + + + + РедактироватьФорматЗначения + + <key>ru</key> + <value>Формат</value> + + 1 + + ru + Формат значения будет использован при редактировании свойства пользователем + + + true + + + + РедактироватьФорматЗначения + + + true + DontUse + + + УточнениеСпискаЗначенийИзменить + + <key>ru</key> + <value>Изменить...</value> + + 2 + + ru + Изменить вид дополнительного реквизита. + + + true + + + + УточнениеСпискаЗначенийИзменить + + + DontUse + + + УточнениеНаборовИзменить + + <key>ru</key> + <value>Изменить...</value> + + 3 + + ru + Изменить вид дополнительного реквизита. + + + true + + + + УточнениеНаборовИзменить + + + DontUse + + + КомандаДалее + + <key>ru</key> + <value>Далее ></value> + + 4 + + ru + Команда далее + + + true + + + + КомандаДалее + + + DontUse + + + КомандаНазад + + <key>ru</key> + <value>< Назад</value> + + 5 + + ru + Команда назад + + + true + + + + КомандаНазад + + + DontUse + + + ЗакрытьФорму + + <key>ru</key> + <value>Закрыть</value> + + 6 + + ru + Закрыть форму + + + true + + + + ЗакрытьФорму + + + DontUse + + + ПоискИУдалениеДублей + + <key>ru</key> + <value>Поиск и удаление дублей...</value> + + 7 + + ru + Поиск и удаление дублей + + + true + + + + ПоискИУдалениеДублей + + + DontUse + + + Изменить + + <key>ru</key> + <value>Изменить</value> + + 8 + + ru + Изменить + + + true + + F2 + + StdPicture.Change + + + + Изменить + + + DontUse + + + НеиспользуемыеРеквизиты + + <key>ru</key> + <value>Неиспользуемые реквизиты</value> + + 9 + + true + + + + ПоказатьНеиспользуемыеРеквизиты + + + DontUse + + + УстановитьСнятьПометкуУдаления + + <key>ru</key> + <value>Пометить на удаление/ Снять пометку</value> + + 10 + + ru + Пометить на удаление/ Снять пометку + + + true + + + StdPicture.MarkToDelete + + + + УстановитьСнятьПометкуУдаления + + + DontUse + + + ЗаполнитьИдентификаторДляФормул + + <key>ru</key> + <value>Заполнить идентификатор для формул</value> + + 11 + + ru + Заполнить идентификатор для формул + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьИдентификаторДляФормул + + + Picture + Auto + + + ЭтоДополнительноеСведение + + + + ТекущийНаборСвойств + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + + ВладелецДополнительныхЗначений + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + + ПоказатьУточнениеНабора + + Boolean + + + + ВыборОбщегоСвойства + + Boolean + + + + ВыбранныеЗначения + + + + ВыборВладельцаДополнительныхЗначений + + Boolean + + + + КопированиеСВопросом + + Boolean + + + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWrite + ПередЗаписью + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..c0be6e47 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Help/ru.html" @@ -0,0 +1,182 @@ + +

        Предназначена для настройки дополнительных реквизитов (сведений).

        +

        Открывается по команде Добавить или Создать в списке Дополнительные реквизиты (сведения).

        +

        Назначение нового дополнительного реквизита (сведения) справочнику или документу

        +
        • В зависимости от настройки может быть доступна одна из команд ввода новых реквизитов (сведений): +
          • Выберите соответствующий этому справочнику или документу набор, нажмите Создать. По умолчанию дополнительный реквизит (сведение) может быть добавлен только в один набор. +
          • +
          • Выберите соответствующий этому справочнику или документу набор, нажмите Добавить - Новый (Новое) - аналогична команде Создать. С помощью этой команды дополнительный реквизит (сведение) может быть добавлен только в один набор.

        Заполните необходимые поля:

        +
        • Напишите краткое Наименование свойства, которое будет указываться в окнах объектов программы. +
        • +
        • Для того чтобы дополнительный реквизит при заполнении справочников или документов не оставался пустым, включите флажок Заполнять обязательно. Для дополнительных сведений флажок не предусмотрен. +
        • +
        • Заполните поля на вкладке Главное: +
          •  Выберите из списка с помощью флажка Тип значения дополнительного реквизита (сведения); +
          • +
          • Для того чтобы уточнить формат дополнительных реквизитов типа Число, Дата, Булево, перейдите в Конструктор форматной строки по ссылке Формат по умолчанию (для дополнительных сведений не предусмотрено). +
            • Установите при необходимости значение в поле Язык (Страна), для того чтобы изменить стандартные настройки. +
            • +
            • Выберите необходимые параметры для установки форматов. +
            • +
            • В строке Пример для наглядности производятся соответствующие этим параметрам изменения. +
            • +
            • Для подтверждения выбранных параметров нажмите ОК. +
            • +
            • После уточнения формата ссылка меняет значение на Формат установлен. +
            • +
            • Подробнее о форматах см. ниже.
          • +
          • При необходимости включите флажок Выводить в виде гиперссылки - для размещения на карточке объекта (документа, списка) ссылок на внешние ресурсы или другие объекты программы (например, файлы). Доступно для строковых дополнительных реквизитов и для ссылочных объектов. +
          • +
          • Заполните поле Всплывающая подсказка, для того чтобы объяснить, как заполняется дополнительное сведение или реквизит. Содержимое поля будет выводиться на экран при наведении мыши на поле дополнительного реквизита (сведения). +
          • +
          • Только для дополнительных реквизитов: перейдите по ссылке в поле Виден, для того чтобы настроить видимость дополнительного реквизита. Видимость дополнительного реквизита может зависеть от некоторого условия (например, от заполнения другого реквизита). После того как условие задано, ссылка отображает заданное условие. По умолчанию отображается значение всегда. +
          • +
          • Только для дополнительных реквизитов: перейдите по ссылке в поле Доступен, для того чтобы настроить доступность дополнительного реквизита для заполнения. Доступность дополнительного реквизита может зависеть от некоторого условия (например, от заполнения другого реквизита). После того как условие задано, ссылка отображает заданное условие. По умолчанию отображается значение всегда. +
          • +
          • Только для дополнительных реквизитов: включите флажок Заполнять обязательно, для того чтобы дополнительный реквизит при заполнении списков или документов не оставался пустым. Может зависеть от некоторого условия (например, от заполнения другого реквизита). Для того чтобы задать условие, перейдите по ссылке. Ссылка по умолчанию принимает значение всегда.
        • +
        • Заполните поле Комментарий, для того чтобы при подборе дополнительного реквизита (сведения) в наборы в нижней части списка выбора выводилось его описание. Для заполнения перейдите на вкладку Комментарий.

        Добавление из другого набора

        +
        • В программе предусмотрена возможность использовать ранее введенные дополнительные реквизиты и сведения для других наборов. +
        • +
        • Наиболее актуален этот способ для дополнительных реквизитов и сведений типа Дополнительное значение и Дополнительное значение (иерархия). Если проведены соответствующие настройки (включен хотя бы один из флажков в разделе Администрирование - Общие настройки), становится доступной кнопка Добавить. +
        • +
        • Выберите набор дополнительных реквизитов (сведений), нажмите кнопку Добавить, в выпадающем меню выполните команду Из другого набора. +
        • +
        • Открывается помощник по добавлению дополнительного реквизита (сведения). +
          • В левой части первой страницы помощника отображается список ранее введенных реквизитов (сведений). +
          • +
          • В правой части отражаются значения и другие параметры выбранного реквизита.
        • +
        • На первой странице помощника выберите дополнительный реквизит (сведение). Обратите внимание, что создать дополнительный реквизит или сведение в данном списке невозможно. +
          • Для выбора варианта добавления дополнительного реквизита (сведения) нажмите кнопку Далее. +
          • +
          • Также можно добавить реквизит из одного набора в другой с помощью перетаскивания мышью. Если были произведены соответствующие настройки, открывается вторая страница помощника Добавление дополнительного реквизита (сведения).
        • +
        • На второй странице помощника с помощью переключателя выберите вариант добавления дополнительного реквизита (сведения): +
          • Сделать копию реквизита - в новом наборе будет создан такой же дополнительный реквизит (сведение). +
          • +
          • Сделать копию реквизита по образцу - создается дополнительный реквизит (сведение) с общим списком значений. Должен быть включен флажок Реквизиты и сведения с общим списком значений в разделе Администрирование - Общие настройки. +
          • +
          • Добавить общий реквизит в набор - сделать дополнительный реквизит (сведение) общим. В этом случае общим становится не список значений, а сам реквизит. Должен быть включен флажок Общие реквизиты и сведения в разделе Администрирование - Общие настройки.

        Копирование дополнительных реквизитов (сведений)

        +
        • В программе предусмотрена возможность копирования дополнительных реквизитов (сведений). +
        • +
        • В этом случае для набора дополнительных реквизитов (сведений) будет создана копия - самостоятельный дополнительный реквизит (сведение) со своим списком значений, никак не связанный с оригиналом, по которому был создан. +
        • +
        • В зависимости от настроек производится несколькими способами: +
          • В помощнике добавления дополнительных реквизитов и сведений; +
            • Выделите набор дополнительных реквизитов в списке, нажмите Добавить - Из другого набора. +
            • +
            • На первой странице помощника в списке выбора реквизитов для копирования выберите нужный реквизит, нажмите Далее. +
            • +
            • На второй странице помощника с помощью переключателя выберите Сделать копию реквизита, нажмите Далее. +
            • +
            • Заполните недостающие поля. После копирования реквизита список значений доступен для редактирования.
          • +
          • Перетаскиванием мышью; +
            • Можно перетащить нужный дополнительный реквизит (сведение) из одного набора в другой с помощью мыши. +
            • +
            • Если в списке имеется кнопка Добавить, то открывается вторая страница помощника добавления дополнительного реквизита (сведения). +
            • +
            • Если в списке только кнопка Создать, то открывается карточка дополнительного реквизита (сведения), который будет скопирован. Заполните недостающие поля.
          • +
          • С помощью кнопок Копировать и Вставить. +
            • Выделите дополнительный реквизит (сведение), нажмите кнопку Копировать. Выделите набор, в который нужно добавить дополнительный реквизит (сведение). Нажмите кнопку Вставить. Если были произведены соответствующие настройки, то открывается вторая страница помощника добавления дополнительных реквизитов (сведений). Если выбранный дополнительный реквизит (сведение) уже входит в какой-либо набор, то предлагается сделать его общим. +
            • +
            • Команды Копировать и Вставить также доступны в контекстном меню по правой кнопке мыши или в меню Еще.

        Добавление по образцу

        +
        • Для того чтобы использовать эту возможность, необходимо включить флажок Реквизиты и сведения с общим списком значений в разделе Администрирование - Общие настройки. +
        • +
        • Можно использовать ранее введенные дополнительные реквизиты и сведения из других наборов, добавлять реквизиты с общим списком значений сразу для нескольких однотипных реквизитов (например, Цвет двери по образцу реквизита Цвет). Список значений в этом случае используется из реквизита-образца. Удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов. +
        • +
        • +
          Выберите набор из списка.
          +
        • +
        • +
          Нажмите Добавить - Из другого набора.
          +
        • +
        • +
          Будет открыт список всех дополнительных реквизитов (сведений), уже существующих в программе. Выберите дополнительный реквизит (сведение) из списка уже существующих в программе, нажмите Далее.
          +
        • +
        • +
          +
          С помощью переключателя выберите способ создания элемента Сделать копию реквизита по образцу, нажмите Далее.
          +
        • +
        • +
          Тип и все значения выбранного в качестве образца дополнительного реквизита (сведения) будут скопированы в новый элемент.
          +
        • +
        • +
          Заполните все необходимые поля. По умолчанию реквизит становится общим с набором, из которого был использован образец. Ввод новых значений в этом случае невозможен. Программа выводит напоминание, что список значений является общим с другим реквизитом.
          +
        • +
        • +
          После сохранения дополнительного реквизита (сведения) с помощью ссылки можно просмотреть реквизит-образец и добавить значения, если необходимо.
          +
        • +
        • Реквизит, созданный по образцу, который имеет общий список значений с другим реквизитом, можно сделать отдельным реквизитом. +
          • Для этого нужно нажать кнопку Изменить, в открывшемся окне Изменить настройку дополнительного реквизита (сведения) выбрать переключатель Реквизит со своим списком значений и записать изменения. Список значений будет скопирован с заменой ссылок в документах. После этого станет доступным ввод списка значений. +
          • +
          • Внимание: данную перенастройку для уже действующих реквизитов (использованных для ввода в документы) следует применять с осторожностью. Перенастройка реквизита является необратимой, может выполняться автоматически, но занимает много времени и может закончиться некорректно. Можно заменить значения в уже существующих документах вручную, очистив старые значения и добавив новые (рекомендуется).

        Добавление общих дополнительных реквизитов (сведений)

        +
        • Общий реквизит входит в несколько наборов. Этот вариант подходит для тех случаев, когда общим должен быть не только список значений, но и сам реквизит. В списках и отчетах по элементам различных справочников и документов общие реквизиты группируются и выводятся как один реквизит в одной колонке или поле. Например, с помощью общего реквизита Цвет можно отобрать всю желтую одежду и обувь. +
        • +
        • Для того чтобы использовать эту возможность, необходимо включить флажок Общие реквизиты и сведения в разделе Администрирование - Общие настройки. +
        • +
        • +
          Для того чтобы добавить в набор общий дополнительный реквизит (сведение), выделите нужный набор, нажмите Добавить - Из другого набора.
          +
        • +
        • +
          Выберите из предлагаемого списка уже существующий общий дополнительный реквизит (сведение).Нажмите кнопку Далее.
          +
        • +
        • Открывается вторая страница помощника. Выберите с помощью переключателя вариант добавления Сделать реквизит общим и добавить в набор, нажмите Далее. Открывается общий дополнительный реквизит. +
        • +
        • +
          Также можно добавить общий дополнительный реквизит (сведение) с помощью перетаскивания мышью или кнопок Копировать и Вставить.
          +
        • +
        • +
          Для того чтобы добавить общий реквизит в несколько наборов, повторите эти действия для каждого набора.
          +
        • +
        • В нижней части окна общего дополнительного реквизита (сведения) при размещении в одном или нескольких наборах появляется ссылка Общий реквизит (Общее сведение) входит в набор с перечнем наборов. +
        • +
        •  С помощью кнопки Изменить (находится рядом со ссылкой) можно общий реквизит сделать отдельным реквизитом с собственным списком значений. +
          • В открывшемся окне Изменить настройку дополнительного реквизита (сведения), нажмите переключатель Реквизит со своим списком значений и записать изменения. Список значений будет скопирован с заменой ссылок в документах. +
          • +
          • Внимание! Перенастройка дополнительного реквизита (сведения) необратима и может занять длительное время, в зависимости от числа документов, в которых заполнен этот реквизит. Вместо этого можно добавить новый реквизит со своим списком значений и выполнить вручную постепенный переход от использования этого реквизита к новому (очистить значения этого реквизита и заполнить значения нового).

        Типы значений дополнительных реквизитов и сведений

        +

        Тип значения дополнительных реквизитов и сведений меняется исходя из логики использования. Возможны следующие типы дополнительного реквизита или сведения:

        +
        • Строка - Определите Длину строки, выберите параметр Фиксированная или Переменная (если введенная строка получится меньше предполагаемой длины, то количество знаков, отведенное под это значение, будет автоматически уменьшено до фактической). Максимальная длина строки в этом случае 1024 символа. Также можно включить флажок Неограниченная, если планируется вводить большой объем текстовой информации. +
          • Для дополнительного реквизита типа Строка в программе предлагается возможность сделать поле многострочным. Для этого включите флажок Многострочное поле ввода и введите количество строк.
        • +
        • Число - выберите Длину числа и его Точность. По умолчанию программа предлагает длину числа 15 и точность 3. В зависимости от вводимых данных эти цифры могут меняться. Необходимо учитывать, что в количество знаков Длины числа входит количество знаков целой части, и десятичная точка, и количество знаков дробной части. При необходимости включите флажок Неотрицательное. +
          • При вводе дополнительного реквизита типа Число предусмотрена возможность более точного выбора формата числа. +
            • При вводе значений в поля Длина и Точность в Конструкторе форматной строки число будет округляться до этого количества знаков. +
            • +
            • Можно выбрать Сдвиг. +
            • +
            • Можно поменять Разделитель дробной части (по умолчанию - запятая), определить Разделитель групп (по умолчанию пробел), также определить Группировку. +
            • +
            • Можно выбрать Представление нуля, например, для того чтобы напомнить о необходимости ввода значения в это поле. +
            • +
            • Также можно указать Представление отрицательных чисел. +
            • +
            • При необходимости включите флажок Выводить лидирующие нули. В этом случае при подгонке под указанную Длину числа, если число меньше, будут проставлены нули в разрядах.
          • +
          • Внимание! Некоторые настройки формата (например, представление пустого числа, длинная дата и некоторые другие) автоматически не применяются в большинстве мест и поддерживаются только там, где разработчик это предусмотрел (например, в печатных формах). +
            • В карточках объектов они неприменимы.
        • +
        • Дата - выберите состав даты: Дата, Время или Дата и Время. +
          • Для дополнительных реквизитов можно задать формат даты, для этого перейдите по ссылке Формат по умолчанию. Можно выбрать формат dd.mm.yyyyили yyyy-MM-dd, а также Локальный формат даты (например, 22 мая 2013), задать Представление пустой даты (в незаполненном поле появится предупреждение, например, Нет даты). +
            • Внимание! Некоторые настройки формата (например, представление пустого числа, длинная дата и некоторые другие) автоматически не применяются в большинстве мест и поддерживаются только там, где разработчик это предусмотрел (например, в печатных формах). +
            • +
            • В карточках объектов они неприменимы.
        • +
        • Составной тип данных - этот тип значения предоставляет возможность окончательно выбрать тип данных уже при вводе информации в справочник. Включите флажок Составной тип данных, затем включите флажки для типов значений, из которых можно будет выбирать. +
          • Например, дату основания фирмы иногда невозможно указать точно. В этом случае можно предоставить возможность выбора типа данных (Дата или Строка) во время ввода. Если точная дата известна, то можно будет выбрать тип Дата и ввести, если неизвестна, то можно будет ввести дату в виде строки типа "Начало 19 в.". +
          • +
          • При этом для всех частей составного типа данных можно произвести их обычные настройки, например, настроить формат даты и определить параметры строки. +
          • +
          • При вводе значений дополнительных реквизитов (сведений) составного типа данных сначала предлагается выбрать тип данных.
        • +
        • Булево - обычно это значения типа Истина и Ложь, Да или Нет. +
          • Для дополнительных реквизитов в Конструкторе форматной строки можно установить другой формат этих значений. Можно написать Представления значения булево Ложь и булево Истина. В этом случае при вводе вместо обычного Да или Нет для выбора будут предложены значения, введенные при настройке дополнительного реквизита. +
            • Внимание! В списках и отчетах отбор для таких дополнительных реквизитов с условием Равно и Не равно не поддерживается.
        • +
        • Дополнительное значение - этот тип данных часто используется, при этом ввод информации сводится к выбору значений из списка. Предлагается программой по умолчанию. Применяется как обычный список значений, так и сгруппированный. С помощью дополнительных реквизитов (сведений) типа Дополнительное значение можно описывать различные свойства объектов программы. +
        • +
        • Дополнительное значение (иерархия) - такая структура списков также широко используется, ее называют иерархией элементов. Элементы в таком списке имеют одинаковые свойства, но могут иметь подчиненные элементы. При этом иерархия может быть довольно сложной. +
        • +
        • Пользователь - в программе предусмотрена возможность использования значений списка Пользователи (и других списков) в качестве дополнительного реквизита (сведения).

        Особенности ввода дополнительных сведений типа Дополнительное значение или Дополнительное значение (иерархия)

        +
        • Кроме обычных полей доступны: +
          • Значения дополнительно характеризуются весовым коэффициентом - включите флажок, для того чтобы использовать эту возможность. Поле затем можно использовать для анализа в отчетах. Логику использования этого поля необходимо продумывать самостоятельно. Поле не является обязательным. +
          • +
          • Заголовок формы значения - введите заголовок окон ввода элементов (окон ввода элементов с иерархией). +
          • +
          • Заголовок формы выбора значения - введите заголовок окон выбора значений (окон выбора значений с иерархией). Применение индивидуальных заголовков для окон ввода дополнительных реквизитов и сведений и выбора значений позволяет сделать процесс ввода более удобным и понятным.
        • +
        • После выбора типа данных и заполнения поля Наименование нажмите кнопку Записать. После этого становится доступным для работы список значений. Для ввода значений нажмите Создать. Введите необходимые поля. +
        • +
        • Если данные не были записаны перед выполнением команды Создать, то программа выдает предупреждение. Для перехода к вводу значений нажмите кнопку Записать.

        Изменение формата дополнительных реквизитов и сведений

        +
        • Любые изменения типов значений и формата дополнительных реквизитов и сведений после сохранения невозможны. Для этого придется сначала удалить созданные дополнительные реквизиты и сведения, затем уже заново создать дополнительные реквизиты и сведения с новыми типами значений.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..8df726e3 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,2782 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ОбработкаПродолженияПриОшибкеЗаписи, ОтказПриЗаписи; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект); + + СоздатьСтруктуруПереданныхПараметров(); + + Если ПереданныеПараметрыФормы.ВыборОбщегоСвойства + Или ПереданныеПараметрыФормы.ВыборВладельцаДополнительныхЗначений + Или ПереданныеПараметрыФормы.КопированиеСВопросом Тогда + ЭтотОбъект.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + РежимПомощника = Истина; + Если ПереданныеПараметрыФормы.КопированиеСВопросом Тогда + Элементы.СтраницыПомощникКарточка.ТекущаяСтраница = Элементы.ВыборДействия; + ЗаполнитьСписокДействийПриДобавленииРеквизита(); + Иначе + ЗаполнитьСтраницуВыбора(); + КонецЕсли; + ОбновитьСоставЭлементовФормы(); + + Если ОбщегоНазначения.ЭтоВебКлиент() Тогда + Элементы.КарточкаРеквизита.Видимость = Ложь; + КонецЕсли; + Иначе + ЗаполнитьКарточкуРеквизитаИлиСведения(); + // Обработчик подсистемы запрета редактирования реквизитов объектов. + ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект); + КонецЕсли; + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПоискИУдалениеДублей") Тогда + Элементы.ФормаПоискИУдалениеДублей.Видимость = Ложь; + КонецЕсли; + + Элементы.ГруппаМногострочность.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение; + Если Не УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(Объект.ТипЗначения) Тогда + Элементы.ГруппаСвойстваИЗависимости.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение; + Элементы.ОстальныеРеквизиты.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.НаборыСвойств.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; + Элементы.ГруппаДополнительнаяИнформация.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение; + Элементы.Закрыть.Видимость = Ложь; + Элементы.ГруппаНаименованиеРеквизита.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + Элементы.ТипЗначенияРеквизита.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + КонецЕсли; + + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + + ТекущийЗаголовок = Объект.Заголовок; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ТипЗнч(ВыбранноеЗначение) = Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения") Тогда + Закрыть(); + + // Открытие формы свойства. + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ключ", ВыбранноеЗначение); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", + ПараметрыФормы, ВладелецФормы); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + Если НЕ ПараметрыЗаписи.Свойство("ПодтвержденоИзменениеНаименования") Тогда + Если ЗначениеЗаполнено(ТекущийЗаголовок) И ТекущийЗаголовок <> Объект.Заголовок Тогда + ТекстВопроса = НСтр("ru = 'Наименование было изменено. Потребуется заново настроить отображение + |дополнительного реквизита в списках и отчетах, а также использование + |в отборах.'"); + ТекстВопроса = СтрЗаменить(ТекстВопроса, Символы.ПС, " "); + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Переименовать'")); + Кнопки.Добавить("ВернутьНаименование", НСтр("ru = 'Отмена'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросОбИзмененииНаименования", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопроса, Кнопки, , "ВернутьНаименование"); + + ОтказПриЗаписи = Истина; + Отказ = Истина; + Возврат; + КонецЕсли; + КонецЕсли; + + Если НЕ ПараметрыЗаписи.Свойство("КогдаНаименованиеУжеИспользуется") Тогда + + // Заполнение наименования по набору свойств + // и проверка есть ли свойство с тем же наименованием. + ТекстВопроса = НаименованиеУжеИспользуется( + Объект.Заголовок, Объект.Ссылка, ТекущийНаборСвойств, Объект.Наименование, Объект.Представления); + + Если ЗначениеЗаполнено(ТекстВопроса) Тогда + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить запись'")); + Кнопки.Добавить("ВернутьсяКВводуНаименования", НСтр("ru = 'Вернуться к вводу наименования'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаНаименованиеУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопроса, Кнопки, , "ВернутьсяКВводуНаименования"); + + ОтказПриЗаписи = Истина; + Отказ = Истина; + Возврат; + КонецЕсли; + КонецЕсли; + + Если НЕ ПараметрыЗаписи.Свойство("КогдаИмяУжеИспользуется") + И ЗначениеЗаполнено(Объект.Имя) Тогда + // Заполнение наименования по набору свойств + // и проверка есть ли свойство с тем же наименованием. + ТекстВопроса = ИмяУжеИспользуется( + Объект.Имя, Объект.Ссылка, Объект.Наименование); + + Если ЗначениеЗаполнено(ТекстВопроса) Тогда + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить'")); + Кнопки.Добавить("ВернутьсяКВводуИмени", НСтр("ru = 'Отмена'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаИмяУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопроса, Кнопки, , "ПродолжитьЗапись"); + + ОтказПриЗаписи = Истина; + Отказ = Истина; + Возврат; + КонецЕсли; + КонецЕсли; + + Если НЕ ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") + И ЗначениеЗаполнено(Объект.ИдентификаторДляФормул) Тогда + // Заполнение идентификатора для формул + // и проверка есть ли свойство с тем же наименованием. + ТекстВопроса = ИдентификаторДляФормулУжеИспользуется( + Объект.ИдентификаторДляФормул, Объект.Ссылка); + + Если ЗначениеЗаполнено(ТекстВопроса) Тогда + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить'")); + Кнопки.Добавить("ВернутьсяКВводуИдентификатора", НСтр("ru = 'Отмена'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопроса, Кнопки, , "ПродолжитьЗапись"); + + ОтказПриЗаписи = Истина; + Отказ = Истина; + Возврат; + + Иначе + ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + КонецЕсли; + + Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда + ОбработкаПродолженияПриОшибкеЗаписи = ПараметрыЗаписи.ОбработкаПродолжения; + ПодключитьОбработчикОжидания("ПослеОшибкиЗаписи", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(Объект.ТипЗначения) Тогда + ТекущийОбъект.ДополнительныеЗначенияИспользуются = Истина; + Иначе + ТекущийОбъект.ДополнительныеЗначенияИспользуются = Ложь; + ТекущийОбъект.ЗаголовокФормыЗначения = ""; + ТекущийОбъект.ЗаголовокФормыВыбораЗначения = ""; + КонецЕсли; + + Если Объект.ЭтоДополнительноеСведение + ИЛИ НЕ ( Объект.ТипЗначения.СодержитТип(Тип("Число" )) + ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Дата" )) + ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Булево")) )Тогда + + ТекущийОбъект.ФорматСвойства = ""; + КонецЕсли; + + ТекущийОбъект.МногострочноеПолеВвода = 0; + + Если НЕ Объект.ЭтоДополнительноеСведение + И Объект.ТипЗначения.Типы().Количество() = 1 + И Объект.ТипЗначения.СодержитТип(Тип("Строка")) Тогда + + Если ПредставлениеРеквизита = "МногострочноеПолеВвода" Тогда + ТекущийОбъект.МногострочноеПолеВвода = МногострочноеПолеВводаЧисло; + ТекущийОбъект.ВыводитьВВидеГиперссылки = Ложь; + КонецЕсли; + КонецЕсли; + + // Формирование имени дополнительного реквизита (сведения). + Если Не ЗначениеЗаполнено(ТекущийОбъект.Имя) + Или ПараметрыЗаписи.Свойство("КогдаИмяУжеИспользуется") Тогда + ТекущийОбъект.Имя = ""; + ЗаголовокОбъекта = ТекущийОбъект.Заголовок; + УправлениеСвойствамиСлужебный.УдалитьНедопустимыеСимволы(ЗаголовокОбъекта); + ЗаголовокОбъектаЧастями = СтрРазделить(ЗаголовокОбъекта, " ", Ложь); + Для Каждого ЧастьЗаголовка Из ЗаголовокОбъектаЧастями Цикл + ТекущийОбъект.Имя = ТекущийОбъект.Имя + ВРег(Лев(ЧастьЗаголовка, 1)) + Сред(ЧастьЗаголовка, 2); + КонецЦикла; + + Если ИмяНачинаетсяСЦифры(ТекущийОбъект.Имя) Тогда + ТекущийОбъект.Имя = "_" + ТекущийОбъект.Имя; + КонецЕсли; + + УИД = Новый УникальныйИдентификатор(); + СтрокаУИД = СтрЗаменить(Строка(УИД), "-", ""); + ТекущийОбъект.Имя = ТекущийОбъект.Имя + "_" + СтрокаУИД; + КонецЕсли; + + // Формирование идентификатора для формул дополнительного реквизита (сведения). + Если Не ЗначениеЗаполнено(ТекущийОбъект.ИдентификаторДляФормул) + Или ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") Тогда + ЗаголовокОбъекта = ЗаголовокДляФормированияИдентификатора(ТекущийОбъект.Заголовок, ТекущийОбъект.Представления); + ТекущийОбъект.ИдентификаторДляФормул = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул( + ЗаголовокОбъекта, ТекущийОбъект.Ссылка); + + ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + Если ПараметрыЗаписи.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда + ТекущийОбъект.ДополнительныеСвойства.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ЗначениеЗаполнено(ТекущийНаборСвойств) Тогда + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ТекущийНаборСвойств); + Блокировка.Заблокировать(); + ЗаблокироватьДанныеДляРедактирования(ТекущийНаборСвойств); + + ОбъектНаборСвойств = ТекущийНаборСвойств.ПолучитьОбъект(); + Если ТекущийОбъект.ЭтоДополнительноеСведение Тогда + ТабличнаяЧасть = ОбъектНаборСвойств.ДополнительныеСведения; + Иначе + ТабличнаяЧасть = ОбъектНаборСвойств.ДополнительныеРеквизиты; + КонецЕсли; + НайденнаяСтрока = ТабличнаяЧасть.Найти(ТекущийОбъект.Ссылка, "Свойство"); + Если НайденнаяСтрока = Неопределено Тогда + НоваяСтрока = ТабличнаяЧасть.Добавить(); + НоваяСтрока.Свойство = ТекущийОбъект.Ссылка; + ОбъектНаборСвойств.Записать(); + ТекущийОбъект.ДополнительныеСвойства.Вставить("ИзмененныйНабор", ТекущийНаборСвойств); + КонецЕсли; + + КонецЕсли; + + Если ПараметрыЗаписи.Свойство("ОчиститьВведенныеВесовыеКоэффициенты") Тогда + ОчиститьВведенныеВесовыеКоэффициенты(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + Если РежимДобавленияРеквизита = "СоздатьКопированием" Тогда + ЗаписатьЗначенияДополнительногоРеквизитаПриКопировании(ТекущийОбъект); + КонецЕсли; + + // Обработчик подсистемы запрета редактирования реквизитов объектов. + ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + + ОбновитьСоставЭлементовФормы(); + + Если ТекущийОбъект.ДополнительныеСвойства.Свойство("ИзмененныйНабор") Тогда + ПараметрыЗаписи.Вставить("ИзмененныйНабор", ТекущийОбъект.ДополнительныеСвойства.ИзмененныйНабор); + КонецЕсли; + + ТекущийЗаголовок = Объект.Заголовок; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Оповестить("Запись_ДополнительныеРеквизитыИСведения", + Новый Структура("Ссылка", Объект.Ссылка), Объект.Ссылка); + + Если ПараметрыЗаписи.Свойство("ИзмененныйНабор") Тогда + + Оповестить("Запись_НаборыДополнительныхРеквизитовИСведений", + Новый Структура("Ссылка", ПараметрыЗаписи.ИзмененныйНабор), ПараметрыЗаписи.ИзмененныйНабор); + КонецЕсли; + + Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда + ОбработкаПродолженияПриОшибкеЗаписи = Неопределено; + ОтключитьОбработчикОжидания("ПослеОшибкиЗаписи"); + ВыполнитьОбработкуОповещения( + Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры, + ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры), + Ложь); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если РежимПомощника Тогда + УстановитьНастройкиПомощника(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "Свойства_УстановленаЗависимостьРеквизита" Тогда + Модифицированность = Истина; + ЗначениеДобавлено = Ложь; + Для Каждого УсловиеЗависимости Из УсловияЗависимостиРеквизитов Цикл + Значение = Неопределено; + Если Параметр.Свойство(УсловиеЗависимости.Представление, Значение) Тогда + ЗначениеВХранилище = ПоместитьВоВременноеХранилище(Значение, УникальныйИдентификатор); + УсловиеЗависимости.Значение = ЗначениеВХранилище; + ЗначениеДобавлено = Истина; + КонецЕсли; + КонецЦикла; + Если Не ЗначениеДобавлено Тогда + Для Каждого ПереданныйПараметр Из Параметр Цикл + ЗначениеВХранилище = ПоместитьВоВременноеХранилище(ПереданныйПараметр.Значение, УникальныйИдентификатор); + УсловияЗависимостиРеквизитов.Добавить(ЗначениеВХранилище, ПереданныйПараметр.Ключ); + КонецЦикла; + КонецЕсли; + + УстановитьЗависимостиДополнительныхРеквизитов(); + КонецЕсли; + + Если ИмяСобытия = "ПослеВводаСтрокНаРазныхЯзыках" + И Параметр = ЭтотОбъект Тогда + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбновитьПредлагаемоеЗначениеИдентификатора(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ЭтоДополнительноеСведениеПриИзменении(Элемент) + + Объект.ЭтоДополнительноеСведение = ЭтоДополнительноеСведение; + + ОбновитьСоставЭлементовФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеСпискаЗначенийКомментарийНажатие(Элемент) + + ОбработчикПродолжения = Новый ОписаниеОповещения("УточнениеСпискаЗначенийКомментарийНажатиеЗавершение", ЭтотОбъект); + ЗаписатьОбъект("ПереходКСпискуЗначений", ОбработчикПродолжения); + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеНаборовКомментарийНажатие(Элемент) + + ОбработчикПродолжения = Новый ОписаниеОповещения("УточнениеНаборовКомментарийНажатиеПродолжение", ЭтотОбъект); + ЗаписатьОбъект("ПереходКСпискуЗначений", ОбработчикПродолжения); + +КонецПроцедуры + +&НаКлиенте +Процедура ТипЗначенияПриИзменении(Элемент) + + ТекстПредупреждения = ""; + ОбновитьСоставЭлементовФормы(ТекстПредупреждения); + + Если ЗначениеЗаполнено(ТекстПредупреждения) Тогда + ПоказатьПредупреждение(, ТекстПредупреждения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДополнительныеЗначенияСВесомПриИзменении(Элемент) + + Если ЗначениеЗаполнено(Объект.Ссылка) + И НЕ Объект.ДополнительныеЗначенияСВесом Тогда + + ТекстВопроса = + НСтр("ru = 'Очистить введенные весовые коэффициенты? + | + |Данные будут записаны.'"); + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ОчиститьИЗаписать", НСтр("ru = 'Очистить и записать'")); + Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеПодтвержденияОчисткиВесовыхКоэффициентов", ЭтотОбъект), + ТекстВопроса, Кнопки, , "ОчиститьИЗаписать"); + Иначе + ТекстВопроса = НСтр("ru = 'Данные будут записаны.'"); + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("Записать", НСтр("ru = 'Записать'")); + Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеПодтвержденияВключенияВесовыхКоэффициентов", ЭтотОбъект), + ТекстВопроса, Кнопки, , "Записать"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура МногострочноеПолеВводаЧислоПриИзменении(Элемент) + + ПредставлениеРеквизита = "МногострочноеПолеВвода"; + +КонецПроцедуры + +&НаКлиенте +Процедура КомментарийОткрытие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнятьОбязательноПриИзменении(Элемент) + Элементы.ЗадатьУсловиеЗаполнения.Доступность = Объект.ЗаполнятьОбязательно; +КонецПроцедуры + +&НаКлиенте +Процедура ЗадатьУсловиеДоступностиНажатие(Элемент) + ОткрытьФормуНастройкиЗависимости("Доступен"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗадатьУсловиеНажатие(Элемент) + ОткрытьФормуНастройкиЗависимости("ЗаполнятьОбязательно"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗадатьУсловиеВидимостиНажатие(Элемент) + ОткрытьФормуНастройкиЗависимости("Виден"); +КонецПроцедуры + +&НаКлиенте +Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ВидРеквизитаПриИзменении(Элемент) + Элементы.ВыводитьВВидеГиперссылки.Доступность = (ПредставлениеРеквизита = "ОднострочноеПолеВвода"); + Элементы.МногострочноеПолеВводаЧисло.Доступность = (ПредставлениеРеквизита = "МногострочноеПолеВвода"); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыНаборыСвойств + +&НаКлиенте +Процедура НаборыСвойствПриАктивизацииСтроки(Элемент) + ПодключитьОбработчикОжидания("ПриИзмененииТекущегоНабора", 0.1, Истина) +КонецПроцедуры + +&НаКлиенте +Процедура НаборыСвойствПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСвойстваВыбор + +&НаКлиенте +Процедура СвойстваВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + КомандаДалее(Неопределено); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыЗначения + +&НаКлиенте +Процедура ЗначенияПриИзменении(Элемент) + + Если Элемент.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + ИмяСобытия = "Запись_ЗначенияСвойствОбъектов"; + Иначе + ИмяСобытия = "Запись_ЗначенияСвойствОбъектовИерархия"; + КонецЕсли; + + Оповестить(ИмяСобытия, + Новый Структура("Ссылка", Элемент.ТекущиеДанные.Ссылка), + Элемент.ТекущиеДанные.Ссылка); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("Копирование", Копирование); + ДополнительныеПараметры.Вставить("Родитель", Родитель); + ДополнительныеПараметры.Вставить("Группа", Группа); + + ОбработчикПродолжения = Новый ОписаниеОповещения("ЗначенияПередНачаломДобавленияЗавершение", ЭтотОбъект); + ЗаписатьОбъект("ПереходКСпискуЗначений", ОбработчикПродолжения, ДополнительныеПараметры); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + Если Элементы.ДополнительныеЗначения.ТолькоПросмотр Тогда + Возврат; + КонецЕсли; + + ОбработчикПродолжения = Новый ОписаниеОповещения("ЗначенияПередНачаломИзмененияЗавершение", ЭтотОбъект); + ЗаписатьОбъект("ПереходКСпискуЗначений", ОбработчикПродолжения); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаголовокПриИзменении(Элемент) + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбновитьПредлагаемоеЗначениеИдентификатора(); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КомандаДалее(Команда) + +#Если ВебКлиент Тогда + Если Не Элементы.КарточкаРеквизита.Видимость Тогда + Элементы.КарточкаРеквизита.Видимость = Истина; + КонецЕсли; +#КонецЕсли + + Если РежимДобавленияРеквизита = "ДобавитьОбщийРеквизитВНабор" Тогда + Результат = Новый Структура; + Результат.Вставить("ОбщееСвойство", ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений); + Если ПереданныеПараметрыФормы.Перетаскивание Тогда + Результат.Вставить("Перетаскивание", Истина); + КонецЕсли; + ОповеститьОВыборе(Результат); + Возврат; + КонецЕсли; + + ОсновнаяСтраница = Элементы.СтраницыПомощникКарточка; + ИндексСтраницы = ОсновнаяСтраница.ПодчиненныеЭлементы.Индекс(ОсновнаяСтраница.ТекущаяСтраница); + Если ИндексСтраницы = 0 + И Элементы.Свойства.ТекущиеДанные = Неопределено Тогда + ТекстПредупреждения = НСтр("ru = 'Элемент не выбран.'"); + ПоказатьПредупреждение(, ТекстПредупреждения); + Возврат; + КонецЕсли; + Если ИндексСтраницы = 2 Тогда + Если Не ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + Если РежимДобавленияРеквизита = "СоздатьКопированием" Тогда + Элементы.СтраницыЗначенияРеквизита.ТекущаяСтраница = Элементы.ДополнительныеЗначения; + КонецЕсли; + + Записать(); + Если ОтказПриЗаписи <> Истина Тогда + Закрыть(); + КонецЕсли; + Возврат; + КонецЕсли; + ТекущаяСтраница = ОсновнаяСтраница.ПодчиненныеЭлементы.Получить(ИндексСтраницы + 1); + УстановитьНастройкиПомощника(ТекущаяСтраница); + + ПриСменеСтраницы("Вперед", ОсновнаяСтраница, ТекущаяСтраница); + +КонецПроцедуры + +&НаКлиенте +Процедура КомандаНазад(Команда) + + ОсновнаяСтраница = Элементы.СтраницыПомощникКарточка; + ИндексСтраницы = ОсновнаяСтраница.ПодчиненныеЭлементы.Индекс(ОсновнаяСтраница.ТекущаяСтраница); + Если ИндексСтраницы = 1 Тогда + РежимДобавленияРеквизита = ""; + КонецЕсли; + ТекущаяСтраница = ОсновнаяСтраница.ПодчиненныеЭлементы.Получить(ИндексСтраницы - 1); + УстановитьНастройкиПомощника(ТекущаяСтраница); + + ПриСменеСтраницы("Назад", ОсновнаяСтраница, ТекущаяСтраница); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму(Команда) + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура РедактироватьФорматЗначения(Команда) + + Конструктор = Новый КонструкторФорматнойСтроки(Объект.ФорматСвойства); + + Конструктор.ДоступныеТипы = Объект.ТипЗначения; + + Конструктор.Показать( + Новый ОписаниеОповещения("РедактироватьФорматЗначенияЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеСпискаЗначенийИзменить(Команда) + + ОбработчикПродолжения = Новый ОписаниеОповещения("УточнениеСпискаЗначенийИзменитьЗавершение", ЭтотОбъект); + ЗаписатьОбъект("ИзменениеВидаРеквизита", ОбработчикПродолжения); + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеНаборовИзменить(Команда) + + ОбработчикПродолжения = Новый ОписаниеОповещения("УточнениеНаборовИзменитьЗавершение", ЭтотОбъект); + ЗаписатьОбъект("ИзменениеВидаРеквизита", ОбработчикПродолжения); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда) + + ЗаблокированныеРеквизиты = ЗапретРедактированияРеквизитовОбъектовКлиент.Реквизиты(ЭтотОбъект); + + Если ЗаблокированныеРеквизиты.Количество() > 0 Тогда + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка); + ПараметрыФормы.Вставить("ЭтоДополнительныйРеквизит", Не Объект.ЭтоДополнительноеСведение); + + Оповещение = Новый ОписаниеОповещения("ПослеВыбораРеквизитовДляРазблокирования", ЭтотОбъект); + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.РазблокированиеРеквизитов", + ПараметрыФормы, ЭтотОбъект,,,, Оповещение); + Иначе + ЗапретРедактированияРеквизитовОбъектовКлиент.ПоказатьПредупреждениеВсеВидимыеРеквизитыРазблокированы(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоискИУдалениеДублей(Команда) + МодульПоискИУдалениеДублейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПоискИУдалениеДублейКлиент"); + ИмяФормыПоискИУдалениеДублей = МодульПоискИУдалениеДублейКлиент.ИмяФормыОбработкиПоискИУдалениеДублей(); + ОткрытьФорму(ИмяФормыПоискИУдалениеДублей); +КонецПроцедуры + +&НаКлиенте +Процедура Изменить(Команда) + + Если Элементы.Свойства.ТекущиеДанные <> Неопределено Тогда + // Открытие формы свойства. + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ключ", Элементы.Свойства.ТекущиеДанные.Свойство); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ВыбранныйНаборСвойств); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", + ПараметрыФормы, Элементы.Свойства,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьНеиспользуемыеРеквизиты(Команда) + НовоеЗначение = Не Элементы.НеиспользуемыеРеквизиты.Пометка; + Элементы.НеиспользуемыеРеквизиты.Пометка = НовоеЗначение; + Если НовоеЗначение Тогда + Элементы.СтраницыНаборыСвойств.ТекущаяСтраница = Элементы.СтраницаОбщиеНаборы; + Иначе + Элементы.СтраницыНаборыСвойств.ТекущаяСтраница = Элементы.СтраницаВсеНаборы; + КонецЕсли; + + ОбновитьСписокСвойствТекущегоНабора(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСнятьПометкуУдаления(Команда) + ОбработчикПродолжения = Новый ОписаниеОповещения("УстановитьСнятьПометкуУдаленияПродолжение", ЭтотОбъект); + ЗаписатьОбъект("ИзменениеПометкиУдаления", ОбработчикПродолжения); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьИдентификаторДляФормул(Команда) + ЗаполнитьИдентификаторДляФормулНаСервере(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбновитьПредлагаемоеЗначениеИдентификатора() + + ПредлагаемыйИдентификатор = ""; + Если Не Элементы.ИдентификаторДляФормул.ТолькоПросмотр Тогда + Представление = ЗаголовокДляФормированияИдентификатора(Объект.Заголовок, Объект.Представления); + ПредлагаемыйИдентификатор = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул( + Представление, Объект.Ссылка); + Если ПредлагаемыйИдентификатор <> Объект.ИдентификаторДляФормул Тогда + Объект.ИдентификаторДляФормул = ПредлагаемыйИдентификатор; + Модифицированность = Истина; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьИдентификаторДляФормулНаСервере() + ЗаголовокДляИдентификатора = ЗаголовокДляФормированияИдентификатора(Объект.Заголовок, Объект.Представления); + Объект.ИдентификаторДляФормул = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул( + ЗаголовокДляИдентификатора, Объект.Ссылка); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ЗаголовокДляФормированияИдентификатора(Знач Заголовок, Знач Представления) + Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Заголовок = НайденныеСтроки[0].Заголовок; + КонецЕсли; + КонецЕсли; + + Возврат Заголовок; +КонецФункции + +&НаСервере +Процедура УстановитьЗависимостиДополнительныхРеквизитов() + + Если УсловияЗависимостиРеквизитов.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ТекущийОбъект = РеквизитФормыВЗначение("Объект"); + + ЗависимостиДополнительныхРеквизитов = ТекущийОбъект.ЗависимостиДополнительныхРеквизитов; + + Для Каждого УсловиеЗависимости Из УсловияЗависимостиРеквизитов Цикл + ОтборСтрок = Новый Структура; + ОтборСтрок.Вставить("ЗависимоеСвойство", УсловиеЗависимости.Представление); + ОтборСтрок.Вставить("НаборСвойств", ТекущийНаборСвойств); + МассивСтрок = ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок); + Для Каждого СтрокаТабличнойЧасти Из МассивСтрок Цикл + ЗависимостиДополнительныхРеквизитов.Удалить(СтрокаТабличнойЧасти); + КонецЦикла; + + ЗначениеИзХранилища = ПолучитьИзВременногоХранилища(УсловиеЗависимости.Значение); + Если ЗначениеИзХранилища = Неопределено Тогда + Продолжить; + КонецЕсли; + Для Каждого НоваяЗависимость Из ЗначениеИзХранилища.Получить() Цикл + ЗаполнитьЗначенияСвойств(ТекущийОбъект.ЗависимостиДополнительныхРеквизитов.Добавить(), НоваяЗависимость); + КонецЦикла; + КонецЦикла; + + ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + + УстановитьЗаголовкиГиперссылок(); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСтраницуВыбора() + + Если ПереданныеПараметрыФормы.ЭтоДополнительноеСведение <> Неопределено Тогда + ЭтоДополнительноеСведение = ПереданныеПараметрыФормы.ЭтоДополнительноеСведение; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Наборы.Ссылка КАК Ссылка + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы + |ГДЕ + | Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)"; + + Наборы = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + + ДоступныеНаборы = Новый Массив; + Для Каждого Ссылка Из Наборы Цикл + ВидыСвойствНабора = УправлениеСвойствамиСлужебный.ВидыСвойствНабора(Ссылка, Ложь); + + Если ЭтоДополнительноеСведение = 1 + И ВидыСвойствНабора.ДополнительныеСведения + ИЛИ ЭтоДополнительноеСведение = 0 + И ВидыСвойствНабора.ДополнительныеРеквизиты Тогда + + ДоступныеНаборы.Добавить(Ссылка); + КонецЕсли; + КонецЦикла; + + РодительТекущегоНабора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ПереданныеПараметрыФормы.ТекущийНаборСвойств, "Родитель"); + ИсключаемыеНаборы = Новый Массив; + ИсключаемыеНаборы.Добавить(ПереданныеПараметрыФормы.ТекущийНаборСвойств); + Если ЗначениеЗаполнено(РодительТекущегоНабора) Тогда + ПредопределенныеНаборы = УправлениеСвойствамиПовтИсп.ПредопределенныеНаборыСвойств(); + СвойстваНабора = ПредопределенныеНаборы.Получить(РодительТекущегоНабора); // см. Справочники.НаборыДополнительныхРеквизитовИСведений.СвойстваНабора + Если СвойстваНабора = Неопределено Тогда + ИмяПредопределенныхДанных = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительТекущегоНабора, "ИмяПредопределенныхДанных"); + Иначе + ИмяПредопределенныхДанных = СвойстваНабора.Имя; + КонецЕсли; + ПозицияЗаменяемогоСимвола = СтрНайти(ИмяПредопределенныхДанных, "_"); + ПолноеИмяОбъекта = Лев(ИмяПредопределенныхДанных, ПозицияЗаменяемогоСимвола - 1) + + "." + + Сред(ИмяПредопределенныхДанных, ПозицияЗаменяемогоСимвола + 1); + Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъекта); + + Если СтрНачинаетсяС(ПолноеИмяОбъекта, "Документ") Тогда + НовыйОбъект = Менеджер.СоздатьДокумент(); + ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "БизнесПроцесс") Тогда + НовыйОбъект = Менеджер.СоздатьБизнесПроцесс(); + ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "Задача") Тогда + НовыйОбъект = Менеджер.СоздатьЗадачу(); + ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "ПланСчетов") Тогда + НовыйОбъект = Менеджер.СоздатьСчет(); + ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "ПланВидовРасчета") Тогда + НовыйОбъект = Менеджер.СоздатьВидРасчета(); + ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "ПланОбмена") Тогда + НовыйОбъект = Менеджер.СоздатьУзел(); + Иначе + НовыйОбъект = Менеджер.СоздатьЭлемент(); + КонецЕсли; + НаборыОбъекта = УправлениеСвойствамиСлужебный.ПолучитьНаборыСвойствОбъекта(НовыйОбъект); + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("ОбщийНабор", Истина); + НайденныеСтроки = НаборыОбъекта.НайтиСтроки(ПараметрыОтбора); + Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл + Если ПереданныеПараметрыФормы.ТекущийНаборСвойств = НайденнаяСтрока.Набор Тогда + Продолжить; + КонецЕсли; + ИсключаемыеНаборы.Добавить(НайденнаяСтрока.Набор); + КонецЦикла; + КонецЕсли; + + Если ЭтоДополнительноеСведение = 1 Тогда + Элементы.НеиспользуемыеРеквизиты.Заголовок = НСтр("ru = 'Неиспользуемые дополнительные сведения'"); + Иначе + Элементы.НеиспользуемыеРеквизиты.Заголовок = НСтр("ru = 'Неиспользуемые дополнительные реквизиты'"); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "Наборы", ДоступныеНаборы, Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "ИсключаемыеНаборы", ИсключаемыеНаборы, Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "ЭтоДополнительноеСведение", (ЭтоДополнительноеСведение = 1), Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + ОбщиеНаборыСвойств, "ЭтоДополнительноеСведение", (ЭтоДополнительноеСведение = 1), Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + ОбщиеНаборыСвойств, "ОбщиеДополнительныеСведения", НСтр("ru = 'Неиспользуемые дополнительные сведения'"), Истина); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + ОбщиеНаборыСвойств, "ОбщиеДополнительныеРеквизиты", НСтр("ru = 'Неиспользуемые дополнительные реквизиты'"), Истина); + + УстановитьУсловноеОформлениеСписка(ДоступныеНаборы); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформлениеСписка(ДоступныеНаборыСписок) + + ЭлементУсловногоОформления = НаборыСвойств.УсловноеОформление.Элементы.Добавить(); + + ЭлементВидимость = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Видимость"); + ЭлементВидимость.Значение = Ложь; + ЭлементВидимость.Использование = Истина; + + ГруппаЭлементовОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаЭлементовОтбораДанных.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + ГруппаЭлементовОтбораДанных.Использование = Истина; + + ЭлементОтбораДанных = ГруппаЭлементовОтбораДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке; + ЭлементОтбораДанных.ПравоеЗначение = ДоступныеНаборыСписок; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОтбораДанных = ГруппаЭлементовОтбораДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке; + ЭлементОтбораДанных.ПравоеЗначение = ДоступныеНаборыСписок; + ЭлементОтбораДанных.Использование = Истина; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьЗначенияДополнительныхРеквизитов(ВладелецЗначений) + + ДеревоЗначений = РеквизитФормыВЗначение("ЗначенияДополнительныхРеквизитов"); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ЗначенияСвойствОбъектов.Ссылка КАК Ссылка, + | ЗначенияСвойствОбъектов.Владелец КАК Владелец, + | 0 КАК КодКартинки, + | ЗначенияСвойствОбъектов.Вес, + | ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектов.Ссылка) КАК Наименование + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов + |ГДЕ + | ЗначенияСвойствОбъектов.ПометкаУдаления = ЛОЖЬ + | И ЗначенияСвойствОбъектов.Владелец = &Владелец + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ЗначенияСвойствОбъектовИерархия.Ссылка, + | ЗначенияСвойствОбъектовИерархия.Владелец, + | 0, + | ЗначенияСвойствОбъектовИерархия.Вес, + | ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектовИерархия.Наименование) КАК Наименование + |ИЗ + | Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия + |ГДЕ + | ЗначенияСвойствОбъектовИерархия.ПометкаУдаления = ЛОЖЬ + | И ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец + | + |УПОРЯДОЧИТЬ ПО + | Ссылка ИЕРАРХИЯ"; + Запрос.УстановитьПараметр("Владелец", ВладелецЗначений); + Результат = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); + + ДеревоЗначений = Результат.Скопировать(); + ЗначениеВРеквизитФормы(ДеревоЗначений, "ЗначенияДополнительныхРеквизитов"); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьКарточкуРеквизитаИлиСведения() + + Если ЗначениеЗаполнено(ПереданныеПараметрыФормы.ЗначениеКопирования) Тогда + РежимДобавленияРеквизита = "СоздатьКопированием"; + КонецЕсли; + + СозданиеРеквизитаКопированием = (РежимДобавленияРеквизита = "СоздатьКопированием"); + + ТекущийНаборСвойств = ПереданныеПараметрыФормы.ТекущийНаборСвойств; + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Элементы.ЭтоДополнительноеСведение.Доступность = Ложь; + ПоказатьУточнениеНабора = ПереданныеПараметрыФормы.ПоказатьУточнениеНабора; + Иначе + Объект.Доступен = Истина; + Объект.Виден = Истина; + + Объект.ЗависимостиДополнительныхРеквизитов.Очистить(); + Если ЗначениеЗаполнено(ТекущийНаборСвойств) Тогда + Объект.НаборСвойств = ТекущийНаборСвойств; + КонецЕсли; + + Если СозданиеРеквизитаКопированием Тогда + Объект.ВладелецДополнительныхЗначений = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка(); + ИначеЕсли ЗначениеЗаполнено(ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений) Тогда + Объект.ВладелецДополнительныхЗначений = ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений; + КонецЕсли; + + Если ПереданныеПараметрыФормы.ЭтоДополнительноеСведение <> Неопределено Тогда + Объект.ЭтоДополнительноеСведение = ПереданныеПараметрыФормы.ЭтоДополнительноеСведение; + + ИначеЕсли НЕ ЗначениеЗаполнено(ПереданныеПараметрыФормы.ЗначениеКопирования) Тогда + Элементы.ЭтоДополнительноеСведение.Видимость = Истина; + КонецЕсли; + КонецЕсли; + + Если Объект.Предопределенный И НЕ ЗначениеЗаполнено(Объект.Заголовок) Тогда + Объект.Заголовок = Объект.Наименование; + КонецЕсли; + + ЭтоДополнительноеСведение = ?(Объект.ЭтоДополнительноеСведение, 1, 0); + + Если СозданиеРеквизитаКопированием Тогда + // Для случаев, когда копирование выполняется из карточки реквизита по команде "Скопировать". + Если Не ЗначениеЗаполнено(ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений) Тогда + ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений = ПереданныеПараметрыФормы.ЗначениеКопирования; + КонецЕсли; + + СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений, "ТипЗначения, ДополнительныеЗначенияСВесом, ФорматСвойства"); + + Объект.ТипЗначения = СвойстваВладельца.ТипЗначения; + Объект.ФорматСвойства = СвойстваВладельца.ФорматСвойства; + + ЗначенияВладельцаСВесом = СвойстваВладельца.ДополнительныеЗначенияСВесом; + Объект.ДополнительныеЗначенияСВесом = ЗначенияВладельцаСВесом; + Элементы.ЗначенияДополнительногоРеквизита.Шапка = ЗначенияВладельцаСВесом; + Элементы.ЗначенияДополнительногоРеквизитаВес.Видимость = ЗначенияВладельцаСВесом; + Элементы.СтраницыЗначенияРеквизита.ТекущаяСтраница = Элементы.СтраницаДеревоЗначений; + + ЗаполнитьЗначенияДополнительныхРеквизитов(ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений); + КонецЕсли; + + ОбновитьСоставЭлементовФормы(); + + Если Объект.МногострочноеПолеВвода > 0 Тогда + ПредставлениеРеквизита = "МногострочноеПолеВвода"; + МногострочноеПолеВводаЧисло = Объект.МногострочноеПолеВвода; + Иначе + ПредставлениеРеквизита = "ОднострочноеПолеВвода"; + КонецЕсли; + + Элементы.ВыводитьВВидеГиперссылки.Доступность = (ПредставлениеРеквизита = "ОднострочноеПолеВвода"); + Элементы.МногострочноеПолеВводаЧисло.Доступность = (ПредставлениеРеквизита = "МногострочноеПолеВвода"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораРеквизитовДляРазблокирования(РазблокируемыеРеквизиты, Контекст) Экспорт + + Если ТипЗнч(РазблокируемыеРеквизиты) <> Тип("Массив") Тогда + Возврат; + КонецЕсли; + + ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(ЭтотОбъект, + РазблокируемыеРеквизиты); + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОтветаНаВопросКогдаНаименованиеУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ <> "ПродолжитьЗапись" Тогда + ТекущийЭлемент = Элементы.Заголовок; + Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда + ВыполнитьОбработкуОповещения( + Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры, + ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры), + Истина); + КонецЕсли; + Иначе + ПараметрыЗаписи.Вставить("КогдаНаименованиеУжеИспользуется"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОтветаНаВопросОбИзмененииНаименования(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ <> "ПродолжитьЗапись" Тогда + Объект.Заголовок = ТекущийЗаголовок; + Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда + ВыполнитьОбработкуОповещения( + Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры, + ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры), + Истина); + КонецЕсли; + Иначе + ПараметрыЗаписи.Вставить("ПодтвержденоИзменениеНаименования"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОтветаНаВопросКогдаИмяУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ <> "ПродолжитьЗапись" Тогда + ТекущийЭлемент = Элементы.Заголовок; + Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда + ВыполнитьОбработкуОповещения( + Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры, + ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры), + Истина); + КонецЕсли; + Иначе + ПараметрыЗаписи.Вставить("КогдаИмяУжеИспользуется"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ <> "ПродолжитьЗапись" Тогда + Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда + ВыполнитьОбработкуОповещения( + Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры, + ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры), + Истина); + КонецЕсли; + Иначе + ПараметрыЗаписи.Вставить("КогдаИдентификаторДляФормулУжеИспользуется"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеПодтвержденияОчисткиВесовыхКоэффициентов(Ответ, Контекст) Экспорт + + Если Ответ <> "ОчиститьИЗаписать" Тогда + Объект.ДополнительныеЗначенияСВесом = НЕ Объект.ДополнительныеЗначенияСВесом; + Возврат; + КонецЕсли; + + ПараметрыЗаписи = Новый Структура; + ПараметрыЗаписи.Вставить("ОчиститьВведенныеВесовыеКоэффициенты"); + + ОбработчикПродолжения = Новый ОписаниеОповещения("ДополнительныеЗначенияСВесомПриИзмененииЗавершение", ЭтотОбъект); + ЗаписатьОбъект("ИзменениеИспользованияВеса", ОбработчикПродолжения,, ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеПодтвержденияВключенияВесовыхКоэффициентов(Ответ, Контекст) Экспорт + + Если Ответ <> "Записать" Тогда + Объект.ДополнительныеЗначенияСВесом = НЕ Объект.ДополнительныеЗначенияСВесом; + Возврат; + КонецЕсли; + + ОбработчикПродолжения = Новый ОписаниеОповещения("ДополнительныеЗначенияСВесомПриИзмененииЗавершение", ЭтотОбъект); + ЗаписатьОбъект("ИзменениеИспользованияВеса", ОбработчикПродолжения); + +КонецПроцедуры + +&НаКлиенте +Процедура ДополнительныеЗначенияСВесомПриИзмененииЗавершение(Отказ, Контекст) Экспорт + + Если Отказ Тогда + Объект.ДополнительныеЗначенияСВесом = НЕ Объект.ДополнительныеЗначенияСВесом; + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Оповестить( + "Изменение_ЗначениеХарактеризуетсяВесовымКоэффициентом", + Объект.ДополнительныеЗначенияСВесом, + Объект.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеСпискаЗначенийКомментарийНажатиеЗавершение(Отказ, Контекст) Экспорт + + Если Отказ Тогда + Возврат; + КонецЕсли; + + Закрыть(); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПоказатьУточнениеНабора", Истина); + ПараметрыФормы.Вставить("Ключ", Объект.ВладелецДополнительныхЗначений); + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", + ПараметрыФормы, ВладелецФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеНаборовКомментарийНажатиеПродолжение(Отказ, Контекст) Экспорт + + Если Отказ Тогда + Возврат; + КонецЕсли; + + Если СписокНаборов.Количество() > 1 Тогда + ПоказатьВыборИзСписка( + Новый ОписаниеОповещения("УточнениеНаборовКомментарийНажатиеЗавершение", ЭтотОбъект), + СписокНаборов, Элементы.УточнениеНаборовКомментарий); + Иначе + УточнениеНаборовКомментарийНажатиеЗавершение(Неопределено, СписокНаборов[0].Значение); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеНаборовКомментарийНажатиеЗавершение(ВыбранныйЭлемент, ВыбранныйНабор) Экспорт + + Если ВыбранныйЭлемент <> Неопределено Тогда + ВыбранныйНабор = ВыбранныйЭлемент.Значение; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ТекущийНаборСвойств) Тогда + Возврат; + КонецЕсли; + + Если ВыбранныйНабор <> Неопределено Тогда + ЗначениеВыбора = Новый Структура; + ЗначениеВыбора.Вставить("Набор", ВыбранныйНабор); + ЗначениеВыбора.Вставить("Свойство", Объект.Ссылка); + ЗначениеВыбора.Вставить("ЭтоДополнительноеСведение", Объект.ЭтоДополнительноеСведение); + ОповеститьОВыборе(ЗначениеВыбора); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияПередНачаломДобавленияЗавершение(Отказ, ПараметрыОбработки) Экспорт + + Если Отказ Тогда + Возврат; + КонецЕсли; + + Если РежимДобавленияРеквизита = "СоздатьКопированием" Тогда + Элементы.СтраницыЗначенияРеквизита.ТекущаяСтраница = Элементы.ДополнительныеЗначения; + КонецЕсли; + + Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектов"; + Иначе + ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектовИерархия"; + КонецЕсли; + + ЗначенияЗаполнения = Новый Структура; + ЗначенияЗаполнения.Вставить("Родитель", ПараметрыОбработки.Родитель); + ЗначенияЗаполнения.Вставить("Владелец", Объект.Ссылка); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СкрытьВладельца", Истина); + ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения); + + Если ПараметрыОбработки.Группа Тогда + ПараметрыФормы.Вставить("ЭтоГруппа", Истина); + + ОткрытьФорму(ИмяТаблицыЗначений + ".ФормаГруппы", ПараметрыФормы, Элементы.Значения); + Иначе + ПараметрыФормы.Вставить("ПоказатьВес", Объект.ДополнительныеЗначенияСВесом); + + Если ПараметрыОбработки.Копирование Тогда + ПараметрыФормы.Вставить("ЗначениеКопирования", Элементы.Значения.ТекущаяСтрока); + КонецЕсли; + + ОткрытьФорму(ИмяТаблицыЗначений + ".ФормаОбъекта", ПараметрыФормы, Элементы.Значения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗначенияПередНачаломИзмененияЗавершение(Отказ, Контекст) Экспорт + + Если Отказ Тогда + Возврат; + КонецЕсли; + + Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектов"; + Иначе + ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектовИерархия"; + КонецЕсли; + + Если Элементы.Значения.ТекущаяСтрока <> Неопределено Тогда + // Открытие формы значения или группы значений. + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СкрытьВладельца", Истина); + ПараметрыФормы.Вставить("ПоказатьВес", Объект.ДополнительныеЗначенияСВесом); + ПараметрыФормы.Вставить("Ключ", Элементы.Значения.ТекущаяСтрока); + + ОткрытьФорму(ИмяТаблицыЗначений + ".ФормаОбъекта", ПараметрыФормы, Элементы.Значения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеСпискаЗначенийИзменитьЗавершение(Отказ, Контекст) Экспорт + + Если Отказ Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств); + ПараметрыФормы.Вставить("Свойство", Объект.Ссылка); + ПараметрыФормы.Вставить("ВладелецДополнительныхЗначений", Объект.ВладелецДополнительныхЗначений); + ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", Объект.ЭтоДополнительноеСведение); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ИзменениеНастройкиСвойства", + ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура УточнениеНаборовИзменитьЗавершение(Отказ, Контекст) Экспорт + + Если Отказ Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств); + ПараметрыФормы.Вставить("Свойство", Объект.Ссылка); + ПараметрыФормы.Вставить("ВладелецДополнительныхЗначений", Объект.ВладелецДополнительныхЗначений); + ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", Объект.ЭтоДополнительноеСведение); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ИзменениеНастройкиСвойства", + ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьОбъект(ВариантТекстаВопроса, ОбработчикПродолжения, ДополнительныеПараметры = Неопределено, ПараметрыЗаписи = Неопределено) + + Если ПараметрыЗаписи = Неопределено Тогда + ПараметрыЗаписи = Новый Структура; + КонецЕсли; + + Если ВариантТекстаВопроса = "ИзменениеПометкиУдаления" Тогда + Если Модифицированность Тогда + Если Объект.ПометкаУдаления Тогда + ТекстВопроса = НСтр("ru = 'Для снятия пометки удаления необходимо записать внесенные изменения. Записать данные?'"); + Иначе + ТекстВопроса = НСтр("ru = 'Для установки пометки удаления необходимо записать внесенные изменения. Записать данные?'"); + КонецЕсли; + Иначе + ТекстВопроса = НСтр("ru = 'Пометить ""%1"" на удаление?'"); + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, Объект.Наименование); + КонецЕсли; + + ПоказатьВопрос( + Новый ОписаниеОповещения( + ОбработчикПродолжения.ИмяПроцедуры, ОбработчикПродолжения.Модуль, ПараметрыЗаписи), + ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.Ссылка) И НЕ Модифицированность Тогда + ВыполнитьОбработкуОповещения(Новый ОписаниеОповещения( + ОбработчикПродолжения.ИмяПроцедуры, ОбработчикПродолжения.Модуль, ДополнительныеПараметры), Ложь); + Возврат; + КонецЕсли; + + ОбработкаПродолжения = Новый Структура; + ОбработкаПродолжения.Вставить("ИмяПроцедуры", ОбработчикПродолжения.ИмяПроцедуры); + ОбработкаПродолжения.Вставить("Параметры", ДополнительныеПараметры); + ПараметрыЗаписи.Вставить("ОбработкаПродолжения", ОбработкаПродолжения); + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + ЗаписатьОбъектПродолжение("Записать", ПараметрыЗаписи); + Возврат; + КонецЕсли; + + Если ВариантТекстаВопроса = "ПереходКСпискуЗначений" Тогда + ТекстВопроса = НСтр("ru = 'Перед переходом к списку значений данные будут записаны.'"); + Иначе + ТекстВопроса = НСтр("ru = 'Данные будут записаны.'") + КонецЕсли; + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("Записать", НСтр("ru = 'Записать'")); + Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения( + "ЗаписатьОбъектПродолжение", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопроса, Кнопки, , "Записать"); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСнятьПометкуУдаленияПродолжение(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + Объект.ПометкаУдаления = Не Объект.ПометкаУдаления; + КонецЕсли; + ЗаписатьОбъектПродолжение(Ответ, ПараметрыЗаписи); + +КонецПроцедуры + + +&НаКлиенте +Процедура ЗаписатьОбъектПродолжение(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ = "Записать" + Или Ответ = КодВозвратаДиалога.Да Тогда + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОшибкиЗаписи() + + Если ОбработкаПродолженияПриОшибкеЗаписи <> Неопределено Тогда + ВыполнитьОбработкуОповещения( + Новый ОписаниеОповещения(ОбработкаПродолженияПриОшибкеЗаписи.ИмяПроцедуры, + ЭтотОбъект, ОбработкаПродолженияПриОшибкеЗаписи.Параметры), + Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РедактироватьФорматЗначенияЗавершение(Текст, Контекст) Экспорт + + Если Текст <> Неопределено Тогда + Объект.ФорматСвойства = Текст; + УстановитьЗаголовокКнопкиФормата(ЭтотОбъект); + + ТекстПредупреждения = НСтр("ru = 'Следующие настройки формата автоматически не применяются в большинстве мест:'"); + Массив = СтрРазделить(Текст, ";", Ложь); + + Для каждого Подстрока Из Массив Цикл + Если СтрНайти(Подстрока, "ДП=") > 0 ИЛИ СтрНайти(Подстрока, "DE=") > 0 Тогда + ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + + " - " + НСтр("ru = 'представление пустой даты'"); + Продолжить; + КонецЕсли; + Если СтрНайти(Подстрока, "ЧН=") > 0 ИЛИ СтрНайти(Подстрока, "NZ=") > 0 Тогда + ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + + " - " + НСтр("ru = 'представление пустого числа'"); + Продолжить; + КонецЕсли; + Если СтрНайти(Подстрока, "ДФ=") > 0 ИЛИ СтрНайти(Подстрока, "DF=") > 0 Тогда + Если СтрНайти(Подстрока, "ддд") > 0 ИЛИ СтрНайти(Подстрока, "ddd") > 0 Тогда + ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + + " - " + НСтр("ru = 'кратное название дня недели'"); + КонецЕсли; + Если СтрНайти(Подстрока, "дддд") > 0 ИЛИ СтрНайти(Подстрока, "dddd") > 0 Тогда + ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + + " - " + НСтр("ru = 'полное название дня недели'"); + КонецЕсли; + Если СтрНайти(Подстрока, "МММ") > 0 ИЛИ СтрНайти(Подстрока, "MMM") > 0 Тогда + ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + + " - " + НСтр("ru = 'кратное название месяца'"); + КонецЕсли; + Если СтрНайти(Подстрока, "ММММ") > 0 ИЛИ СтрНайти(Подстрока, "MMMM") > 0 Тогда + ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + + " - " + НСтр("ru = 'полное название месяца'"); + КонецЕсли; + КонецЕсли; + Если СтрНайти(Подстрока, "ДЛФ=") > 0 ИЛИ СтрНайти(Подстрока, "DLF=") > 0 Тогда + Если СтрНайти(Подстрока, "ДД") > 0 ИЛИ СтрНайти(Подстрока, "DD") > 0 Тогда + ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + + " - " + НСтр("ru = 'длинная дата (месяц прописью)'"); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Если СтрЧислоСтрок(ТекстПредупреждения) > 1 Тогда + ПоказатьПредупреждение(, ТекстПредупреждения); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьНастройкиПомощника(ТекущаяСтраница = Неопределено) + + Если ТекущаяСтраница = Неопределено Тогда + ТекущаяСтраница = Элементы.СтраницыПомощникКарточка.ТекущаяСтраница; + КонецЕсли; + + ШаблонЗаголовкаСписка = НСтр("ru = 'Выберите %1 для включения в набор ""%2""'"); + ШаблонЗаголовкаПереключателя = НСтр("ru = 'Выберите вариант добавления дополнительного %1 ""%2"" в набор ""%3""'"); + + Если ТекущаяСтраница = Элементы.ВыборРеквизита Тогда + + Если ПереданныеПараметрыФормы.ЭтоДополнительноеСведение Тогда + Заголовок = НСтр("ru = 'Добавление дополнительного сведения'"); + Иначе + Заголовок = НСтр("ru = 'Добавление дополнительного реквизита'"); + КонецЕсли; + + Элементы.КоманднаяПанельЛево.Доступность = Ложь; + Элементы.КомандаДалее.Заголовок = НСтр("ru = 'Далее >'"); + + Элементы.ДекорацияЗаголовок.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонЗаголовкаСписка, + ?(ПереданныеПараметрыФормы.ЭтоДополнительноеСведение, НСтр("ru = 'дополнительное сведение'"), НСтр("ru = 'дополнительный реквизит'")), + Строка(ПереданныеПараметрыФормы.ТекущийНаборСвойств)); + + ИначеЕсли ТекущаяСтраница = Элементы.ВыборДействия Тогда + + Если ПереданныеПараметрыФормы.КопированиеСВопросом Тогда + Элементы.КоманднаяПанельЛево.Доступность = Ложь; + ВладелецДополнительныхЗначений = ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений; + Иначе + Элементы.КоманднаяПанельЛево.Доступность = Истина; + ВыбранныйЭлемент = Элементы.Свойства.ТекущиеДанные; + Если ВыбранныйЭлемент = Неопределено Тогда + ВладелецДополнительныхЗначений = ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений; + Иначе + ВладелецДополнительныхЗначений = Элементы.Свойства.ТекущиеДанные.Свойство; + КонецЕсли; + КонецЕсли; + Элементы.КомандаДалее.Заголовок = НСтр("ru = 'Далее >'"); + + Элементы.РежимДобавленияРеквизита.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонЗаголовкаПереключателя, + ?(ПереданныеПараметрыФормы.ЭтоДополнительноеСведение, НСтр("ru = 'сведения'"), НСтр("ru = 'реквизита'")), + Строка(ВладелецДополнительныхЗначений), + Строка(ПереданныеПараметрыФормы.ТекущийНаборСвойств)); + + Если ПереданныеПараметрыФормы.ЭтоДополнительноеСведение Тогда + Заголовок = НСтр("ru = 'Добавление дополнительного сведения'"); + Иначе + Заголовок = НСтр("ru = 'Добавление дополнительного реквизита'"); + КонецЕсли; + + Иначе + Элементы.КомандаДалее.Заголовок = НСтр("ru = 'Готово'"); + Элементы.КоманднаяПанельЛево.Доступность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСоставЭлементовФормы(ТекстПредупреждения = "") + + Если РежимПомощника Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Нет; + Элементы.КомандаДалее.КнопкаПоУмолчанию = Истина; + Иначе + Элементы.КоманднаяПанельПомощника.Видимость = Ложь; + Элементы.СтраницыПомощникКарточка.ТекущаяСтраница = Элементы.КарточкаРеквизита; + КонецЕсли; + + УстановитьЗаголовокФормы(); + + Если НЕ Объект.ТипЗначения.СодержитТип(Тип("Число")) + И НЕ Объект.ТипЗначения.СодержитТип(Тип("Дата")) + И НЕ Объект.ТипЗначения.СодержитТип(Тип("Булево")) Тогда + + Объект.ФорматСвойства = ""; + КонецЕсли; + + УстановитьЗаголовокКнопкиФормата(ЭтотОбъект); + + Если Объект.ЭтоДополнительноеСведение + ИЛИ НЕ ( Объект.ТипЗначения.СодержитТип(Тип("Число" )) + ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Дата" )) + ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Булево")) )Тогда + Элементы.РедактироватьФорматЗначения.Видимость = Ложь; + Иначе + Элементы.РедактироватьФорматЗначения.Видимость = Истина; + КонецЕсли; + + Если Объект.ЭтоДополнительноеСведение + И Объект.ТипЗначения.СодержитТип(Тип("Строка")) + И Объект.ТипЗначения.КвалификаторыСтроки.Длина = 0 Тогда + Элементы.ГруппаПояснениеТипаЗначения.Видимость = Истина; + Иначе + Элементы.ГруппаПояснениеТипаЗначения.Видимость = Ложь; + КонецЕсли; + + Если НЕ Объект.ЭтоДополнительноеСведение Тогда + Элементы.ГруппаМногострочность.Видимость = Истина; + ПереключитьНастройкиВыводаРеквизита(Объект.ТипЗначения); + Иначе + Элементы.ГруппаМногострочность.Видимость = Ложь; + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + СтарыйТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "ТипЗначения"); + Иначе + СтарыйТипЗначения = Новый ОписаниеТипов; + КонецЕсли; + + Если Объект.ЭтоДополнительноеСведение Тогда + Объект.ЗаполнятьОбязательно = Ложь; + Элементы.ГруппаСвойстваИЗависимости.Видимость = Ложь; + Иначе + РеквизитБулево = (Объект.ТипЗначения = Новый ОписаниеТипов("Булево")); + Элементы.ЗаполнятьОбязательно.Видимость = Не РеквизитБулево; + Элементы.ЗадатьУсловиеЗаполнения.Видимость = Не РеквизитБулево; + Элементы.ГруппаСвойстваИЗависимости.Видимость = Истина; + + Элементы.ЗадатьУсловиеЗаполнения.Доступность = Объект.ЗаполнятьОбязательно; + Элементы.ЗадатьУсловиеДоступности.Доступность = Истина; + Элементы.ЗадатьУсловиеВидимости.Доступность = Истина; + + УстановитьЗаголовкиГиперссылок(); + КонецЕсли; + + Если ЗначениеЗаполнено(Объект.ВладелецДополнительныхЗначений) Тогда + + СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Объект.ВладелецДополнительныхЗначений, "ТипЗначения, ДополнительныеЗначенияСВесом"); + + Если СвойстваВладельца.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда + Объект.ТипЗначения = Новый ОписаниеТипов( + Объект.ТипЗначения, + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия", + "СправочникСсылка.ЗначенияСвойствОбъектов"); + Иначе + Объект.ТипЗначения = Новый ОписаниеТипов( + Объект.ТипЗначения, + "СправочникСсылка.ЗначенияСвойствОбъектов", + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия"); + КонецЕсли; + + ВладелецЗначений = Объект.ВладелецДополнительныхЗначений; + ЗначенияСВесом = СвойстваВладельца.ДополнительныеЗначенияСВесом; + Иначе + // Проверка возможности удаления типа дополнительных значений. + Если УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(СтарыйТипЗначения) Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Владелец", Объект.Ссылка); + + Если СтарыйТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия + |ГДЕ + | ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец"; + Иначе + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов + |ГДЕ + | ЗначенияСвойствОбъектов.Владелец = &Владелец"; + КонецЕсли; + + Если НЕ Запрос.Выполнить().Пустой() Тогда + + Если СтарыйТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) + И НЕ Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда + + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимо удалять тип ""%1"", + |так как дополнительные значения уже введены. + |Сначала нужно удалить введенные дополнительные значения. + | + |Удаление отменено.'"), + Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) ); + + Объект.ТипЗначения = Новый ОписаниеТипов( + Объект.ТипЗначения, + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия", + "СправочникСсылка.ЗначенияСвойствОбъектов"); + + ИначеЕсли СтарыйТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) + И НЕ Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимо удалять тип ""%1"", + |так как дополнительные значения уже введены. + |Сначала нужно удалить введенные дополнительные значения. + | + |Удаление отменено.'"), + Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) ); + + Объект.ТипЗначения = Новый ОписаниеТипов( + Объект.ТипЗначения, + "СправочникСсылка.ЗначенияСвойствОбъектов", + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия"); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + // Проверка, что установлено не более одного типа дополнительных значений. + Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) + И Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + + Если НЕ СтарыйТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда + + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимо одновременно использовать типы значения + |""%1"" и + |""%2"". + | + |Второй тип удален.'"), + Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")), + Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) ); + + // Удаление второго типа. + Объект.ТипЗначения = Новый ОписаниеТипов( + Объект.ТипЗначения, + , + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия"); + Иначе + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимо одновременно использовать типы значения + |""%1"" и + |""%2"". + | + |Первый тип удален.'"), + Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")), + Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) ); + + // Удаление первого типа. + Объект.ТипЗначения = Новый ОписаниеТипов( + Объект.ТипЗначения, + , + "СправочникСсылка.ЗначенияСвойствОбъектов"); + КонецЕсли; + КонецЕсли; + + ВладелецЗначений = Объект.Ссылка; + ЗначенияСВесом = Объект.ДополнительныеЗначенияСВесом; + КонецЕсли; + + Если УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(Объект.ТипЗначения) Тогда + Элементы.ГруппаЗаголовкиФормЗначений.Видимость = Истина; + Элементы.ДополнительныеЗначенияСВесом.Видимость = Истина; + Элементы.СтраницаЗначения.Видимость = Истина; + Элементы.Страницы.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСверху; + Иначе + Элементы.ГруппаЗаголовкиФормЗначений.Видимость = Ложь; + Элементы.ДополнительныеЗначенияСВесом.Видимость = Ложь; + Элементы.СтраницаЗначения.Видимость = Ложь; + Элементы.Страницы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет; + КонецЕсли; + + Элементы.Значения.Шапка = ЗначенияСВесом; + Элементы.ЗначенияВес.Видимость = ЗначенияСВесом; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Значения, "Владелец", ВладелецЗначений, , , Истина); + + Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + СвойстваСписка.ТекстЗапроса = + "ВЫБРАТЬ + | Значения.Ссылка, + | Значения.ВерсияДанных, + | Значения.ПометкаУдаления, + | Значения.Предопределенный, + | Значения.Владелец, + | Значения.Родитель, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Значения.Наименование + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК Наименование, + | Значения.Вес + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК Значения + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления + | ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка) + | И ЗначенияПредставления.КодЯзыка = &КодЯзыка"; + СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектов"; + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения, + СвойстваСписка); + Иначе + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + СвойстваСписка.ТекстЗапроса = + "ВЫБРАТЬ + | Значения.Ссылка, + | Значения.ВерсияДанных, + | Значения.ПометкаУдаления, + | Значения.Предопределенный, + | Значения.Владелец, + | Значения.Родитель, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Значения.Наименование + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК Наименование, + | Значения.Вес + |ИЗ + | Справочник.ЗначенияСвойствОбъектовИерархия КАК Значения + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектовИерархия.Представления КАК ЗначенияПредставления + | ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка) + | И ЗначенияПредставления.КодЯзыка = &КодЯзыка"; + СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектовИерархия"; + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения, + СвойстваСписка); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Значения, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Значения, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + + // Отображение уточнений. + + Если НЕ ЗначениеЗаполнено(Объект.ВладелецДополнительныхЗначений) Тогда + Элементы.УточнениеСпискаЗначений.Видимость = Ложь; + Элементы.ДополнительныеЗначения.ТолькоПросмотр = Ложь; + Элементы.ЗначенияКоманднаяПанельРедактирования.Видимость = Истина; + Элементы.ЗначенияКонтекстноеМенюРедактирования.Видимость = Истина; + Элементы.ДополнительныеЗначенияСВесом.Видимость = Истина; + Иначе + Элементы.УточнениеСпискаЗначений.Видимость = Истина; + Элементы.ДополнительныеЗначения.ТолькоПросмотр = Истина; + Элементы.ЗначенияКоманднаяПанельРедактирования.Видимость = Ложь; + Элементы.ЗначенияКонтекстноеМенюРедактирования.Видимость = Ложь; + Элементы.ДополнительныеЗначенияСВесом.Видимость = Ложь; + + Элементы.УточнениеСпискаЗначенийКомментарий.Гиперссылка = ЗначениеЗаполнено(Объект.Ссылка); + Элементы.УточнениеСпискаЗначенийИзменить.Доступность = ЗначениеЗаполнено(Объект.Ссылка); + + СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Объект.ВладелецДополнительныхЗначений, "Заголовок, ЭтоДополнительноеСведение"); + + Если СвойстваВладельца.ЭтоДополнительноеСведение <> Истина Тогда + ШаблонУточнения = НСтр("ru = 'Список значений общий с реквизитом ""%1""'"); + Иначе + ШаблонУточнения = НСтр("ru = 'Список значений общий со сведением ""%1""'"); + КонецЕсли; + + Элементы.УточнениеСпискаЗначенийКомментарий.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУточнения, СвойстваВладельца.Заголовок); + КонецЕсли; + + ОбновитьСписокНаборов(); + + Если НЕ ПоказатьУточнениеНабора И СписокНаборов.Количество() < 2 Тогда + + Элементы.УточнениеНаборов.Видимость = Ложь; + Иначе + Элементы.УточнениеНаборов.Видимость = Истина; + Элементы.УточнениеНаборовКомментарий.Гиперссылка = Истина; + + Элементы.УточнениеНаборовИзменить.Доступность = ЗначениеЗаполнено(Объект.Ссылка); + + Если СписокНаборов.Количество() < 2 Тогда + + Элементы.УточнениеНаборовИзменить.Видимость = Ложь; + + ИначеЕсли ЗначениеЗаполнено(ТекущийНаборСвойств) Тогда + Элементы.УточнениеНаборовИзменить.Видимость = Истина; + Иначе + Элементы.УточнениеНаборовИзменить.Видимость = Ложь; + КонецЕсли; + + Если СписокНаборов.Количество() = 0 Тогда + Элементы.УточнениеНаборовКомментарий.Гиперссылка = Ложь; + Элементы.УточнениеНаборовИзменить.Видимость = Ложь; + + Если Объект.ЭтоДополнительноеСведение Тогда + ТекстКомментария = НСтр("ru = 'Сведение не входит в наборы'"); + Иначе + ТекстКомментария = НСтр("ru = 'Реквизит не входит в наборы'"); + КонецЕсли; + ИначеЕсли СписокНаборов.Количество() < 2 Тогда + Если Объект.ЭтоДополнительноеСведение Тогда + ШаблонУточнения = НСтр("ru = 'Сведение входит в набор: %1'"); + Иначе + ШаблонУточнения = НСтр("ru = 'Реквизит входит в набор: %1'"); + КонецЕсли; + ТекстКомментария = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУточнения, СокрЛП(СписокНаборов[0].Представление)); + Иначе + Если Объект.ЭтоДополнительноеСведение Тогда + ШаблонУточнения = НСтр("ru = 'Сведение входит в %1 %2'"); + Иначе + ШаблонУточнения = НСтр("ru = 'Реквизит входит в %1 %2'"); + КонецЕсли; + + СтрокаНаборы = ПользователиСлужебныйКлиентСервер.ПредметЦелогоЧисла(СписокНаборов.Количество(), + "", НСтр("ru = 'набор,набора,наборов,,,,,,0'")); + + ТекстКомментария = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУточнения, Формат(СписокНаборов.Количество(), "ЧГ="), СтрокаНаборы); + КонецЕсли; + + Элементы.УточнениеНаборовКомментарий.Заголовок = ТекстКомментария + " "; + + Если Элементы.УточнениеНаборовКомментарий.Гиперссылка Тогда + Элементы.УточнениеНаборовКомментарий.Подсказка = НСтр("ru = 'Переход к набору'"); + Иначе + Элементы.УточнениеНаборовКомментарий.Подсказка = ""; + КонецЕсли; + КонецЕсли; + + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + +КонецПроцедуры + +&НаСервере +Процедура ПереключитьНастройкиВыводаРеквизита(ТипЗначения) + + РазрешитьВыборМногострочногоПоля = (Объект.ТипЗначения.Типы().Количество() = 1) + И (Объект.ТипЗначения.СодержитТип(Тип("Строка"))); + РазрешитьВыводВВидеГиперссылки = РазрешитьВыборМногострочногоПоля + Или (Не Объект.ТипЗначения.СодержитТип(Тип("Строка")) + И Не Объект.ТипЗначения.СодержитТип(Тип("Дата")) + И Не Объект.ТипЗначения.СодержитТип(Тип("Булево")) + И Не Объект.ТипЗначения.СодержитТип(Тип("Число"))); + + Элементы.ОднострочныйВид.Видимость = РазрешитьВыборМногострочногоПоля; + Элементы.ГруппаМногострочноеПолеВводаНастройки.Видимость = РазрешитьВыборМногострочногоПоля; + Элементы.ВыводитьВВидеГиперссылки.Видимость = РазрешитьВыводВВидеГиперссылки; + +КонецПроцедуры + +&НаСервере +Процедура ОчиститьВведенныеВесовыеКоэффициенты() + + Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектов"; + Иначе + ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектовИерархия"; + КонецЕсли; + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить(ИмяТаблицыЗначений); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ТекущаяТаблица.Ссылка КАК Ссылка + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК ТекущаяТаблица + |ГДЕ + | ТекущаяТаблица.Вес <> 0"; + Запрос.Текст = СтрЗаменить(Запрос.Текст , "Справочник.ЗначенияСвойствОбъектов", ИмяТаблицыЗначений); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + ЗначениеОбъект = Выборка.Ссылка.ПолучитьОбъект();// СправочникОбъект.ЗначенияСвойствОбъектов + ЗначениеОбъект.Вес = 0; + ЗначениеОбъект.Записать(); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокНаборов() + + СписокНаборов.Очистить(); + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + + Запрос = Новый Запрос( + "ВЫБРАТЬ + | ДополнительныеРеквизиты.Ссылка КАК Набор, + | ДополнительныеРеквизиты.Ссылка.Наименование + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты + |ГДЕ + | ДополнительныеРеквизиты.Свойство = &Свойство + | И НЕ ДополнительныеРеквизиты.Ссылка.ЭтоГруппа + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ДополнительныеСведения.Ссылка, + | ДополнительныеСведения.Ссылка.Наименование + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения КАК ДополнительныеСведения + |ГДЕ + | ДополнительныеСведения.Свойство = &Свойство + | И НЕ ДополнительныеСведения.Ссылка.ЭтоГруппа"); + + Запрос.УстановитьПараметр("Свойство", Объект.Ссылка); + + НачатьТранзакцию(); + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + СписокНаборов.Добавить(Выборка.Набор, Выборка.Наименование + " "); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриСменеСтраницы(Направление, ОсновнаяСтраница, ТекущаяСтраница) + + ОсновнаяСтраница.ТекущаяСтраница = ТекущаяСтраница; + Если ТекущаяСтраница = Элементы.ВыборДействия Тогда + Если Направление = "Вперед" Тогда + ВыбранныйЭлемент = Элементы.Свойства.ТекущиеДанные; + ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений = ВыбранныйЭлемент.Свойство; + ЗаполнитьСписокДействийПриДобавленииРеквизита(); + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Элементы.КарточкаРеквизита Тогда + ЗаполнитьКарточкуРеквизитаИлиСведения(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция РеквизитСоСпискомДополнительныхЗначений() + + РеквизитСоСпискомДополнительныхЗначений = Истина; + СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений, "ТипЗначения"); + Если Не СвойстваВладельца.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) + И Не СвойстваВладельца.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда + РеквизитСоСпискомДополнительныхЗначений = Ложь; + КонецЕсли; + + Возврат РеквизитСоСпискомДополнительныхЗначений; +КонецФункции + +&НаСервере +Процедура ЗаполнитьСписокДействийПриДобавленииРеквизита() + + РеквизитСоСпискомДополнительныхЗначений = РеквизитСоСпискомДополнительныхЗначений(); + + Если ПереданныеПараметрыФормы.ЭтоДополнительноеСведение Тогда + ДобавитьОбщий = НСтр("ru = 'Добавить сведение как есть (рекомендуется) + | + |В этом случае будет возможно отбирать по нему данные разных типов в списках и отчетах.'"); + СделатьПоОбразцу = НСтр("ru = 'Сделать копию сведения по образцу (с общим списком значений) + | + |Список значений этого сведения будет общим с исходным сведением. + |С помощью этого варианта удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных сведений. + |При этом можно отредактировать наименование и ряд других свойств сведения.'"); + СоздатьКопированием = НСтр("ru = 'Сделать копию сведения + | + |Будет создана копия сведения%1'"); + Иначе + ДобавитьОбщий = НСтр("ru = 'Добавить реквизит как есть (рекомендуется) + | + |В этом случае будет возможно отбирать по нему данные разных типов в списках и отчетах.'"); + СделатьПоОбразцу = НСтр("ru = 'Сделать копию реквизита по образцу (с общим списком значений) + | + |Список значений этого реквизита будет общим с исходным реквизитом. + |С помощью этого варианта удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов. + |При этом можно отредактировать наименование и ряд других свойств реквизита.'"); + СоздатьКопированием = НСтр("ru = 'Сделать копию реквизита + | + |Будет создана копия реквизита%1'"); + КонецЕсли; + + СписокВыбора = Элементы.РежимДобавленияРеквизита.СписокВыбора; + СписокВыбора.Очистить(); + + Если РеквизитСоСпискомДополнительныхЗначений Тогда + ШаблонВставки = " " + НСтр("ru = 'и всех его значений.'"); + Иначе + ШаблонВставки = "."; + КонецЕсли; + СоздатьКопированием = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СоздатьКопированием, ШаблонВставки); + + СписокВыбора.Добавить("ДобавитьОбщийРеквизитВНабор", ДобавитьОбщий); + Если РеквизитСоСпискомДополнительныхЗначений Тогда + СписокВыбора.Добавить("СоздатьПоОбразцу", СделатьПоОбразцу); + КонецЕсли; + СписокВыбора.Добавить("СоздатьКопированием", СоздатьКопированием); + + РежимДобавленияРеквизита = "ДобавитьОбщийРеквизитВНабор"; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьЗначенияДополнительногоРеквизитаПриКопировании(ТекущийОбъект) + + Если ТекущийОбъект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда + Родитель = Справочники.ЗначенияСвойствОбъектовИерархия.ПустаяСсылка(); + Иначе + Родитель = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка(); + КонецЕсли; + + Владелец = ТекущийОбъект.Ссылка; + СтрокаДерева = ЗначенияДополнительныхРеквизитов.ПолучитьЭлементы(); + ЗаписатьЗначенияДополнительногоРеквизитаПриКопированииРекурсивно(Владелец, СтрокаДерева, Родитель); + СтрокаДерева.Очистить(); + Элементы.СтраницыЗначенияРеквизита.ТекущаяСтраница = Элементы.ДополнительныеЗначения; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьЗначенияДополнительногоРеквизитаПриКопированииРекурсивно(Владелец, СтрокаДерева, Родитель) + + Для Каждого ЭлементДерева Из СтрокаДерева Цикл + КопияОбъекта = ЭлементДерева.Ссылка.ПолучитьОбъект().Скопировать(); + КопияОбъекта.Владелец = Владелец; + КопияОбъекта.Родитель = Родитель; + КопияОбъекта.Записать(); + + ДочерниеЭлементы = ЭлементДерева.ПолучитьЭлементы(); + ЗаписатьЗначенияДополнительногоРеквизитаПриКопированииРекурсивно(Владелец, ДочерниеЭлементы, КопияОбъекта.Ссылка) + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьЗаголовкиГиперссылок() + + ЗаданаЗависимостьДоступности = Ложь; + ЗаданаЗависимостьОбязательностиЗаполнения = Ложь; + ЗаданаЗависимостьВидимости = Ложь; + + ОтборПоНабору = Новый Структура; + ОтборПоНабору.Вставить("НаборСвойств", ТекущийНаборСвойств); + НайденныеЗависимости = Объект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборПоНабору); + + Для Каждого ЗависимостьСвойства Из НайденныеЗависимости Цикл + Если ЗависимостьСвойства.ЗависимоеСвойство = "Доступен" Тогда + ЗаданаЗависимостьДоступности = Истина; + ИначеЕсли ЗависимостьСвойства.ЗависимоеСвойство = "ЗаполнятьОбязательно" Тогда + ЗаданаЗависимостьОбязательностиЗаполнения = Истина; + ИначеЕсли ЗависимостьСвойства.ЗависимоеСвойство = "Виден" Тогда + ЗаданаЗависимостьВидимости = Истина; + КонецЕсли; + КонецЦикла; + + ШаблонЗависимостьЗадана = НСтр("ru = 'с условием'"); + ШаблонЗависимостьНеЗадана = НСтр("ru = 'всегда'"); + + Элементы.ЗадатьУсловиеДоступности.Заголовок = ?(ЗаданаЗависимостьДоступности, + ШаблонЗависимостьЗадана, + ШаблонЗависимостьНеЗадана); + + Элементы.ЗадатьУсловиеЗаполнения.Заголовок = ?(ЗаданаЗависимостьОбязательностиЗаполнения, + ШаблонЗависимостьЗадана, + ШаблонЗависимостьНеЗадана); + + Элементы.ЗадатьУсловиеВидимости.Заголовок = ?(ЗаданаЗависимостьВидимости, + ШаблонЗависимостьЗадана, + ШаблонЗависимостьНеЗадана); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуНастройкиЗависимости(НастраиваемоеСвойство) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ДополнительныйРеквизит", Объект.Ссылка); + ПараметрыФормы.Вставить("ЗависимостиРеквизитов", Объект.ЗависимостиДополнительныхРеквизитов); + ПараметрыФормы.Вставить("Набор", ТекущийНаборСвойств); + ПараметрыФормы.Вставить("НастраиваемоеСвойство", НастраиваемоеСвойство); + + ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ЗависимостьРеквизитов", ПараметрыФормы); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьЗаголовокФормы() + + Если ЗначениеЗаполнено(Объект.Ссылка) Тогда + Если Объект.ЭтоДополнительноеСведение Тогда + Заголовок = Строка(Объект.Заголовок) + " " + НСтр("ru = '(Дополнительное сведение)'"); + Иначе + Заголовок = Строка(Объект.Заголовок) + " " + НСтр("ru = '(Дополнительный реквизит)'"); + КонецЕсли; + Иначе + Если Объект.ЭтоДополнительноеСведение Тогда + Заголовок = НСтр("ru = 'Дополнительное сведение (создание)'"); + Иначе + Заголовок = НСтр("ru = 'Дополнительный реквизит (создание)'"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииТекущегоНабора() + + Если Элементы.НаборыСвойств.ТекущиеДанные = Неопределено Тогда + Если ЗначениеЗаполнено(ВыбранныйНаборСвойств) Тогда + ВыбранныйНаборСвойств = Неопределено; + ПриИзмененииТекущегоНабораНаСервере(); + КонецЕсли; + + ИначеЕсли Элементы.НаборыСвойств.ТекущиеДанные.Ссылка <> ВыбранныйНаборСвойств Тогда + ВыбранныйНаборСвойств = Элементы.НаборыСвойств.ТекущиеДанные.Ссылка; + ТекущийНаборЭтоГруппа = Элементы.НаборыСвойств.ТекущиеДанные.ЭтоГруппа; + ПриИзмененииТекущегоНабораНаСервере(ТекущийНаборЭтоГруппа); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененииТекущегоНабораНаСервере(ТекущийНаборЭтоГруппа = Неопределено) + + Если ЗначениеЗаполнено(ВыбранныйНаборСвойств) + И НЕ ТекущийНаборЭтоГруппа Тогда + ОбновитьСписокСвойствТекущегоНабора(); + Иначе + Свойства.Очистить(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокСвойствТекущегоНабора() + + Запрос = Новый Запрос; + + Если Не Элементы.НеиспользуемыеРеквизиты.Пометка Тогда + Запрос.УстановитьПараметр("Набор", ВыбранныйНаборСвойств); + Запрос.Текст = + "ВЫБРАТЬ + | СвойстваНаборов.НомерСтроки, + | СвойстваНаборов.Свойство, + | СвойстваНаборов.ПометкаУдаления, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.Заголовок + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) + | КОНЕЦ КАК Заголовок, + | Свойства.ВладелецДополнительныхЗначений, + | Свойства.ТипЗначения КАК ТипЗначения, + | ИСТИНА КАК Общее, + | ВЫБОР + | КОГДА СвойстваНаборов.ПометкаУдаления = ИСТИНА + | ТОГДА 4 + | ИНАЧЕ 3 + | КОНЕЦ КАК НомерКартинки, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.Подсказка + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150)) + | КОНЕЦ КАК Подсказка, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.ЗаголовокФормыЗначения + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150)) + | КОНЕЦ КАК ЗаголовокФормыЗначения, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.ЗаголовокФормыВыбораЗначения + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150)) + | КОНЕЦ КАК ЗаголовокФормыВыбораЗначения + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНаборов + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + | ПО СвойстваНаборов.Свойство = Свойства.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления + | ПО СвойстваНаборов.Свойство = СвойстваПредставления.Ссылка + | И СвойстваПредставления.КодЯзыка = &КодЯзыка + | + |ГДЕ + | СвойстваНаборов.Ссылка = &Набор + | + |УПОРЯДОЧИТЬ ПО + | СвойстваНаборов.НомерСтроки + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | Наборы.ВерсияДанных КАК ВерсияДанных + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы + |ГДЕ + | Наборы.Ссылка = &Набор"; + + Иначе + Запрос.Текст = + "ВЫБРАТЬ + | Свойства.Ссылка КАК Свойство, + | Свойства.ПометкаУдаления КАК ПометкаУдаления, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.Заголовок + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) + | КОНЕЦ КАК Заголовок, + | Свойства.ВладелецДополнительныхЗначений, + | Свойства.ТипЗначения КАК ТипЗначения, + | ИСТИНА КАК Общее, + | ВЫБОР + | КОГДА Свойства.ПометкаУдаления = ИСТИНА + | ТОГДА 4 + | ИНАЧЕ 3 + | КОНЕЦ КАК НомерКартинки, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.Подсказка + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150)) + | КОНЕЦ КАК Подсказка, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.ЗаголовокФормыЗначения + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150)) + | КОНЕЦ КАК ЗаголовокФормыЗначения, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА Свойства.ЗаголовокФормыВыбораЗначения + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150)) + | КОНЕЦ КАК ЗаголовокФормыВыбораЗначения + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления + | ПО Свойства.Ссылка = СвойстваПредставления.Ссылка + | И СвойстваПредставления.КодЯзыка = &КодЯзыка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СоставНабора + | ПО Свойства.Ссылка = СоставНабора.Свойство + | + |ГДЕ + | Свойства.ЭтоДополнительноеСведение = &ЭтоДополнительноеСведение + | И СоставНабора.Свойство ЕСТЬ NULL + | + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ""ВерсияДанных"" КАК ВерсияДанных"; + + Запрос.УстановитьПараметр("ЭтоДополнительноеСведение", ЭтоДополнительноеСведение = 1); + КонецЕсли; + Если ЭтоДополнительноеСведение Тогда + Запрос.Текст = СтрЗаменить( + Запрос.Текст, + "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты", + "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения"); + КонецЕсли; + + Запрос.УстановитьПараметр("ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык); + Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка); + + НачатьТранзакцию(); + Попытка + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если Элементы.Свойства.ТекущаяСтрока = Неопределено Тогда + Строка = Неопределено; + Иначе + Строка = Свойства.НайтиПоИдентификатору(Элементы.Свойства.ТекущаяСтрока); + КонецЕсли; + ТекущееСвойство = ?(Строка = Неопределено, Неопределено, Строка.Свойство); + + Свойства.Очистить(); + + Выборка = РезультатыЗапроса[0].Выбрать(); + Пока Выборка.Следующий() Цикл + + НоваяСтрока = Свойства.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); + + НоваяСтрока.ОбщиеЗначения = ЗначениеЗаполнено(Выборка.ВладелецДополнительныхЗначений); + + Если Выборка.ТипЗначения <> NULL + И УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(Выборка.ТипЗначения) Тогда + + НоваяСтрока.ТипЗначения = Строка(Новый ОписаниеТипов( + Выборка.ТипЗначения, + , + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия, + |СправочникСсылка.ЗначенияСвойствОбъектов")); + + Запрос = Новый Запрос; + Если ЗначениеЗаполнено(Выборка.ВладелецДополнительныхЗначений) Тогда + Запрос.УстановитьПараметр("Владелец", Выборка.ВладелецДополнительныхЗначений); + Иначе + Запрос.УстановитьПараметр("Владелец", Выборка.Свойство); + КонецЕсли; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 4 + | ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектов.Ссылка) КАК Наименование + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов + |ГДЕ + | ЗначенияСвойствОбъектов.Владелец = &Владелец + | И НЕ ЗначенияСвойствОбъектов.ЭтоГруппа + | И НЕ ЗначенияСвойствОбъектов.ПометкаУдаления + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ ПЕРВЫЕ 4 + | ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектовИерархия.Ссылка) КАК Наименование + |ИЗ + | Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия + |ГДЕ + | ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец + | И НЕ ЗначенияСвойствОбъектовИерархия.ПометкаУдаления + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов + |ГДЕ + | ЗначенияСвойствОбъектов.Владелец = &Владелец + | И НЕ ЗначенияСвойствОбъектов.ЭтоГруппа + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + |ИЗ + | Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия + |ГДЕ + | ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец"; + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + + ПервыеЗначения = РезультатыЗапроса[0].Выгрузить().ВыгрузитьКолонку("Наименование"); + + Если ПервыеЗначения.Количество() = 0 Тогда + Если РезультатыЗапроса[1].Пустой() Тогда + ПредставлениеЗначений = НСтр("ru = 'Значения еще не введены'"); + Иначе + ПредставлениеЗначений = НСтр("ru = 'Значения помечены на удаление'"); + КонецЕсли; + Иначе + ПредставлениеЗначений = ""; + Номер = 0; + Для каждого Значение Из ПервыеЗначения Цикл + Номер = Номер + 1; + Если Номер = 4 Тогда + ПредставлениеЗначений = ПредставлениеЗначений + ",..."; + Прервать; + КонецЕсли; + ПредставлениеЗначений = ПредставлениеЗначений + ?(Номер > 1, ", ", "") + Значение; + КонецЦикла; + КонецЕсли; + ПредставлениеЗначений = "<" + ПредставлениеЗначений + ">"; + Если ЗначениеЗаполнено(НоваяСтрока.ТипЗначения) Тогда + ПредставлениеЗначений = ПредставлениеЗначений + ", "; + КонецЕсли; + НоваяСтрока.ТипЗначения = ПредставлениеЗначений + НоваяСтрока.ТипЗначения; + КонецЕсли; + + Если Выборка.Свойство = ТекущееСвойство Тогда + Элементы.Свойства.ТекущаяСтрока = + Свойства[Свойства.Количество()-1].ПолучитьИдентификатор(); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура СоздатьСтруктуруПереданныхПараметров() + ПереданныеПараметрыФормы = Новый Структура; + ПереданныеПараметрыФормы.Вставить("ВладелецДополнительныхЗначений"); + ПереданныеПараметрыФормы.Вставить("ПоказатьУточнениеНабора", Истина); + ПереданныеПараметрыФормы.Вставить("ТекущийНаборСвойств"); + ПереданныеПараметрыФормы.Вставить("ЭтоДополнительноеСведение"); + ПереданныеПараметрыФормы.Вставить("ВыборОбщегоСвойства"); + ПереданныеПараметрыФормы.Вставить("ВыбранныеЗначения"); + ПереданныеПараметрыФормы.Вставить("ВыборВладельцаДополнительныхЗначений"); + ПереданныеПараметрыФормы.Вставить("ЗначениеКопирования"); + ПереданныеПараметрыФормы.Вставить("КопированиеСВопросом"); + ПереданныеПараметрыФормы.Вставить("Перетаскивание", Ложь); + + ЗаполнитьЗначенияСвойств(ПереданныеПараметрыФормы, Параметры, , "ПоказатьУточнениеНабора"); + + ВладелецЗначений = ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений; + Если ЗначениеЗаполнено(ВладелецЗначений) Тогда + ВладелецЗначений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВладелецЗначений, "ВладелецДополнительныхЗначений"); + Если ЗначениеЗаполнено(ВладелецЗначений) Тогда + ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений = ВладелецЗначений; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаСервереБезКонтекста +Функция НаименованиеУжеИспользуется(Знач Заголовок, Знач ТекущееСвойство, Знач НаборСвойств, НовоеНаименование, Знач Представления) + + Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Заголовок = НайденныеСтроки[0].Заголовок; + КонецЕсли; + КонецЕсли; + + НовоеНаименование = Заголовок; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | СвойстваНабора.Свойство КАК Свойство, + | РеквизитыИСведения.ЭтоДополнительноеСведение КАК ЭтоДополнительноеСведение + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНабора + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК РеквизитыИСведения + | ПО (РеквизитыИСведения.Ссылка = СвойстваНабора.Свойство) + |ГДЕ + | РеквизитыИСведения.Заголовок = &Наименование + | И СвойстваНабора.Ссылка = &НаборСвойств + | И СвойстваНабора.Свойство <> &Ссылка + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ ПЕРВЫЕ 1 + | СвойстваНабора.Свойство КАК Свойство, + | РеквизитыИСведения.ЭтоДополнительноеСведение КАК ЭтоДополнительноеСведение + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения КАК СвойстваНабора + | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК РеквизитыИСведения + | ПО (РеквизитыИСведения.Ссылка = СвойстваНабора.Свойство) + |ГДЕ + | РеквизитыИСведения.Заголовок = &Наименование + | И СвойстваНабора.Ссылка = &НаборСвойств + | И СвойстваНабора.Свойство <> &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", ТекущееСвойство); + Запрос.УстановитьПараметр("НаборСвойств", НаборСвойств); + Запрос.УстановитьПараметр("Наименование", НовоеНаименование); + + НачатьТранзакцию(); + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если НЕ Выборка.Следующий() Тогда + Возврат ""; + КонецЕсли; + + Если Выборка.ЭтоДополнительноеСведение Тогда + ТекстВопроса = НСтр("ru = 'Существует дополнительное сведение с наименованием + |""%1"".'"); + Иначе + ТекстВопроса = НСтр("ru = 'Существует дополнительный реквизит с наименованием + |""%1"".'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса + Символы.ПС + Символы.ПС + + НСтр("ru = 'Рекомендуется использовать другое наименование, + |иначе программа может работать некорректно.'"), + НовоеНаименование); + + Возврат ТекстВопроса; + +КонецФункции + +&НаСервереБезКонтекста +Функция ИмяУжеИспользуется(Знач Имя, Знач ТекущееСвойство, НовоеНаименование) + + НовоеИмя = Имя; + УправлениеСвойствамиСлужебный.УдалитьНедопустимыеСимволы(НовоеИмя); + Если НовоеИмя <> Имя + Или ИмяНачинаетсяСЦифры(Имя) + Или СтрРазделить(НовоеИмя, " ", Истина).Количество() > 1 Тогда + + ТекстВопроса = НСтр("ru = 'Имя (группа Для разработчиков) должно состоять из одного слова, начинаться с буквы и не содержать специальных символов, кроме «_».'"); + Возврат ТекстВопроса; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Свойства.ЭтоДополнительноеСведение + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + |ГДЕ + | Свойства.Имя = &Имя + | И Свойства.Ссылка <> &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", ТекущееСвойство); + Запрос.УстановитьПараметр("Имя", Имя); + + НачатьТранзакцию(); + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если НЕ Выборка.Следующий() Тогда + Возврат ""; + КонецЕсли; + + Если Выборка.ЭтоДополнительноеСведение Тогда + ТекстВопроса = НСтр("ru = 'Существует дополнительное сведение с именем + |""%1"".'"); + Иначе + ТекстВопроса = НСтр("ru = 'Существует дополнительный реквизит с именем + |""%1"".'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса + Символы.ПС + Символы.ПС + + НСтр("ru = 'Рекомендуется использовать другое имя, + |иначе программа может работать некорректно. + | + |Создать новое имя и продолжить запись?'"), + Имя); + + Возврат ТекстВопроса; + +КонецФункции + +&НаСервереБезКонтекста +Функция ИмяНачинаетсяСЦифры(ИмяРеквизита) + ПервыйСимвол = Лев(ИмяРеквизита, 1); + Если СтрНайти("0123456789", ПервыйСимвол) > 0 Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +&НаСервереБезКонтекста +Функция ИдентификаторДляФормулУжеИспользуется(Знач ИдентификаторДляФормул, Знач ТекущееСвойство) + + ПроверочныйИдентификатор = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ИдентификаторДляФормул(ИдентификаторДляФормул); + Если ВРег(ИдентификаторДляФормул) <> ВРег(ПроверочныйИдентификатор) Тогда + ТекстВопроса = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов. + | + |Создать новый идентификатор для формул и продолжить запись?'"); + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса, + ИдентификаторДляФормул); + Возврат ТекстВопроса; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Свойства.ЭтоДополнительноеСведение + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + |ГДЕ + | Свойства.ИдентификаторДляФормул = &ИдентификаторДляФормул + | И Свойства.Ссылка <> &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", ТекущееСвойство); + Запрос.УстановитьПараметр("ИдентификаторДляФормул", ИдентификаторДляФормул); + + НачатьТранзакцию(); + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если НЕ Выборка.Следующий() Тогда + Возврат ""; + КонецЕсли; + + Если Выборка.ЭтоДополнительноеСведение Тогда + ТекстВопроса = НСтр("ru = 'Существует дополнительное сведение с идентификатором для формул + |""%1"".'"); + Иначе + ТекстВопроса = НСтр("ru = 'Существует дополнительный реквизит с идентификатором для формул + |""%1"".'"); + КонецЕсли; + + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса + Символы.ПС + Символы.ПС + + НСтр("ru = 'Рекомендуется использовать другой идентификатор для формул, + |иначе программа может работать некорректно. + | + |Создать новый идентификатор для формул и продолжить запись?'"), + ИдентификаторДляФормул); + + Возврат ТекстВопроса; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьЗаголовокКнопкиФормата(Форма) + + Если ПустаяСтрока(Форма.Объект.ФорматСвойства) Тогда + ТекстЗаголовка = НСтр("ru = 'Формат по умолчанию'"); + Иначе + ТекстЗаголовка = НСтр("ru = 'Формат установлен'"); + КонецЕсли; + + Форма.Элементы.РедактироватьФорматЗначения.Заголовок = ТекстЗаголовка; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..7e055781 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,7 @@ + +

        Дополнительные реквизиты и сведения используются в наборах свойств.
        Все дополнительные реквизиты и сведения объектов можно вывести в отчетах и списках.

        +

        При выборе вида дополнительного свойства нужно руководствоваться следующими соображениями:

        +
        • Дополнительные реквизиты являются неотъемлемой частью «объекта со свойствами». Они хранятся в табличной части объекта и доступны тем же пользователям, которым доступен и сам «объект со свойствами». Дополнительные реквизиты редактируются в окне объекта наряду с его остальными реквизитами. +
        • Дополнительные сведения предназначены для хранения сведений об объекте, которые не являются неотъемлемой частью объекта. Дополнительные сведения, как правило, доступны для просмотра и/или редактирования пользователям, которые не имеют доступа к самому «объекту со свойствами». Дополнительные сведения редактируются в отдельном окне, которое можно открыть из окна «объекта со свойствами».

        При выборе типа значения Дополнительное значение или Дополнительное значение (иерархия) можно задать список возможных значений или значений с иерархией дополнительного реквизита или сведения. Для этого нужно воспользоваться командой Создать в окне дополнительного реквизита или сведения.

        +

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/ManagerModule.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/ManagerModule.bsl" new file mode 100644 index 00000000..4b905cf0 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/ManagerModule.bsl" @@ -0,0 +1,957 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые разрешается редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт + + РедактируемыеРеквизиты = Новый Массив; + + РедактируемыеРеквизиты.Добавить("МногострочноеПолеВвода"); + РедактируемыеРеквизиты.Добавить("ЗаголовокФормыЗначения"); + РедактируемыеРеквизиты.Добавить("ЗаголовокФормыВыбораЗначения"); + РедактируемыеРеквизиты.Добавить("ФорматСвойства"); + РедактируемыеРеквизиты.Добавить("Комментарий"); + РедактируемыеРеквизиты.Добавить("Подсказка"); + + Возврат РедактируемыеРеквизиты; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов + +// Возвращаемое значение: +// см. ЗапретРедактированияРеквизитовОбъектовПереопределяемый.ПриОпределенииЗаблокированныхРеквизитов.ЗаблокированныеРеквизиты. +// +Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт + + Результат = Новый Массив; + + Результат.Добавить("ТипЗначения"); + Результат.Добавить("Имя"); + Результат.Добавить("ИдентификаторДляФормул"); + + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов + +// СтандартныеПодсистемы.УправлениеДоступом + +// Параметры: +// Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение. +// +Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт + + Ограничение.Текст = + "РазрешитьЧтениеИзменение + |ГДЕ + | ЗначениеРазрешено(Ссылка) + | ИЛИ НЕ ЭтоДополнительноеСведение"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.УправлениеДоступом + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + +#Область ОбработчикиСобытий + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + Если Параметры.Свойство("ЭтоВыборЗначенияДоступа") Тогда + Параметры.Отбор.Вставить("ЭтоДополнительноеСведение", Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецЕсли + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + Поля.Добавить("НаборСвойств"); + Поля.Добавить("Заголовок"); + Поля.Добавить("Ссылка"); + + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка, "Заголовок"); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка, "Заголовок"); + КонецЕсли; +#КонецЕсли + + Если Не ЗначениеЗаполнено(Представление) Тогда + Представление = Данные.Заголовок; + КонецЕсли; + + Если ЗначениеЗаполнено(Данные.НаборСвойств) Тогда + Представление = Представление + " (" + Строка(Данные.НаборСвойств) + ")"; + КонецЕсли; + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +#Область УникальностьИдентификатораДляФормул + +// Проверяет уникальность идентификатора, а также соответствие идентификатора правилам написания +// +// Параметры: +// ИдентификаторДляФормул - Строка - идентификатор для формул. +// Ссылка - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на текущий объект. +// Отказ - Булево - флаг отказа при наличии ошибки. +// +Процедура ПроверитьУникальностьИдентификатора(ИдентификаторДляФормул, Ссылка, Отказ) Экспорт + + Если ЗначениеЗаполнено(ИдентификаторДляФормул) Тогда + + ИдентификаторПоПравилам = Истина; + ПроверочныйИдентификатор = ИдентификаторДляФормул(ИдентификаторДляФормул); + Если НЕ ВРег(ПроверочныйИдентификатор) = ВРег(ИдентификаторДляФормул) Тогда + ИдентификаторПоПравилам = Ложь; + + ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов.'"); + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),, + "ИдентификаторДляФормул",, Отказ); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов.'", КодЯзыка); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + КонецЕсли; + + Если ИдентификаторПоПравилам Тогда + Если НЕ ИдентификаторДляФормулУникален(ИдентификаторДляФормул, Ссылка) Тогда + + Отказ = Истина; + + ТекстОшибки = НСтр("ru = 'Идентификатор для формул ""%1"" не уникален'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, "ИдентификаторДляФормул"); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ТекстОшибки = НСтр("ru = 'Идентификатор для формул ""%1"" не уникален'", КодЯзыка); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + КонецЕсли; + КонецЕсли; + + Иначе + + ТекстОшибки = НСтр("ru = 'Идентификатор для формул не заполнен'"); + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),, + "ИдентификаторДляФормул",, Отказ); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ТекстОшибки = НСтр("ru = 'Идентификатор для формул не заполнен'", КодЯзыка); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + + КонецЕсли; + +КонецПроцедуры + +// Возвращает уникальный идентификатора для формул (после проверки на уникальность) +// +// Параметры: +// ПредставлениеОбъекта - Строка - представление, из которого будет сформирован идентификатор для формул. +// СсылкаНаТекущийОбъект - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на текущий элемент. +// Возвращаемое значение: +// Строка - уникальное значение идентификатора для формул. +// +Функция УникальныйИдентификаторДляФормул(ПредставлениеОбъекта, СсылкаНаТекущийОбъект) Экспорт + + Идентификатор = ИдентификаторДляФормул(ПредставлениеОбъекта); + Если ПустаяСтрока(Идентификатор) Тогда + // Представление состоит и спецсимволов или цифр. + Префикс = НСтр("ru = 'Идентификатор'"); + Идентификатор = ИдентификаторДляФормул(Префикс + ПредставлениеОбъекта); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ДополнительныеРеквизитыИСведения.ИдентификаторДляФормул КАК ИдентификаторДляФормул + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения + |ГДЕ + | ДополнительныеРеквизитыИСведения.ИдентификаторДляФормул = &ИдентификаторДляФормул + | И ДополнительныеРеквизитыИСведения.Ссылка <> &СсылкаНаТекущийОбъект + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ДополнительныеРеквизитыИСведения.ИдентификаторДляФормул КАК ИдентификаторДляФормул + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения + |ГДЕ + | ДополнительныеРеквизитыИСведения.ИдентификаторДляФормул ПОДОБНО &ИдентификаторДляФормулПодобие + | И ДополнительныеРеквизитыИСведения.Ссылка <> &СсылкаНаТекущийОбъект"; + Запрос.УстановитьПараметр("СсылкаНаТекущийОбъект", СсылкаНаТекущийОбъект); + Запрос.УстановитьПараметр("ИдентификаторДляФормул", Идентификатор); + Запрос.УстановитьПараметр("ИдентификаторДляФормулПодобие", Идентификатор + "%"); + + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + УникальностьПоТочномуСоответствию = РезультатыЗапроса[0]; + Если НЕ УникальностьПоТочномуСоответствию.Пустой() Тогда + // Есть элементы с данным идентификатором. + ИспользованныеИдентификаторы = Новый Соответствие; + ВыборкаПодобных = РезультатыЗапроса[1].Выбрать(); + Пока ВыборкаПодобных.Следующий() Цикл + ИспользованныеИдентификаторы.Вставить(ВРЕГ(ВыборкаПодобных.ИдентификаторДляФормул), Истина); + КонецЦикла; + + ДобавляемыйНомер = 1; + ИдентификаторБезНомера = Идентификатор; + Пока НЕ ИспользованныеИдентификаторы.Получить(ВРЕГ(Идентификатор)) = Неопределено Цикл + ДобавляемыйНомер = ДобавляемыйНомер + 1; + Идентификатор = ИдентификаторБезНомера + ДобавляемыйНомер; + КонецЦикла; + КонецЕсли; + + Возврат Идентификатор; +КонецФункции + +Функция ИдентификаторДляФормулУникален(ПроверяемыйИдентификатор, СсылкаНаТекущийОбъект) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ДополнительныеРеквизитыИСведения.ИдентификаторДляФормул КАК ИдентификаторДляФормул + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения + |ГДЕ + | ДополнительныеРеквизитыИСведения.ИдентификаторДляФормул = &ИдентификаторДляФормул + | И ДополнительныеРеквизитыИСведения.Ссылка <> &СсылкаНаТекущийОбъект"; + Запрос.УстановитьПараметр("ИдентификаторДляФормул", ПроверяемыйИдентификатор); + Запрос.УстановитьПараметр("СсылкаНаТекущийОбъект", СсылкаНаТекущийОбъект); + + РезультатЗапроса = Запрос.Выполнить(); + + Возврат РезультатЗапроса.Пустой(); +КонецФункции + +// Вычисляет значение идентификатора из строки соответствии с правилами именования переменных. +// +// Параметры: +// СтрокаПредставления - Строка - наименование, строка из которой необходимо получить идентификатор. +// +// Возвращаемое значение: +// Строка - идентификатор, соответствующий правилам именования идентификаторов. +// +Функция ИдентификаторДляФормул(СтрокаПредставления) Экспорт + + СпецСимволы = СпецСимволы(); + + Идентификатор = ""; + БылСпецСимвол = Ложь; + + Для НомСимвола = 1 По СтрДлина(СтрокаПредставления) Цикл + + Символ = Сред(СтрокаПредставления, НомСимвола, 1); + + Если СтрНайти(СпецСимволы, Символ) <> 0 Тогда + БылСпецСимвол = Истина; + Если Символ = "_" Тогда + Идентификатор = Идентификатор + Символ; + КонецЕсли; + ИначеЕсли БылСпецСимвол + ИЛИ НомСимвола = 1 Тогда + БылСпецСимвол = Ложь; + Идентификатор = Идентификатор + ВРег(Символ); + Иначе + Идентификатор = Идентификатор + Символ; + КонецЕсли; + + КонецЦикла; + + Возврат Идентификатор; + +КонецФункции + +Функция СпецСимволы() + Диапазоны = Новый Массив; + Диапазоны.Добавить(Новый Структура("Мин, Макс", 0, 32)); + Диапазоны.Добавить(Новый Структура("Мин, Макс", 127, 191)); + + СпецСимволы = " .,+,-,/,*,?,=,<,>,(,)%!@#$%&*""№:;{}[]?()\|/`~'^_"; + Для Каждого Диапазон Из Диапазоны Цикл + Для КодСимвола = Диапазон.Мин По Диапазон.Макс Цикл + СпецСимволы = СпецСимволы + Символ(КодСимвола); + КонецЦикла; + КонецЦикла; + Возврат СпецСимволы; +КонецФункции + +Функция ЗаголовокДляФормированияИдентификатора(Знач Заголовок, Знач Представления) + Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Заголовок = НайденныеСтроки[0].Заголовок; + КонецЕсли; + КонецЕсли; + + Возврат Заголовок; +КонецФункции + +#КонецОбласти + +// Изменяет настройку свойства с общего свойства или общего списка значений свойства +// на отдельное свойство с отдельным списком значений. +// +// Параметры: +// Параметры - Структура: +// * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения +// * ТекущийНаборСвойств - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений +// АдресХранилища - Строка +// +Процедура ИзменитьНастройкуСвойства(Параметры, АдресХранилища) Экспорт + + Свойство = Параметры.Свойство; + ТекущийНаборСвойств = Параметры.ТекущийНаборСвойств; + + ОткрытьСвойство = Неопределено; + Блокировка = Новый БлокировкаДанных; + + ЭлементБлокировки = Блокировка.Добавить("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Свойство); + + ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ТекущийНаборСвойств); + + ЭлементБлокировки = Блокировка.Добавить("Справочник.ЗначенияСвойствОбъектов"); + ЭлементБлокировки = Блокировка.Добавить("Справочник.ЗначенияСвойствОбъектовИерархия"); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + СвойствоОбъект = Свойство.ПолучитьОбъект(); + + Запрос = Новый Запрос; + Если ЗначениеЗаполнено(СвойствоОбъект.ВладелецДополнительныхЗначений) Тогда + Запрос.УстановитьПараметр("Владелец", СвойствоОбъект.ВладелецДополнительныхЗначений); + СвойствоОбъект.ВладелецДополнительныхЗначений = Неопределено; + СвойствоОбъект.Записать(); + Иначе + Запрос.УстановитьПараметр("Владелец", Свойство); + НовыйОбъект = СоздатьЭлемент(); + ЗаполнитьЗначенияСвойств(НовыйОбъект, СвойствоОбъект, , "Родитель, ИдентификаторДляФормул"); + + Отбор = Новый Структура; + Отбор.Вставить("НаборСвойств", ТекущийНаборСвойств); + ЗависимостиНабора = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(Отбор); + Для Каждого Зависимость Из ЗависимостиНабора Цикл + ЗаполнитьЗначенияСвойств(НовыйОбъект.ЗависимостиДополнительныхРеквизитов.Добавить(), Зависимость); + КонецЦикла; + + СвойствоОбъект = НовыйОбъект; + Если ЗначениеЗаполнено(СвойствоОбъект.Имя) Тогда + ИмяЧастями = СтрРазделить(СвойствоОбъект.Имя, "_"); + Имя = ИмяЧастями[0]; + + УИД = Новый УникальныйИдентификатор(); + СтрокаУИД = СтрЗаменить(Строка(УИД), "-", ""); + СвойствоОбъект.Имя = Имя + "_" + СтрокаУИД; + КонецЕсли; + СвойствоОбъект.НаборСвойств = ТекущийНаборСвойств; + СвойствоОбъект.Записать(); + + НаборСвойствОбъект = ТекущийНаборСвойств.ПолучитьОбъект(); + Если СвойствоОбъект.ЭтоДополнительноеСведение Тогда + НайденнаяСтрока = НаборСвойствОбъект.ДополнительныеСведения.Найти(Свойство, "Свойство"); + Если НайденнаяСтрока = Неопределено Тогда + НаборСвойствОбъект.ДополнительныеСведения.Добавить().Свойство = СвойствоОбъект.Ссылка; + Иначе + НайденнаяСтрока.Свойство = СвойствоОбъект.Ссылка; + НайденнаяСтрока.ПометкаУдаления = Ложь; + КонецЕсли; + Иначе + НайденнаяСтрока = НаборСвойствОбъект.ДополнительныеРеквизиты.Найти(Свойство, "Свойство"); + Если НайденнаяСтрока = Неопределено Тогда + НаборСвойствОбъект.ДополнительныеРеквизиты.Добавить().Свойство = СвойствоОбъект.Ссылка; + Иначе + НайденнаяСтрока.Свойство = СвойствоОбъект.Ссылка; + НайденнаяСтрока.ПометкаУдаления = Ложь; + КонецЕсли; + КонецЕсли; + НаборСвойствОбъект.Записать(); + КонецЕсли; + + ОткрытьСвойство = СвойствоОбъект.Ссылка; + + МетаданныеВладельца = УправлениеСвойствамиСлужебный.МетаданныеВладельцаЗначенийСвойствНабора( + ТекущийНаборСвойств, Ложь); + + Если МетаданныеВладельца = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при изменении настройки свойства %1. + |Набор свойств %2 не связан ни с одним владельцем значений свойств.'"), + Свойство, + ТекущийНаборСвойств); + КонецЕсли; + + ПолноеИмяВладельца = МетаданныеВладельца.ПолноеИмя(); + СоответствиеСсылок = Новый Соответствие; + + ЕстьДополнительныеЗначения = УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств( + СвойствоОбъект.ТипЗначения); + + Если ЕстьДополнительныеЗначения Тогда + + Если СвойствоОбъект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + ИмяСправочника = "ЗначенияСвойствОбъектов"; + ЭтоГруппа = "Значения.ЭтоГруппа"; + Иначе + ИмяСправочника = "ЗначенияСвойствОбъектовИерархия"; + ЭтоГруппа = "Ложь КАК ЭтоГруппа"; + КонецЕсли; + + Запрос.Текст = + "ВЫБРАТЬ + | Значения.Ссылка КАК Ссылка, + | Значения.Родитель КАК РодительСсылки, + | Значения.ЭтоГруппа, + | Значения.ПометкаУдаления, + | Значения.Наименование, + | Значения.Вес + |ИЗ + | Справочник.ЗначенияСвойствОбъектов КАК Значения + |ГДЕ + | Значения.Владелец = &Владелец + |ИТОГИ ПО + | Ссылка ИЕРАРХИЯ"; + Запрос.Текст = СтрЗаменить(Запрос.Текст, "ЗначенияСвойствОбъектов", ИмяСправочника); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Значения.ЭтоГруппа", ЭтоГруппа); + + Выгрузка = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); + СоздатьГруппыИЗначения(Выгрузка.Строки, СоответствиеСсылок, ИмяСправочника, СвойствоОбъект.Ссылка); + + ИначеЕсли Свойство = СвойствоОбъект.Ссылка Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при изменении настройки свойства %1. + |Тип значения не содержит дополнительных значений.'"), + Свойство); + КонецЕсли; + + Если Свойство <> СвойствоОбъект.Ссылка + ИЛИ СоответствиеСсылок.Количество() > 0 Тогда + + Блокировка = Новый БлокировкаДанных; + + ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ДополнительныеСведения"); + ЭлементБлокировки.УстановитьЗначение("Свойство", Свойство); + + ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ДополнительныеСведения"); + ЭлементБлокировки.УстановитьЗначение("Свойство", СвойствоОбъект.Ссылка); + + // Если исходное свойство общее, тогда нужно получить список наборов + // объекта (по каждой ссылке) и, если заменяемое общее свойство есть + // не только в целевом наборе, тогда добавить новое свойство и значение. + // + // Для исходных общих свойств, когда у владельцев их значений несколько наборов свойств, + // процедура может быть особенно долгой, т.к. требует анализа наборов для каждого объекта владельца + // из-за наличия переопределения состава наборов в процедуре ЗаполнитьНаборыСвойствОбъекта + // общего модуля УправлениеСвойствамиПереопределяемый. + + ВладелецСДополнительнымиРеквизитами = Ложь; + + Если УправлениеСвойствамиСлужебный.ЭтоОбъектМетаданныхСДополнительнымиРеквизитами(МетаданныеВладельца) Тогда + ВладелецСДополнительнымиРеквизитами = Истина; + ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяВладельца); + КонецЕсли; + + Блокировка.Заблокировать(); + + ТребуетсяАнализНаборовКаждогоОбъектаВладельца = Ложь; + + Если Свойство <> СвойствоОбъект.Ссылка Тогда + + ИмяПредопределенного = СтрЗаменить(МетаданныеВладельца.ПолноеИмя(), ".", "_"); + НаборСвойств = УправлениеСвойствами.НаборСвойствПоИмени(ИмяПредопределенного); + Если НаборСвойств = Неопределено Тогда + ТребуетсяАнализНаборовКаждогоОбъектаВладельца = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + "Справочник.НаборыДополнительныхРеквизитовИСведений." + ИмяПредопределенного, "ЭтоГруппа"); + Иначе + ТребуетсяАнализНаборовКаждогоОбъектаВладельца = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + НаборСвойств, "ЭтоГруппа"); + КонецЕсли; + // Если предопределенного нет в ИБ. + Если ТребуетсяАнализНаборовКаждогоОбъектаВладельца = Неопределено Тогда + ТребуетсяАнализНаборовКаждогоОбъектаВладельца = Ложь; + КонецЕсли; + + КонецЕсли; + + Если ТребуетсяАнализНаборовКаждогоОбъектаВладельца Тогда + ЗапросАнализа = Новый Запрос; + ЗапросАнализа.УстановитьПараметр("ОбщееСвойство", Свойство); + ЗапросАнализа.УстановитьПараметр("НаборНовогоСвойства", ТекущийНаборСвойств); + ЗапросАнализа.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения КАК НаборыСвойств + |ГДЕ + | НаборыСвойств.Ссылка <> &НаборНовогоСвойства + | И НаборыСвойств.Ссылка В(&ВсеНаборыОбъекта) + | И НаборыСвойств.Свойство = &ОбщееСвойство"; + КонецЕсли; + + Запрос = Новый Запрос; + + Если Свойство = СвойствоОбъект.Ссылка Тогда + // Если свойство не менялось (уже отдельное), а общий только список дополнительных значений, + // тогда требуется замена только дополнительных значений. + Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; + + ТаблицаЗначений = Новый ТаблицаЗначений; + ТаблицаЗначений.Колонки.Добавить("Значение", Новый ОписаниеТипов( + "СправочникСсылка." + ИмяСправочника)); + + Для каждого КлючИЗначение Из СоответствиеСсылок Цикл + ТаблицаЗначений.Добавить().Значение = КлючИЗначение.Ключ; + КонецЦикла; + + Запрос.УстановитьПараметр("ТаблицаЗначений", ТаблицаЗначений); + + Запрос.Текст = + "ВЫБРАТЬ + | ТаблицаЗначений.Значение КАК Значение + |ПОМЕСТИТЬ СтарыеЗначения + |ИЗ + | &ТаблицаЗначений КАК ТаблицаЗначений + | + |ИНДЕКСИРОВАТЬ ПО + | Значение"; + Запрос.Выполнить(); + КонецЕсли; + + Запрос.УстановитьПараметр("Свойство", Свойство); + ТипыДополнительныхЗначений = Новый Соответствие; + ТипыДополнительныхЗначений.Вставить(Тип("СправочникСсылка.ЗначенияСвойствОбъектов"), Истина); + ТипыДополнительныхЗначений.Вставить(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия"), Истина); + + // Замена дополнительных сведений. + + Если Свойство = СвойствоОбъект.Ссылка Тогда + // Если свойство не менялось (уже отдельное), а общий только список дополнительных значений, + // тогда требуется замена только дополнительных значений. + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1000 + | ДополнительныеСведения.Объект + |ИЗ + | РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СтарыеЗначения КАК СтарыеЗначения + | ПО (ТИПЗНАЧЕНИЯ(ДополнительныеСведения.Объект) = ТИП(Справочник.ЗначенияСвойствОбъектов)) + | И (НЕ ДополнительныеСведения.Объект В (&ОбработанныеОбъекты)) + | И (ДополнительныеСведения.Свойство = &Свойство) + | И ДополнительныеСведения.Значение = СтарыеЗначения.Значение"; + Иначе + // Если свойство меняется (общее свойство становится отдельным и дополнительные значения копируются), + // тогда требуется замена свойства и дополнительных значений. + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1000 + | ДополнительныеСведения.Объект + |ИЗ + | РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения + |ГДЕ + | ТИПЗНАЧЕНИЯ(ДополнительныеСведения.Объект) = ТИП(Справочник.ЗначенияСвойствОбъектов) + | И НЕ ДополнительныеСведения.Объект В (&ОбработанныеОбъекты) + | И ДополнительныеСведения.Свойство = &Свойство"; + КонецЕсли; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.ЗначенияСвойствОбъектов", ПолноеИмяВладельца); + + НаборСтаройЗаписи = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей(); + НаборНовойЗаписи = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей(); + НаборНовойЗаписи.Добавить(); + + ОбработанныеОбъекты = Новый Массив; + + Пока Истина Цикл + Запрос.УстановитьПараметр("ОбработанныеОбъекты", ОбработанныеОбъекты); + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Количество() = 0 Тогда + Прервать; + КонецЕсли; + Пока Выборка.Следующий() Цикл + Заменить = Истина; + Если ТребуетсяАнализНаборовКаждогоОбъектаВладельца Тогда + ЗапросАнализа.УстановитьПараметр("ВсеНаборыОбъекта", + УправлениеСвойствамиСлужебный.ПолучитьНаборыСвойствОбъекта( + Выборка.Объект).ВыгрузитьКолонку("Набор")); + Заменить = ЗапросАнализа.Выполнить().Пустой(); + КонецЕсли; + НаборСтаройЗаписи.Отбор.Объект.Установить(Выборка.Объект); + НаборСтаройЗаписи.Отбор.Свойство.Установить(Свойство); + НаборСтаройЗаписи.Прочитать(); + Если НаборСтаройЗаписи.Количество() > 0 Тогда + НаборНовойЗаписи[0].Объект = Выборка.Объект; + НаборНовойЗаписи[0].Свойство = СвойствоОбъект.Ссылка; + Значение = НаборСтаройЗаписи[0].Значение; + Если ТипыДополнительныхЗначений[ТипЗнч(Значение)] = Неопределено Тогда + НаборНовойЗаписи[0].Значение = Значение; + Иначе + НаборНовойЗаписи[0].Значение = СоответствиеСсылок[Значение]; + КонецЕсли; + НаборНовойЗаписи.Отбор.Объект.Установить(Выборка.Объект); + НаборНовойЗаписи.Отбор.Свойство.Установить(НаборНовойЗаписи[0].Свойство); + Если Заменить Тогда + НаборСтаройЗаписи.Очистить(); + НаборСтаройЗаписи.ОбменДанными.Загрузка = Истина; + НаборСтаройЗаписи.Записать(); + Иначе + ОбработанныеОбъекты.Добавить(Выборка.Объект); + КонецЕсли; + НаборНовойЗаписи.ОбменДанными.Загрузка = Истина; + НаборНовойЗаписи.Записать(); + КонецЕсли; + КонецЦикла; + КонецЦикла; + + // Замена дополнительных реквизитов. + + Если ВладелецСДополнительнымиРеквизитами Тогда + + Если ТребуетсяАнализНаборовКаждогоОбъектаВладельца Тогда + ЗапросАнализа = Новый Запрос; + ЗапросАнализа.УстановитьПараметр("ОбщееСвойство", Свойство); + ЗапросАнализа.УстановитьПараметр("НаборНовогоСвойства", ТекущийНаборСвойств); + ЗапросАнализа.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыСвойств + |ГДЕ + | НаборыСвойств.Ссылка <> &НаборНовогоСвойства + | И НаборыСвойств.Ссылка В(&ВсеНаборыОбъекта) + | И НаборыСвойств.Свойство = &ОбщееСвойство"; + КонецЕсли; + + Если Свойство = СвойствоОбъект.Ссылка Тогда + // Если свойство не менялось (уже отдельное), а общий только список дополнительных значений, + // тогда требуется замена только дополнительных значений. + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1000 + | ТекущаяТаблица.Ссылка КАК Ссылка + |ИЗ + | ИмяТаблицы КАК ТекущаяТаблица + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СтарыеЗначения КАК СтарыеЗначения + | ПО (НЕ ТекущаяТаблица.Ссылка В (&ОбработанныеОбъекты)) + | И (ТекущаяТаблица.Свойство = &Свойство) + | И ТекущаяТаблица.Значение = СтарыеЗначения.Значение"; + Иначе + // Если свойство меняется (общее свойство становится отдельным и дополнительные значения копируются), + // тогда требуется замена свойства и дополнительных значений. + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1000 + | ТекущаяТаблица.Ссылка КАК Ссылка + |ИЗ + | ИмяТаблицы КАК ТекущаяТаблица + |ГДЕ + | НЕ ТекущаяТаблица.Ссылка В (&ОбработанныеОбъекты) + | И ТекущаяТаблица.Свойство = &Свойство"; + КонецЕсли; + Запрос.Текст = СтрЗаменить(Запрос.Текст, "ИмяТаблицы", ПолноеИмяВладельца + ".ДополнительныеРеквизиты"); + + ОбработанныеОбъекты = Новый Массив; + + Пока Истина Цикл + Запрос.УстановитьПараметр("ОбработанныеОбъекты", ОбработанныеОбъекты); + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Количество() = 0 Тогда + Прервать; + КонецЕсли; + Пока Выборка.Следующий() Цикл + ТекущийОбъект = Выборка.Ссылка.ПолучитьОбъект(); + Заменить = Истина; + Если ТребуетсяАнализНаборовКаждогоОбъектаВладельца Тогда + ЗапросАнализа.УстановитьПараметр("ВсеНаборыОбъекта", + УправлениеСвойствамиСлужебный.ПолучитьНаборыСвойствОбъекта( + Выборка.Ссылка).ВыгрузитьКолонку("Набор")); + Заменить = ЗапросАнализа.Выполнить().Пустой(); + КонецЕсли; + Для каждого Строка Из ТекущийОбъект.ДополнительныеРеквизиты Цикл + Если Строка.Свойство = Свойство Тогда + Значение = Строка.Значение; + Если ТипыДополнительныхЗначений[ТипЗнч(Значение)] <> Неопределено Тогда + Значение = СоответствиеСсылок[Значение]; + КонецЕсли; + Если Заменить Тогда + Если Строка.Свойство <> СвойствоОбъект.Ссылка Тогда + Строка.Свойство = СвойствоОбъект.Ссылка; + КонецЕсли; + Если Строка.Значение <> Значение Тогда + Строка.Значение = Значение; + КонецЕсли; + Иначе + НоваяСтрока = ТекущийОбъект.ДополнительныеРеквизиты.Добавить(); + НоваяСтрока.Свойство = СвойствоОбъект.Ссылка; + НоваяСтрока.Значение = Значение; + ОбработанныеОбъекты.Добавить(ТекущийОбъект.Ссылка); + Прервать; + КонецЕсли; + КонецЕсли; + КонецЦикла; + Если ТекущийОбъект.Модифицированность() Тогда + ТекущийОбъект.ОбменДанными.Загрузка = Истина; + ТекущийОбъект.Записать(); + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЕсли; + + Если Свойство = СвойствоОбъект.Ссылка Тогда + Запрос.МенеджерВременныхТаблиц.Закрыть(); + КонецЕсли; + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + ПоместитьВоВременноеХранилище(ОткрытьСвойство, АдресХранилища); + +КонецПроцедуры + +Процедура СоздатьГруппыИЗначения(Строки, СоответствиеСсылок, ИмяСправочника, Свойство, СтарыйРодитель = Неопределено) + + Для каждого Строка Из Строки Цикл + Если Строка.Ссылка = СтарыйРодитель Тогда + Продолжить; + КонецЕсли; + + Если Строка.ЭтоГруппа = Истина Тогда + НовыйОбъект = Справочники[ИмяСправочника].СоздатьГруппу(); + ЗаполнитьЗначенияСвойств(НовыйОбъект, Строка, "Наименование, ПометкаУдаления"); + Иначе + НовыйОбъект = Справочники[ИмяСправочника].СоздатьЭлемент(); + ЗаполнитьЗначенияСвойств(НовыйОбъект, Строка, "Наименование, Вес, ПометкаУдаления"); + КонецЕсли; + НовыйОбъект.Владелец = Свойство; + Если ЗначениеЗаполнено(Строка.РодительСсылки) Тогда + НовыйОбъект.Родитель = СоответствиеСсылок[Строка.РодительСсылки]; + КонецЕсли; + НовыйОбъект.Записать(); + СоответствиеСсылок.Вставить(Строка.Ссылка, НовыйОбъект.Ссылка); + + СоздатьГруппыИЗначения(Строка.Строки, СоответствиеСсылок, ИмяСправочника, Свойство, Строка.Ссылка); + КонецЦикла; + +КонецПроцедуры + +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения + |ГДЕ + | ДополнительныеРеквизитыИСведения.Имя ПОДОБНО """" + | ИЛИ ДополнительныеРеквизитыИСведения.Имя ПОДОБНО ""%-%"" + | ИЛИ ДополнительныеРеквизитыИСведения.Имя ПОДОБНО ""%«%"" + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ЗависимостиДополнительныхРеквизитов.Ссылка КАК Ссылка + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ЗависимостиДополнительныхРеквизитов + |ГДЕ + | ЗависимостиДополнительныхРеквизитов.НаборСвойств = &НаборСвойств + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ДополнительныеРеквизитыИСведения.Ссылка + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения + |ГДЕ + | ИдентификаторДляФормул = """""; + + Запрос.УстановитьПараметр("НаборСвойств", Справочники.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка()); + + Результат = Запрос.Выполнить().Выгрузить(); + МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + ПолноеИмя = "ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения"; + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ПолноеИмя); + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + + Пока Выборка.Следующий() Цикл + + НачатьТранзакцию(); + Попытка + // Блокируем объект от изменения другими сеансами. + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(ПолноеИмя); + Ссылка = Выборка.Ссылка; // ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - + ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка); + Блокировка.Заблокировать(); + + Объект = Ссылка.ПолучитьОбъект(); + + Если Не ЗначениеЗаполнено(Объект.Имя) Тогда + УстановитьИмяРеквизита(Выборка, Объект); + Иначе + УправлениеСвойствамиСлужебный.УдалитьНедопустимыеСимволы(Объект.Имя); + КонецЕсли; + + Для Каждого Зависимость Из Объект.ЗависимостиДополнительныхРеквизитов Цикл + Если ЗначениеЗаполнено(Зависимость.НаборСвойств) Тогда + Продолжить; + КонецЕсли; + Зависимость.НаборСвойств = Объект.НаборСвойств; + КонецЦикла; + Если НЕ ЗначениеЗаполнено(Объект.ИдентификаторДляФормул) Тогда + ЗаголовокДляФормул = ЗаголовокДляФормированияИдентификатора(Объект.Заголовок, Объект.Представления); + Объект.ИдентификаторДляФормул = УникальныйИдентификаторДляФормул(ЗаголовокДляФормул, Объект.Ссылка); + КонецЕсли; + + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); + ОбъектовОбработано = ОбъектовОбработано + 1; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать дополнительный реквизит (сведение): %1 по причине: + |%2'"), + Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения, Выборка.Ссылка, ТекстСообщения); + КонецПопытки; + + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмя); + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать некоторые дополнительные реквизиты или сведения (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Обработана очередная порция дополнительных реквизитов (сведений): %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +Процедура УстановитьИмяРеквизита(Выборка, Объект) + + ЗаголовокОбъекта = Объект.Заголовок; + УправлениеСвойствамиСлужебный.УдалитьНедопустимыеСимволы(ЗаголовокОбъекта); + ЗаголовокОбъектаЧастями = СтрРазделить(ЗаголовокОбъекта, " ", Ложь); + Для Каждого ЧастьЗаголовка Из ЗаголовокОбъектаЧастями Цикл + Объект.Имя = Объект.Имя + ВРег(Лев(ЧастьЗаголовка, 1)) + Сред(ЧастьЗаголовка, 2); + КонецЦикла; + + // Проверка уникальности имени. + Если ИмяИспользуется(Выборка.Ссылка, Объект.Имя) Тогда + УИД = Новый УникальныйИдентификатор(); + СтрокаУИД = СтрЗаменить(Строка(УИД), "-", ""); + Объект.Имя = Объект.Имя + "_" + СтрокаУИД; + КонецЕсли; + +КонецПроцедуры + +Функция ИмяИспользуется(Ссылка, Имя) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Свойства.ЭтоДополнительноеСведение + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + |ГДЕ + | Свойства.Имя = &Имя + | И Свойства.Ссылка <> &Ссылка"; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.УстановитьПараметр("Имя", Имя); + + Возврат Не Запрос.Выполнить().Пустой(); + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/ObjectModule.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/ObjectModule.bsl" new file mode 100644 index 00000000..503b6410 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/ObjectModule.bsl" @@ -0,0 +1,231 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПриКопировании(ОбъектКопирования) + + Заголовок = ""; + Имя = ""; + ИдентификаторДляФормул = ""; + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + КонтрольЗаполнениеИдентификатораДляФормул(Отказ); + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(ТипЗначения) Тогда + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ВладелецЗначений", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | Свойства.Ссылка КАК Ссылка, + | Свойства.ТипЗначения КАК ТипЗначения + |ИЗ + | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства + |ГДЕ + | Свойства.ВладелецДополнительныхЗначений = &ВладелецЗначений"; + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + НовыйТипЗначения = Неопределено; + + Если ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) + И НЕ Выборка.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда + + НовыйТипЗначения = Новый ОписаниеТипов( + Выборка.ТипЗначения, + "СправочникСсылка.ЗначенияСвойствОбъектов", + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия"); + + ИначеЕсли ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) + И НЕ Выборка.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда + + НовыйТипЗначения = Новый ОписаниеТипов( + Выборка.ТипЗначения, + "СправочникСсылка.ЗначенияСвойствОбъектовИерархия", + "СправочникСсылка.ЗначенияСвойствОбъектов"); + + КонецЕсли; + + Если НовыйТипЗначения <> Неопределено Тогда + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); + Блокировка.Заблокировать(); + + ТекущийОбъект = Выборка.Ссылка.ПолучитьОбъект(); + ТекущийОбъект.ТипЗначения = НовыйТипЗначения; + ТекущийОбъект.ОбменДанными.Загрузка = Истина; + ТекущийОбъект.Записать(); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + // Проверка, что изменение пометки удаления произведено не из списка. + // Наборы дополнительных реквизитов и сведений. + СвойстваОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "ПометкаУдаления"); + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Наборы.Ссылка КАК Ссылка + |ИЗ + | &ИмяТаблицы КАК Свойства + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы + | ПО (Свойства.Ссылка = Наборы.Ссылка) + |ГДЕ + | Свойства.Свойство = &Свойство + | И Свойства.ПометкаУдаления <> &ПометкаУдаления"; + Если ЭтоДополнительноеСведение Тогда + ИмяТаблицы = "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения"; + Иначе + ИмяТаблицы = "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты"; + КонецЕсли; + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяТаблицы", ИмяТаблицы); + Запрос.УстановитьПараметр("Свойство", Ссылка); + Запрос.УстановитьПараметр("ПометкаУдаления", СвойстваОбъекта.ПометкаУдаления); + + Результат = Запрос.Выполнить().Выгрузить(); + + Для Каждого СтрокаРезультата Из Результат Цикл + НаборСвойствОбъект = СтрокаРезультата.Ссылка.ПолучитьОбъект();// СправочникОбъект.НаборыДополнительныхРеквизитовИСведений, + Если ЭтоДополнительноеСведение Тогда + ЗаполнитьЗначенияСвойств(НаборСвойствОбъект.ДополнительныеСведения.Найти(Ссылка, "Свойство"), СвойстваОбъекта); + Иначе + ЗаполнитьЗначенияСвойств(НаборСвойствОбъект.ДополнительныеРеквизиты.Найти(Ссылка, "Свойство"), СвойстваОбъекта); + КонецЕсли; + + НаборСвойствОбъект.Записать(); + КонецЦикла; + +КонецПроцедуры + +Процедура ПередУдалением(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Свойство", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | НаборыСвойств.Ссылка КАК Ссылка + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыСвойств + |ГДЕ + | НаборыСвойств.Свойство = &Свойство + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | НаборыСвойств.Ссылка + |ИЗ + | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения КАК НаборыСвойств + |ГДЕ + | НаборыСвойств.Свойство = &Свойство"; + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); + Блокировка.Заблокировать(); + + ТекущийОбъект = Выборка.Ссылка.ПолучитьОбъект(); + // Удаление дополнительных реквизитов. + Индекс = ТекущийОбъект.ДополнительныеРеквизиты.Количество()-1; + Пока Индекс >= 0 Цикл + Если ТекущийОбъект.ДополнительныеРеквизиты[Индекс].Свойство = Ссылка Тогда + ТекущийОбъект.ДополнительныеРеквизиты.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + // Удаление дополнительных сведений. + Индекс = ТекущийОбъект.ДополнительныеСведения.Количество()-1; + Пока Индекс >= 0 Цикл + Если ТекущийОбъект.ДополнительныеСведения[Индекс].Свойство = Ссылка Тогда + ТекущийОбъект.ДополнительныеСведения.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + Если ТекущийОбъект.Модифицированность() Тогда + ТекущийОбъект.ОбменДанными.Загрузка = Истина; + ТекущийОбъект.Записать(); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ПриЧтенииПредставленийНаСервере() Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура КонтрольЗаполнениеИдентификатораДляФормул(Отказ) + Если НЕ ДополнительныеСвойства.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда + // Программная запись. + Если ЗначениеЗаполнено(ИдентификаторДляФормул) Тогда + ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПроверитьУникальностьИдентификатора(ИдентификаторДляФормул, Ссылка, Отказ); + Иначе + // Установка идентификатора. + ИдентификаторДляФормул = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул( + ЗаголовокДляФормированияИдентификатора(), Ссылка); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +Функция ЗаголовокДляФормированияИдентификатора() + ЗаголовокДляИдентификатора = Заголовок; + Если ТекущийЯзык() <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + ЗаголовокДляИдентификатора = НайденныеСтроки[0].Заголовок; + КонецЕсли; + КонецЕсли; + + Возврат ЗаголовокДляИдентификатора; +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..0e1fb8bb --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\321\213\320\230\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,812 @@ + + + + + + + + + + + ДополнительныеРеквизитыИСведения + + ru + Дополнительные реквизиты и сведения + + true + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + ValueType + + ru + Типы значения, которое можно ввести при заполнении свойства. + + + ShowError + Use + + + + + Use + Description + + ru + Наименование свойства + + + Use + + + + + Use + Code + + + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Parent + true + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.EmptyRef + + Use + + + + + Use + Predefined + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + Ref + + Use + + + + DontUse + true + + + ru + + + Managed + Use + + ru + Дополнительный реквизит / сведение + + Catalog.ЗначенияСвойствОбъектов + + CatalogRef.ЗначенияСвойствОбъектовИерархия + Boolean + CatalogRef.ЗначенияСвойствОбъектов + String + Date + Number + CatalogRef.Пользователи + + 17 + 5 + + + 1024 + + + + true + 150 + AsDescription + InDialog + BothWays + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Form.ФормаЭлемента + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Form.ФормаСписка + + Виден + + ru + Виден + + + Boolean + + + ru + Настройка видимости дополнительного реквизита + + + + + Use + + + ВладелецДополнительныхЗначений + + ru + Владелец дополнительных значений + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + ru + Свойство-образец, с которым у этого свойства одинаковый список дополнительных значений + + + + + Use + + + ВыводитьВВидеГиперссылки + + ru + Выводить в виде гиперссылки + + + Boolean + + + ru + Признак того, что дополнительный реквизит выводится в виде ссылки + + + + + Use + Use + + + ДополнительныеЗначенияИспользуются + + ru + Дополнительные значения используются + + + Boolean + + + ru + Тип значения включает дополнительные значения + + + + + Use + + + ДополнительныеЗначенияСВесом + + ru + Значения дополнительно характеризуются весовым коэффициентом + + + Boolean + + + ru + Для дополнительных значений можно указать весовой коэффициент + + + + + Use + + + Доступен + + ru + Доступен + + + Boolean + + + ru + Настройка доступности дополнительного реквизита + + + + + Use + + + Заголовок + + ru + Наименование + + + String + + 75 + + + + ru + Краткое представление свойства, которое +выводится в формах редактирования его значения + + + + ShowError + + + + Index + Use + Use + + + ЗаголовокФормыВыбораЗначения + + ru + Заголовок формы выбора значения + + + String + + 150 + + + + ru + Используется в заголовке формы выбора дополнительного значения свойства + + + + + + + Use + Use + + + ЗаголовокФормыЗначения + + ru + Заголовок формы значения + + + String + + 150 + + + + ru + Используется в заголовке формы дополнительного значения свойства + + + + + + + Use + Use + + + ЗаполнятьОбязательно + + ru + Заполнять обязательно + + + Boolean + + + ru + Настройка проверки заполненности дополнительного реквизита + + + + + Use + Use + + + Имя + + ru + Имя + + + String + + 100 + + + + ru + Требуется для программного обращения к дополнительным реквизитам и сведениям. Аналог имени обычного реквизита. + + + + + + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Поясняет назначение свойства + + + + + + + Use + ForFolderAndItem + Use + + + МногострочноеПолеВвода + + ru + Многострочное поле ввода + + + Number + + 2 + true + + + + ru + Число строк в многострочном поле ввода + + + + + Use + Use + + + Подсказка + + ru + Подсказка + + + String + + + + ru + Показывается пользователю при редактировании свойства в форме объекта + + + + + + + Use + Use + + + ФорматСвойства + + ru + Формат свойства + + + String + + + + ru + Хранит формат свойства для удобства представления + + + + + + + Use + + + ЭтоДополнительноеСведение + + ru + Это дополнительное сведение + + + Boolean + + + ru + Свойство является дополнительным сведением, а не дополнительным реквизитом + + + + + Index + Use + Use + + + НаборСвойств + + ru + Набор свойств + + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + ru + Набор свойств, в котором было изначально создано свойство. При включении свойства в несколько наборов значение не меняется. + + + + + Use + Use + + + ИдентификаторДляФормул + + ru + Идентификатор для формул + + + String + + 150 + + + + + + + + Use + Use + + + + + + + ЗависимостиДополнительныхРеквизитов + + ru + Зависимости дополнительных реквизитов + + + Use + LineNumber + + Use + + + + + ЗависимоеСвойство + + ru + Зависимое свойство + + + String + + 25 + + + + ru + Имя свойства дополнительного реквизита, для которого настроена зависимость. + + + + Use + Use + + + НаборСвойств + + ru + Набор свойств + + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + + Use + Use + + + Реквизит + + ru + Реквизит + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + String + + 99 + + + + ru + Имя реквизита формы или ссылка на дополнительный реквизит, от которого зависит текущий дополнительный реквизит. + + + + Use + Use + + + Условие + + ru + Условие + + + String + + 20 + + + + ru + Вид зависимости. "Равно", "Не равно", "Заполнено" или "Не заполнено". + + + + Use + Use + + + Значение + + ru + Значение + + + Boolean + String + Date + Number + AnyRef + + 10 + + + 50 + + + Date + + + + ru + Значение реквизита в условии. + + + + Use + Use + + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + + Use + Use + + + Заголовок + + ru + Заголовок + + + String + + 75 + + + + + Use + Use + + + Подсказка + + ru + Подсказка + + + String + + + + + Use + Use + + + ЗаголовокФормыЗначения + + ru + Заголовок формы значения + + + String + + 150 + + + + + Use + Use + + + ЗаголовокФормыВыбораЗначения + + ru + Заголовок формы выбора значения + + + String + + 150 + + + + + Use + Use + + + + ФормаЭлемента + + ru + Форма элемента + + + + ru + + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + РазблокированиеРеквизитов + + ru + Разблокирование реквизитов + + PersonalComputer + MobileDevice + + + ИзменениеНастройкиСвойства + + ru + Изменение настройки свойства + + PersonalComputer + MobileDevice + + + ЗависимостьРеквизитов + + ru + Зависимость реквизитов + + + + ru + + + PersonalComputer + MobileDevice + + + ВыборРеквизита + + ru + Выбор реквизита + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..ec087ac9 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,485 @@ + + + + ГруппаПользовательскихНастроек + 16 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + КоманднаяПанель + 18 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + false + None + + Наименование + 6 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + Список.Description + + + + НаименованиеExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + Наименование_КонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + true + true + true + + + + ТипЗначения + 8 + + <key>ru</key> + <value>Тип значения</value> + + true + true + + true + + + + Список.ValueType + + + true + + ТипЗначенияExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ТипЗначения_КонтекстноеМеню + 9 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Ссылка + 13 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + None + + Список_КоманднаяПанель + 3 + true + true + + true + + Left + true + + + true + true + + true + + СписокСтрокаПоиска + 20 + + СписокСтрокаПоискаРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 21 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 23 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 24 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 26 + + СписокУправлениеПоискомРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 27 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + Список_КонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + + Список.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ГруппаПользовательскихНастроек + +
        + None + + Форма_КоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
        true
        + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач + true + true + true + true + +
        + + + + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..25367912 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..e967a48f --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,172 @@ + + + + Наименование + 3 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + + Наименование_КонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ТипЗначения + 5 + true + true + + true + + + + Объект.ValueType + + + + ТипЗначенияРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + + ТипЗначения_КонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + + + + Форма_КоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + ChartOfCharacteristicTypesObject.ОбъектыАдресацииЗадач + + + true + + + true + +
        true
        + true +
        + + ПараметрыМультиязычныхРеквизитов + 2 + + + true + + + true + + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..bf22c14a --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,65 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Help/ru.html" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Help/ru.html" new file mode 100644 index 00000000..3b8932de --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/Help/ru.html" @@ -0,0 +1,10 @@ + +

        Содержит список объектов программы, которые могут использоваться вместе с ролями исполнителей для ролевой адресации.

        +

        Открывается по соответствующей команде раздела Бизнес-процессы и задачи.

        +

        В списке выводится:

        +
        • Наименование - полное наименование объекта адресации; +
        • Тип значения - тип значения объекта адресации.

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

        +

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

        +

        Предопределенный элемент Все объекты адресации обозначает все доступные объекты адресации программы.

        +

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/ManagerModule.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/ManagerModule.bsl" new file mode 100644 index 00000000..dc0ccd94 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/ManagerModule.bsl" @@ -0,0 +1,143 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +// Возвращает реквизиты объекта, которые не рекомендуется редактировать +// с помощью обработки группового изменения реквизитов. +// +// Возвращаемое значение: +// Массив из Строка +// +Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт + + Результат = Новый Массив; + Результат.Добавить("*"); + Возврат Результат; + +КонецФункции + +// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов + +#КонецОбласти + +#КонецОбласти + +#КонецЕсли + + +#Область ОбработчикиСобытий + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ОбработкаПолученияДанныхВыбора( + ДанныеВыбора, Параметры, СтандартнаяОбработка, Метаданные.ПланыВидовХарактеристик.ОбъектыАдресацииЗадач); + КонецЕсли; + +КонецПроцедуры + +#КонецЕсли + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка); + КонецЕсли; + #Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#Иначе + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиентСервер"); + МодульМультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка); + КонецЕсли; +#КонецЕсли + +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Истина; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ВсеОбъектыАдресации"; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", + "ru='Все объекты адресации'", КодыЯзыков); // @НСтр-2 + КонецЕсли; + + БизнесПроцессыИЗадачиПереопределяемый.ПриНачальномЗаполненииОбъектовАдресацииЗадач(КодыЯзыков, Элементы, ТабличныеЧасти); + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлемента +// +// Параметры: +// Объект - заполняемый объект. +// Данные - СтрокаТаблицыЗначений - данные заполнения объекта. +// ДополнительныеПараметры - Структура: +// * ПредопределенныеДанные - ТаблицаЗначений - данные заполненные в процедуре ПриНачальномЗаполненииЭлементов. +// +Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт + + БизнесПроцессыИЗадачиПереопределяемый.ПриНачальномЗаполненииЭлементаОбъектаАдресацииЗадачи(Объект, Данные, ДополнительныеПараметры); + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/ObjectModule.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/ObjectModule.bsl" new file mode 100644 index 00000000..a01e219e --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/ObjectModule.bsl" @@ -0,0 +1,26 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПриЧтенииПредставленийНаСервере() Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207.mdo" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207.mdo" new file mode 100644 index 00000000..aa0279ac --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207/\320\236\320\261\321\212\320\265\320\272\321\202\321\213\320\220\320\264\321\200\320\265\321\201\320\260\321\206\320\270\320\270\320\227\320\260\320\264\320\260\321\207.mdo" @@ -0,0 +1,164 @@ + + + + + + + + + + + ОбъектыАдресацииЗадач + + ru + Объекты адресации задач + + true + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + ValueType + true + + + + ShowError + Use + + + + + Use + Description + + ru + Наименование объекта адресации задач + + + + + ShowError + Use + + + + + Use + Code + + + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Parent + true + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.EmptyRef + + Use + + + + + Use + Predefined + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + Ref + + Use + + + + DontUse + true + + + ru + + + Managed + Use + + ru + Объект адресации задач + + + String + + 10 + + + true + 100 + AsDescription + + + ВсеОбъектыАдресации + Все объекты адресации + + String + + 10 + + + + + InDialog + BothWays + DontUse + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.Form.ФормаЭлемента + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.Form.ФормаСписка + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 00000000..65484744 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,571 @@ + + + + КоманднаяПанель + 22 + + ФормаВключитьВозможностьРедактирования + 24 + true + true + + true + + + ФормаВключитьВозможностьРедактированияРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + ГруппаПользовательскихНастроек + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Наименование + 16 + true + true + + true + + + + Список.Description + + + + НаименованиеРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ТипЗначения + 19 + true + true + + true + + + + Список.ValueType + + + true + + ТипЗначенияРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + + ТипЗначенияКонтекстноеМеню + 20 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + УдалитьНоваяСсылка + 26 + true + true + + true + + + + Список.УдалитьНоваяСсылка + + + + УдалитьНоваяСсылкаРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + УдалитьНоваяСсылкаКонтекстноеМеню + 27 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 29 + true + true + + + + Список.Ref + + + + СсылкаРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 30 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + true + true + + true + + Left + + + true + true + + true + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + + Список.DefaultPicture + + None + None + None + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
        + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + true + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.Ref + +
        true
        + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения + true + true + true + true + +
        + + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 00000000..0533c9d9 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,32 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + Элементы.Список.РежимВыбора = Параметры.РежимВыбора; + + ДатыЗапретаИзмененияСлужебный.ОбновитьРазделыДатЗапретаИзменения(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..ee753d1c --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,255 @@ + + + + Наименование + 1 + true + true + + true + + + + Объект.Description + + + + НаименованиеРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ТипЗначения + 4 + true + true + + true + + + + Объект.ValueType + + + + ТипЗначенияРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + ТипЗначенияКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + УдалитьНоваяСсылка + 9 + true + true + + true + + + + Объект.УдалитьНоваяСсылка + + + + УдалитьНоваяСсылкаРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + + УдалитьНоваяСсылкаКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаВключитьВозможностьРедактирования + 7 + true + true + + true + + + ФормаВключитьВозможностьРедактированияРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьВозможностьРедактирования + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Объект + 1 + + ChartOfCharacteristicTypesObject.РазделыДатЗапретаИзменения + + + true + + + true + +
        true
        + true +
        + + ВключитьВозможностьРедактирования + + <key>ru</key> + <value>Включить возможность редактирования</value> + + 1 + + ru + Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма) + + + true + + + + ВключитьВозможностьРедактирования + + + DontUse + + + + + + +
        diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..90e955d9 --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,31 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + + ДатыЗапретаИзмененияСлужебный.ОбновитьРазделыДатЗапретаИзменения(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВключитьВозможностьРедактирования(Команда) + + ТолькоПросмотр = Ложь; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/ManagerModule.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/ManagerModule.bsl" new file mode 100644 index 00000000..64ddc45a --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/ManagerModule.bsl" @@ -0,0 +1,174 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +// Возвращает реквизиты справочника, которые образуют естественный ключ для элементов справочника. +// +// Возвращаемое значение: +// Массив из Строка - массив имен реквизитов, образующих естественный ключ. +// +Функция ПоляЕстественногоКлюча() Экспорт + + Результат = Новый Массив; + Результат.Добавить("Наименование"); + + Возврат Результат; + +КонецФункции + +// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СвойстваРазделовДатЗапрета() Экспорт + + Разделы = Новый ТаблицаЗначений; + Разделы.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150))); + Разделы.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("УникальныйИдентификатор")); + Разделы.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); + Разделы.Колонки.Добавить("ТипыОбъектов", Новый ОписаниеТипов("Массив")); + + ИнтеграцияПодсистемБСП.ПриЗаполненииРазделовДатЗапретаИзменения(Разделы); + ДатыЗапретаИзмененияПереопределяемый.ПриЗаполненииРазделовДатЗапретаИзменения(Разделы); + + ЗаголовокОшибки = + НСтр("ru = 'Ошибка в процедуре ПриЗаполненииРазделовДатЗапретаИзменения + |общего модуля ДатыЗапретаИзмененияПереопределяемый.'") + + Символы.ПС + + Символы.ПС; + + РазделыДатЗапрета = Новый Соответствие; + РазделыБезОбъектов = Новый Массив; + ВсеРазделыБезОбъектов = Истина; + + ТипыОбъектовДатЗапрета = Новый Соответствие; + Типы = Метаданные.ПланыВидовХарактеристик.РазделыДатЗапретаИзменения.Тип.Типы(); + Для Каждого Тип Из Типы Цикл + Если Тип = Тип("ПеречислениеСсылка.ВидыНазначенияДатЗапрета") + Или Тип = Тип("ПланВидовХарактеристикСсылка.РазделыДатЗапретаИзменения") + Или Не ОбщегоНазначения.ЭтоСсылка(Тип) Тогда + Продолжить; + КонецЕсли; + ТипыОбъектовДатЗапрета.Вставить(Тип, Истина); + КонецЦикла; + + Для Каждого Раздел Из Разделы Цикл + Если Не ЗначениеЗаполнено(Раздел.Имя) Тогда + ВызватьИсключение ЗаголовокОшибки + НСтр("ru = 'Имя раздела дат запрета не заполнено.'"); + КонецЕсли; + + Если РазделыДатЗапрета.Получить(Раздел.Имя) <> Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Имя раздела дат запрета ""%1"" уже определено.'"), + Раздел.Имя); + КонецЕсли; + + Если Не ЗначениеЗаполнено(Раздел.Идентификатор) И Раздел.Имя <> "ОбщаяДата" Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификатор раздела дат запрета ""%1"" не заполнен.'"), + Раздел.Имя); + КонецЕсли; + + РазделСсылка = ПолучитьСсылку(Раздел.Идентификатор); + + Если РазделыДатЗапрета.Получить(РазделСсылка) <> Неопределено Тогда + РазделДатыЗапрета = РазделыДатЗапрета.Получить(РазделСсылка); // см. СвойстваРаздела + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Идентификатор ""%1"" раздела дат запрета + |""%2"" уже используется для раздела ""%3"".'"), + Раздел.Идентификатор, Раздел.Имя, РазделДатыЗапрета.Имя); + КонецЕсли; + + ТипыОбъектов = Новый Массив; + Для Каждого Тип Из Раздел.ТипыОбъектов Цикл + ВсеРазделыБезОбъектов = Ложь; + Если Не ОбщегоНазначения.ЭтоСсылка(Тип) Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Тип ""%1"" указан, как тип объектов для раздела дат запрета ""%2"". + |Однако это не тип ссылки.'"), + Строка(Тип), Раздел.Имя); + КонецЕсли; + Если ТипыОбъектовДатЗапрета.Получить(Тип) = Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Тип объектов ""%1"" раздела дат запрета ""%2"" + |не указан в свойстве ""Тип"" плана видов характеристик ""Разделы дат запрета изменения"".'"), + Строка(Тип), Раздел.Имя); + КонецЕсли; + МетаданныеТипа = Метаданные.НайтиПоТипу(Тип); + ПолноеИмя = МетаданныеТипа.ПолноеИмя(); + МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); + СвойстваТипа = Новый Структура; + СвойстваТипа.Вставить("ПустаяСсылка", МенеджерОбъекта.ПустаяСсылка()); + СвойстваТипа.Вставить("ПолноеИмя", ПолноеИмя); + СвойстваТипа.Вставить("Представление", Строка(Тип)); + ТипыОбъектов.Добавить(Новый ФиксированнаяСтруктура(СвойстваТипа)); + КонецЦикла; + + СвойстваРаздела = СвойстваРаздела(РазделСсылка, Раздел.Имя, Раздел.Представление, Новый ФиксированныйМассив(ТипыОбъектов)); + СвойстваРаздела = Новый ФиксированнаяСтруктура(СвойстваРаздела); + РазделыДатЗапрета.Вставить(СвойстваРаздела.Имя, СвойстваРаздела); + РазделыДатЗапрета.Вставить(СвойстваРаздела.Ссылка, СвойстваРаздела); + + Если ТипыОбъектов.Количество() = 0 Тогда + РазделыБезОбъектов.Добавить(Раздел.Имя); + КонецЕсли; + КонецЦикла; + + // Добавление пустого раздела (общая дата). + СвойстваРаздела = СвойстваРаздела(ПустаяСсылка()); + СвойстваРаздела = Новый ФиксированнаяСтруктура(СвойстваРаздела); + РазделыДатЗапрета.Вставить(СвойстваРаздела.Имя, СвойстваРаздела); + РазделыДатЗапрета.Вставить(СвойстваРаздела.Ссылка, СвойстваРаздела); + + Свойства = Новый Структура; + Свойства.Вставить("Разделы", Новый ФиксированноеСоответствие(РазделыДатЗапрета)); + Свойства.Вставить("РазделыБезОбъектов", Новый ФиксированныйМассив(РазделыБезОбъектов)); + Свойства.Вставить("ВсеРазделыБезОбъектов", ВсеРазделыБезОбъектов); + Свойства.Вставить("БезРазделовИОбъектов", Разделы.Количество() = 0); + Свойства.Вставить("ЕдинственныйРаздел", ?(Разделы.Количество() = 1, + РазделыДатЗапрета[Разделы[0].Имя].Ссылка, + ПустаяСсылка())); + Свойства.Вставить("ПоказыватьРазделы", Свойства.ВсеРазделыБезОбъектов + Или Не ЗначениеЗаполнено(Свойства.ЕдинственныйРаздел)); + + Возврат Новый ФиксированнаяСтруктура(Свойства); + +КонецФункции + +// Возвращаемое значение: +// Структура: +// * ТипыОбъектов - ФиксированныйМассив +// * Представление - Строка +// * Ссылка - ПланВидовХарактеристикСсылка.РазделыДатЗапретаИзменения +// * Имя - Строка +// +Функция СвойстваРаздела(Ссылка, Знач Имя = "", Знач Представление = "", Знач ТипыОбъектов = Неопределено) Экспорт + + СвойстваРаздела = Новый Структура; + СвойстваРаздела.Вставить("Имя", Имя); + СвойстваРаздела.Вставить("Ссылка", Ссылка); + СвойстваРаздела.Вставить("Представление", ?(ПустаяСтрока(Представление), НСтр("ru = 'Общая дата'"), Представление)); + СвойстваРаздела.Вставить("ТипыОбъектов", ?(ТипыОбъектов = Неопределено, Новый ФиксированныйМассив(Новый Массив), ТипыОбъектов)); + Возврат СвойстваРаздела; + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/ObjectModule.bsl" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/ObjectModule.bsl" new file mode 100644 index 00000000..e69de29b diff --git "a/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..5a5eefab --- /dev/null +++ "b/tests/metadata/ssl/src/ChartsOfCharacteristicTypes/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217/\320\240\320\260\320\267\320\264\320\265\320\273\321\213\320\224\320\260\321\202\320\227\320\260\320\277\321\200\320\265\321\202\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,159 @@ + + + + + + + + + + + РазделыДатЗапретаИзменения + + ru + Разделы дат запрета изменения + + АПК:304 - №697.1.2 Обновление предопределенных данных вместо Авто требуется установить Не обновлять автоматически, так как предопределенные элементы более не используются, не должны создаваться и названы Удалить* + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + ValueType + + Use + + + + + Use + Description + + ru + Наименование раздела дат запрета изменения + + + ShowError + Use + + + + + Use + Code + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Parent + true + + Use + + + + + Use + Predefined + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + Ref + + Use + + + + DontUse + Managed + Use + + ru + Раздел дат запрета изменения + + + ChartOfCharacteristicTypesRef.РазделыДатЗапретаИзменения + + true + Variable + 150 + AsDescription + + + УдалитьОбработкаПерсональныхДанных + (не используется) Обработка персональных данных + + ChartOfCharacteristicTypesRef.РазделыДатЗапретаИзменения + + + + DontAutoUpdate + InDialog + BothWays + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.Form.ФормаЭлемента + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.Form.ФормаСписка + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.Form.ФормаСписка + + УдалитьНоваяСсылка + + ru + (не используется) Новая ссылка + + + ChartOfCharacteristicTypesRef.РазделыДатЗапретаИзменения + + + + + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git "a/tests/metadata/ssl/src/CommandGroups/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\321\217/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommandGroups/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\321\217/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\321\217.mdo" new file mode 100644 index 00000000..a153c1b8 --- /dev/null +++ "b/tests/metadata/ssl/src/CommandGroups/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\321\217/\320\222\320\267\320\260\320\270\320\274\320\276\320\264\320\265\320\271\321\201\321\202\320\262\320\270\321\217.mdo" @@ -0,0 +1,13 @@ + + + Взаимодействия + + ru + Взаимодействия + + Picture + + CommonPicture.ОтветитьНаЭлектронноеПисьмоВсем + + FormCommandBar + diff --git "a/tests/metadata/ssl/src/CommandGroups/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommandGroups/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217.mdo" new file mode 100644 index 00000000..1dfc33c1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommandGroups/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217.mdo" @@ -0,0 +1,10 @@ + + + Информация + + ru + Информация + + Auto + ActionsPanel + diff --git "a/tests/metadata/ssl/src/CommandGroups/\320\236\321\200\320\263\320\260\320\275\320\260\320\271\320\267\320\265\321\200/\320\236\321\200\320\263\320\260\320\275\320\260\320\271\320\267\320\265\321\200.mdo" "b/tests/metadata/ssl/src/CommandGroups/\320\236\321\200\320\263\320\260\320\275\320\260\320\271\320\267\320\265\321\200/\320\236\321\200\320\263\320\260\320\275\320\260\320\271\320\267\320\265\321\200.mdo" new file mode 100644 index 00000000..3f8c0c76 --- /dev/null +++ "b/tests/metadata/ssl/src/CommandGroups/\320\236\321\200\320\263\320\260\320\275\320\260\320\271\320\267\320\265\321\200/\320\236\321\200\320\263\320\260\320\275\320\260\320\271\320\267\320\265\321\200.mdo" @@ -0,0 +1,13 @@ + + + Органайзер + + ru + Органайзер + + Picture + + CommonPicture.Органайзер + + FormCommandBar + diff --git "a/tests/metadata/ssl/src/CommandGroups/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" "b/tests/metadata/ssl/src/CommandGroups/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" new file mode 100644 index 00000000..1c7d3303 --- /dev/null +++ "b/tests/metadata/ssl/src/CommandGroups/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" @@ -0,0 +1,13 @@ + + + ПараметрыСинхронизацииДанных + + ru + Параметры синхронизации данных + + Auto + + CommonPicture.СинхронизацияДанныхНастройка + + FormCommandBar + diff --git "a/tests/metadata/ssl/src/CommandGroups/\320\237\320\265\321\207\320\260\321\202\321\214/\320\237\320\265\321\207\320\260\321\202\321\214.mdo" "b/tests/metadata/ssl/src/CommandGroups/\320\237\320\265\321\207\320\260\321\202\321\214/\320\237\320\265\321\207\320\260\321\202\321\214.mdo" new file mode 100644 index 00000000..73789c5f --- /dev/null +++ "b/tests/metadata/ssl/src/CommandGroups/\320\237\320\265\321\207\320\260\321\202\321\214/\320\237\320\265\321\207\320\260\321\202\321\214.mdo" @@ -0,0 +1,18 @@ + + + Печать + + ru + Печать + + Печать + Auto + + ru + Печать + + + StdPicture.Print + + FormCommandBar + diff --git "a/tests/metadata/ssl/src/CommandGroups/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205.mdo" "b/tests/metadata/ssl/src/CommandGroups/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205.mdo" new file mode 100644 index 00000000..456fe37d --- /dev/null +++ "b/tests/metadata/ssl/src/CommandGroups/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205.mdo" @@ -0,0 +1,13 @@ + + + СинхронизацияДанных + + ru + Синхронизация данных + + Auto + + CommonPicture.СинхронизацияДанныхВыполнение + + FormCommandBar + diff --git "a/tests/metadata/ssl/src/CommonAttributes/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2721/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2721.mdo" "b/tests/metadata/ssl/src/CommonAttributes/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2721/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2721.mdo" new file mode 100644 index 00000000..afe29b56 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonAttributes/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2721/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2721.mdo" @@ -0,0 +1,28 @@ + + + КомментарийЯзык1 + + ru + Комментарий (дополнительный язык) + + + String + + + + + Use + + + + + Catalog.РолиИсполнителей + Use + + DontUse + DontUse + DontUse + DontUse + DontUse + Use + diff --git "a/tests/metadata/ssl/src/CommonAttributes/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2722/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2722.mdo" "b/tests/metadata/ssl/src/CommonAttributes/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2722/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2722.mdo" new file mode 100644 index 00000000..846aff3f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonAttributes/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2722/\320\232\320\276\320\274\320\274\320\265\320\275\321\202\320\260\321\200\320\270\320\271\320\257\320\267\321\213\320\2722.mdo" @@ -0,0 +1,28 @@ + + + КомментарийЯзык2 + + ru + Комментарий (дополнительный язык 2) + + + String + + + + + Use + + + + + Catalog.РолиИсполнителей + Use + + DontUse + DontUse + DontUse + DontUse + DontUse + Use + diff --git "a/tests/metadata/ssl/src/CommonAttributes/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2721/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2721.mdo" "b/tests/metadata/ssl/src/CommonAttributes/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2721/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2721.mdo" new file mode 100644 index 00000000..6f18c14a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonAttributes/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2721/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2721.mdo" @@ -0,0 +1,35 @@ + + + НаименованиеЯзык1 + + ru + Наименование (дополнительный язык) + + + String + + 150 + + + + + Use + + + + + Catalog.РолиИсполнителей + Use + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач + Use + + DontUse + DontUse + DontUse + DontUse + DontUse + IndexWithAdditionalOrder + Use + diff --git "a/tests/metadata/ssl/src/CommonAttributes/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2722/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2722.mdo" "b/tests/metadata/ssl/src/CommonAttributes/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2722/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2722.mdo" new file mode 100644 index 00000000..b8e69235 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonAttributes/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2722/\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265\320\257\320\267\321\213\320\2722.mdo" @@ -0,0 +1,35 @@ + + + НаименованиеЯзык2 + + ru + Наименование (дополнительный язык 2) + + + String + + 150 + + + + + Use + + + + + Catalog.РолиИсполнителей + Use + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач + Use + + DontUse + DontUse + DontUse + DontUse + DontUse + IndexWithAdditionalOrder + Use + diff --git "a/tests/metadata/ssl/src/CommonAttributes/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" "b/tests/metadata/ssl/src/CommonAttributes/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" new file mode 100644 index 00000000..0553a9cd --- /dev/null +++ "b/tests/metadata/ssl/src/CommonAttributes/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" @@ -0,0 +1,84 @@ + + + ОбластьДанныхВспомогательныеДанные + + ru + Область данных вспомогательные данные + + + Number + + 7 + true + + + + + Use + + + ScheduledJob.РассылкаОтчетов + Use + + + InformationRegister.ИспользованиеПоставляемыхДополнительныхОтчетовИОбработокВОбластяхДанных + Use + + + InformationRegister.ОбработчикиОбновления + Use + + + Constant.ОтложенноеОбновлениеЗавершеноУспешно + Use + + + InformationRegister.ОчередьИзвлеченияТекста + Use + + + InformationRegister.ПотокиОбновления + Use + + + Constant.СведенияОБлокируемыхОбъектах + Use + + + InformationRegister.СостоянияОбменовДаннымиОбластейДанных + Use + + + InformationRegister.СостоянияУспешныхОбменовДаннымиОбластейДанных + Use + + + InformationRegister.СообщенияОбменаДаннымиОбластейДанных + Use + + + InformationRegister.ОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных + Use + + + Constant.СведенияОбОбновленииИБ + Use + + + InformationRegister.ВерсииПодсистемОбластейДанных + Use + + + InformationRegister.БлокировкиСеансовОбластейДанных + Use + + DontUse + IndependentlyAndSimultaneously + SessionParameter.ОбластьДанныхЗначение + SessionParameter.ОбластьДанныхИспользование + Constant.ИспользоватьРазделениеПоОбластямДанных + DontUse + DontUse + DontUse + Use + diff --git "a/tests/metadata/ssl/src/CommonAttributes/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\236\321\201\320\275\320\276\320\262\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\236\321\201\320\275\320\276\320\262\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" "b/tests/metadata/ssl/src/CommonAttributes/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\236\321\201\320\275\320\276\320\262\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\236\321\201\320\275\320\276\320\262\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" new file mode 100644 index 00000000..dd837a52 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonAttributes/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\236\321\201\320\275\320\276\320\262\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/\320\236\320\261\320\273\320\260\321\201\321\202\321\214\320\224\320\260\320\275\320\275\321\213\321\205\320\236\321\201\320\275\320\276\320\262\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265.mdo" @@ -0,0 +1,721 @@ + + + ОбластьДанныхОсновныеДанные + + ru + Область данных основные данные + + + Number + + 7 + true + + + + + Use + + 0 + + + ScheduledJob.ОбновлениеПредопределенныхВариантовОтчетов + DontUse + + + ScheduledJob.ПолучениеИОтправкаЭлектронныхПисем + DontUse + + + Constant.ПараметрыАдминистрированияИБ + DontUse + + + ScheduledJob.СлияниеИндексаППД + DontUse + + + InformationRegister.СообщенияОбменаДанными + DontUse + + + InformationRegister.ПериодыНерабочихДнейКалендаря + DontUse + + + ScheduledJob.ОбновлениеИндексаППД + DontUse + + + InformationRegister.ЗамерыКомментарииСтатистики + DontUse + + + ScheduledJob.ОчисткаНенужныхФайлов + DontUse + + + Catalog.ПрофилиКлючевыхОпераций + DontUse + + + Constant.ПараметрыРезервногоКопирования + DontUse + + + Constant.ИспользоватьДополнительныеОтчетыИОбработки + DontUse + + + InformationRegister.СтатистикаКонфигурации + DontUse + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения + DontUse + + + Constant.ПериодХраненияЗамеров + DontUse + + + InformationRegister.ЗамерыВремени + DontUse + + + ScheduledJob.ПолучениеСубъектовДляСкрытияПерсональныхДанных + DontUse + + + Constant.НастройкаПроксиСервера + DontUse + + + Constant.СоздаватьПодкаталогиСИменамиВладельцев + DontUse + + + InformationRegister.ДомаЗданияСтроения + DontUse + + + Constant.СпособХраненияФайлов + DontUse + + + InformationRegister.ЗависимостиПравДоступа + DontUse + + + InformationRegister.СлужебныеАдресныеСведения + DontUse + + + InformationRegister.УровниСокращенийАдресныхСведений + DontUse + + + Constant.ИспользоватьСинхронизациюДанныхВЛокальномРежиме + DontUse + + + Constant.ВерсияКлассификатораБанков + DontUse + + + Constant.ВыполнятьЗамерыПроизводительности + DontUse + + + Constant.ПрофильБезопасностиИнформационнойБазы + DontUse + + + Constant.ИспользоватьСинхронизациюДанныхВМоделиСервиса + DontUse + + + InformationRegister.ИспользованиеПоставляемыхДополнительныхОтчетовИОбработокВОбластяхДанных + DontUse + + + InformationRegister.РазрешенияНаИспользованиеВнешнихРесурсов + DontUse + + + ScheduledJob.ПланированиеИзвлеченияТекстаВМоделиСервиса + DontUse + + + Catalog.КлючевыеОперации + DontUse + + + Constant.НезависимоеИспользованиеДополнительныхОтчетовИОбработокВМоделиСервиса + DontUse + + + Constant.АдресДляВосстановленияПароляУчетнойЗаписи + DontUse + + + ScheduledJob.СкрытиеПерсональныхДанныхСубъектов + DontUse + + + Catalog.СценарииОбменовДанными + DontUse + + + Catalog.ИдентификаторыОбъектовМетаданных + DontUse + + + InformationRegister.ОбработчикиОбновления + DontUse + + + ScheduledJob.СинхронизацияФайлов + DontUse + + + Catalog.ОбщиеВнешниеКомпоненты + DontUse + + + InformationRegister.НастройкиТранспортаОбменаОбластейДанных + DontUse + + + ScheduledJob.ОчисткаУстаревшихВерсийОбъектов + DontUse + + + Constant.УдалитьЛогинДоступаКСервисуMorpher + DontUse + + + InformationRegister.ОбластиПерсональныхДанных + DontUse + + + InformationRegister.ДанныеПроизводственногоКалендаря + DontUse + + + InformationRegister.ПричиныИзмененияАдресныхСведений + DontUse + + + Constant.СписокРасширенийТекстовыхФайлов + DontUse + + + InformationRegister.ЗагруженныеВерсииАдресныхСведений + DontUse + + + InformationRegister.ПраваРолей + DontUse + + + Constant.КлассификаторОшибокКриптографии + DontUse + + + ScheduledJob.ЗаполнениеДанныхДляОграниченияДоступа + DontUse + + + Constant.СписокРасширенийФайловOpenDocument + DontUse + + + ScheduledJob.СинхронизацияДанныхСПриложениемВИнтернете + DontUse + + + Constant.ДатаПоследнейВыгрузкиЗамеровПроизводительностиUTC + DontUse + + + Constant.ЗагрузитьСообщениеОбменаДанными + DontUse + + + Constant.ОсновнойЯзык + DontUse + + + Constant.ИспользоватьДополнительныйЯзык1 + DontUse + + + InformationRegister.ВерсииПодсистем + DontUse + + + InformationRegister.СостоянияОбменовДанными + DontUse + + + Constant.ИспользоватьАвтономнуюРаботуВМоделиСервиса + DontUse + + + Constant.ОтложенноеОбновлениеЗавершеноУспешно + DontUse + + + Constant.ИзвлекатьТекстыФайловНаСервере + DontUse + + + Constant.ИспользоватьПрофилиБезопасностиДляДОО + DontUse + + + ScheduledJob.ИсправлениеУстаревшихАдресов + DontUse + + + Constant.КоличествоЗамеровВПакетеЭкспорта + DontUse + + + Constant.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса + DontUse + + + ScheduledJob.ОтложенноеОбновлениеИБ + DontUse + + + ScheduledJob.КонтрольАктивностиПользователей + DontUse + + + ScheduledJob.УдалениеНеактуальнойИнформацииСинхронизации + DontUse + + + InformationRegister.ОчередьИзвлеченияТекста + DontUse + + + Constant.МаксимальныйРазмерФайла + DontUse + + + InformationRegister.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов + DontUse + + + InformationRegister.ПакетыИнформацииПриЗапуске + DontUse + + + InformationRegister.ЗамерыОбластиСтатистики + DontUse + + + Constant.ПриоритетОбновленияВОбластяхДанных + DontUse + + + ScheduledJob.УдалениеУстаревшихПараметровРаботыВерсийРасширений + DontUse + + + Constant.ИспользоватьДополнительныйЯзык2 + DontUse + + + Catalog.ПроизводственныеКалендари + DontUse + + + Catalog.ПоставляемыеДополнительныеОтчетыИОбработки + DontUse + + + ScheduledJob.ОбновлениеАгрегатов + DontUse + + + InformationRegister.ДополнительныеАдресныеСведения + DontUse + + + Constant.КоличествоПотоковОбновленияДоступа + DontUse + + + InformationRegister.ПотокиОбновления + DontUse + + + ScheduledJob.ОбновлениеСтатусовДоставкиSMS + DontUse + + + ScheduledJob.ЭкспортОценкиПроизводительности + DontUse + + + ScheduledJob.ПерестроениеАгрегатов + DontUse + + + Constant.ДатаПоследнегоОбновленияКлассификатораОшибок + DontUse + + + InformationRegister.НеразделенныеПользователи + DontUse + + + Constant.МинимальныйИнтервалРегламентныхЗаданийДОИОВМоделиСервиса + DontUse + + + Constant.ИспользованиеКаталогаДополнительныхОтчетовИОбработокВМоделиСервиса + DontUse + + + InformationRegister.УдалитьЗамерыВремени3 + DontUse + + + ScheduledJob.ИзвлечениеТекста + DontUse + + + Constant.ИспользоватьАльтернативныйСерверДляЗагрузкиКурсовВалют + DontUse + + + Constant.ИспользоватьПолнотекстовыйПоиск + DontUse + + + Constant.ДополнительныйЯзык2 + DontUse + + + Constant.КаталогСообщенийОбменаДаннымиДляWindows + DontUse + + + Constant.АвтоматическиНастраиватьРазрешенияВПрофиляхБезопасности + DontUse + + + InformationRegister.КэшПрограммныхИнтерфейсов + DontUse + + + Constant.НеИспользоватьРазделениеПоОбластямДанных + DontUse + + + ScheduledJob.УдалениеПомеченных + DontUse + + + Constant.КаталогСообщенийОбменаДаннымиДляLinux + DontUse + + + ScheduledJob.СтартОтложенныхПроцессов + DontUse + + + Constant.СведенияОБлокируемыхОбъектах + DontUse + + + Catalog.ПредопределенныеВариантыОтчетов + DontUse + + + Constant.ИспользоватьСинхронизациюДанныхВМоделиСервисаСПриложениемВИнтернете + DontUse + + + Constant.ОценкаПроизводительностиПериодЗаписи + DontUse + + + Constant.ГлавныйУзел + DontUse + + + InformationRegister.СостоянияОбменовДаннымиОбластейДанных + DontUse + + + Constant.ИспользуютсяПрофилиБезопасности + DontUse + + + ScheduledJob.МониторингЗадач + DontUse + + + InformationRegister.ПараметрыРаботыПрограммы + DontUse + + + InformationRegister.УдалитьНастройкиТранспортаОбмена + DontUse + + + Constant.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы + DontUse + + + ScheduledJob.ОчисткаЗамеровВремени + DontUse + + + InformationRegister.СостоянияУспешныхОбменовДаннымиОбластейДанных + DontUse + + + Constant.ИспользоватьНесколькоПроизводственныхКалендарей + DontUse + + + InformationRegister.ПравилаДляОбменаДанными + DontUse + + + InformationRegister.ОбластиСтатистики + DontUse + + + InformationRegister.АдресныеОбъекты + DontUse + + + Constant.НастройкаПодчиненногоУзлаРИБЗавершена + DontUse + + + ScheduledJob.ОтключениеПроверкиИспользованияУдаляемыхОбъектов + DontUse + + + Catalog.КлассификаторБанков + DontUse + + + ScheduledJob.ОбновлениеДоступаНаУровнеЗаписей + DontUse + + + InformationRegister.ИсторияАдресныхОбъектов + DontUse + + + Constant.СписокЗапрещенныхРасширений + DontUse + + + InformationRegister.СвязиАдресныхОбъектов + DontUse + + + InformationRegister.СообщенияОбменаДаннымиОбластейДанных + DontUse + + + ScheduledJob.СборИОтправкаСтатистики + DontUse + + + Constant.СообщениеОбменаДаннымиИзГлавногоУзла + DontUse + + + InformationRegister.ОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных + DontUse + + + ScheduledJob.ЗагрузкаКурсовВалют + DontUse + + + InformationRegister.БуферОперацийСтатистики + DontUse + + + Constant.ПараметрыЦентраМониторинга + DontUse + + + ScheduledJob.УведомлениеИсполнителейОНовыхЗадачах + DontUse + + + ScheduledJob.ОтправкаSMS + DontUse + + + InformationRegister.ЗамерыВремениТехнологические + DontUse + + + Constant.ИспользоватьРазделениеПоОбластямДанных + DontUse + + + Constant.ХранитьФайлыВТомахНаДиске + DontUse + + + Constant.ИспользоватьСервисСклоненияMorpher + DontUse + + + Constant.СведенияОбОбновленииИБ + DontUse + + + ScheduledJob.ЗапускДополнительныхОбработок + DontUse + + + InformationRegister.ОбщиеПоставляемыеМакетыПечати + DontUse + + + Constant.КоличествоПотоковОбновленияИнформационнойБазы + DontUse + + + InformationRegister.СостоянияУспешныхОбменовДанными + DontUse + + + InformationRegister.ЗемельныеУчастки + DontUse + + + Constant.ЭтоАвтономноеРабочееМесто + DontUse + + + Catalog.ТомаХраненияФайлов + DontUse + + + InformationRegister.ВерсииПодсистемОбластейДанных + DontUse + + + Constant.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы + DontUse + + + Constant.КоличествоЭлементовВТранзакцииЗагрузкиДанных + DontUse + + + ScheduledJob.СинхронизацияДанных + DontUse + + + Constant.ДополнительныйЯзык1 + DontUse + + + ScheduledJob.ПроверкаВеденияУчета + DontUse + + + ScheduledJob.УстановкаПериодаРассчитанныхИтогов + DontUse + + + InformationRegister.ДампыПлатформы + DontUse + + + InformationRegister.ЗамерыОперацииСтатистики + DontUse + + + Constant.ИсточникДанныхАдресногоКлассификатора + DontUse + + + InformationRegister.ЗамерыСтатистики + DontUse + + + InformationRegister.КомментарииСтатистики + DontUse + + + Constant.ПараметрыХраненияФайловВИБ + DontUse + + + InformationRegister.ОриентирыАдресныхОбъектов + DontUse + + + InformationRegister.ОперацииСтатистики + DontUse + + + InformationRegister.ОбработчикиОбновленияОбщихДанных + DontUse + + + Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском + DontUse + + + InformationRegister.КомментарииОперацииСтатистики + DontUse + + + InformationRegister.ПакетыДляОтправки + DontUse + + + Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации + DontUse + + + ScheduledJob.СборИОтправкаОтчетовОбОшибках + DontUse + + + Constant.ИспользоватьСинхронизациюДанных + DontUse + + + InformationRegister.РежимыПодключенияВнешнихМодулей + DontUse + + + InformationRegister.БезопасноеХранилищеДанных + DontUse + + + Constant.ИспользоватьСинхронизациюДанныхВМоделиСервисаСЛокальнойПрограммой + DontUse + + + InformationRegister.БлокировкиСеансовОбластейДанных + DontUse + + SessionParameter.ОбластьДанныхЗначение + SessionParameter.ОбластьДанныхИспользование + Constant.ИспользоватьРазделениеПоОбластямДанных + Use + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/CommandModule.bsl" new file mode 100644 index 00000000..dcac2bd3 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/CommandModule.bsl" @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму("ОбщаяФорма.АвтономнаяРабота",, ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260.mdo" new file mode 100644 index 00000000..50705547 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260.mdo" @@ -0,0 +1,12 @@ + + + АвтономнаяРабота + + ru + Автономная работа + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" new file mode 100644 index 00000000..daec060c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму("ОбщаяФорма.АвтономнаяРаботаВМоделиСервиса",, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" new file mode 100644 index 00000000..cf183fcd --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" @@ -0,0 +1,12 @@ + + + АвтономнаяРаботаВМоделиСервиса + + ru + Автономная работа + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260/CommandModule.bsl" new file mode 100644 index 00000000..3de465f4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260/CommandModule.bsl" @@ -0,0 +1,43 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ДополнительнаяИнформация = ДополнительнаяИнформация(); + ПоказатьПредупреждение(, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Время сеанса: %1 + |На сервере: %2 + |На клиенте: %3 + | + |Время сеанса - это время сервера, + |приведенное к часовому поясу: + |""%4"".'"), + Формат(ОбщегоНазначенияКлиент.ДатаСеанса(), "ДЛФ=T"), + Формат(ДополнительнаяИнформация.ДатаСервера, "ДЛФ=T"), + Формат(ТекущаяДата(), "ДЛФ=T"), + ДополнительнаяИнформация.ПредставлениеЧасовогоПояса)); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ДополнительнаяИнформация() + Результат = Новый Структура; + Результат.Вставить("ПредставлениеЧасовогоПояса", ПредставлениеЧасовогоПояса(ЧасовойПоясСеанса())); + Результат.Вставить("ДатаСервера", ТекущаяДата()); + Возврат Результат; +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260.mdo" new file mode 100644 index 00000000..8f85361c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260/\320\222\321\200\320\265\320\274\321\217\320\242\320\265\320\272\321\203\321\211\320\265\320\263\320\276\320\241\320\265\320\260\320\275\321\201\320\260.mdo" @@ -0,0 +1,12 @@ + + + ВремяТекущегоСеанса + + ru + Время текущего сеанса + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" new file mode 100644 index 00000000..e15f7803 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ВсеФайлы", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..64cdb95a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213/\320\222\321\201\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,12 @@ + + + ВсеФайлы + + ru + Все файлы + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" new file mode 100644 index 00000000..702b1540 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму("ОбщаяФорма.ПользователиСервиса",, ПараметрыВыполненияКоманды.Источник); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" new file mode 100644 index 00000000..bb04c4e7 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" @@ -0,0 +1,16 @@ + + + ДобавитьПользователейСервиса + + ru + Добавить пользователей сервиса + + ActionsPanelCreate + + Auto + + ru + Добавить существующих пользователей сервиса + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" new file mode 100644 index 00000000..0af92795 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок( + ПараметрКоманды, + ПараметрыВыполненияКоманды, + ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(), + "Администрирование"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" new file mode 100644 index 00000000..e2dfdc82 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" @@ -0,0 +1,12 @@ + + + ДополнительныеОбработкиАдминистрирование + + ru + Дополнительные обработки + + ActionsPanelTools + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" new file mode 100644 index 00000000..5fd80a0a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок( + ПараметрКоманды, + ПараметрыВыполненияКоманды, + ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(), + "Администрирование"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" new file mode 100644 index 00000000..3ce9edb5 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" @@ -0,0 +1,12 @@ + + + ДополнительныеОтчетыАдминистрирование + + ru + Дополнительные отчеты + + ActionsPanelReports + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214/CommandModule.bsl" new file mode 100644 index 00000000..c9e64f60 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214/CommandModule.bsl" @@ -0,0 +1,30 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Если ПараметрКоманды = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ссылка", ПараметрКоманды); + + ОткрытьФорму( + "ОбщаяФорма.РедактированиеДополнительныхСведений", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214.mdo" new file mode 100644 index 00000000..e871ea9d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\260\321\217\320\237\320\260\320\275\320\265\320\273\321\214.mdo" @@ -0,0 +1,21 @@ + + + ДополнительныеСведенияКоманднаяПанель + + ru + Дополнительные сведения + + FormCommandBarImportant + + DefinedType.ВладелецДополнительныхСведений + + Picture + + ru + Дополнительные сведения + + + CommonPicture.ДополнительныеСведения + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/CommandModule.bsl" new file mode 100644 index 00000000..dee56d2c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/CommandModule.bsl" @@ -0,0 +1,19 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +// Открывает форму журнала учета оригиналов первичных документов +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + УчетОригиналовПервичныхДокументовКлиентПереопределяемый.ПриОткрытииФормыЖурналаУчетаОригиналов(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..00748d66 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/\320\226\321\203\321\200\320\275\320\260\320\273\320\243\321\207\320\265\321\202\320\260\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\320\276\320\262\320\237\320\265\321\200\320\262\320\270\321\207\320\275\321\213\321\205\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.mdo" @@ -0,0 +1,12 @@ + + + ЖурналУчетаОригиналовПервичныхДокументов + + ru + Оригиналы первичных документов + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273/CommandModule.bsl" new file mode 100644 index 00000000..25430928 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273/CommandModule.bsl" @@ -0,0 +1,58 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + СведенияОПланеОбмена = СведенияОПланеОбмена(ПараметрКоманды); + + Если СведенияОПланеОбмена.РазделенныйРежим Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Загрузка правил обмена данными в разделенном режиме недоступна.'")); + Возврат; + КонецЕсли; + + Если СведенияОПланеОбмена.ИспользуютсяПравилаКонвертации Тогда + ОбменДаннымиКлиент.ЗагрузитьПравилаСинхронизацииДанных(СведенияОПланеОбмена.ИмяПланаОбмена); + Иначе + Отбор = Новый Структура("ИмяПланаОбмена, ВидПравил", СведенияОПланеОбмена.ИмяПланаОбмена, СведенияОПланеОбмена.ВидПравилПРО); + ЗначенияЗаполнения = Новый Структура("ИмяПланаОбмена, ВидПравил", СведенияОПланеОбмена.ИмяПланаОбмена, СведенияОПланеОбмена.ВидПравилПРО); + + ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, ЗначенияЗаполнения, "ПравилаДляОбменаДанными", + ПараметрКоманды, "ПравилаРегистрацииОбъектов"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция СведенияОПланеОбмена(Знач УзелИнформационнойБазы) + + Результат = Новый Структура("РазделенныйРежим", + ОбщегоНазначения.РазделениеВключено() И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()); + + Если Не Результат.РазделенныйРежим Тогда + Результат.Вставить("ИмяПланаОбмена", + ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы)); + + Результат.Вставить("ИспользуютсяПравилаКонвертации", + ОбменДаннымиПовтИсп.ЕстьМакетПланаОбмена(Результат.ИмяПланаОбмена, "ПравилаОбмена")); + + Результат.Вставить("ВидПравилПРО", Перечисления.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273.mdo" new file mode 100644 index 00000000..5a9af4a3 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\274\320\277\320\273\320\265\320\272\321\202\320\237\321\200\320\260\320\262\320\270\320\273.mdo" @@ -0,0 +1,19 @@ + + + ЗагрузитьКомплектПравил + + ru + Загрузить комплект правил + + FormCommandBarImportant + + PictureAndText + + ru + Загрузить комплект правил синхронизации данных + + + StdPicture.LoadReportSettings + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/CommandModule.bsl" new file mode 100644 index 00000000..deaae6de --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/CommandModule.bsl" @@ -0,0 +1,49 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьКурсыКлиент", ЭтотОбъект); + ПоказатьВопрос(ОписаниеОповещения, + НСтр("ru = 'Будет произведена загрузка файла с полной информацией по курсами всех валют за все время из менеджера сервиса. + |Курсы валют, помеченных в областях данных для загрузки из сети Интернет, будут заменены в фоновом задании. Продолжить?'"), + РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ЗагрузитьКурсыКлиент(Ответ, ДополнительныеПараметры) Экспорт + + Если Ответ = КодВозвратаДиалога.Нет Тогда + Возврат; + КонецЕсли; + + ЗагрузитьКурсы(); + + ПоказатьОповещениеПользователя( + НСтр("ru = 'Загрузка запланирована.'"), , + НСтр("ru = 'Курсы будут загружены в фоновом режиме через непродолжительное время.'"), + БиблиотекаКартинок.Информация32); + +КонецПроцедуры + +&НаСервере +Процедура ЗагрузитьКурсы() + + РаботаСКурсамиВалютСлужебный.ЗагрузитьКурсы(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202.mdo" new file mode 100644 index 00000000..e53119dd --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202.mdo" @@ -0,0 +1,12 @@ + + + ЗагрузитьКурсыВалют + + ru + Загрузить курсы валют + + ActionsPanelTools + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" new file mode 100644 index 00000000..fc2bf6ee --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" @@ -0,0 +1,34 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + // вызов сервера + ИмяПланаОбмена = ИмяПланаОбмена(ПараметрКоманды); + + // вызов сервера + ВидПравил = ПредопределенноеЗначение("Перечисление.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов"); + + Отбор = Новый Структура("ИмяПланаОбмена, ВидПравил", ИмяПланаОбмена, ВидПравил); + ЗначенияЗаполнения = Новый Структура("ИмяПланаОбмена, ВидПравил", ИмяПланаОбмена, ВидПравил); + + ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, ЗначенияЗаполнения, "ПравилаДляОбменаДанными", ПараметрыВыполненияКоманды.Источник, "ПравилаКонвертацииОбъектов"); + +КонецПроцедуры + +&НаСервере +Функция ИмяПланаОбмена(Знач УзелИнформационнойБазы) + + Возврат ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..abfb435c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" @@ -0,0 +1,12 @@ + + + ЗагрузитьПравилаКонвертацииОбъектов + + ru + Загрузить правила конвертации объектов + + CommandGroup.ПараметрыСинхронизацииДанных + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" new file mode 100644 index 00000000..67333a39 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" @@ -0,0 +1,34 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + // вызов сервера + ИмяПланаОбмена = ИмяПланаОбмена(ПараметрКоманды); + + // вызов сервера + ВидПравил = ПредопределенноеЗначение("Перечисление.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов"); + + Отбор = Новый Структура("ИмяПланаОбмена, ВидПравил", ИмяПланаОбмена, ВидПравил); + ЗначенияЗаполнения = Новый Структура("ИмяПланаОбмена, ВидПравил", ИмяПланаОбмена, ВидПравил); + + ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, ЗначенияЗаполнения, "ПравилаДляОбменаДанными", ПараметрыВыполненияКоманды.Источник, "ПравилаРегистрацииОбъектов"); + +КонецПроцедуры + +&НаСервере +Функция ИмяПланаОбмена(Знач УзелИнформационнойБазы) + + Возврат ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..0f36b19b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\270\320\273\320\260\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" @@ -0,0 +1,12 @@ + + + ЗагрузитьПравилаРегистрацииОбъектов + + ru + Загрузить правила регистрации объектов + + CommandGroup.ПараметрыСинхронизацииДанных + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203/CommandModule.bsl" new file mode 100644 index 00000000..ac30a206 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203/CommandModule.bsl" @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОткрытьФорму("Задача.ЗадачаИсполнителя.Форма.ЗадачиПоБизнесПроцессу", + Новый Структура("ЗначениеОтбора", ПараметрКоманды), + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Источник.КлючУникальности, + ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203.mdo" new file mode 100644 index 00000000..a8722b15 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\321\203.mdo" @@ -0,0 +1,21 @@ + + + ЗадачиПоБизнесПроцессу + + ru + Задачи + + FormCommandBarImportant + + DefinedType.БизнесПроцесс + + PictureAndText + + ru + Открыть задачи бизнес-процесса + + + StdPicture.Task + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" new file mode 100644 index 00000000..816933ca --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОткрытьФорму("Задача.ЗадачаИсполнителя.Форма.ЗадачиПоПредмету", + Новый Структура("ЗначениеОтбора", ПараметрКоманды), + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Источник.КлючУникальности, + ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" new file mode 100644 index 00000000..4d86947f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\227\320\260\320\264\320\260\321\207\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" @@ -0,0 +1,22 @@ + + + ЗадачиПоПредмету + + ru + Задачи + + Задачи, созданные на основании выбранного предмета + FormNavigationPanelGoTo + + DefinedType.ПредметЗадачи + + Auto + + ru + Связанные задачи + + + StdPicture.Task + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/CommandModule.bsl" new file mode 100644 index 00000000..64d9dc41 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/CommandModule.bsl" @@ -0,0 +1,31 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Если ПараметрКоманды = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТипЗнч(ПараметрКоманды) = Тип("Массив") Тогда + Если ПараметрКоманды.Количество() = 0 Тогда + Возврат; + КонецЕсли; + СсылкаНаОбъект = ПараметрКоманды[0]; + Иначе + СсылкаНаОбъект = ПараметрКоманды; + КонецЕсли; + + ВерсионированиеОбъектовКлиент.ПоказатьИсториюИзменений(СсылкаНаОбъект, ПараметрыВыполненияКоманды.Источник); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271.mdo" new file mode 100644 index 00000000..9342583b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271.mdo" @@ -0,0 +1,21 @@ + + + ИсторияИзменений + + ru + История изменений + + FormCommandBarImportant + + DefinedType.ВерсионируемыеДанные + + Picture + + ru + Перейти к истории изменений + + + StdPicture.DataHistory + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/CommandModule.bsl" new file mode 100644 index 00000000..6b9f9eab --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/CommandModule.bsl" @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОткрытьФорму("Обработка.КартаМаршрутаБизнесПроцесса.Форма", + Новый Структура("БизнесПроцесс", ПараметрКоманды), + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260.mdo" new file mode 100644 index 00000000..d37e9fce --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/\320\232\320\260\321\200\321\202\320\260\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260.mdo" @@ -0,0 +1,21 @@ + + + КартаМаршрутаБизнесПроцесса + + ru + Карта маршрута + + FormCommandBarImportant + + DefinedType.БизнесПроцесс + + Auto + + ru + Открыть карту маршрута бизнес-процесса + + + StdPicture.BusinessProcessObject + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" new file mode 100644 index 00000000..1709b888 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ПараметрыФормы = Новый Структура("Предмет", ПараметрКоманды); + ОткрытьФорму("Справочник.Заметки.Форма.ЗаметкиПоПредмету", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" new file mode 100644 index 00000000..18854986 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\234\320\276\320\270\320\227\320\260\320\274\320\265\321\202\320\272\320\270\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" @@ -0,0 +1,14 @@ + + + МоиЗаметкиПоПредмету + + ru + Мои заметки + + FormNavigationPanelGoTo + + DefinedType.ПредметЗаметок + + PictureAndText + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214/CommandModule.bsl" new file mode 100644 index 00000000..94c13a59 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214/CommandModule.bsl" @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ПараметрыФормы = Новый Структура("Источник", ПараметрКоманды); + ОткрытьФорму("РегистрСведений.НапоминанияПользователя.Форма.Напоминание", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214.mdo" new file mode 100644 index 00000000..7d916bc1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214/\320\235\320\260\320\277\320\276\320\274\320\275\320\270\321\202\321\214.mdo" @@ -0,0 +1,21 @@ + + + Напомнить + + ru + Напомнить... + + CommandGroup.Органайзер + + DefinedType.ПредметНапоминания + + Auto + + ru + Установить напоминание по выбранному предмету + + + CommonPicture.Напоминание + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260/CommandModule.bsl" new file mode 100644 index 00000000..d07808d6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260/CommandModule.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(СсылкаНаОбъект, ПараметрыВыполненияКоманды) + + Если СсылкаНаОбъект = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура("СсылкаНаОбъект", СсылкаНаОбъект); + ОткрытьФорму("ОбщаяФорма.НастройкиПравОбъектов", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260.mdo" new file mode 100644 index 00000000..21022443 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\270\321\202\321\214\320\237\321\200\320\260\320\262\320\260.mdo" @@ -0,0 +1,18 @@ + + + НастроитьПрава + + ru + Настроить права + + FormCommandBarImportant + + CatalogRef.ПапкиФайлов + + Auto + + ru + Настроить права доступа к объекту + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/CommandModule.bsl" new file mode 100644 index 00000000..6b3cbb33 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/CommandModule.bsl" @@ -0,0 +1,19 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОткрытьФорму("ОбщаяФорма.НастройкаКолонтитулов",, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262.mdo" new file mode 100644 index 00000000..588c9b0c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262.mdo" @@ -0,0 +1,12 @@ + + + НастройкаКолонтитулов + + ru + Настройка колонтитулов + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/CommandModule.bsl" new file mode 100644 index 00000000..0a7b4159 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму("ОбщаяФорма.НастройкаОнлайнПоддержки"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" new file mode 100644 index 00000000..7cd557ec --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" @@ -0,0 +1,13 @@ + + + НастройкаОнлайнПоддержки + + ru + Настройка онлайн-поддержки + + FormCommandBarImportant + + Auto + + true + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/CommandModule.bsl" new file mode 100644 index 00000000..2a4bfaea --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/CommandModule.bsl" @@ -0,0 +1,34 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму( + "Справочник.УчетныеЗаписиЭлектроннойПочты.ФормаОбъекта", + Новый Структура("Ключ", УчетнаяЗапись()), + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция УчетнаяЗапись() + + Возврат РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" new file mode 100644 index 00000000..26957e6d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\241\320\270\321\201\321\202\320\265\320\274\320\275\320\276\320\271\320\243\321\207\320\265\321\202\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\321\207\321\202\321\213.mdo" @@ -0,0 +1,16 @@ + + + НастройкаСистемнойУчетнойЗаписиЭлектроннойПочты + + ru + Настройка системной учетной записи + + ActionsPanelTools + + Auto + + ru + Открыть форму настройки системной учетной записи электронной почты + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/CommandModule.bsl" new file mode 100644 index 00000000..7adfd786 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/CommandModule.bsl" @@ -0,0 +1,60 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Корреспондент = ПараметрКоманды; + ИдентификаторНастройки = ""; + + Если ОбменДаннымиСВнешнейСистемой(Корреспондент, ИдентификаторНастройки) Тогда + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОбменДаннымиСВнешнимиСистемами") Тогда + + Контекст = Новый Структура; + Контекст.Вставить("ИдентификаторНастройки", ИдентификаторНастройки); + Контекст.Вставить("Корреспондент", Корреспондент); + Контекст.Вставить("Режим", "РедактированиеПараметровПодключения"); + + Отказ = Ложь; + ИмяФормыПомощника = ""; + ПараметрыПомощника = Новый Структура; + + МодульОбменДаннымиСВнешнимиСистемамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбменДаннымиСВнешнимиСистемамиКлиент"); + МодульОбменДаннымиСВнешнимиСистемамиКлиент.ПередНастройкойПараметровПодключения( + Контекст, Отказ, ИмяФормыПомощника, ПараметрыПомощника); + + Если Не Отказ Тогда + ОткрытьФорму(ИмяФормыПомощника, + ПараметрыПомощника, ЭтотОбъект, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + КонецЕсли; + КонецЕсли; + Возврат; + КонецЕсли; + + Отбор = Новый Структура("Корреспондент", Корреспондент); + ЗначенияЗаполнения = Новый Структура("Корреспондент", Корреспондент); + + ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, + ЗначенияЗаполнения, "НастройкиТранспортаОбменаДанными", ПараметрыВыполненияКоманды.Источник); + +КонецПроцедуры + +&НаСервере +Функция ОбменДаннымиСВнешнейСистемой(Корреспондент, ИдентификаторНастройки = "") + + ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(Корреспондент); + + ИдентификаторНастройки = ОбменДаннымиСервер.СохраненныйВариантНастройкиУзлаПланаОбмена(Корреспондент); + + Возврат ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.ВнешняяСистема; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..c9bef7ca --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,16 @@ + + + НастройкиПодключения + + ru + Настройки подключения + + CommandGroup.ПараметрыСинхронизацииДанных + + Auto + + ru + Настройка параметров подключения обмена данными + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" new file mode 100644 index 00000000..8370b0da --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму("ОбщаяФорма.СинхронизацияДанных"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" new file mode 100644 index 00000000..31499d81 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" @@ -0,0 +1,12 @@ + + + НастройкиСинхронизацииДанных + + ru + Настройки синхронизации данных + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216/CommandModule.bsl" new file mode 100644 index 00000000..3fe549f1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216/CommandModule.bsl" @@ -0,0 +1,30 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура( + "Респондент, + |РежимАнкетирования"); + ПараметрыФормы.Респондент = ПараметрКоманды; + ПараметрыФормы.РежимАнкетирования = ПредопределенноеЗначение("Перечисление.РежимыАнкетирования.Интервью"); + + ОткрытьФорму( + "Обработка.ДоступныеАнкеты.Форма.Форма", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно, , , + РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216.mdo" new file mode 100644 index 00000000..99a977e9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216/\320\235\320\260\321\207\320\260\321\202\321\214\320\230\320\275\321\202\320\265\321\200\320\262\321\214\321\216.mdo" @@ -0,0 +1,18 @@ + + + НачатьИнтервью + + ru + Начать интервью + + FormCommandBarImportant + + DefinedType.Респондент + + Auto + + ru + Интервью респондента по одному из назначенных ему опросов + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217/CommandModule.bsl" new file mode 100644 index 00000000..2d696b34 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217/CommandModule.bsl" @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + НовоеОбсуждение = НовоеОбсуждение(ПараметрКоманды); + + Если НовоеОбсуждение = "Недоступно" Или НовоеОбсуждение = "НеПодключеноНетПравНаПодключение" Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Использование обсуждений недоступно. Обратитесь к администратору.'")); + Возврат; + ИначеЕсли НовоеОбсуждение = "НеПодключеноВозможноПодключить" Тогда + ПредлагатьОбсужденияТекст = + НСтр("ru = 'Включить обсуждения? + | + |С их помощью пользователи смогут отправлять друг другу текстовые сообщения + |и совершать видеозвонки, создавать тематические обсуждения и вести переписку по документам.'"); + ОповещениеОЗавершении = Новый ОписаниеОповещения("ПредлагатьОбсужденияЗавершение", ЭтотОбъект); + + ПоказатьВопрос(ОповещениеОЗавершении, ПредлагатьОбсужденияТекст, РежимДиалогаВопрос.ДаНет); + Возврат; + КонецЕсли; + + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НовоеОбсуждение); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПредлагатьОбсужденияЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт + + Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + ОбсужденияСлужебныйКлиент.ПоказатьПодключение(); + +КонецПроцедуры + +&НаСервере +Функция НовоеОбсуждение(ПользовательСсылка) + + Если Не ОбсужденияСлужебныйВызовСервера.Подключены() Тогда + Если ПравоДоступа("РегистрацияИнформационнойБазыСистемыВзаимодействия", Метаданные) Тогда + Возврат "НеПодключеноВозможноПодключить"; + Иначе + Возврат "НеПодключеноНетПравНаПодключение"; + КонецЕсли; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + ИдентификаторПользователяИнформационнойБазы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ПользовательСсылка, "ИдентификаторПользователяИБ"); + УстановитьПривилегированныйРежим(Ложь); + + Если Не ЗначениеЗаполнено(ИдентификаторПользователяИнформационнойБазы) Тогда + Возврат "Недоступно"; + КонецЕсли; + + Попытка + ИдентификаторПользователяСВ = СистемаВзаимодействия.ПолучитьИдентификаторПользователя( + ИдентификаторПользователяИнформационнойБазы); + Исключение + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для начала обсуждения необходимо, чтобы пользователь %1 + |хотя бы один раз запустил программу.'"), + ПользовательСсылка); + КонецПопытки; + + Если ИдентификаторПользователяСВ = СистемаВзаимодействия.ИдентификаторТекущегоПользователя() Тогда + ВызватьИсключение НСтр("ru = 'Для начала обсуждения выберите другого пользователя.'"); + КонецЕсли; + + Обсуждение = СистемаВзаимодействия.СоздатьОбсуждение(); + Обсуждение.Групповое = Ложь; + Обсуждение.Участники.Добавить(СистемаВзаимодействия.ИдентификаторТекущегоПользователя()); + Обсуждение.Участники.Добавить(ИдентификаторПользователяСВ); + Обсуждение.Записать(); + + Возврат ПолучитьНавигационнуюСсылку(Обсуждение.Идентификатор); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..269b593c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217/\320\236\320\261\321\201\321\203\320\266\320\264\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,21 @@ + + + Обсуждения + + ru + Обсуждения + + FormCommandBarImportant + + CatalogRef.Пользователи + + Auto + + ru + Начать обсуждение с пользователем + + + CommonPicture.Комментарий + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS/CommandModule.bsl" new file mode 100644 index 00000000..03ecbd4a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS/CommandModule.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ДополнительныеПараметры = Новый Структура("ИмяФормыИсточникаСообщения", ""); + Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("ФормаКлиентскогоПриложения") Тогда + ДополнительныеПараметры.ИмяФормыИсточникаСообщения = ПараметрыВыполненияКоманды.Источник.ИмяФормы; + КонецЕсли; + + ШаблоныСообщенийКлиент.СформироватьСообщение(ПараметрКоманды, "СообщениеSMS",,, ДополнительныеПараметры); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS.mdo" new file mode 100644 index 00000000..bb20c453 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214SMS.mdo" @@ -0,0 +1,14 @@ + + + ОтправитьSMS + + ru + Отправить SMS... + + CommandGroup.Органайзер + + DefinedType.ПредметШаблонаСообщения + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276/CommandModule.bsl" new file mode 100644 index 00000000..ae784fd8 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276/CommandModule.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ДополнительныеПараметры = Новый Структура("ИмяФормыИсточникаСообщения", ""); + Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("ФормаКлиентскогоПриложения") Тогда + ДополнительныеПараметры.ИмяФормыИсточникаСообщения = ПараметрыВыполненияКоманды.Источник.ИмяФормы; + КонецЕсли; + + ШаблоныСообщенийКлиент.СформироватьСообщение(ПараметрКоманды, "Письмо",,, ДополнительныеПараметры); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276.mdo" new file mode 100644 index 00000000..72c743aa --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276/\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\321\214\320\237\320\270\321\201\321\214\320\274\320\276.mdo" @@ -0,0 +1,14 @@ + + + ОтправитьПисьмо + + ru + Отправить письмо... + + CommandGroup.Органайзер + + DefinedType.ПредметШаблонаСообщения + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" new file mode 100644 index 00000000..0eced228 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandModule.bsl" @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполнения) + ВариантыОтчетовКлиент.ПоказатьПанельОтчетов("Администрирование", ПараметрыВыполнения); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" new file mode 100644 index 00000000..239b95ec --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" @@ -0,0 +1,16 @@ + + + ПанельОтчетовАдминистрирование + + ru + Отчеты администратора + + NavigationPanelOrdinary + + Auto + + ru + Отчеты по журналу регистрации и другие отчеты для администрирования программы. + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/CommandModule.bsl" new file mode 100644 index 00000000..86b80368 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/CommandModule.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + +#Если ВебКлиент Тогда + ПоказатьПредупреждение(, НСтр("ru = 'В веб-клиенте параметры прокси-сервера необходимо задавать в настройках браузера.'")); + Возврат; +#КонецЕсли + + ОткрытьФорму("ОбщаяФорма.ПараметрыПроксиСервера", Новый Структура("НастройкаПроксиНаКлиенте", Истина)); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" new file mode 100644 index 00000000..b32906cb --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\320\260\321\217\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -0,0 +1,12 @@ + + + ПерсональнаяНастройкаПроксиСервера + + ru + Персональная настройка прокси сервера + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/CommandModule.bsl" new file mode 100644 index 00000000..78603202 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/CommandModule.bsl" @@ -0,0 +1,28 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыРаботы = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске(); + ПараметрыРезервногоКопирования = ПараметрыРаботы.РезервноеКопированиеИБ; + + ПараметрыФормы = Новый Структура(); + + Если ПараметрыРезервногоКопирования.Свойство("РезультатКопирования") Тогда + ПараметрыФормы.Вставить("РежимРаботы", ?(ПараметрыРезервногоКопирования.РезультатКопирования, "УспешноВыполнено", "НеВыполнено")); + ПараметрыФормы.Вставить("ИмяФайлаРезервнойКопии", ПараметрыРезервногоКопирования.ИмяФайлаРезервнойКопии); + КонецЕсли; + + ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеДанных", ПараметрыФормы); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..05439132 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\263\320\276\320\232\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" @@ -0,0 +1,12 @@ + + + ПоказатьРезультатРезервногоКопирования + + ru + Показать результат резервного копирования + + NavigationPanelSeeAlso + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/CommandModule.bsl" new file mode 100644 index 00000000..e2a67d73 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/CommandModule.bsl" @@ -0,0 +1,52 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Отказ = Ложь; + + АдресВременногоХранилища = ""; + + ПолучитьНастройкиОбменаДаннымиДляВторойИнформационнойБазыНаСервере(Отказ, АдресВременногоХранилища, ПараметрКоманды); + + Если Отказ Тогда + + ПоказатьПредупреждение(, НСтр("ru = 'Возникли ошибки при получении настроек обмена данными.'")); + + Иначе + + ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла(); + ПараметрыСохранения.Диалог.Фильтр = "Файлы XML (*.xml)|*.xml"; + + ФайловаяСистемаКлиент.СохранитьФайл( + Неопределено, + АдресВременногоХранилища, + НСтр("ru = 'Настройки синхронизации данных.xml'"), + ПараметрыСохранения); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ПолучитьНастройкиОбменаДаннымиДляВторойИнформационнойБазыНаСервере(Отказ, АдресВременногоХранилища, УзелИнформационнойБазы) + + ПомощникСозданияОбменаДанными = ОбменДаннымиСервер.МодульПомощникСозданияОбменаДанными().Создать(); + ПомощникСозданияОбменаДанными.Инициализация(УзелИнформационнойБазы); + ПомощникСозданияОбменаДанными.ВыполнитьВыгрузкуПараметровМастераВоВременноеХранилище(Отказ, АдресВременногоХранилища); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" new file mode 100644 index 00000000..c47c2347 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\273\321\217\320\224\321\200\321\203\320\263\320\276\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" @@ -0,0 +1,12 @@ + + + ПолучитьНастройкиСинхронизацииДляДругойПрограммы + + ru + Получить настройки синхронизации для другой программы... + + CommandGroup.ПараметрыСинхронизацииДанных + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260/CommandModule.bsl" new file mode 100644 index 00000000..af750ebb --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260/CommandModule.bsl" @@ -0,0 +1,38 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Если ПараметрКоманды = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента(); + + Если ПараметрыРаботыКлиента.УпрощенныйИнтерфейсНастройкиПравДоступа Тогда + ИмяФормы = "ОбщаяФорма.ПраваДоступаУпрощенно"; + Иначе + ИмяФормы = "ОбщаяФорма.ПраваДоступа"; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Пользователь", ПараметрКоманды); + + ОткрытьФорму( + ИмяФормы, + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" new file mode 100644 index 00000000..37c850e1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260/\320\237\321\200\320\260\320\262\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260.mdo" @@ -0,0 +1,17 @@ + + + ПраваДоступа + + ru + Права доступа + + FormNavigationPanelGoTo + + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213/CommandModule.bsl" new file mode 100644 index 00000000..c7ced8d6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213/CommandModule.bsl" @@ -0,0 +1,19 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Параметры = СтандартныеПодсистемыКлиент.ПараметрыДействийПередЗавершениемРаботыСистемы(); + СтандартныеПодсистемыКлиент.ДействияПередЗавершениемРаботыСистемы(Параметры); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213.mdo" new file mode 100644 index 00000000..cd25f55f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\270\320\240\320\260\320\261\320\276\321\202\321\213.mdo" @@ -0,0 +1,12 @@ + + + ПредупрежденияПриЗавершенииРаботы + + ru + Предупреждения при завершении работы + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" new file mode 100644 index 00000000..e5559dd6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.Форма", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" new file mode 100644 index 00000000..1d1677d6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205.mdo" @@ -0,0 +1,12 @@ + + + ПредупрежденияПриСинхронизацииДанных + + ru + Предупреждения при синхронизации данных + + NavigationPanelOrdinary + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" new file mode 100644 index 00000000..604d1dec --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" @@ -0,0 +1,26 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ВладелецФайла", ПараметрКоманды); + ПараметрыФормы.Вставить("ТолькоПросмотр", ПараметрыВыполненияКоманды.Источник.ТолькоПросмотр); + + ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ПрисоединенныеФайлы", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..c27f2720 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\237\321\200\320\270\321\201\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,14 @@ + + + ПрисоединенныеФайлы + + ru + Присоединенные файлы + + FormNavigationPanelGoTo + + DefinedType.ВладелецПрисоединенныхФайлов + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260/CommandModule.bsl" new file mode 100644 index 00000000..a10f55ad --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260/CommandModule.bsl" @@ -0,0 +1,34 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Если НЕ ЕстьФайлыВТомах() Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Файлы в томах отсутствуют.'")); + Возврат; + КонецЕсли; + + ОткрытьФорму("ОбщаяФорма.ВыборПутиКАрхивуФайловТомов", , ПараметрыВыполненияКоманды.Источник); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ЕстьФайлыВТомах() + + Возврат РаботаСФайламиСлужебный.ЕстьФайлыВТомах(); + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260.mdo" new file mode 100644 index 00000000..42d91e7b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260/\320\240\320\260\320\267\320\274\320\265\321\201\321\202\320\270\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260.mdo" @@ -0,0 +1,16 @@ + + + РазместитьФайлыНачальногоОбраза + + ru + Разместить файлы начального образа + + ActionsPanelTools + + Auto + + ru + Разместить файлы из архива файлов начального образа + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" new file mode 100644 index 00000000..794fa49a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213/CommandModule.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму( + "Обработка.РаботаСФайлами.Форма.РедактируемыеФайлы", + , + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" new file mode 100644 index 00000000..9dd059d9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213/\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\244\320\260\320\271\320\273\321\213.mdo" @@ -0,0 +1,16 @@ + + + РедактируемыеФайлы + + ru + Редактируемые файлы + + NavigationPanelOrdinary + + Auto + + ru + Открывает список редактируемых файлов в папках + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207/CommandModule.bsl" new file mode 100644 index 00000000..cba7b82c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207/CommandModule.bsl" @@ -0,0 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОткрытьФорму("РегистрСведений.ИсполнителиЗадач.Форма.РолиИИсполнителиЗадач", + Новый Структура("ОсновнойОбъектАдресации", ПараметрКоманды), + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207.mdo" new file mode 100644 index 00000000..e9384ec1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207/\320\240\320\276\320\273\320\270\320\230\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\320\270\320\227\320\260\320\264\320\260\321\207.mdo" @@ -0,0 +1,21 @@ + + + РолиИИсполнителиЗадач + + ru + Роли и исполнители задач + + FormNavigationPanelGoTo + + DefinedType.ОбъектАдресации + + PictureAndText + + ru + Назначить исполнителей на роли бизнес-процессов + + + StdPicture.User + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265/CommandModule.bsl" new file mode 100644 index 00000000..a047e1b6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПоказатьЗначение(, ПользователиКлиент.АвторизованныйПользователь()); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265.mdo" new file mode 100644 index 00000000..3dcc597b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265/\320\241\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\236\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265.mdo" @@ -0,0 +1,12 @@ + + + СведенияОПользователе + + ru + Сведения о пользователе + + ActionsPanelTools + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/CommandModule.bsl" new file mode 100644 index 00000000..d7db863c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/CommandModule.bsl" @@ -0,0 +1,26 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Если Не ЗначениеЗаполнено(ПараметрКоманды) Тогда + Возврат; + КонецЕсли; + + ОткрытьФорму("ОбщаяФорма.СвязанныеДокументы", + Новый Структура("ОбъектОтбора", ПараметрКоманды), + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Источник.КлючУникальности, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213.mdo" new file mode 100644 index 00000000..2f3d2286 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213.mdo" @@ -0,0 +1,19 @@ + + + СвязанныеДокументы + + ru + Связанные документы + + FormNavigationPanelGoTo + + Auto + + ru + Перейти к иерархическому списку связанных документов + + + CommonPicture.СтруктураПодчиненности + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/CommandModule.bsl" new file mode 100644 index 00000000..805bc98f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/CommandModule.bsl" @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ВызовОнлайнПоддержкиКлиент.ВызватьОнлайнПоддержку(); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" new file mode 100644 index 00000000..b82f47d9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\241\320\262\321\217\320\267\320\260\321\202\321\214\321\201\321\217\320\241\320\276\320\241\320\277\320\265\321\206\320\270\320\260\320\273\320\270\321\201\321\202\320\276\320\274\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" @@ -0,0 +1,15 @@ + + + СвязатьсяСоСпециалистомОнлайнПоддержки + + ru + Связаться со специалистом онлайн-поддержки + + FormCommandBarImportant + + + ru + Мгновенное соединение со специалистом онлайн-поддержки + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" new file mode 100644 index 00000000..4dc008e4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/CommandModule.bsl" @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму("ОбщаяФорма.СинхронизацияДанных",, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" new file mode 100644 index 00000000..187c0785 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" @@ -0,0 +1,16 @@ + + + СинхронизацияДанныхВМоделиСервиса + + ru + Синхронизация данных + + NavigationPanelOrdinary + + Auto + + ru + Синхронизация данных с моими приложениями + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214/CommandModule.bsl" new file mode 100644 index 00000000..ef8f4702 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды.Источник); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214.mdo" new file mode 100644 index 00000000..849e14af --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214.mdo" @@ -0,0 +1,19 @@ + + + Синхронизировать + + ru + Синхронизировать + + CommandGroup.СинхронизацияДанных + + PictureAndText + + ru + Синхронизировать данные автоматически + + + CommonPicture.СинхронизацияДанныхВыполнение + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270/CommandModule.bsl" new file mode 100644 index 00000000..ecd01e69 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОбменДаннымиКлиент.ОткрытьПомощникСопоставленияОбъектовОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды.Источник); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270.mdo" new file mode 100644 index 00000000..5c41e356 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270/\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\241\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\274\320\270\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274\320\270.mdo" @@ -0,0 +1,19 @@ + + + СинхронизироватьСДополнительнымиПараметрами + + ru + Синхронизировать с дополнительными параметрами... + + CommandGroup.СинхронизацияДанных + + PictureAndText + + ru + Синхронизировать данные, задав дополнительные параметры + + + CommonPicture.СинхронизацияДанныхИнтерактивноеВыполнение + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" new file mode 100644 index 00000000..99bf815f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" @@ -0,0 +1,43 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыВопроса = ЗащитаПерсональныхДанныхВызовСервера.ПараметрыВопросаПодтвержденияСкрытия(ПараметрКоманды); + + Субъекты = ПараметрыВопроса.Субъекты; + Если Субъекты.Количество() > 0 Тогда + + Оповещение = Новый ОписаниеОповещения("ОбработкаКомандыЗавершение", ЭтотОбъект, Субъекты); + ПоказатьВопрос(Оповещение, ПараметрыВопроса.ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбработкаКомандыЗавершение(Результат, Субъекты) Экспорт + + Если Результат = КодВозвратаДиалога.Да Тогда + + ЗащитаПерсональныхДанныхВызовСервера.СкрытьПерсональныеДанныеСубъектов(Субъекты, Истина); + Оповестить("СкрытыПерсональныеДанные"); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..51c15276 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\241\320\272\321\200\321\213\321\202\321\214\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\203\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" @@ -0,0 +1,19 @@ + + + СкрытьПерсональныеДанныеСубъектов + + ru + Скрыть ПДн + + FormCommandBarImportant + + DefinedType.СубъектПерсональныхДанных + + Multiple + Auto + + ru + Скрыть персональные данные субъектов + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214/CommandModule.bsl" new file mode 100644 index 00000000..4516bcdf --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПользователиСлужебныйКлиент.ОткрытьФормуСменыПароля(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214.mdo" new file mode 100644 index 00000000..f00e9bb4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214/\320\241\320\274\320\265\320\275\320\270\321\202\321\214\320\237\320\260\321\200\320\276\320\273\321\214.mdo" @@ -0,0 +1,12 @@ + + + СменитьПароль + + ru + Сменить пароль + + ActionsPanelTools + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270/CommandModule.bsl" new file mode 100644 index 00000000..e40280b7 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(УзелИнформационнойБазы, ПараметрыВыполненияКоманды) + + ОбменДаннымиКлиент.ПерейтиВЖурналРегистрацииСобытийДанных(УзелИнформационнойБазы, ПараметрыВыполненияКоманды, "ВыгрузкаДанных"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270.mdo" new file mode 100644 index 00000000..328be59c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270.mdo" @@ -0,0 +1,19 @@ + + + СобытияОтправки + + ru + События отправки + + FormNavigationPanelGoTo + + PictureAndText + + ru + События отправки данных + + + StdPicture.EventLog + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217/CommandModule.bsl" new file mode 100644 index 00000000..6dc5299c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(УзелИнформационнойБазы, ПараметрыВыполненияКоманды) + + ОбменДаннымиКлиент.ПерейтиВЖурналРегистрацииСобытийДанных(УзелИнформационнойБазы, ПараметрыВыполненияКоманды, "ЗагрузкаДанных"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..9bbd35a4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217/\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,19 @@ + + + СобытияПолучения + + ru + События получения + + FormNavigationPanelGoTo + + PictureAndText + + ru + События получения данных + + + StdPicture.EventLog + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/CommandModule.bsl" new file mode 100644 index 00000000..9944aed7 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/CommandModule.bsl" @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ПараметрыФормы = Новый Структура("Узел", ПараметрКоманды); + ОткрытьФорму("ОбщаяФорма.СозданиеНачальногоОбразаСФайлами", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.mdo" new file mode 100644 index 00000000..0cc68941 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\236\320\261\321\200\320\260\320\267\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.mdo" @@ -0,0 +1,15 @@ + + + СозданиеНачальногоОбразаСФайлами + + ru + Создание начального образа с файлами + + FormCommandBarImportant + + PictureAndText + + StdPicture.CreateInitialImage + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" new file mode 100644 index 00000000..8d4101f5 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/CommandModule.bsl" @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок( + ПараметрКоманды, + ПараметрыВыполненияКоманды, + ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиСозданиеСвязанныхОбъектов()); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..1212a901 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" @@ -0,0 +1,20 @@ + + + СозданиеСвязанныхОбъектов + + ru + Создание связанных объектов... + + FormCommandBarCreateBasedOn + + DefinedType.ОбъектСДополнительнымиКомандами + + Multiple + true + Auto + + ru + Перейти к списку дополнительных обработок для создания связанных объектов + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" new file mode 100644 index 00000000..82a61599 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ПараметрыФормы = Новый Структура("Предмет", ПараметрКоманды); + ПараметрыФормы.Вставить("Напоминать",Ложь); + ОткрытьФорму("Справочник.Заметки.ФормаОбъекта", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" new file mode 100644 index 00000000..9d5b1cf6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\227\320\260\320\274\320\265\321\202\320\272\321\203\320\237\320\276\320\237\321\200\320\265\320\264\320\274\320\265\321\202\321\203.mdo" @@ -0,0 +1,17 @@ + + + СоздатьЗаметкуПоПредмету + + ru + Создать заметку + + CommandGroup.Органайзер + + DefinedType.ПредметЗаметок + + Auto + + CommonPicture.Заметка + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" new file mode 100644 index 00000000..9124b6ee --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОбменДаннымиКлиент.ОткрытьСоставОтправляемыхДанных(ПараметрКоманды); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205.mdo" new file mode 100644 index 00000000..aba181a7 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/\320\241\320\276\321\201\321\202\320\260\320\262\320\236\321\202\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205.mdo" @@ -0,0 +1,15 @@ + + + СоставОтправляемыхДанных + + ru + Состав отправляемых данных + + CommandGroup.ПараметрыСинхронизацииДанных + + Auto + + StdPicture.InputFieldOpen + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/CommandModule.bsl" new file mode 100644 index 00000000..0338dfd5 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/CommandModule.bsl" @@ -0,0 +1,19 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура("УзелИнформационнойБазы", ПараметрКоманды); + ОткрытьФорму("Справочник.СценарииОбменовДанными.Форма.НастройкаРасписанияОбменовДанными", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.mdo" new file mode 100644 index 00000000..04dd8e13 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.mdo" @@ -0,0 +1,16 @@ + + + СценарииСинхронизации + + ru + Сценарии синхронизации + + FormNavigationPanelImportant + + Auto + + ru + Сценарии синхронизации данных + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/CommandModule.bsl" new file mode 100644 index 00000000..2c2ebd25 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/CommandModule.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("ФормаКлиентскогоПриложения") Тогда + ПараметрыВыполненияКоманды.Источник.Закрыть(); + КонецЕсли; + + ОбменДаннымиКлиент.УдалитьНастройкуСинхронизации(ПараметрКоманды); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.mdo" new file mode 100644 index 00000000..18bd0160 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270/\320\243\320\264\320\260\320\273\320\270\321\202\321\214\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\321\203\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.mdo" @@ -0,0 +1,15 @@ + + + УдалитьНастройкуСинхронизации + + ru + Удалить настройку синхронизации + + CommandGroup.ПараметрыСинхронизацииДанных + + Auto + + StdPicture.Delete + + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274/CommandModule.bsl" new file mode 100644 index 00000000..6c256565 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274/CommandModule.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + НачатьУстановкуРасширенияРаботыСФайлами(); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274.mdo" new file mode 100644 index 00000000..c70aeeee --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\224\320\273\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\2411\320\241\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265\320\274.mdo" @@ -0,0 +1,12 @@ + + + УстановитьРасширениеДляРаботыС1СПредприятием + + ru + Установить расширение для работы с 1С:Предприятием + + ActionsPanelTools + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265/CommandModule.bsl" "b/tests/metadata/ssl/src/CommonCommands/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265/CommandModule.bsl" new file mode 100644 index 00000000..6f413eac --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265/CommandModule.bsl" @@ -0,0 +1,25 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Том", ПараметрКоманды); + + ОткрытьФорму("ОбщаяФорма.ФайлыВТоме", + ПараметрыФормы, + ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, + ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonCommands/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265.mdo" "b/tests/metadata/ssl/src/CommonCommands/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265.mdo" new file mode 100644 index 00000000..37fe3f5c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonCommands/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265/\320\244\320\260\320\271\320\273\321\213\320\222\320\242\320\276\320\274\320\265.mdo" @@ -0,0 +1,14 @@ + + + ФайлыВТоме + + ru + Файлы в томе + + FormNavigationPanelGoTo + + CatalogRef.ТомаХраненияФайлов + + Auto + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/Form.form" new file mode 100644 index 00000000..698f8069 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/Form.form" @@ -0,0 +1,1676 @@ + + + + АвтономнаяРабота + 2 + + СинхронизацияДанных + 3 + + Группа3 + 56 + + Декорация5 + 57 + true + true + + true + + + Декорация5ExtendedTooltip + 71 + true + true + + true + + Label + true + true + + Left + + + + Декорация5КонтекстноеМеню + 58 + true + true + + true + + true + + 2 + true + 1 + true + + + CommonPicture.Информация + + + + + Декорация4 + 54 + + <key>ru</key> + <value>Настроена синхронизация данных с приложением в Интернете.</value> + + true + true + + true + + + Декорация4ExtendedTooltip + 72 + true + true + + true + + Label + true + true + + Left + + + + Декорация4КонтекстноеМеню + 55 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + Группа3ExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + Группа2 + 4 + + Группа7 + 5 + + ВыполнитьСинхронизациюДанных + 6 + true + true + + true + + true + + ВыполнитьСинхронизациюДанныхExtendedTooltip + 75 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыполнитьСинхронизациюДанных + Auto + true + true + true + UserCmds + Auto + + + Декорация3 + 7 + + <key>ru</key> + <value>Выполнить синхронизацию данных сейчас.</value> + + true + true + + true + + + Декорация3ExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню + 8 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + Группа7ExtendedTooltip + 74 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + Группа1 + 65 + + ИнформацияОПоследнейСинхронизации + 50 + + <key>ru</key> + <value>Последняя синхронизация: <Дата>.</value> + + true + true + + true + + + ИнформацияОПоследнейСинхронизацииExtendedTooltip + 78 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияОПоследнейСинхронизацииКонтекстноеМеню + 51 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + + ПерейтиККонфликтам + 64 + true + true + + true + + + ПерейтиККонфликтамExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПерейтиККонфликтам + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Группа1ExtendedTooltip + 77 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + true + true + + true + + + Группа2ExtendedTooltip + 73 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + НастройкаСинхронизацииДанных + 11 + + Группа10 + 12 + + СинхронизироватьДанныеПриНачалеРаботыПрограммы + 13 + true + true + + true + + + + СинхронизироватьДанныеПриНачалеРаботыПрограммы + + + Right + + OnChange + СинхронизироватьДанныеПриНачалеРаботыПрограммыПриИзменении + + + СинхронизироватьДанныеПриНачалеРаботыПрограммыExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + + СинхронизироватьДанныеПриНачалеРаботыПрограммыКонтекстноеМеню + 14 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + СинхронизироватьДанныеПриЗавершенииРаботыПрограммы + 18 + true + true + + true + + + + СинхронизироватьДанныеПриЗавершенииРаботыПрограммы + + + Right + + OnChange + СинхронизироватьДанныеПриЗавершенииРаботыПрограммыПриИзменении + + + СинхронизироватьДанныеПриЗавершенииРаботыПрограммыExtendedTooltip + 83 + true + true + + true + + Label + true + true + + Left + + + + СинхронизироватьДанныеПриЗавершенииРаботыПрограммыКонтекстноеМеню + 19 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + Декорация9 + 15 + + <key>ru</key> + <value>Если ведется одновременная работа с приложением в Интернете, +то рекомендуется получать актуальные данные каждый раз при начале работы программы +и отправлять данные обратно при завершении работы с программой.</value> + + true + true + + true + + + Декорация9ExtendedTooltip + 84 + true + true + + true + + Label + true + true + + Left + + + + Декорация9КонтекстноеМеню + 16 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + Группа10ExtendedTooltip + 81 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + Группа11 + 22 + + НастройкаАвтоматическойСинхронизации + 63 + + Группа4 + 59 + + СинхронизироватьДанныеПоРасписанию + 23 + true + true + + true + + + + СинхронизироватьДанныеПоРасписанию + + + Right + + OnChange + СинхронизироватьДанныеПоРасписаниюПриИзменении + + + СинхронизироватьДанныеПоРасписаниюExtendedTooltip + 88 + true + true + + true + + Label + true + true + + Left + + + + СинхронизироватьДанныеПоРасписаниюКонтекстноеМеню + 24 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ВариантРасписанияСинхронизацииДанных + 60 + true + true + + true + + + + ВариантРасписанияСинхронизацииДанных + + + None + + OnChange + ВариантРасписанияСинхронизацииДанныхПриИзменении + + + ВариантРасписанияСинхронизацииДанныхExtendedTooltip + 89 + true + true + + true + + Label + true + true + + Left + + + + ВариантРасписанияСинхронизацииДанныхКонтекстноеМеню + 61 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + true + true + true + true + + + + ИзменитьРасписаниеСинхронизацииДанных + 27 + true + true + + true + + + ИзменитьРасписаниеСинхронизацииДанныхExtendedTooltip + 90 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ИзменитьРасписаниеСинхронизацииДанных + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Группа4ExtendedTooltip + 87 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + Декорация11 + 25 + + <key>ru</key> + <value>При наличии постоянного подключения к Интернету +рекомендуется включить автоматическую синхронизацию данных.</value> + + true + true + + true + + + Декорация11ExtendedTooltip + 91 + true + true + + true + + Label + true + true + + Left + + + + Декорация11КонтекстноеМеню + 26 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + + НастроитьПодключение + 62 + true + true + + true + + + НастроитьПодключениеExtendedTooltip + 92 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.НастроитьПодключение + Auto + true + UserCmds + Auto + + + Группа9 + 112 + + ПоказыватьПредупреждениеОДолгойСинхронизации + 109 + true + true + + true + + + + ПоказыватьПредупреждениеОДолгойСинхронизации + + + Right + + OnChange + ПоказыватьПредупреждениеОДолгойСинхронизацииПриИзменении + + + ПоказыватьПредупреждениеОДолгойСинхронизацииРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьПредупреждениеОДолгойСинхронизацииКонтекстноеМеню + 110 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + CheckBox + + + + Декорация1 + 101 + + <key>ru</key> + <value>При синхронизации данных может быть получено обновление из приложения в Интернете. +Получение и установка обновления может занять длительное время.</value> + + true + true + + true + + + Декорация1РасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + + Декорация1КонтекстноеМеню + 102 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + Группа9РасширеннаяПодсказка + 113 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + НастройкаАвтоматическойСинхронизацииExtendedTooltip + 86 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + Группа11ExtendedTooltip + 85 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Синхронизировать данные</value> + + true + + НастройкаСинхронизацииДанныхExtendedTooltip + 80 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Синхронизация данных</value> + + + СинхронизацияДанныхExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ПолученоОбновлениеКонфигурации + 28 + + Группа6 + 29 + + Декорация2 + 30 + true + true + + true + + + Декорация2ExtendedTooltip + 95 + true + true + + true + + Label + true + true + + Left + + + + Декорация2КонтекстноеМеню + 31 + true + true + + true + + true + + 5 + true + 2 + true + + + CommonPicture.Предупреждение32 + + + + + ПоясняющаяНадписьПолученоОбновление + 32 + + <key>ru</key> + <value>Получено обновление программы из Интернета. +Необходимо установить полученное обновление, после чего синхронизация будет продолжена.</value> + + true + true + + true + + + ПоясняющаяНадписьПолученоОбновлениеExtendedTooltip + 96 + true + true + + true + + Label + true + true + + Left + + + + ПоясняющаяНадписьПолученоОбновлениеКонтекстноеМеню + 33 + true + true + + true + + true + + Label + true + + Left + Center + + + true + true + + true + + + Группа6ExtendedTooltip + 94 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + УстановитьОбновление + 34 + true + true + + true + + + УстановитьОбновлениеExtendedTooltip + 97 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УстановитьОбновление + Auto + true + true + UserCmds + Auto + + + Группа5 + 67 + + ИнформацияОПоследнейСинхронизации1 + 52 + + <key>ru</key> + <value>Последняя синхронизация: <Дата>.</value> + + true + true + + true + + + ИнформацияОПоследнейСинхронизации1ExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияОПоследнейСинхронизации1КонтекстноеМеню + 53 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + + ПерейтиККонфликтам1 + 66 + true + true + + true + + + ПерейтиККонфликтам1ExtendedTooltip + 100 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПерейтиККонфликтам + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Группа5ExtendedTooltip + 98 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Получено обновление конфигурации</value> + + + ПолученоОбновлениеКонфигурацииExtendedTooltip + 93 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + АвтономнаяРаботаExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + UseIfNecessary + true + true + + СинхронизироватьДанныеПоРасписанию + + <key>ru</key> + <value>Автоматически:</value> + + 1 + + Boolean + + + true + + + true + + + + СинхронизироватьДанныеПриЗавершенииРаботыПрограммы + + <key>ru</key> + <value>При завершении работы программы</value> + + 2 + + Boolean + + + true + + + true + + + + СинхронизироватьДанныеПриНачалеРаботыПрограммы + + <key>ru</key> + <value>При начале работы программы</value> + + 3 + + Boolean + + + true + + + true + + + + ПриложениеВСервисе + 4 + + ExchangePlanRef + + + true + + + true + + + + ВариантРасписанияСинхронизацииДанных + + <key>ru</key> + <value>Вариант расписания синхронизации данных</value> + + 6 + + Number + + 1 + true + + + + true + + + true + + + + РасписаниеСинхронизацииДанных + 7 + + + true + + + true + + + + ПользовательскоеРасписаниеСинхронизацииДанных + 8 + + + true + + + true + + + + АдресДляВосстановленияПароляУчетнойЗаписи + 9 + + String + + + + true + + + true + + + + ПарольПользователяСохраняется + 10 + + Boolean + + + true + + + true + + + + ПоказыватьПредупреждениеОДолгойСинхронизации + + <key>ru</key> + <value>Запрашивать подтверждение перед запуском синхронизации</value> + + 5 + + Boolean + + + true + + + true + + + + ВыполнитьСинхронизациюДанных + + <key>ru</key> + <value>Синхронизировать</value> + + 1 + + true + + + StdPicture.Refresh + + + + ВыполнитьСинхронизациюДанных + + + TextPicture + DontUse + + + ИзменитьРасписаниеСинхронизацииДанных + + <key>ru</key> + <value>Изменить...</value> + + 2 + + ru + Изменить расписание синхронизации данных + + + true + + + + ИзменитьРасписаниеСинхронизацииДанных + + + DontUse + + + УстановитьОбновление + + <key>ru</key> + <value>Установить обновление</value> + + 3 + + true + + + + УстановитьОбновление + + + DontUse + + + НастроитьПодключение + + <key>ru</key> + <value>Настроить подключение...</value> + + 4 + + ru + Настроить подключение + + + true + + + + НастроитьПодключение + + + DontUse + + + ПерейтиККонфликтам + + <key>ru</key> + <value>Предупреждений нет</value> + + 5 + + ru + Перейти к конфликтам синхронизации данных + + + true + + + + ПерейтиККонфликтам + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..4de26199 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/Module.bsl" @@ -0,0 +1,478 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьПривилегированныйРежим(Истина); + + Если Не АвтономнаяРаботаСлужебный.ЭтоАвтономноеРабочееМесто() Тогда + ВызватьИсключение НСтр("ru = 'Эта информационная база не является автономным рабочим местом.'"); + КонецЕсли; + + ПриложениеВСервисе = АвтономнаяРаботаСлужебный.ПриложениеВСервисе(); + + РегламентноеЗадание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание( + Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете); + + СинхронизироватьДанныеПоРасписанию = РегламентноеЗадание.Использование; + РасписаниеСинхронизацииДанных = РегламентноеЗадание.Расписание; + + ПриИзмененииРасписанияСинхронизацииДанных(); + + СинхронизироватьДанныеПриНачалеРаботыПрограммы = Константы.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы.Получить(); + СинхронизироватьДанныеПриЗавершенииРаботыПрограммы = Константы.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы.Получить(); + + АдресДляВосстановленияПароляУчетнойЗаписи = АвтономнаяРаботаСлужебный.АдресДляВосстановленияПароляУчетнойЗаписи(); + + УстановитьПривилегированныйРежим(Ложь); + + ОбновитьВидимостьНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ПодключитьОбработчикОжидания("ОбновитьВидимость", 60); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ВыполненОбменДанными" Тогда + ОбновитьВидимость(); + + ИначеЕсли ИмяСобытия = "ИзмененыНастройкиПользователя" Тогда + ОбновитьВидимость(); + + ИначеЕсли ИмяСобытия = "Запись_НастройкиТранспортаОбмена" Тогда + + Если Параметр.Свойство("НастройкаАвтоматическойСинхронизации") Тогда + СинхронизироватьДанныеПоРасписанию = Истина; + СинхронизироватьДанныеПоРасписаниюПриИзмененииЗначения(); + КонецЕсли; + + ИначеЕсли ИмяСобытия = "ЗакрытаФормаРезультатовОбменаДанными" Тогда + ОбновитьЗаголовокПереходаККонфликтам(); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПредупреждениеОДолгойСинхронизацииПриИзменении(Элемент) + + ПереключитьПредупреждениеОДолгойСинхронизации(ПоказыватьПредупреждениеОДолгойСинхронизации); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьСинхронизациюДанных(Команда) + + ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(ПриложениеВСервисе, ЭтотОбъект, АдресДляВосстановленияПароляУчетнойЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРасписаниеСинхронизацииДанных(Команда) + + Диалог = Новый ДиалогРасписанияРегламентногоЗадания(РасписаниеСинхронизацииДанных); + ОписаниеОповещения = Новый ОписаниеОповещения("ИзменитьРасписаниеСинхронизацииДанныхЗавершение", ЭтотОбъект); + Диалог.Показать(ОписаниеОповещения); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРасписаниеСинхронизацииДанныхЗавершение(Расписание, ДополнительныеПараметры) Экспорт + + Если Расписание <> Неопределено Тогда + + РасписаниеСинхронизацииДанных = Расписание; + + ИзменитьРасписаниеСинхронизацииДанныхНаСервере(); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьОбновление(Команда) + + ОбменДаннымиКлиент.УстановитьОбновлениеКонфигурации(); + +КонецПроцедуры + +&НаКлиенте +Процедура СинхронизироватьДанныеПоРасписаниюПриИзменении(Элемент) + + Если СинхронизироватьДанныеПоРасписанию И Не ПарольПользователяСохраняется Тогда + + СинхронизироватьДанныеПоРасписанию = Ложь; + + НастроитьПодключениеКСервису(Истина); + + Иначе + + СинхронизироватьДанныеПоРасписаниюПриИзмененииЗначения(); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВариантРасписанияСинхронизацииДанныхПриИзменении(Элемент) + + ВариантРасписанияСинхронизацииДанныхПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура СинхронизироватьДанныеПриНачалеРаботыПрограммыПриИзменении(Элемент) + + УстановитьЗначениеКонстанты_СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы( + СинхронизироватьДанныеПриНачалеРаботыПрограммы); +КонецПроцедуры + +&НаКлиенте +Процедура СинхронизироватьДанныеПриЗавершенииРаботыПрограммыПриИзменении(Элемент) + + УстановитьЗначениеКонстанты_СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы( + СинхронизироватьДанныеПриЗавершенииРаботыПрограммы); + + ИмяПараметра = "СтандартныеПодсистемы.ПредлагатьСинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииСеанса"; + Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда + ПараметрыПриложения.Вставить(ИмяПараметра, Неопределено); + КонецЕсли; + + ПараметрыПриложения["СтандартныеПодсистемы.ПредлагатьСинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииСеанса"] = + СинхронизироватьДанныеПриЗавершенииРаботыПрограммы; + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьПодключение(Команда) + + НастроитьПодключениеКСервису(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиККонфликтам(Команда) + + УзлыОбмена = Новый Массив; + УзлыОбмена.Добавить(ПриложениеВСервисе); + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("УзлыОбмена", УзлыОбмена); + ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.Форма", ПараметрыОткрытия); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбновитьВидимость() + + ОбновитьВидимостьНаСервере(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьВидимостьНаСервере() + + УстановитьПривилегированныйРежим(Истина); + + ПредставлениеДатыСинхронизации = ОбменДаннымиСервер.ПредставлениеДатыСинхронизации( + АвтономнаяРаботаСлужебный.ДатаПоследнейУспешнойСинхронизации(ПриложениеВСервисе)); + Элементы.ИнформацияОПоследнейСинхронизации.Заголовок = ПредставлениеДатыСинхронизации + "."; + Элементы.ИнформацияОПоследнейСинхронизации1.Заголовок = ПредставлениеДатыСинхронизации + "."; + + ОбновитьЗаголовокПереходаККонфликтам(); + + ТребуетсяУстановкаОбновления = ОбменДаннымиСервер.ТребуетсяУстановкаОбновления(); + + Элементы.АвтономнаяРабота.ТекущаяСтраница = ?(ТребуетсяУстановкаОбновления, + Элементы.ПолученоОбновлениеКонфигурации, + Элементы.СинхронизацияДанных); + + Элементы.ВыполнитьСинхронизациюДанных.КнопкаПоУмолчанию = Не ТребуетсяУстановкаОбновления; + Элементы.ВыполнитьСинхронизациюДанных.АктивизироватьПоУмолчанию = Не ТребуетсяУстановкаОбновления; + + Элементы.УстановитьОбновление.КнопкаПоУмолчанию = ТребуетсяУстановкаОбновления; + Элементы.УстановитьОбновление.АктивизироватьПоУмолчанию = ТребуетсяУстановкаОбновления; + + НастройкиТранспортаWS = РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспортаWS(ПриложениеВСервисе); + + ПарольПользователяСохраняется = НастройкиТранспортаWS.WSЗапомнитьПароль; + + СинхронизироватьДанныеПоРасписанию = РегламентныеЗаданияСервер.РегламентноеЗаданиеИспользуется(Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете); + + Элементы.НастроитьПодключение.Доступность = СинхронизироватьДанныеПоРасписанию; + Элементы.ВариантРасписанияСинхронизацииДанных.Доступность = СинхронизироватьДанныеПоРасписанию; + Элементы.ИзменитьРасписаниеСинхронизацииДанных.Доступность = СинхронизироватьДанныеПоРасписанию; + + Элементы.ИзменитьРасписаниеСинхронизацииДанных.Видимость = Не ОбщегоНазначения.ЭтоМобильныйКлиент(); + + УстановитьПривилегированныйРежим(Ложь); + + // Устанавливаем видимость по ролям + РольДоступнаНастройкаСинхронизацииДанных = ОбменДаннымиСервер.ЕстьПраваНаАдминистрированиеОбменов(); + Элементы.НастройкаСинхронизацииДанных.Видимость = РольДоступнаНастройкаСинхронизацииДанных; + Элементы.УстановитьОбновление.Видимость = РольДоступнаНастройкаСинхронизацииДанных; + + Если РольДоступнаНастройкаСинхронизацииДанных Тогда + Элементы.ПоясняющаяНадписьПолученоОбновление.Заголовок = НСтр("ru = 'Получено обновление программы из Интернета. + |Необходимо установить полученное обновление, после чего синхронизация будет продолжена.'"); + Иначе + Элементы.ПоясняющаяНадписьПолученоОбновление.Заголовок = НСтр("ru = 'Получено обновление программы из Интернета. + |Обратитесь к администратору информационной базы для установки полученного обновления.'"); + КонецЕсли; + + ПоказыватьПредупреждениеОДолгойСинхронизации = АвтономнаяРаботаСлужебный.ФлагНастройкиВопросаОДолгойСинхронизации(); +КонецПроцедуры + +&НаСервере +Процедура ОбновитьЗаголовокПереходаККонфликтам() + + Если ОбменДаннымиПовтИсп.ИспользуетсяВерсионирование() Тогда + + СтруктураЗаголовка = ОбменДаннымиСервер.СтруктураЗаголовкаГиперссылкиМонитораПроблем(ПриложениеВСервисе); + + ЗаполнитьЗначенияСвойств (Элементы.ПерейтиККонфликтам, СтруктураЗаголовка); + ЗаполнитьЗначенияСвойств (Элементы.ПерейтиККонфликтам1, СтруктураЗаголовка); + + Иначе + + Элементы.ПерейтиККонфликтам.Видимость = Ложь; + Элементы.ПерейтиККонфликтам1.Видимость = Ложь; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ВариантРасписанияСинхронизацииДанныхПриИзмененииНаСервере() + + НовоеРасписаниеСинхронизацииДанных = ""; + + Если ВариантРасписанияСинхронизацииДанных = 1 Тогда + + НовоеРасписаниеСинхронизацииДанных = ПредопределенноеРасписаниеВариант1(); + + ИначеЕсли ВариантРасписанияСинхронизацииДанных = 2 Тогда + + НовоеРасписаниеСинхронизацииДанных = ПредопределенноеРасписаниеВариант2(); + + ИначеЕсли ВариантРасписанияСинхронизацииДанных = 3 Тогда + + НовоеРасписаниеСинхронизацииДанных = ПредопределенноеРасписаниеВариант3(); + + Иначе // 4 + + НовоеРасписаниеСинхронизацииДанных = ПользовательскоеРасписаниеСинхронизацииДанных; + + КонецЕсли; + + Если Строка(РасписаниеСинхронизацииДанных) <> Строка(НовоеРасписаниеСинхронизацииДанных) Тогда + + РасписаниеСинхронизацииДанных = НовоеРасписаниеСинхронизацииДанных; + + РегламентныеЗаданияСервер.УстановитьРасписаниеРегламентногоЗадания( + Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, + РасписаниеСинхронизацииДанных); + + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ПереключитьПредупреждениеОДолгойСинхронизации(Знач Флаг) + + АвтономнаяРаботаСлужебный.ФлагНастройкиВопросаОДолгойСинхронизации(Флаг); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененииРасписанияСинхронизацииДанных() + + Элементы.ВариантРасписанияСинхронизацииДанных.СписокВыбора.Очистить(); + Элементы.ВариантРасписанияСинхронизацииДанных.СписокВыбора.Добавить(1, НСтр("ru = 'Каждые 15 минут'")); + Элементы.ВариантРасписанияСинхронизацииДанных.СписокВыбора.Добавить(2, НСтр("ru = 'Каждый час'")); + Элементы.ВариантРасписанияСинхронизацииДанных.СписокВыбора.Добавить(3, НСтр("ru = 'Каждый день в 10:00, кроме сб. и вс.'")); + + // Определяем текущий вариант расписания синхронизации данных + ВариантыРасписанияСинхронизацииДанных = Новый Соответствие; + ВариантыРасписанияСинхронизацииДанных.Вставить(Строка(ПредопределенноеРасписаниеВариант1()), 1); + ВариантыРасписанияСинхронизацииДанных.Вставить(Строка(ПредопределенноеРасписаниеВариант2()), 2); + ВариантыРасписанияСинхронизацииДанных.Вставить(Строка(ПредопределенноеРасписаниеВариант3()), 3); + + ВариантРасписанияСинхронизацииДанных = ВариантыРасписанияСинхронизацииДанных[Строка(РасписаниеСинхронизацииДанных)]; + + Если ВариантРасписанияСинхронизацииДанных = 0 Тогда + + ВариантРасписанияСинхронизацииДанных = 4; + Элементы.ВариантРасписанияСинхронизацииДанных.СписокВыбора.Добавить(4, Строка(РасписаниеСинхронизацииДанных)); + ПользовательскоеРасписаниеСинхронизацииДанных = РасписаниеСинхронизацииДанных; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ИзменитьРасписаниеСинхронизацииДанныхНаСервере() + + РегламентныеЗаданияСервер.УстановитьРасписаниеРегламентногоЗадания( + Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, + РасписаниеСинхронизацииДанных); + + ПриИзмененииРасписанияСинхронизацииДанных(); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьЗначениеКонстанты_СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы(Знач Значение) + + УстановитьПривилегированныйРежим(Истина); + + Константы.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы.Установить(Значение); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьЗначениеКонстанты_СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы(Знач Значение) + + УстановитьПривилегированныйРежим(Истина); + + Константы.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы.Установить(Значение); + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьПодключениеКСервису(НастройкаАвтоматическойСинхронизации = Ложь) + + Отбор = Новый Структура("Корреспондент", ПриложениеВСервисе); + ЗначенияЗаполнения = Новый Структура("Корреспондент", ПриложениеВСервисе); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("АдресДляВосстановленияПароляУчетнойЗаписи", АдресДляВосстановленияПароляУчетнойЗаписи); + ПараметрыФормы.Вставить("НастройкаАвтоматическойСинхронизации", НастройкаАвтоматическойСинхронизации); + + ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, + ЗначенияЗаполнения, "НастройкиТранспортаОбменаДанными", ЭтотОбъект, "НастройкаПодключенияКСервису", ПараметрыФормы); + + ОбновитьВидимостьНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура СинхронизироватьДанныеПоРасписаниюПриИзмененииЗначения() + + УстановитьИспользованиеРегламентногоЗадания(СинхронизироватьДанныеПоРасписанию); + + Элементы.НастроитьПодключение.Доступность = СинхронизироватьДанныеПоРасписанию; + Элементы.ВариантРасписанияСинхронизацииДанных.Доступность = СинхронизироватьДанныеПоРасписанию; + Элементы.ИзменитьРасписаниеСинхронизацииДанных.Доступность = СинхронизироватьДанныеПоРасписанию; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьИспользованиеРегламентногоЗадания(Знач СинхронизироватьДанныеПоРасписанию) + + РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания( + Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, + СинхронизироватьДанныеПоРасписанию); + +КонецПроцедуры + +// Предопределенные расписания синхронизации данных + +&НаСервереБезКонтекста +Функция ПредопределенноеРасписаниеВариант1() // Каждые 15 минут + + Месяцы = Новый Массив; + Месяцы.Добавить(1); + Месяцы.Добавить(2); + Месяцы.Добавить(3); + Месяцы.Добавить(4); + Месяцы.Добавить(5); + Месяцы.Добавить(6); + Месяцы.Добавить(7); + Месяцы.Добавить(8); + Месяцы.Добавить(9); + Месяцы.Добавить(10); + Месяцы.Добавить(11); + Месяцы.Добавить(12); + + ДниНедели = Новый Массив; + ДниНедели.Добавить(1); + ДниНедели.Добавить(2); + ДниНедели.Добавить(3); + ДниНедели.Добавить(4); + ДниНедели.Добавить(5); + ДниНедели.Добавить(6); + ДниНедели.Добавить(7); + + Расписание = Новый РасписаниеРегламентногоЗадания; + Расписание.Месяцы = Месяцы; + Расписание.ДниНедели = ДниНедели; + Расписание.ПериодПовтораВТечениеДня = 60*15; // 15 минут + Расписание.ПериодПовтораДней = 1; // каждый день + + Возврат Расписание; +КонецФункции + +&НаСервереБезКонтекста +Функция ПредопределенноеРасписаниеВариант2() // Каждый час + + Возврат АвтономнаяРаботаСлужебный.РасписаниеСинхронизацииДанныхПоУмолчанию(); + +КонецФункции + +&НаСервереБезКонтекста +Функция ПредопределенноеРасписаниеВариант3() // Каждый день в 10:00, кроме сб. и вс. + + Месяцы = Новый Массив; + Месяцы.Добавить(1); + Месяцы.Добавить(2); + Месяцы.Добавить(3); + Месяцы.Добавить(4); + Месяцы.Добавить(5); + Месяцы.Добавить(6); + Месяцы.Добавить(7); + Месяцы.Добавить(8); + Месяцы.Добавить(9); + Месяцы.Добавить(10); + Месяцы.Добавить(11); + Месяцы.Добавить(12); + + ДниНедели = Новый Массив; + ДниНедели.Добавить(1); + ДниНедели.Добавить(2); + ДниНедели.Добавить(3); + ДниНедели.Добавить(4); + ДниНедели.Добавить(5); + + Расписание = Новый РасписаниеРегламентногоЗадания; + Расписание.Месяцы = Месяцы; + Расписание.ДниНедели = ДниНедели; + Расписание.ВремяНачала = Дата('00010101100000'); // 10:00 + Расписание.ПериодПовтораДней = 1; // каждый день + + Возврат Расписание; +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260.mdo" new file mode 100644 index 00000000..ad223052 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260.mdo" @@ -0,0 +1,10 @@ + + + АвтономнаяРабота + + ru + Автономная работа + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Form.form" new file mode 100644 index 00000000..6eb88eda --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Form.form" @@ -0,0 +1,2484 @@ + + + + АвтономнаяРабота + 3 + + АвтономнаяРаботаНеНастроена + 52 + + Группа1 + 53 + + Декорация2 + 54 + true + true + + true + + + Декорация2ExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + + Декорация2КонтекстноеМеню + 55 + true + true + + true + + true + + 5 + true + 2 + true + + + CommonPicture.Информация32 + + + + + Группа4 + 100 + + Декорация1 + 56 + + <key>ru</key> + <value>Автономная работа не настроена. +Если нет постоянного подключения к Интернету, то можно выгрузить данные на компьютер и работать автономно. Например, на время командировки. Данные можно синхронизировать в любой момент при наличии подключения к Интернету.</value> + + true + true + + true + + + Декорация1ExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + + Декорация1КонтекстноеМеню + 57 + true + true + + true + + true + + Label + 75 + true + true + + Left + + + + Декорация4 + 101 + + <key>ru</key> + <value>Для автономной работы необходимо чтобы на компьютере была установлена платформа 1С:Предприятие.</value> + + true + true + + true + + + Декорация4ExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + + Декорация4КонтекстноеМеню + 102 + true + true + + true + + true + + Label + true + + Left + + + + КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие + 99 + true + true + + true + + + КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятиеExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие + Auto + true + UserCmds + Auto + + true + true + + true + + + Группа4ExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + Группа1ExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + Группа8 + 58 + + СоздатьАвтономноеРабочееМесто + 59 + true + true + + true + + + СоздатьАвтономноеРабочееМестоExtendedTooltip + 125 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.СоздатьАвтономноеРабочееМесто + Auto + true + true + UserCmds + Auto + + + Декорация3 + 60 + + <key>ru</key> + <value>Создать автономное рабочее место для работы без подключения к Интернету.</value> + + true + true + + true + + + Декорация3ExtendedTooltip + 126 + true + true + + true + + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню + 61 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + Группа8ExtendedTooltip + 124 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + NormalSeparation + true + true + Auto + Auto + + + + КакНастроитьАвтономноеРабочееМесто + 110 + true + true + + true + + + КакНастроитьАвтономноеРабочееМестоExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.КакНастроитьАвтономноеРабочееМесто + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Автономная работа не настроена</value> + + + АвтономнаяРаботаНеНастроенаExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ОдноАвтономноеРабочееМесто + 4 + + Группа9 + 113 + + Группа5 + 5 + + Декорация5 + 72 + + <key>ru</key> + <value>Автономное рабочее место:</value> + + true + true + + true + + + Декорация5ExtendedTooltip + 131 + true + true + + true + + Label + true + true + + Left + + + + Декорация5КонтекстноеМеню + 73 + true + true + + true + + true + + Label + true + true + + Left + + + + АвтономноеРабочееМесто + 67 + true + true + + true + + + + АвтономноеРабочееМесто + + + None + + АвтономноеРабочееМестоExtendedTooltip + 132 + true + true + + true + + Label + true + true + + Left + + + + АвтономноеРабочееМестоКонтекстноеМеню + 68 + true + true + + true + + true + + LabelField + Left + Enter + true + Left + true + + true + + + true + true + + true + + + Группа5ExtendedTooltip + 130 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + Группа3 + 76 + + ИнформацияОПоследнейСинхронизации + 10 + + <key>ru</key> + <value>Последняя синхронизация: <Дата>.</value> + + true + true + + true + + + ИнформацияОПоследнейСинхронизацииExtendedTooltip + 134 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияОПоследнейСинхронизацииКонтекстноеМеню + 11 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + + ПерейтиККонфликтам + 114 + true + true + + true + + + ПерейтиККонфликтамExtendedTooltip + 135 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПерейтиККонфликтам + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Группа3ExtendedTooltip + 133 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + Группа2 + 14 + + Группа10 + 183 + + ИзменитьАвтономноеРабочееМесто + 15 + true + true + + true + + + ИзменитьАвтономноеРабочееМестоExtendedTooltip + 137 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ИзменитьАвтономноеРабочееМесто + Auto + 12 + true + true + UserCmds + Auto + + + СоставОтправляемыхДанных + 181 + true + true + + true + + + СоставОтправляемыхДанныхРасширеннаяПодсказка + 182 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.СоставОтправляемыхДанных + Picture + 3 + true + true + UserCmds + Auto + + true + true + + true + + + Группа10РасширеннаяПодсказка + 184 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + ОписаниеОграниченийПередачиДанных + 74 + + <key>ru</key> + <value><Описание ограничений передачи данных></value> + + true + true + + true + + + ОписаниеОграниченийПередачиДанныхExtendedTooltip + 138 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеОграниченийПередачиДанныхКонтекстноеМеню + 75 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + Группа2ExtendedTooltip + 136 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + Группа6 + 16 + + ПрекратитьСинхронизациюСАвтономнымРабочимМестом + 69 + true + true + + true + + + ПрекратитьСинхронизациюСАвтономнымРабочимМестомExtendedTooltip + 140 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПрекратитьСинхронизациюСАвтономнымРабочимМестом + Auto + 16 + true + true + UserCmds + Auto + + + Декорация8 + 18 + + <key>ru</key> + <value>Прекратить синхронизацию с этим автономным рабочим местом.</value> + + true + true + + true + + + Декорация8ExtendedTooltip + 141 + true + true + + true + + Label + true + true + + Left + + + + Декорация8КонтекстноеМеню + 19 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + Группа6ExtendedTooltip + 139 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + Группа9ExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + Группа7 + 20 + + СоздатьАвтономноеРабочееМесто1 + 21 + true + true + + true + + + СоздатьАвтономноеРабочееМесто1ExtendedTooltip + 143 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.СоздатьАвтономноеРабочееМесто + Auto + true + true + UserCmds + Auto + + + Декорация7 + 22 + + <key>ru</key> + <value>Создать ещё одно автономное рабочее место для работы без подключения к Интернету.</value> + + true + true + + true + + + Декорация7ExtendedTooltip + 144 + true + true + + true + + Label + true + true + + Left + + + + Декорация7КонтекстноеМеню + 23 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + Группа7ExtendedTooltip + 142 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + NormalSeparation + true + true + Auto + Auto + + + + КакНастроитьАвтономноеРабочееМесто1 + 111 + true + true + + true + + + КакНастроитьАвтономноеРабочееМесто1ExtendedTooltip + 145 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.КакНастроитьАвтономноеРабочееМесто + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Одно автономное рабочее место</value> + + + ОдноАвтономноеРабочееМестоExtendedTooltip + 128 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + НесколькоАвтономныхРабочихМест + 24 + + ПерейтиККонфликтам1 + 115 + true + true + + true + + + ПерейтиККонфликтам1ExtendedTooltip + 147 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПерейтиККонфликтам + Auto + true + true + UserCmds + Auto + + + СписокАвтономныхРабочихМест + 78 + true + true + + true + + + СписокАвтономныхРабочихМест + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + СписокАвтономныхРабочихМестАвтономноеРабочееМесто + 81 + true + true + + true + + + + СписокАвтономныхРабочихМест.АвтономноеРабочееМесто + + + + СписокАвтономныхРабочихМестАвтономноеРабочееМестоExtendedTooltip + 167 + true + true + + true + + Label + true + true + + Left + + + + СписокАвтономныхРабочихМестАвтономноеРабочееМестоКонтекстноеМеню + 82 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СписокАвтономныхРабочихМестПредставлениеДатыСинхронизации + 96 + true + true + + true + + + + СписокАвтономныхРабочихМест.ПредставлениеДатыСинхронизации + + + + СписокАвтономныхРабочихМестПредставлениеДатыСинхронизацииExtendedTooltip + 168 + true + true + + true + + Label + true + true + + Left + + + + СписокАвтономныхРабочихМестПредставлениеДатыСинхронизацииКонтекстноеМеню + 97 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + + ru + ДЛФ=DDT + + + ru + ДЛФ=DDT + + true + true + true + + + + СписокАвтономныхРабочихМестКоманднаяПанель + 80 + + СписокАвтономныхРабочихМестСоздатьАвтономноеРабочееМесто + 85 + true + true + + true + + + СписокАвтономныхРабочихМестСоздатьАвтономноеРабочееМестоExtendedTooltip + 154 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьАвтономноеРабочееМесто + Auto + true + true + UserCmds + Auto + + + СписокАвтономныхРабочихМестИзменитьАвтономноеРабочееМестоВСписке + 98 + true + true + + true + + + СписокАвтономныхРабочихМестИзменитьАвтономноеРабочееМестоВСпискеExtendedTooltip + 155 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьАвтономноеРабочееМестоВСписке + Auto + true + true + UserCmds + Auto + + + СписокАвтономныхРабочихМестПрекратитьСинхронизациюСАвтономнымРабочимМестом + 87 + + <key>ru</key> + <value>Прекратить синхронизацию</value> + + true + true + + true + + + СписокАвтономныхРабочихМестПрекратитьСинхронизациюСАвтономнымРабочимМестомExtendedTooltip + 156 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПрекратитьСинхронизациюСАвтономнымРабочимМестомВСписке + Auto + true + true + UserCmds + + StdPicture.Delete + + Auto + InAdditionalSubmenu + + + СписокАвтономныхРабочихМестСоставОтправляемыхДанных + 170 + true + true + + true + + + СписокАвтономныхРабочихМестСоставОтправляемыхДанныхРасширеннаяПодсказка + 171 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоставОтправляемыхДанных + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокАвтономныхРабочихМестГруппа3 + 95 + + СписокАвтономныхРабочихМестОбновить + 88 + true + true + + true + + + СписокАвтономныхРабочихМестОбновитьExtendedTooltip + 158 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + СписокАвтономныхРабочихМестГруппа3ExtendedTooltip + 157 + true + true + + true + + Label + true + true + + Left + + + + + + СписокАвтономныхРабочихМестГруппа1 + 93 + + СписокАвтономныхРабочихМестНайти + 89 + true + true + + true + + + СписокАвтономныхРабочихМестНайтиExtendedTooltip + 160 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокАвтономныхРабочихМест.StandardCommand.Find + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокАвтономныхРабочихМестОтменитьПоиск + 90 + true + true + + true + + + СписокАвтономныхРабочихМестОтменитьПоискExtendedTooltip + 161 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокАвтономныхРабочихМест.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + СписокАвтономныхРабочихМестГруппа1ExtendedTooltip + 159 + true + true + + true + + Label + true + true + + Left + + + + + + СписокАвтономныхРабочихМестГруппа2 + 94 + + СписокАвтономныхРабочихМестКопироватьВБуферОбмена + 92 + true + true + + true + + + СписокАвтономныхРабочихМестКопироватьВБуферОбменаExtendedTooltip + 163 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокАвтономныхРабочихМест.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокАвтономныхРабочихМестВывестиСписок + 91 + true + true + + true + + + СписокАвтономныхРабочихМестВывестиСписокExtendedTooltip + 164 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокАвтономныхРабочихМест.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + СписокАвтономныхРабочихМестГруппа2ExtendedTooltip + 162 + true + true + + true + + Label + true + true + + Left + + + + + + СписокАвтономныхРабочихМестКнопка1 + 109 + true + true + + true + + + СписокАвтономныхРабочихМестКнопка1ExtendedTooltip + 165 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + Selection + СписокАвтономныхРабочихМестВыбор + + + true + true + + true + + СписокАвтономныхРабочихМестСтрокаПоиска + 185 + + СписокАвтономныхРабочихМестСтрокаПоискаРасширеннаяПодсказка + 187 + true + true + + true + + Label + true + true + + Left + + + + СписокАвтономныхРабочихМестСтрокаПоискаКонтекстноеМеню + 186 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокАвтономныхРабочихМестСостояниеПросмотра + 188 + + СписокАвтономныхРабочихМестСостояниеПросмотраРасширеннаяПодсказка + 190 + true + true + + true + + Label + true + true + + Left + + + + СписокАвтономныхРабочихМестСостояниеПросмотраКонтекстноеМеню + 189 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокАвтономныхРабочихМестУправлениеПоиском + 191 + + СписокАвтономныхРабочихМестУправлениеПоискомРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + + СписокАвтономныхРабочихМестУправлениеПоискомКонтекстноеМеню + 192 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокАвтономныхРабочихМестExtendedTooltip + 166 + true + true + + true + + Label + true + true + + Left + + + + СписокАвтономныхРабочихМестКонтекстноеМеню + 79 + + СписокАвтономныхРабочихМестСоздатьАвтономноеРабочееМесто1 + 103 + true + true + + true + + + СписокАвтономныхРабочихМестСоздатьАвтономноеРабочееМесто1ExtendedTooltip + 148 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоздатьАвтономноеРабочееМесто + Auto + true + true + UserCmds + Auto + + + СписокАвтономныхРабочихМестИзменитьАвтономноеРабочееМестоВСписке1 + 104 + true + true + + true + + + СписокАвтономныхРабочихМестИзменитьАвтономноеРабочееМестоВСписке1ExtendedTooltip + 149 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьАвтономноеРабочееМестоВСписке + Auto + true + true + UserCmds + Auto + + + СписокАвтономныхРабочихМестПрекратитьСинхронизациюСАвтономнымРабочимМестом1 + 105 + + <key>ru</key> + <value>Прекратить синхронизацию</value> + + true + true + + true + + + СписокАвтономныхРабочихМестПрекратитьСинхронизациюСАвтономнымРабочимМестом1ExtendedTooltip + 150 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПрекратитьСинхронизациюСАвтономнымРабочимМестомВСписке + Auto + true + true + UserCmds + + StdPicture.Delete + + Auto + InAdditionalSubmenu + + + СписокАвтономныхРабочихМестКонтекстноеМенюСоставОтправляемыхДанных + 172 + true + true + + true + + + СписокАвтономныхРабочихМестКонтекстноеМенюСоставОтправляемыхДанныхРасширеннаяПодсказка + 173 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СоставОтправляемыхДанных + Auto + true + true + UserCmds + Auto + + + СписокАвтономныхРабочихМестГруппа4 + 106 + + СписокАвтономныхРабочихМестКопироватьВБуферОбмена1 + 107 + true + true + + true + + + СписокАвтономныхРабочихМестКопироватьВБуферОбмена1ExtendedTooltip + 152 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокАвтономныхРабочихМест.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокАвтономныхРабочихМестВывестиСписок1 + 108 + true + true + + true + + + СписокАвтономныхРабочихМестВывестиСписок1ExtendedTooltip + 153 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокАвтономныхРабочихМест.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + СписокАвтономныхРабочихМестГруппа4ExtendedTooltip + 151 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + true + true + true + true + Row +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + None + None + None + +
        + + КакНастроитьАвтономноеРабочееМесто2 + 112 + true + true + + true + + + КакНастроитьАвтономноеРабочееМесто2ExtendedTooltip + 169 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.КакНастроитьАвтономноеРабочееМесто + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Несколько автономных рабочих мест</value> + + + НесколькоАвтономныхРабочихМестExtendedTooltip + 146 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + true + true + + true + + true + + АвтономнаяРаботаExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
        + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + UseIfNecessary + true + true + + АвтономноеРабочееМесто + + <key>ru</key> + <value>Автономное рабочее место</value> + + 2 + + ExchangePlanRef + + + true + + + true + + + + СписокАвтономныхРабочихМест + + <key>ru</key> + <value>Список автономных рабочих мест</value> + + 1 + + ValueTable + + + true + + + true + + + АвтономноеРабочееМесто + + <key>ru</key> + <value>Автономное рабочее место</value> + + 1 + + ExchangePlanRef + + + true + + + true + + + + ПредставлениеДатыСинхронизации + + <key>ru</key> + <value>Последняя синхронизация</value> + + 2 + + String + + + + true + + + true + + + + + ПоддерживаетсяПередачаБольшихФайлов + 3 + + Boolean + + + true + + + true + + + + ИзменитьАвтономноеРабочееМесто + + <key>ru</key> + <value>Настроить...</value> + + 1 + + true + + + StdPicture.Change + + + + ИзменитьАвтономноеРабочееМесто + + + TextPicture + DontUse + + + ПрекратитьСинхронизациюСАвтономнымРабочимМестом + + <key>ru</key> + <value>Прекратить</value> + + 2 + + true + + + StdPicture.Stop + + + + ПрекратитьСинхронизациюСАвтономнымРабочимМестом + + + TextPicture + DontUse + + + СоздатьАвтономноеРабочееМесто + + <key>ru</key> + <value>Создать...</value> + + 3 + + true + + + StdPicture.CreateListItem + + + + СоздатьАвтономноеРабочееМесто + + + TextPicture + DontUse + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 4 + + ru + Обновить + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + Picture + DontUse + + + ИзменитьАвтономноеРабочееМестоВСписке + + <key>ru</key> + <value>Изменить</value> + + 5 + + ru + Изменить автономное рабочее место в списке + + + true + + + StdPicture.Change + + + + ИзменитьАвтономноеРабочееМестоВСписке + + + TextPicture + DontUse + + + ПрекратитьСинхронизациюСАвтономнымРабочимМестомВСписке + + <key>ru</key> + <value>Прекратить синхронизацию</value> + + 6 + + ru + Прекратить синхронизацию с автономным рабочим местом в списке + + + true + + + + ПрекратитьСинхронизациюСАвтономнымРабочимМестомВСписке + + + DontUse + + + КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие + + <key>ru</key> + <value>Как установить или обновить версию платформы 1С:Предприятие</value> + + 7 + + true + + + + КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие + + + DontUse + + + КакНастроитьАвтономноеРабочееМесто + + <key>ru</key> + <value>Как настроить автономное рабочее место</value> + + 8 + + ru + Как настроить автономное рабочее место + + + true + + + + КакНастроитьАвтономноеРабочееМесто + + + DontUse + + + ПерейтиККонфликтам + + <key>ru</key> + <value>Предупреждений нет</value> + + 9 + + ru + Перейти к конфликтам синхронизации данных + + + true + + + + ПерейтиККонфликтам + + + DontUse + + + СоставОтправляемыхДанных + + <key>ru</key> + <value>Состав отправляемых данных</value> + + 10 + + ru + Состав отправляемых данных + + + true + + + StdPicture.InputFieldOpen + + + + СоставОтправляемыхДанных + + + DontUse + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Module.bsl" new file mode 100644 index 00000000..55b26502 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Module.bsl" @@ -0,0 +1,352 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Создавать и отключать автономные рабочие места может только администратор абонента. + Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда + + ВызватьИсключение НСтр("ru = 'Недостаточно прав для настройки автономной работы.'"); + + ИначеЕсли Не АвтономнаяРаботаСлужебный.АвтономнаяРаботаПоддерживается() Тогда + + ВызватьИсключение НСтр("ru = 'Возможность автономной работы в программе не предусмотрена.'"); + + КонецЕсли; + + ОбновитьМониторАвтономнойРаботыНаСервере(); + + ПоддерживаетсяПередачаБольшихФайлов = АвтономнаяРаботаСлужебный.ПоддерживаетсяПередачаБольшихФайлов(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ПодключитьОбработчикОжидания("ОбновитьМониторАвтономнойРаботы", 60); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Создание_АвтономноеРабочееМесто" + ИЛИ ИмяСобытия = "Запись_АвтономноеРабочееМесто" + ИЛИ ИмяСобытия = "Удаление_АвтономноеРабочееМесто" Тогда + + ОбновитьМониторАвтономнойРаботы(); + + ИначеЕсли ИмяСобытия = "ЗакрытаФормаРезультатовОбменаДанными" Тогда + + ОбновитьЗаголовокПереходаККонфликтам(); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СоздатьАвтономноеРабочееМесто(Команда) + + Оповещение = Новый ОписаниеОповещения("СоздатьАвтономноеРабочееМестоЗавершение", ЭтотОбъект); + + Если ПоддерживаетсяПередачаБольшихФайлов Тогда + ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Оповещение, "", Ложь); + Иначе + ВыполнитьОбработкуОповещения(Оповещение, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПрекратитьСинхронизациюСАвтономнымРабочимМестом(Команда) + + ОтключитьАвтономноеРабочееМесто(АвтономноеРабочееМесто); + +КонецПроцедуры + +&НаКлиенте +Процедура ПрекратитьСинхронизациюСАвтономнымРабочимМестомВСписке(Команда) + + ТекущиеДанные = Элементы.СписокАвтономныхРабочихМест.ТекущиеДанные; + + Если ТекущиеДанные <> Неопределено Тогда + + ОтключитьАвтономноеРабочееМесто(ТекущиеДанные.АвтономноеРабочееМесто); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьАвтономноеРабочееМесто(Команда) + + Если АвтономноеРабочееМесто <> Неопределено Тогда + + ПоказатьЗначение(, АвтономноеРабочееМесто); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьАвтономноеРабочееМестоВСписке(Команда) + + ТекущиеДанные = Элементы.СписокАвтономныхРабочихМест.ТекущиеДанные; + + Если ТекущиеДанные <> Неопределено Тогда + + ПоказатьЗначение(, ТекущиеДанные.АвтономноеРабочееМесто); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Обновить(Команда) + + ОбновитьМониторАвтономнойРаботы(); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокАвтономныхРабочихМестВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + ПоказатьЗначение(, Элементы.СписокАвтономныхРабочихМест.ТекущиеДанные.АвтономноеРабочееМесто); + +КонецПроцедуры + +&НаКлиенте +Процедура КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ИмяМакета", "КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие"); + ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Как установить или обновить версию платформы 1С:Предприятие'")); + + ОткрытьФорму("Обработка.ПомощникСозданияАвтономногоРабочегоМеста.Форма.ДополнительноеОписание", ПараметрыФормы, ЭтотОбъект, "КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие"); + +КонецПроцедуры + +&НаКлиенте +Процедура КакНастроитьАвтономноеРабочееМесто(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ИмяМакета", "ИнструкцияПоНастройкеАРМ"); + ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Как настроить автономное рабочее место'")); + + ОткрытьФорму("Обработка.ПомощникСозданияАвтономногоРабочегоМеста.Форма.ДополнительноеОписание", ПараметрыФормы, ЭтотОбъект, "ИнструкцияПоНастройкеАРМ"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиККонфликтам(Команда) + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("УзлыОбмена", МассивИспользуемыхУзлов(АвтономноеРабочееМесто, СписокАвтономныхРабочихМест)); + + ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.Форма", ПараметрыОткрытия); + +КонецПроцедуры + +&НаКлиенте +Процедура СоставОтправляемыхДанных(Команда) + + ТекущаяСтраница = Элементы.АвтономнаяРабота.ТекущаяСтраница; + АвтономныйУзел = Неопределено; + + Если ТекущаяСтраница = Элементы.ОдноАвтономноеРабочееМесто Тогда + АвтономныйУзел = АвтономноеРабочееМесто; + + ИначеЕсли ТекущаяСтраница = Элементы.НесколькоАвтономныхРабочихМест Тогда + ТекущиеДанные = Элементы.СписокАвтономныхРабочихМест.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + АвтономныйУзел = ТекущиеДанные.АвтономноеРабочееМесто; + КонецЕсли; + + КонецЕсли; + + Если ЗначениеЗаполнено(АвтономныйУзел) Тогда + ОбменДаннымиКлиент.ОткрытьСоставОтправляемыхДанных(АвтономныйУзел); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура СоздатьАвтономноеРабочееМестоЗавершение(РасширениеПодключено, ДополнительныеПараметры) Экспорт + + Если РасширениеПодключено Тогда + ОткрытьФорму("Обработка.ПомощникСозданияАвтономногоРабочегоМеста.Форма.НастройкаНаСторонеСервиса", , ЭтотОбъект, "1"); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьМониторАвтономнойРаботыНаСервере() + + УстановитьПривилегированныйРежим(Истина); + + КоличествоАвтономныхРабочихМест = АвтономнаяРаботаСлужебный.КоличествоАвтономныхРабочихМест(); + ОбновитьЗаголовокПереходаККонфликтам(); + + Если КоличествоАвтономныхРабочихМест = 0 Тогда + + Элементы.АвтономнаяРаботаНеНастроена.Видимость = Истина; + + Элементы.АвтономнаяРабота.ТекущаяСтраница = Элементы.АвтономнаяРаботаНеНастроена; + Элементы.ОдноАвтономноеРабочееМесто.Видимость = Ложь; + Элементы.НесколькоАвтономныхРабочихМест.Видимость = Ложь; + + ИначеЕсли КоличествоАвтономныхРабочихМест = 1 Тогда + + Элементы.ОдноАвтономноеРабочееМесто.Видимость = Истина; + + Элементы.АвтономнаяРабота.ТекущаяСтраница = Элементы.ОдноАвтономноеРабочееМесто; + Элементы.АвтономнаяРаботаНеНастроена.Видимость = Ложь; + Элементы.НесколькоАвтономныхРабочихМест.Видимость = Ложь; + + АвтономноеРабочееМесто = АвтономнаяРаботаСлужебный.АвтономноеРабочееМесто(); + СписокАвтономныхРабочихМест.Очистить(); + + Элементы.ИнформацияОПоследнейСинхронизации.Заголовок = ОбменДаннымиСервер.ПредставлениеДатыСинхронизации( + АвтономнаяРаботаСлужебный.ДатаПоследнейУспешнойСинхронизации(АвтономноеРабочееМесто)) + "."; + + Элементы.ОписаниеОграниченийПередачиДанных.Заголовок = АвтономнаяРаботаСлужебный.ОписаниеОграниченийПередачиДанных(АвтономноеРабочееМесто); + + ИначеЕсли КоличествоАвтономныхРабочихМест > 1 Тогда + + Элементы.НесколькоАвтономныхРабочихМест.Видимость = Истина; + + Элементы.АвтономнаяРабота.ТекущаяСтраница = Элементы.НесколькоАвтономныхРабочихМест; + Элементы.АвтономнаяРаботаНеНастроена.Видимость = Ложь; + Элементы.ОдноАвтономноеРабочееМесто.Видимость = Ложь; + + АвтономноеРабочееМесто = Неопределено; + СписокАвтономныхРабочихМест.Загрузить(АвтономнаяРаботаСлужебный.МониторАвтономныхРабочихМест()); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьЗаголовокПереходаККонфликтам() + + Если ОбменДаннымиПовтИсп.ИспользуетсяВерсионирование() Тогда + + СтруктураЗаголовка = ОбменДаннымиСервер.СтруктураЗаголовкаГиперссылкиМонитораПроблем( + МассивИспользуемыхУзлов(АвтономноеРабочееМесто, СписокАвтономныхРабочихМест)); + + ЗаполнитьЗначенияСвойств (Элементы.ПерейтиККонфликтам, СтруктураЗаголовка); + ЗаполнитьЗначенияСвойств (Элементы.ПерейтиККонфликтам1, СтруктураЗаголовка); + + Иначе + + Элементы.ПерейтиККонфликтам.Видимость = Ложь; + Элементы.ПерейтиККонфликтам1.Видимость = Ложь; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьТекущийИндексСтроки() + + // возвращаемое значение функции + ИндексСтроки = Неопределено; + + // при обновлении монитора выполняем позиционирование курсора + ТекущиеДанные = Элементы.СписокАвтономныхРабочихМест.ТекущиеДанные; + + Если ТекущиеДанные <> Неопределено Тогда + + ИндексСтроки = СписокАвтономныхРабочихМест.Индекс(ТекущиеДанные); + + КонецЕсли; + + Возврат ИндексСтроки; +КонецФункции + +&НаКлиенте +Процедура ВыполнитьПозиционированиеКурсора(ИндексСтроки) + + Если ИндексСтроки <> Неопределено Тогда + + // выполняем проверки позиционирования курсора после получения новых данных + Если СписокАвтономныхРабочихМест.Количество() <> 0 Тогда + + Если ИндексСтроки > СписокАвтономныхРабочихМест.Количество() - 1 Тогда + + ИндексСтроки = СписокАвтономныхРабочихМест.Количество() - 1; + + КонецЕсли; + + // позиционируем курсор + Элементы.СписокАвтономныхРабочихМест.ТекущаяСтрока = СписокАвтономныхРабочихМест[ИндексСтроки].ПолучитьИдентификатор(); + + КонецЕсли; + + КонецЕсли; + + // если спозиционировать строку не удалось, то устанавливаем текущей первую строку + Если Элементы.СписокАвтономныхРабочихМест.ТекущаяСтрока = Неопределено + И СписокАвтономныхРабочихМест.Количество() <> 0 Тогда + + Элементы.СписокАвтономныхРабочихМест.ТекущаяСтрока = СписокАвтономныхРабочихМест[0].ПолучитьИдентификатор(); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьМониторАвтономнойРаботы() + + ИндексСтроки = ПолучитьТекущийИндексСтроки(); + + ОбновитьМониторАвтономнойРаботыНаСервере(); + + // выполняем позиционирование курсора + ВыполнитьПозиционированиеКурсора(ИндексСтроки); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция МассивИспользуемыхУзлов(АвтономноеРабочееМесто, СписокАвтономныхРабочихМест) + + УзлыОбмена = Новый Массив; + + Если ЗначениеЗаполнено(АвтономноеРабочееМесто) Тогда + УзлыОбмена.Добавить(АвтономноеРабочееМесто); + Иначе + Для Каждого СтрокаУзла Из СписокАвтономныхРабочихМест Цикл + УзлыОбмена.Добавить(СтрокаУзла.АвтономноеРабочееМесто); + КонецЦикла; + КонецЕсли; + + Возврат УзлыОбмена; + +КонецФункции + +&НаКлиенте +Процедура ОтключитьАвтономноеРабочееМесто(ОтключаемоеАвтономноеРабочееМесто) + + ПараметрыФормы = Новый Структура("АвтономноеРабочееМесто", ОтключаемоеАвтономноеРабочееМесто); + + ОткрытьФорму("ОбщаяФорма.ОтключениеАвтономногоРабочегоМеста", ПараметрыФормы, ЭтотОбъект, ОтключаемоеАвтономноеРабочееМесто); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" new file mode 100644 index 00000000..30280326 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\260\321\217\320\240\320\260\320\261\320\276\321\202\320\260\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" @@ -0,0 +1,10 @@ + + + АвтономнаяРаботаВМоделиСервиса + + ru + Автономная работа + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Form.form" new file mode 100644 index 00000000..869cc4c2 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Form.form" @@ -0,0 +1,5002 @@ + + + + ГруппаСписки + 24 + + ГруппаСпискаНастройки + 338 + + СтраницыСписки + 83 + + СтраницаПоискКонтактов + 90 + + ГруппаСтрокаПоиска + 51 + + СтрокаПоиска + 22 + true + true + + true + + + + СтрокаПоиска + + + true + None + + СтрокаПоискаExtendedTooltip + 187 + true + true + + true + + Label + true + true + + Left + + + + СтрокаПоискаКонтекстноеМеню + 23 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + true + true + true + + ru + Введите часть адреса или имени контакта + + + + + ГруппаНайтиКонтакт + 304 + + Найти + 50 + true + true + + true + + false + + НайтиExtendedTooltip + 188 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НайтиКонтакты + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ГруппаВариантыПоиска + 306 + + ВариантПоискаВезде + 310 + true + true + + true + + + ВариантПоискаВездеРасширеннаяПодсказка + 311 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВариантПоискаВезде + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ВариантПоискаВАдресах + 312 + true + true + + true + + + ВариантПоискаВАдресахРасширеннаяПодсказка + 313 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВариантПоискаВАдресах + Auto + true + true + UserCmds + Auto + + + ВариантПоискаВНаименованияхКонтактов + 314 + true + true + + true + + + ВариантПоискаВНаименованияхКонтактовРасширеннаяПодсказка + 315 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВариантПоискаВНаименованияхКонтактов + Auto + true + true + UserCmds + Auto + + + ВариантПоискаПоДоменномуИмени + 316 + true + true + + true + + + ВариантПоискаПоДоменномуИмениРасширеннаяПодсказка + 317 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВариантПоискаПоДоменномуИмени + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Область поиска</value> + + + ГруппаВариантыПоискаРасширеннаяПодсказка + 307 + true + true + + true + + Label + true + true + + Left + + + Popup + + + StdPicture.Find + + Picture + + + true + true + + true + + + <key>ru</key> + <value>Найти контакт</value> + + + ГруппаНайтиКонтактРасширеннаяПодсказка + 305 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + + ВариантыПоиска + 119 + true + + true + + + + ВариантыПоиска + + + None + + ВариантыПоискаExtendedTooltip + 186 + true + true + + true + + Label + true + true + + Left + + + + ВариантыПоискаКонтекстноеМеню + 120 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Строка поиска</value> + + true + + ГруппаСтрокаПоискаExtendedTooltip + 185 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + НайденныеКонтакты + 25 + + <key>ru</key> + <value>Найденные контакты</value> + + true + true + + true + + + НайденныеКонтакты + + false + None + CancelSearch + Change + Copy + Delete + EndEdit + Find + MoveDown + MoveUp + + НаименованиеКонтакта + 28 + true + true + + true + + + + НайденныеКонтакты.НаименованиеКонтакта + + + + НаименованиеКонтактаExtendedTooltip + 191 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтактаКонтекстноеМеню + 29 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + АдресЭП + 30 + true + true + + true + + + + НайденныеКонтакты.Представление + + + + АдресЭПExtendedTooltip + 192 + true + true + + true + + Label + true + true + + Left + + + + АдресЭПКонтекстноеМеню + 31 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + None + + НайденныеКонтактыКоманднаяПанель + 27 + true + true + + true + + Left + true + + + Selection + НайденныеКонтактыВыбор + + + true + true + + true + + НайденныеКонтактыСтрокаПоиска + 245 + + НайденныеКонтактыСтрокаПоискаРасширеннаяПодсказка + 247 + true + true + + true + + Label + true + true + + Left + + + + НайденныеКонтактыСтрокаПоискаКонтекстноеМеню + 246 + true + true + + true + + true + + + true + + + + true + true + + true + + НайденныеКонтактыСостояниеПросмотра + 248 + + НайденныеКонтактыСостояниеПросмотраРасширеннаяПодсказка + 250 + true + true + + true + + Label + true + true + + Left + + + + НайденныеКонтактыСостояниеПросмотраКонтекстноеМеню + 249 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НайденныеКонтактыУправлениеПоиском + 251 + + НайденныеКонтактыУправлениеПоискомРасширеннаяПодсказка + 253 + true + true + + true + + Label + true + true + + Left + + + + НайденныеКонтактыУправлениеПоискомКонтекстноеМеню + 252 + true + true + + true + + true + + SearchControlAddition + + true + + + + НайденныеКонтактыExtendedTooltip + 190 + true + true + + true + + Label + true + true + + Left + + + + НайденныеКонтактыКонтекстноеМеню + 26 + + НайденныеКонтактыПросмотр + 333 + true + true + + true + + + НайденныеКонтактыПросмотрРасширеннаяПодсказка + 334 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Просмотр + Auto + true + true + UserCmds + Auto + + + НайтиВСпискеИзСпискаНайденных + 143 + true + true + + true + + false + + НайтиВСпискеИзСпискаНайденныхExtendedTooltip + 189 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НайтиВСпискеИзСпискаНайденных + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + 5 + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + +
        + true + true + + true + + + <key>ru</key> + <value>Поиск контактов</value> + + + СтраницаПоискКонтактовExtendedTooltip + 184 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + СтраницаВсеКонтактыПоПредмету + 94 + + КонтактыПоПредмету + 121 + + <key>ru</key> + <value>Контакты по предмету</value> + + true + true + + true + + + КонтактыПоПредмету + + false + None + + ПредставлениеНаименования + 128 + true + true + + true + + + + КонтактыПоПредмету.ПредставлениеНаименования + + + + ПредставлениеНаименованияExtendedTooltip + 201 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеНаименованияКонтекстноеМеню + 129 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + АдресКонтакта + 126 + true + true + + true + + + + КонтактыПоПредмету.Адрес + + + + АдресКонтактаExtendedTooltip + 202 + true + true + + true + + Label + true + true + + Left + + + + АдресКонтактаКонтекстноеМеню + 127 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + None + + КонтактыПоПредметуКоманднаяПанель + 123 + true + true + + true + + Left + true + + + Selection + КонтактыПоПредметуВыбор + + + true + true + + true + + КонтактыПоПредметуСтрокаПоиска + 254 + + КонтактыПоПредметуСтрокаПоискаРасширеннаяПодсказка + 256 + true + true + + true + + Label + true + true + + Left + + + + КонтактыПоПредметуСтрокаПоискаКонтекстноеМеню + 255 + true + true + + true + + true + + + true + + + + true + true + + true + + КонтактыПоПредметуСостояниеПросмотра + 257 + + КонтактыПоПредметуСостояниеПросмотраРасширеннаяПодсказка + 259 + true + true + + true + + Label + true + true + + Left + + + + КонтактыПоПредметуСостояниеПросмотраКонтекстноеМеню + 258 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + КонтактыПоПредметуУправлениеПоиском + 260 + + КонтактыПоПредметуУправлениеПоискомРасширеннаяПодсказка + 262 + true + true + + true + + Label + true + true + + Left + + + + КонтактыПоПредметуУправлениеПоискомКонтекстноеМеню + 261 + true + true + + true + + true + + SearchControlAddition + + true + + + + КонтактыПоПредметуExtendedTooltip + 200 + true + true + + true + + Label + true + true + + Left + + + + КонтактыПоПредметуКонтекстноеМеню + 122 + + ДобавитьИзСпискаПредметов + 131 + true + true + + true + + false + + ДобавитьИзСпискаПредметовExtendedTooltip + 197 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзСпискаПредметов + Auto + true + true + UserCmds + Auto + + + УстановитьКонтактИзСпискаПредметов + 132 + true + true + + true + + false + + УстановитьКонтактИзСпискаПредметовExtendedTooltip + 198 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьКонтактИзСпискаПредметов + Auto + true + true + UserCmds + Auto + + + НайтиВСпискеИзСпискаПредметов + 130 + true + true + + true + + false + + НайтиВСпискеИзСпискаПредметовExtendedTooltip + 199 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НайтиВСпискеИзСпискаПредметов + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + +
        + true + true + + true + + + <key>ru</key> + <value>Контакты по предмету</value> + + + СтраницаВсеКонтактыПоПредметуExtendedTooltip + 196 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + СтраницаПользователей + 93 + + ГруппыПользователей + 176 + + <key>ru</key> + <value>Группы пользователей</value> + + true + true + + true + + + ГруппыПользователей + + false + None + Change + Copy + CopyToClipboard + Create + Delete + HierarchicalList + List + ListSettings + MoveItem + OutputList + Refresh + SetDeletionMark + Tree + + НаименованиеГруппы + 179 + true + true + + true + + + + ГруппыПользователей.Description + + + + НаименованиеГруппыExtendedTooltip + 205 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеГруппыКонтекстноеМеню + 180 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ГруппыПользователейСсылка + 290 + true + true + + + + ГруппыПользователей.Ref + + + + ГруппыПользователейСсылкаРасширеннаяПодсказка + 292 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейСсылкаКонтекстноеМеню + 291 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ГруппыПользователейКоманднаяПанель + 178 + true + true + + true + + Left + true + + + OnActivateRow + ГруппыПользователейПриАктивизацииСтроки + + + true + true + + true + + ГруппыПользователейСтрокаПоиска + 263 + + ГруппыПользователейСтрокаПоискаРасширеннаяПодсказка + 265 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейСтрокаПоискаКонтекстноеМеню + 264 + true + true + + true + + true + + + true + + + + true + true + + true + + ГруппыПользователейСостояниеПросмотра + 266 + + ГруппыПользователейСостояниеПросмотраРасширеннаяПодсказка + 268 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейСостояниеПросмотраКонтекстноеМеню + 267 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ГруппыПользователейУправлениеПоиском + 269 + + ГруппыПользователейУправлениеПоискомРасширеннаяПодсказка + 271 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейУправлениеПоискомКонтекстноеМеню + 270 + true + true + + true + + true + + SearchControlAddition + + true + + + + ГруппыПользователейExtendedTooltip + 204 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейКонтекстноеМеню + 177 + true + true + + true + + true + + Tree + true + true + true + 5 + true + Row + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + ГруппыПользователей.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + СписокПользователей + 95 + + <key>ru</key> + <value>Пользователей</value> + + true + true + + true + + + СписокПользователей + + false + None + Change + Copy + Create + SetDeletionMark + + Пользователь + 98 + + <key>ru</key> + <value>Пользователь</value> + + true + true + + true + + + + СписокПользователей.Ref + + + + ПользовательExtendedTooltip + 207 + true + true + + true + + Label + true + true + + Left + + + + ПользовательКонтекстноеМеню + 99 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + СписокПользователейПредставление + 326 + + <key>ru</key> + <value>Адрес</value> + + true + true + + true + + + + СписокПользователей.Представление + + + + СписокПользователейПредставлениеРасширеннаяПодсказка + 328 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейПредставлениеКонтекстноеМеню + 327 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокПользователейСсылка + 293 + true + true + + + + СписокПользователей.Ref + + + + СписокПользователейСсылкаРасширеннаяПодсказка + 295 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейСсылкаКонтекстноеМеню + 294 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокПользователейКоманднаяПанель + 97 + + СписокПользователейПросмотр + 329 + true + true + + true + + + СписокПользователейПросмотрРасширеннаяПодсказка + 330 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Просмотр + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + Selection + Подключаемый_СписокСправочникаВыбор + + + true + true + + true + + СписокПользователейСтрокаПоиска + 272 + + СписокПользователейСтрокаПоискаРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейСтрокаПоискаКонтекстноеМеню + 273 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокПользователейСостояниеПросмотра + 275 + + СписокПользователейСостояниеПросмотраРасширеннаяПодсказка + 277 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейСостояниеПросмотраКонтекстноеМеню + 276 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокПользователейУправлениеПоиском + 278 + + СписокПользователейУправлениеПоискомРасширеннаяПодсказка + 280 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейУправлениеПоискомКонтекстноеМеню + 279 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокПользователейExtendedTooltip + 206 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейКонтекстноеМеню + 96 + + СписокПользователейКонтекстноеМенюПросмотр + 331 + true + true + + true + + + СписокПользователейКонтекстноеМенюПросмотрРасширеннаяПодсказка + 332 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Просмотр + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + HierarchicalList + true + true + true + true + 6 + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + СписокПользователей.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + +
        + true + true + + true + + + <key>ru</key> + <value>Пользователи</value> + + + СтраницаПользователейExtendedTooltip + 203 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + true + true + + true + + + <key>ru</key> + <value>Страницы списки</value> + + + СтраницыСпискиExtendedTooltip + 183 + true + true + + true + + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + СтраницыПриСменеСтраницы + + TabsOnTop + Auto + +
        + + ПоказыватьТолькоКонтактыСАдресами + 335 + true + true + + true + + + + ПоказыватьТолькоКонтактыСАдресами + + + Right + ShowBottom + + OnChange + ПоказыватьТолькоКонтактыСАдресамиПриИзменении + + + ПоказыватьТолькоКонтактыСАдресамиРасширеннаяПодсказка + 337 + + <key>ru</key> + <value> Будет применено только к тем спискам, в которых есть колонка "Адрес"</value> + + true + true + + true + + Label + true + + Left + + + + ПоказыватьТолькоКонтактыСАдресамиКонтекстноеМеню + 336 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Списка настройки</value> + + + ГруппаСпискаНастройкиРасширеннаяПодсказка + 339 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + +
        + + ГруппаПолучателиПереместить + 152 + + СтраницыПереместить + 161 + + СтраницаПереместитьОднаТаблица + 162 + + ДекорацияПереместитьВерхняя + 153 + true + true + + true + + + ДекорацияПереместитьВерхняяExtendedTooltip + 211 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПереместитьВерхняяКонтекстноеМеню + 154 + true + true + + true + + true + + Label + true + true + true + + Left + + + + ПереместитьИзСпискаВВыбранное + 158 + true + true + + true + + + ПереместитьИзСпискаВВыбранноеExtendedTooltip + 212 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВключитьВСписокПолучателей + Auto + UserCmds + Auto + + + ДекорацияПереместитьЦентр + 159 + true + true + + true + + + ДекорацияПереместитьЦентрExtendedTooltip + 213 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПереместитьЦентрКонтекстноеМеню + 160 + true + true + + true + + true + + Label + true + true + + Left + + + + ПереместитьИзВыбранногоВСписокВсе + 157 + true + true + + true + + + ПереместитьИзВыбранногоВСписокВсеExtendedTooltip + 214 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УдалитьВсехПолучателей + Auto + true + true + UserCmds + Auto + + + ПереместитьИзВыбранногоВСписок + 151 + true + true + + true + + + ПереместитьИзВыбранногоВСписокExtendedTooltip + 215 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УдалитьПолучателя + Auto + true + true + UserCmds + Auto + + + ДекорацияПереместитьНижняя + 155 + true + true + + true + + + ДекорацияПереместитьНижняяExtendedTooltip + 216 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПереместитьНижняяКонтекстноеМеню + 156 + true + true + + true + + true + + Label + true + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница переместить одна таблица</value> + + + СтраницаПереместитьОднаТаблицаExtendedTooltip + 210 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаПереместитьДвеТаблицы + 163 + + ДекорацияПереместитьВерхняяДвеТаблицы + 164 + true + true + + true + + + ДекорацияПереместитьВерхняяДвеТаблицыExtendedTooltip + 218 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПереместитьВерхняяДвеТаблицыКонтекстноеМеню + 165 + true + true + + true + + true + + Label + true + true + true + + Left + + + + ПереместитьИзВерхнегоСпискаВВыбранное + 166 + true + true + + true + + + ПереместитьИзВерхнегоСпискаВВыбранноеExtendedTooltip + 219 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВключитьВСписокПолучателей + Auto + true + true + UserCmds + Auto + + + ДекорацияПромежутокВерхняя + 167 + true + true + + true + + + ДекорацияПромежутокВерхняяExtendedTooltip + 220 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПромежутокВерхняяКонтекстноеМеню + 168 + true + true + + true + + true + + Label + true + true + + Left + + + + ПереместитьИзВыбранногоВСписокДвеТаблицы + 169 + true + true + + true + + + ПереместитьИзВыбранногоВСписокДвеТаблицыExtendedTooltip + 221 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УдалитьПолучателя + Auto + true + true + UserCmds + + Style.NormalTextFont + + Auto + + + ПереместитьИзВыбранногоВСписокВсеДвеТаблицы + 170 + true + true + + true + + + ПереместитьИзВыбранногоВСписокВсеДвеТаблицыExtendedTooltip + 222 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УдалитьВсехПолучателей + Auto + true + true + UserCmds + Auto + + + ДекорацияПромежутокНижняя + 171 + true + true + + true + + + ДекорацияПромежутокНижняяExtendedTooltip + 223 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПромежутокНижняяКонтекстноеМеню + 172 + true + true + + true + + true + + Label + true + true + + Left + + + + ПереместитьИзНижнегоСпискаВВыбранное + 173 + true + true + + true + + + ПереместитьИзНижнегоСпискаВВыбранноеExtendedTooltip + 224 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВключитьВСписокПолучателей + Auto + true + true + UserCmds + Auto + + + ДекорацияПереместитьНижняяДвеТаблицы + 174 + true + true + + true + + + ДекорацияПереместитьНижняяДвеТаблицыExtendedTooltip + 225 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПереместитьНижняяДвеТаблицыКонтекстноеМеню + 175 + true + true + + true + + true + + Label + true + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница переместить две таблицы</value> + + + СтраницаПереместитьДвеТаблицыExtendedTooltip + 217 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы переместить</value> + + 5 + false + + СтраницыПереместитьExtendedTooltip + 209 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ГруппаПолучатели + 55 + + ПолучателиПисьма + 56 + + <key>ru</key> + <value>Получатели письма</value> + + true + true + + true + + + ПолучателиПисьма + + false + Top + + ПолучателиПисьмаГруппа + 302 + + ГруппаАдрес + 298 + + Группа + 84 + true + true + + true + + + + ПолучателиПисьма.Группа + + + + ГруппаExtendedTooltip + 241 + true + true + + true + + Label + true + true + + Left + + + + ГруппаКонтекстноеМеню + 85 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 12 + true + true + true + true + + + ru + Кому + + + Кому + + + + + ru + Копии + + + Копии + + + + + ru + Скрытые + + + Скрытые + + + + + ru + Получатели ответа + + + Получатели + + + + + + Адрес + 59 + true + true + + true + + + + ПолучателиПисьма.Адрес + + + + АдресExtendedTooltip + 242 + true + true + + true + + Label + true + true + + Left + + + + АдресКонтекстноеМеню + 60 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + Windows.Highlight + + + + true + true + + true + + + <key>ru</key> + <value>Адрес</value> + + + ГруппаАдресРасширеннаяПодсказка + 299 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + true + + + + КонтактПредставление + 300 + + Контакт + 63 + true + true + + true + + + + ПолучателиПисьма.Контакт + + + + КонтактExtendedTooltip + 244 + true + true + + true + + Label + true + true + + Left + + + + КонтактКонтекстноеМеню + 64 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + КонтактНачалоВыбора + + true + true + true + true + true + + Style.ПоясняющийТекст + + + + + Представление + 61 + true + + true + + + + ПолучателиПисьма.Представление + + + + ПредставлениеExtendedTooltip + 243 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтекстноеМеню + 62 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + Style.ПоясняющийТекст + + + + true + true + + true + + + <key>ru</key> + <value>Контакт представление</value> + + + КонтактПредставлениеРасширеннаяПодсказка + 301 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + true + true + + true + + + <key>ru</key> + <value>Получатели письма группа</value> + + + ПолучателиПисьмаГруппаРасширеннаяПодсказка + 303 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + ПолучателиПисьмаКоманднаяПанель + 58 + true + true + + true + + Left + + + OnStartEdit + ПолучателиПисьмаПриНачалеРедактирования + + + OnActivateCell + ПолучателиПисьмаПриАктивизацииЯчейки + + + true + true + + true + + ПолучателиПисьмаСтрокаПоиска + 281 + + ПолучателиПисьмаСтрокаПоискаРасширеннаяПодсказка + 283 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиПисьмаСтрокаПоискаКонтекстноеМеню + 282 + true + true + + true + + true + + + true + + + + true + true + + true + + ПолучателиПисьмаСостояниеПросмотра + 284 + + ПолучателиПисьмаСостояниеПросмотраРасширеннаяПодсказка + 286 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиПисьмаСостояниеПросмотраКонтекстноеМеню + 285 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПолучателиПисьмаУправлениеПоиском + 287 + + ПолучателиПисьмаУправлениеПоискомРасширеннаяПодсказка + 289 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиПисьмаУправлениеПоискомКонтекстноеМеню + 288 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПолучателиПисьмаExtendedTooltip + 240 + true + true + + true + + Label + true + true + + Left + + + + ПолучателиПисьмаКонтекстноеМеню + 57 + + Добавить1 + 318 + + <key>ru</key> + <value>Добавить получателя</value> + + true + true + + true + + false + + Добавить1РасширеннаяПодсказка + 319 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПолучателиПисьма.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + ИзменитьГруппу + 134 + + ИзменитьГруппуКому + 135 + true + true + + true + + false + + ИзменитьГруппуКомуExtendedTooltip + 233 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьГруппуКому + Auto + true + true + UserCmds + Auto + + + ИзменитьГруппуКопии + 136 + true + true + + true + + false + + ИзменитьГруппуКопииExtendedTooltip + 234 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьГруппуКопии + Auto + true + true + UserCmds + Auto + + + ИзменитьГруппуСкрытые + 137 + true + true + + true + + false + + ИзменитьГруппуСкрытыеExtendedTooltip + 235 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьГруппуСкрытые + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Изменить группу</value> + + + ИзменитьГруппуExtendedTooltip + 232 + true + true + + true + + Label + true + true + + Left + + + + + + ПолучателиПисьмаКонтекстноеМенюГруппа + 322 + + Удалить1 + 320 + + <key>ru</key> + <value>Удалить получателя</value> + + true + true + + true + + false + + Удалить1РасширеннаяПодсказка + 321 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПолучателиПисьма.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Получатели письма контекстное меню группа</value> + + + ПолучателиПисьмаКонтекстноеМенюГруппаРасширеннаяПодсказка + 323 + true + true + + true + + Label + true + true + + Left + + + + + + НайтиВСпискеИзСпискаПолучателей + 138 + true + true + + true + + false + + НайтиВСпискеИзСпискаПолучателейExtendedTooltip + 227 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НайтиВСпискеИзСпискаПолучателей + Auto + true + true + UserCmds + Auto + + + НайтиКонтакт + 139 + + НайтиПоАдресу + 140 + true + true + + true + + false + + НайтиПоАдресуExtendedTooltip + 229 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НайтиПоАдресу + Auto + true + true + UserCmds + Auto + + + НайтиПоПредставлению + 141 + true + true + + true + + false + + НайтиПоПредставлениюExtendedTooltip + 230 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НайтиПоПредставлению + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Найти контакт</value> + + + НайтиКонтактExtendedTooltip + 228 + true + true + + true + + Label + true + true + + Left + + + + + + УстановитьАдресКонтакта + 142 + true + true + + true + + false + + УстановитьАдресКонтактаExtendedTooltip + 231 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыбратьАдресИзКонтакта + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + 3 + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + + true + true + + true + + + <key>ru</key> + <value>Получатели</value> + + + ГруппаПолучателиExtendedTooltip + 226 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Получатели переместить</value> + + + ГруппаПолучателиПереместитьExtendedTooltip + 208 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Списки</value> + + + ГруппаСпискиExtendedTooltip + 182 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Equal + Auto + Auto + +
        + + ФормаКоманднаяПанель + -1 + + КомандаВыбрать + 46 + true + true + + true + + false + + КомандаВыбратьExtendedTooltip + 181 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаВыбрать + Auto + true + true + true + UserCmds + Auto + + + Добавить + 86 + + <key>ru</key> + <value>Добавить получателя</value> + + true + true + + true + + false + + ДобавитьExtendedTooltip + 236 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПолучателиПисьма.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + Удалить + 133 + + <key>ru</key> + <value>Удалить получателя</value> + + true + true + + true + + false + + УдалитьExtendedTooltip + 237 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПолучателиПисьма.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + + ГруппаПереместить + 296 + + ПереместитьВверх + 87 + true + true + + true + + false + + ПереместитьВверхExtendedTooltip + 238 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПолучателиПисьма.StandardCommand.MoveUp + Auto + true + true + UserCmds + Auto + + + ПереместитьВниз + 88 + true + true + + true + + false + + ПереместитьВнизExtendedTooltip + 239 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ПолучателиПисьма.StandardCommand.MoveDown + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Переместить</value> + + + ГруппаПереместитьРасширеннаяПодсказка + 297 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + Use + true + true + Vertical + true + true + true + true + true + + НайденныеКонтакты + + <key>ru</key> + <value>Найденные контакты</value> + + 1 + + ValueTable + + + true + + + true + + + Ссылка + 1 + + DefinedType.КонтактВзаимодействия + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Адрес</value> + + 2 + + String + + 1000 + + + + true + + + true + + + + ИмяСправочника + 3 + + String + + + + true + + + true + + + + НаименованиеКонтакта + + <key>ru</key> + <value>Контакт</value> + + 5 + + String + + + + true + + + true + + + + ПредставлениеЗаполнено + 4 + + Boolean + + + true + + + true + + + + + СтрокаПоиска + + <key>ru</key> + <value>Строка поиска</value> + + 2 + + String + + + + true + + + true + + + + ПолучателиПисьма + + <key>ru</key> + <value>Получатели письма</value> + + 5 + + ValueTable + + + true + + + true + + + Адрес + + <key>ru</key> + <value>Адрес</value> + + 1 + + String + + 100 + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + 1000 + + + + true + + + true + + + + Контакт + + <key>ru</key> + <value>Контакт</value> + + 3 + + DefinedType.КонтактВзаимодействия + + + true + + + true + + + + Группа + + <key>ru</key> + <value>Группа</value> + + 4 + + String + + 20 + + + + true + + + true + + + + СписокАдресов + 5 + + String + + + + true + + + true + + + + + СписокПользователей + + <key>ru</key> + <value>Список пользователей</value> + + 6 + + DynamicList + + + true + + + true + + + СписокПользователей.Description + + + СписокПользователей.Ref + + + ВЫБРАТЬ + Пользователи.Ссылка, + Пользователи.ПометкаУдаления, + Пользователи.Предопределенный, + Пользователи.Наименование, + ВЫБОР + КОГДА Пользователи.ПометкаУдаления + ТОГДА 0 + ИНАЧЕ 1 + КОНЕЦ КАК НомерКартинки, + ПользователиКонтактнаяИнформация.Представление +ИЗ + Справочник.Пользователи КАК Пользователи + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация + ПО (ПользователиКонтактнаяИнформация.Ссылка = Пользователи.Ссылка) + И (ПользователиКонтактнаяИнформация.ВидДляСписка = &ЭлектроннаяПочта) +ГДЕ + Пользователи.Служебный = ЛОЖЬ + И Пользователи.ПометкаУдаления = ЛОЖЬ + И Пользователи.Недействителен = ЛОЖЬ + И ИСТИНА В + (ВЫБРАТЬ + ИСТИНА + ИЗ + РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + ГДЕ + СоставыГруппПользователей.Пользователь = Пользователи.Ссылка + И СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей) + + Catalog.Пользователи + true + true + true + true + true + + + + ИнформацияОбАктуальностиИндексаППД + 10 + + String + + + + true + + + true + + + + ВариантыПоиска + + <key>ru</key> + <value>Варианты поиска</value> + + 4 + + String + + + + true + + + true + + + ВариантыПоиска + + + + КонтактыПоПредмету + + <key>ru</key> + <value>Контакты по предмету</value> + + 11 + + ValueTable + + + true + + + true + + + Ссылка + 1 + + DefinedType.КонтактВзаимодействия + + + true + + + true + + + + Наименование + 2 + + String + + + + true + + + true + + + + ИмяСправочника + 4 + + String + + + + true + + + true + + + + Адрес + + <key>ru</key> + <value>Адрес</value> + + 5 + + String + + + + true + + + true + + + + ПредставлениеНаименования + + <key>ru</key> + <value>Контакт</value> + + 6 + + String + + 1000 + + + + true + + + true + + + + АдресЗаполнен + 3 + + Boolean + + + true + + + true + + + + + ППДВключен + 12 + + Boolean + + + true + + + true + + + + Предмет + 14 + + DefinedType.ПредметВзаимодействия + + + true + + + true + + + + ИндексАктуален + 7 + + Boolean + + + true + + + true + + + + ГруппаПоУмолчанию + 9 + + String + + 20 + + + + true + + + true + + + + ГруппыПользователей + + <key>ru</key> + <value>Группы пользователей</value> + + 15 + + DynamicList + + + true + + + true + + FunctionalOption.ИспользоватьГруппыПользователей + + ГруппыПользователей.Parent + + + ГруппыПользователей.Ref + + + ВЫБРАТЬ + СправочникГруппыПользователей.Ссылка, + СправочникГруппыПользователей.ПометкаУдаления, + СправочникГруппыПользователей.Предопределенный, + СправочникГруппыПользователей.Родитель, + СправочникГруппыПользователей.Наименование, + ВЫБОР + КОГДА СправочникГруппыПользователей.ПометкаУдаления + ТОГДА 2 + ИНАЧЕ 3 + КОНЕЦ КАК НомерКартинки +ИЗ + Справочник.ГруппыПользователей КАК СправочникГруппыПользователей + Catalog.ГруппыПользователей + true + true + true + true + true + + + + ИспользоватьГруппыПользователей + 16 + + Boolean + + + true + + + true + + + + ПоказыватьТолькоКонтактыСАдресами + + <key>ru</key> + <value>Только контакты с адресами</value> + + 3 + + Boolean + + + true + + + true + + + ПоказыватьТолькоКонтактыСАдресами + + + + ИменаДобавленныхТаблиц + 8 + + ValueList + + + true + + + true + + + + + + + КомандаВыбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Завершить редактирование + + + true + + + StdPicture.ChooseFromList + + + + КомандаОКВыполнить + + + TextPicture + DontUse + + + НайтиКонтакты + + <key>ru</key> + <value>Найти</value> + + 2 + + ru + Найти контакты + + + true + + + + НайтиКонтактыВыполнить + + + TextPicture + DontUse + + + НайтиВСпискеИзСпискаПредметов + + <key>ru</key> + <value>Найти в списке</value> + + 3 + + ru + Найти в списке + + + true + + + StdPicture.FindInList + + + + НайтиВСпискеИзСпискаПредметовВыполнить + + + TextPicture + DontUse + + + ДобавитьИзСпискаПредметов + + <key>ru</key> + <value>Добавить в список получатели</value> + + 5 + + ru + Добавить в список получатели + + + true + + + StdPicture.BusinessProcessStart + + + + ДобавитьИзСпискаПредметовВыполнить + + + TextPicture + DontUse + + + УстановитьКонтактИзСпискаПредметов + + <key>ru</key> + <value>Выбрать адрес, указанный в контакте</value> + + 6 + + ru + Выбрать адрес из контакта + + + true + + + StdPicture.FindInTree + + + + УстановитьКонтактИзСпискаПредметовВыполнить + + + TextPicture + DontUse + + + ИзменитьГруппуКому + + <key>ru</key> + <value>Установить "Кому"</value> + + 7 + + ru + Установить "Кому" + + + true + + + + ИзменитьГруппуКомуВыполнить + + + DontUse + + + ИзменитьГруппуКопии + + <key>ru</key> + <value>Установить "Копии"</value> + + 8 + + ru + Установить "Копии" + + + true + + + + ИзменитьГруппуКопииВыполнить + + + DontUse + + + ИзменитьГруппуСкрытые + + <key>ru</key> + <value>Установить "Скрытые копии"</value> + + 9 + + ru + Установить "Скрытые копии" + + + true + + + + ИзменитьГруппуСкрытыеВыполнить + + + DontUse + + + НайтиВСпискеИзСпискаПолучателей + + <key>ru</key> + <value>Найти в списке</value> + + 10 + + ru + Найти в списке + + + true + + + StdPicture.FindInList + + + + НайтиВСпискеИзСпискаПолучателейВыполнить + + + DontUse + + + НайтиПоАдресу + + <key>ru</key> + <value>Найти по адресу</value> + + 11 + + ru + Найти по адресу + + + true + + + + НайтиПоАдресуВыполнить + + + DontUse + + + НайтиПоПредставлению + + <key>ru</key> + <value>Найти по представлению</value> + + 12 + + ru + Найти по представлению + + + true + + + + НайтиПоПредставлениюВыполнить + + + DontUse + + + ВыбратьАдресИзКонтакта + + <key>ru</key> + <value>Выбрать адрес, указанный в контакте</value> + + 13 + + ru + Выбрать адрес из контакта + + + true + + + CommonPicture.Встреча + + + + УстановитьАдресКонтактаВыполнить + + + DontUse + + + НайтиВСпискеИзСпискаНайденных + + <key>ru</key> + <value>Найти в списке</value> + + 14 + + ru + Найти в списке + + + true + + + StdPicture.FindInList + + + + НайтиВСпискеИзСпискаНайденныхВыполнить + + + DontUse + + + УдалитьПолучателя + + <key>ru</key> + <value><</value> + + 15 + + ru + Убрать из списка получателей + + + true + + + + УдалитьПолучателя + + + Text + DontUse + + + УдалитьВсехПолучателей + + <key>ru</key> + <value><<</value> + + 16 + + ru + Убрать всех из списках получателей + + + true + + + + УдалитьВсехПолучателей + + + Text + DontUse + + + ВключитьВСписокПолучателей + + <key>ru</key> + <value>></value> + + 17 + + ru + Включить в список получателей + + + true + + + + ВключитьВСписокПолучателей + + + DontUse + + + ВариантПоискаВезде + + <key>ru</key> + <value>Везде</value> + + 4 + + ru + Искать в адресах и наименованиях контактов + + + true + + + + ВариантПоискаВезде + + + Auto + + + ВариантПоискаВАдресах + + <key>ru</key> + <value>В адресах контактов (email)</value> + + 18 + + ru + Искать только в адресах контактов + + + true + + + + ВариантПоискаВАдресах + + + Auto + + + ВариантПоискаВНаименованияхКонтактов + + <key>ru</key> + <value>В наименованиях контактов</value> + + 19 + + ru + Искать в наименованиях контактов + + + true + + + + ВариантПоискаВНаименованияхКонтактов + + + Auto + + + ВариантПоискаПоДоменномуИмени + + <key>ru</key> + <value>В именах доменов почты (@домен)</value> + + 20 + + ru + Искать в доменных именах адресов контактов + + + true + + + + ВариантПоискаПоДоменномуИмени + + + Auto + + + Просмотр + + <key>ru</key> + <value>Просмотр</value> + + 21 + + ru + Просмотреть выбранный элемент + + + true + + + + Просмотр + + + Auto + + + СписокВыбранных + + ValueList + + + + Предмет + + AnyRef + + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Help/ru.html" new file mode 100644 index 00000000..4d5ebb34 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Help/ru.html" @@ -0,0 +1,37 @@ + +

        В адресной книге можно выполнить поиск и подбор контактов для исходящих электронных писем.

        +

        Для удобства работы с контактами программа формирует единую адресную книгу на основании контактной информации.

        +

        Открывается по кнопке  Выбрать из полей Кому, Копии, Скрытые исходящего письма.

        +

        Состоит из двух частей:

        +
        • Левая часть содержит набор вкладок для выбора контактов: +
            • Поиск контактов - если контактов много, то на вкладке можно осуществить поиск нужного контакта в программе по нескольким признакам: +
                • По адресу электронной почты (По email); +
                • +
                • По доменному имени почтового сервера; +
                • +
                • По строке, входящей в наименование контакта. Для поиска контактов по строке используется полнотекстовый поиск программы (в этом случае поиск осуществляется по всем реквизитам контактов); +
                • +
                • по начальным символам наименования контакта (Начинается с). +
                • +
                • В нижней части окна поиска выводится информация об актуальности индекса полнотекстового поиска и кнопка Обновить, которая становится активной, если индекс неактуален.
              • Выберите способ поиска, напишите выражение для поиска и нажмите кнопку Найти. Будут подобраны контакты, удовлетворяющие условию.
            • +
            • Пользователи - подбор контакта из списка пользователей программы. +
              • Вкладки могут включать и другие списки, например, список партнеров. +
              • +
              • Если в списке много элементов, можно использовать команду Найти. Можно работать со списком и использовать его возможности, вводить элементы.
            • +
            • Контакты по предмету - вкладка становится доступной, если в исходящем электронном письме заполнено поле Предмет. Программа автоматически подбирает контакты, связанные с предметом. Данная вкладка содержит список контактов, которые фигурируют в самом предмете, а также во всех документах взаимодействий, где этот предмет указан.
          • Двойной щелчок мыши по нужному контакту добавит запись о нем в правую часть адресной книги. Также можно использовать стрелки ">" и "<" или "<<" для добавления или удаления контактов.
        • +
        • Правая часть содержит список контактов для добавления в исходящее электронное письмо. +
          • Список состоит из колонок: +
            • В колонке Группа можно изменить поле письма, в которое будут добавлены контакты (КомуКопии, Скрытые, Получатели ответа). По умолчанию установлена группа Кому. +
            • +
            • В колонке Адрес проставляется адрес электронной почты добавленного контакта. Если адреса электронной почты в программе нет, можно добавить его в этой колонке. +
            • +
            • В колонке Представление проставляется наименование контакта.
          • +
          • С помощью контекстного меню правой части адресной книги нужные контакты можно Найти в списке, Найти по адресу, Найти по представлению, Выбрать адрес, указанный в контакте (поиск осуществляется в левой части адресной книги), а также разместить адреса в нужные группы.
        • +
        • Если контакт не найден в программе, то его можно Добавить в список вручную, указав адрес электронной почты и представление контакта. Добавить строку в список можно также клавишей Ins. +
        • +
        • С помощью команд меню Еще можно  Удалить контакт из списка или поменять контакты местами.

        Добавление контактов в исходящее электронное письмо

        +
        • Для того чтобы добавить контакт в соответствующее поле исходящего письма, выделите нужную строку, нажмите кнопку Выбрать. Также можно воспользоваться двойным щелчком мыши. +
        • +
        • Для одновременного добавления нескольких контактов выделите их и нажмите кнопку Выбрать.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Module.bsl" new file mode 100644 index 00000000..91233044 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/Module.bsl" @@ -0,0 +1,834 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Взаимодействия.ОбработатьНеобходимостьОтображенияГруппПользователей(ЭтотОбъект); + + Взаимодействия.ДобавитьСтраницыФормыПодбораКонтактов(ЭтотОбъект); + ЗаполнитьТаблицуПолучателей(); + УстановитьГруппуПоУмолчанию(); + + ВидыКонтактнойИнформации = УправлениеКонтактнойИнформацией.ВидыКонтактнойИнформацииОбъекта( + Справочники.Пользователи.ПустаяСсылка(), Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты); + Если ВидыКонтактнойИнформации.Количество() > 0 Тогда + ВидЭлектроннаяПочта = ВидыКонтактнойИнформации[0].Ссылка; + Иначе + ВидЭлектроннаяПочта = Неопределено; + КонецЕсли; + Если СписокПользователей.Параметры.Элементы.Найти("ЭлектроннаяПочта") <> Неопределено Тогда + СписокПользователей.Параметры.УстановитьЗначениеПараметра("ЭлектроннаяПочта", ВидЭлектроннаяПочта); + КонецЕсли; + + // Заполним контакты по предмету. + Предмет = Параметры.Предмет; + Взаимодействия.ЗаполнитьКонтактыПоПредмету(Элементы, Предмет, КонтактыПоПредмету, Истина); + + ВариантыПоиска = "Везде"; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ОбновитьМенюВариантовПоиска(); + УправлениеСтраницами(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + ВзаимодействияКлиент.ОтработатьОповещение(ЭтотОбъект, ИмяСобытия, Параметр, Источник); + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + ПриИзмененииТолькоКонтактыСАдресами(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница) + + УправлениеСтраницами(); + +КонецПроцедуры + +&НаКлиенте +Процедура КонтактНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные; + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТолькоEmail", Истина); + ПараметрыОткрытия.Вставить("ТолькоТелефон", Ложь); + ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Истина); + ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Ложь); + ПараметрыОткрытия.Вставить("ИдентификаторФормы", УникальныйИдентификатор); + + ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, ТекущиеДанные.Адрес, ТекущиеДанные.Представление, + ТекущиеДанные.Контакт,ПараметрыОткрытия) + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучателиПисьмаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + + Если НоваяСтрока Тогда + Элемент.ТекущиеДанные.Группа = "Кому"; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучателиПисьмаПриАктивизацииЯчейки(Элемент) + + Если Элемент.ТекущийЭлемент.Имя = "Адрес" Тогда + Элементы.Адрес.СписокВыбора.Очистить(); + + ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если НЕ ПустаяСтрока(ТекущиеДанные.СписокАдресов) Тогда + Элементы.Адрес.СписокВыбора.ЗагрузитьЗначения( + СтрРазделить(ТекущиеДанные.СписокАдресов, ";")); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура КонтактыПоПредметуВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + ДобавитьПолучателяИзСпискаПоПредмету(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_СписокСправочникаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Не ЗначениеЗаполнено(ВыбраннаяСтрока) Тогда + Возврат; + КонецЕсли; + + Результат = ВзаимодействияВызовСервера.НаименованиеИАдресаЭлектроннойПочтыКонтакта(ВыбраннаяСтрока); + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Адрес = Результат.Адреса[0]; + СписокАдресов = СтрСоединить(Результат.Адреса.ВыгрузитьЗначения(), ";"); + + ДобавитьПолучателя(Адрес, Результат.Наименование, ВыбраннаяСтрока, СписокАдресов); + +КонецПроцедуры + +// Универсальный обработчик активизации строки динамического списка, у которого есть подчиненные списки. +&НаКлиенте +Процедура Подключаемый_СписокВладелецПриАктивизацииСтроки(Элемент) + + ВзаимодействияКлиент.КонтактВладелецПриАктивизацииСтроки(Элемент, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура НайденныеКонтактыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + ТекущиеДанные = Элементы.НайденныеКонтакты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Результат = ВзаимодействияВызовСервера.НаименованиеИАдресаЭлектроннойПочтыКонтакта(ТекущиеДанные.Ссылка); + Если Результат <> Неопределено И Результат.Адреса.Количество() > 0 Тогда + СписокАдресов = СтрСоединить(Результат.Адреса.ВыгрузитьЗначения(), ";"); + Иначе + СписокАдресов = ""; + КонецЕсли; + + ДобавитьПолучателя(ТекущиеДанные.Представление, ТекущиеДанные.НаименованиеКонтакта, ТекущиеДанные.Ссылка, СписокАдресов); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПользователейПриАктивизацииСтроки(Элемент) + + СписокПользователей.Параметры.УстановитьЗначениеПараметра("ГруппаПользователей", Элементы.ГруппыПользователей.ТекущаяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьТолькоКонтактыСАдресамиПриИзменении(Элемент) + + ПриИзмененииТолькоКонтактыСАдресами(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +// Передает владельцу в качестве результата работы формы массив структур содержащих +// адреса выбранных получателей и закрывает форму. +// +&НаКлиенте +Процедура КомандаОКВыполнить() + + Результат = Новый Массив; + + Для Каждого СтрокаТаблицы Из ПолучателиПисьма Цикл + + Если ПустаяСтрока(СтрокаТаблицы.Адрес) Тогда + Продолжить; + КонецЕсли; + Группа = ?(ПустаяСтрока(СтрокаТаблицы.Группа), "Кому", СтрокаТаблицы.Группа); + + Контакт = Новый Структура; + Контакт.Вставить("Адрес", СтрокаТаблицы.Адрес); + Контакт.Вставить("Представление", СтрокаТаблицы.Представление); + Контакт.Вставить("Контакт", СтрокаТаблицы.Контакт); + Контакт.Вставить("Группа", Группа); + Результат.Добавить(Контакт); + + КонецЦикла; + + ОповеститьОВыборе(Результат); + +КонецПроцедуры + +// Переносит текущий контакт из списка "Контакты по предмету" в список "Получатели письма". +// +&НаКлиенте +Процедура ДобавитьИзСпискаПредметовВыполнить() + + ДобавитьПолучателяИзСпискаПоПредмету(); + +КонецПроцедуры + +// Изменяет текущую группу получателей письма на группу "Кому". +// +&НаКлиенте +Процедура ИзменитьГруппуКомуВыполнить() + + ИзменитьГруппу("Кому"); + +КонецПроцедуры + +// Изменяет текущую группу получателей письма на группу "Копии". +// +&НаКлиенте +Процедура ИзменитьГруппуКопииВыполнить() + + ИзменитьГруппу("Копии"); + +КонецПроцедуры + +// Изменяет текущую группу получателей письма на группу "Скрытые". +// +&НаКлиенте +Процедура ИзменитьГруппуСкрытыеВыполнить() + + ИзменитьГруппу("Скрытые"); + +КонецПроцедуры + +// Инициирует процесс поиска контактов. +// +&НаКлиенте +Процедура НайтиКонтактыВыполнить() + + Если ПустаяСтрока(СтрокаПоиска) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не задано, что нужно найти.'"),, "СтрокаПоиска"); + Возврат; + КонецЕсли; + + Результат = ""; + НайденныеКонтакты.Очистить(); + + Если ВариантыПоиска = "Везде" Тогда + Результат = НайтиКонтакты(); + ИначеЕсли ВариантыПоиска = "ПоEmail" Тогда + НайтиПоEmail(Ложь); + ИначеЕсли ВариантыПоиска = "ПоДомену" Тогда + НайтиПоEmail(Истина); + ИначеЕсли ВариантыПоиска = "ПоСтроке" Тогда + Результат = КонтактыНайденныеПоСтроке(); + ИначеЕсли ВариантыПоиска = "НачинаетсяС" Тогда + НайтиПоНачалуНаименования(); + КонецЕсли; + + Если Не ПустаяСтрока(Результат) Тогда + ПоказатьПредупреждение(, Результат); + КонецЕсли; + +КонецПроцедуры + +// Выполняет позиционирование в соответствующем динамическом списке на текущем контакте из +// списка "Найденные контакты". +// +&НаКлиенте +Процедура НайтиВСпискеИзСпискаНайденныхВыполнить() + + ТекущиеДанные = Элементы.НайденныеКонтакты.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда + УстановитьТекущимКонтакт(ТекущиеДанные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +// Выполняет позиционирование в соответствующем динамическом списке на текущем контакте +// из списка "Получатели письма". +// +&НаКлиенте +Процедура НайтиВСпискеИзСпискаПолучателейВыполнить() + + ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Контакт) Тогда + УстановитьТекущимКонтакт(ТекущиеДанные.Контакт); + КонецЕсли; + +КонецПроцедуры + +// Выполняет позиционирование в соответствующем динамическом списке на текущем контакте +// из списка "Контакты по предмету". +// +&НаКлиенте +Процедура НайтиВСпискеИзСпискаПредметовВыполнить() + + ТекущиеДанные = Элементы.КонтактыПоПредмету.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + УстановитьТекущимКонтакт(ТекущиеДанные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +// Инициирует поиск контактов по адресу электронной почты текущей строки списка "Получатели письма". +// +&НаКлиенте +Процедура НайтиПоАдресуВыполнить() + + Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов; + НайденныеКонтакты.Очистить(); + + ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + СтрокаПоиска = ТекущиеДанные.Адрес; + Если Не ПустаяСтрока(СтрокаПоиска) Тогда + НайтиПоEmail(Ложь); + КонецЕсли; + +КонецПроцедуры + +// Инициирует поиск контактов по представлению текущей строки списка "Получатели письма". +// +&НаКлиенте +Процедура НайтиПоПредставлениюВыполнить() + + Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов; + НайденныеКонтакты.Очистить(); + + ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + СтрокаПоиска = ТекущиеДанные.Представление; + Если Не ПустаяСтрока(СтрокаПоиска) Тогда + Результат = КонтактыНайденныеПоСтроке(); + Если Не ПустаяСтрока(Результат) Тогда + ПоказатьПредупреждение(,Результат); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Осуществляет поиск всех адресов электронной почты контакта из списка "Получатели письма" и + // предлагает пользователю сделать выбор, если у контакта более одного адреса электронной почты. +// +&НаКлиенте +Процедура УстановитьАдресКонтактаВыполнить() + + ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать адрес получателя в списке справа.'")); + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ТекущиеДанные.Контакт) Тогда + КонтактНачалоВыбора(Элементы.ПолучателиПисьма, Неопределено, Истина); + Возврат; + КонецЕсли; + + Результат = ВзаимодействияВызовСервера.ПолучитьАдресаЭлектроннойПочтыКонтакта(ТекущиеДанные.Контакт); + Если Результат.Количество() = 0 Тогда + ПоказатьПредупреждение(, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У контакта ""%1"" нет адресов электронной почты.'"), + ТекущиеДанные.Контакт)); + Возврат; + КонецЕсли; + + Если Результат.Количество() = 1 Тогда + Адрес = Результат[0].АдресЭП; + Представление = Результат[0].Представление; + УстановитьАдресИПредставлениеВыбранногоКонтакта(ТекущиеДанные, Представление, Адрес); + Иначе + СписокВыбора = Новый СписокЗначений; + Номер = 0; + Для Каждого Элемент Из Результат Цикл + СписокВыбора.Добавить(Номер, Элемент.ВидНаименование + ": " + Элемент.АдресЭП); + Номер = Номер + 1; + КонецЦикла; + + ПараметрыОбработкиВыбора = Новый Структура; + ПараметрыОбработкиВыбора.Вставить("Результат", Результат); + ПараметрыОбработкиВыбора.Вставить("ТекущиеДанные", ТекущиеДанные); + + ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("СписокВыбораАдресаЭППослеЗавершения", ЭтотОбъект, ПараметрыОбработкиВыбора); + + СписокВыбора.ПоказатьВыборЭлемента(ОбработчикОповещенияОЗакрытии); + КонецЕсли; + +КонецПроцедуры + +// Выполняет позиционирование в соответствующем динамическом списке на текущем контакте +// из списка "Контакты по предмету". +// +&НаКлиенте +Процедура УстановитьКонтактИзСпискаПредметовВыполнить() + + ТекущиеДанные = Элементы.КонтактыПоПредмету.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + УстановитьКонтактВСпискеПолучателей(ТекущиеДанные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьВсехПолучателей(Команда) + + ПолучателиПисьма.Очистить(); + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьПолучателя(Команда) + + ВыделенныеСтроки = Элементы.ПолучателиПисьма.ВыделенныеСтроки; + Для каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл + ПолучателиПисьма.Удалить(ПолучателиПисьма.НайтиПоИдентификатору(ВыделеннаяСтрока)); + КонецЦикла; + +КонецПроцедуры + +// Возвращает данные строки таблицы Найденные контакты. +// +// Параметры: +// ВыделеннаяСтрока - ДанныеФормыЭлементКоллекции - строка, данные которой получаются. +// +// Возвращаемое значение: +// Структура: +// * НаименованиеКонтакта - Строка +// * ИмяСправочника - Строка +// * Представление - Строка +// * Ссылка - ОпределяемыйТип.КонтактВзаимодействия +// +&НаКлиенте +Функция ДанныеСтрокиНайденныеКонтакты(ВыделеннаяСтрока) + + Возврат Элементы.НайденныеКонтакты.ДанныеСтроки(ВыделеннаяСтрока); + +КонецФункции + +&НаКлиенте +Процедура ВключитьВСписокПолучателей(Команда) + + Если Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов Тогда + Для каждого ВыделеннаяСтрока Из Элементы.НайденныеКонтакты.ВыделенныеСтроки Цикл + ДанныеСтроки = ДанныеСтрокиНайденныеКонтакты(ВыделеннаяСтрока); + ДобавитьПолучателя(ДанныеСтроки.Представление, ДанныеСтроки.НаименованиеКонтакта, ДанныеСтроки.Ссылка); + КонецЦикла; + Возврат; + КонецЕсли; + + НомерЭлементаФормы = Неопределено; + + Если Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы.Количество() = 1 Тогда + + НомерЭлементаФормы = 0; + + ИначеЕсли Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы.Количество() = 2 Тогда + + Если ТекущийЭлемент.Имя = "ПереместитьИзВерхнегоСпискаВВыбранное" Тогда + НомерЭлементаФормы = 0; + Иначе + НомерЭлементаФормы = 1; + КонецЕсли; + + КонецЕсли; + + Если НомерЭлементаФормы = Неопределено Тогда + Возврат; + КонецЕсли; + + ПеренестиВыделенныеСтроки( + Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы[НомерЭлементаФормы].ВыделенныеСтроки); + +КонецПроцедуры + +&НаКлиенте +Процедура ВариантПоискаВезде(Команда) + ВариантыПоиска = "Везде"; + ОбновитьМенюВариантовПоиска(); +КонецПроцедуры + +&НаКлиенте +Процедура ВариантПоискаВАдресах(Команда) + ВариантыПоиска = "ПоEmail"; + ОбновитьМенюВариантовПоиска(); +КонецПроцедуры + +&НаКлиенте +Процедура ВариантПоискаВНаименованияхКонтактов(Команда) + ВариантыПоиска = "ПоСтроке"; + ОбновитьМенюВариантовПоиска(); +КонецПроцедуры + +&НаКлиенте +Процедура ВариантПоискаПоДоменномуИмени(Команда) + ВариантыПоиска = "ПоДомену"; + ОбновитьМенюВариантовПоиска(); +КонецПроцедуры + +&НаКлиенте +Процедура Просмотр(Команда) + Если Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПользователей Тогда + ТекущиеДанные = Элементы.СписокПользователей.ТекущиеДанные; + ИначеЕсли ТипЗнч(ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда + ТекущиеДанные = ТекущийЭлемент.ТекущиеДанные; + Иначе + Возврат; + КонецЕсли; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ПоказатьЗначение(, ТекущиеДанные.Ссылка); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции осуществления поиска. + +&НаСервере +Функция НайтиКонтакты() + + Возврат Взаимодействия.НайтиКонтакты(СтрокаПоиска, Истина, НайденныеКонтакты); + +КонецФункции + +&НаСервере +Процедура НайтиПоEmail(ПоДомену) + + Взаимодействия.НайтиПоEmail(СтрокаПоиска, ПоДомену, НайденныеКонтакты); + +КонецПроцедуры + +&НаСервере +Функция КонтактыНайденныеПоСтроке() + + Возврат Взаимодействия.ПолнотекстовыйПоискКонтактовПоСтроке(СтрокаПоиска, НайденныеКонтакты, Истина); + +КонецФункции + +&НаСервере +Процедура НайтиПоНачалуНаименования() + + Взаимодействия.НайтиКонтактыСАдресамиПоНаименованию(СтрокаПоиска, НайденныеКонтакты); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Прочее + +&НаСервере +Процедура ЗаполнитьТаблицуПолучателей() + + табПолучатели = РеквизитФормыВЗначение("ПолучателиПисьма"); + + Для Каждого ГруппаВыбранных Из Параметры.СписокВыбранных Цикл + Если ГруппаВыбранных.Значение <> Неопределено Тогда + Для Каждого Элемент Из ГруппаВыбранных.Значение Цикл + НоваяСтрока = табПолучатели.Добавить(); + НоваяСтрока.Группа = ГруппаВыбранных.Представление; + ЗаполнитьЗначенияСвойств(НоваяСтрока, Элемент); + КонецЦикла; + КонецЕсли; + КонецЦикла; + + табПолучатели.Сортировать("Группа"); + + Если табПолучатели.Количество() > 0 Тогда + ТаблицаАдресов = + Взаимодействия.АдресаЭлектроннойПочтыКонтактов(табПолучатели.ВыгрузитьКолонку("Контакт")); + + Запрос = Новый Запрос; + Запрос.Текст = " + |ВЫБРАТЬ + | ПолучателиПисьма.Адрес, + | ПолучателиПисьма.Представление, + | ПолучателиПисьма.Контакт, + | ПолучателиПисьма.Группа + |ПОМЕСТИТЬ ПолучателиПисьма + |ИЗ + | &ПолучателиПисьма КАК ПолучателиПисьма + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | КонтактыАдреса.Контакт, + | КонтактыАдреса.СписокАдресов + |ПОМЕСТИТЬ КонтактыСписокАдресов + |ИЗ + | &КонтактыАдреса КАК КонтактыАдреса + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПолучателиПисьма.Адрес, + | ПолучателиПисьма.Представление, + | ПолучателиПисьма.Контакт, + | ПолучателиПисьма.Группа, + | ЕСТЬNULL(КонтактыСписокАдресов.СписокАдресов, """") КАК СписокАдресов + |ИЗ + | ПолучателиПисьма КАК ПолучателиПисьма + | ЛЕВОЕ СОЕДИНЕНИЕ КонтактыСписокАдресов КАК КонтактыСписокАдресов + | ПО КонтактыСписокАдресов.Контакт = ПолучателиПисьма.Контакт"; + + Запрос.УстановитьПараметр("ПолучателиПисьма", табПолучатели); + Запрос.УстановитьПараметр("КонтактыАдреса", ТаблицаАдресов); + + табПолучатели = Запрос.Выполнить().Выгрузить(); + + КонецЕсли; + + ЗначениеВРеквизитФормы(табПолучатели, "ПолучателиПисьма"); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьПолучателя(Адрес, Наименование, Контакт, СписокАдресов = "") + + УдалитьПустогоПолучателя(ПолучателиПисьма); + + НоваяСтрока = ПолучателиПисьма.Добавить(); + НоваяСтрока.Адрес = Адрес; + НоваяСтрока.Представление = Наименование; + НоваяСтрока.Контакт = Контакт; + НоваяСтрока.СписокАдресов = СписокАдресов; + НоваяСтрока.Группа = ГруппаПоУмолчанию; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УдалитьПустогоПолучателя(ПолучателиПисьма) + + Если ПолучателиПисьма.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ПолучательПисьма = ПолучателиПисьма[0]; + Если ПустаяСтрока(ПолучательПисьма.Адрес) И ПустаяСтрока(ПолучательПисьма.Представление) И Не ЗначениеЗаполнено(ПолучательПисьма.Контакт) Тогда + ПолучателиПисьма.Удалить(0); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьПолучателяИзСпискаПоПредмету() + + ТекущиеДанные = Элементы.КонтактыПоПредмету.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Результат = ВзаимодействияВызовСервера.НаименованиеИАдресаЭлектроннойПочтыКонтакта(ТекущиеДанные.Ссылка); + Если Результат <> Неопределено И Результат.Адреса.Количество() > 0 Тогда + СписокАдресов = СтрСоединить(Результат.Адреса.ВыгрузитьЗначения(), ";"); + Иначе + СписокАдресов = ""; + КонецЕсли; + + ДобавитьПолучателя(ТекущиеДанные.Адрес, ТекущиеДанные.Наименование, ТекущиеДанные.Ссылка, СписокАдресов); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьКонтактВСпискеПолучателей(Контакт) + + Если ЗначениеЗаполнено(Контакт) И Элементы.ПолучателиПисьма.ТекущиеДанные <> Неопределено Тогда + Элементы.ПолучателиПисьма.ТекущиеДанные.Контакт = Контакт; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьТекущимКонтакт(Контакт) + + Взаимодействия.УстановитьТекущимКонтакт(Контакт, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьГруппу(ИмяГруппы) + + Для Каждого ВыделеннаяСтрока Из Элементы.ПолучателиПисьма.ВыделенныеСтроки Цикл + Элемент = ПолучателиПисьма.НайтиПоИдентификатору(ВыделеннаяСтрока); + Элемент.Группа = ИмяГруппы; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ПеренестиВыделенныеСтроки(Знач ВыделенныеСтроки) + + Результат = Взаимодействия.АдресаЭлектроннойПочтыКонтактов(ВыделенныеСтроки, ГруппаПоУмолчанию); + Если Результат <> Неопределено Тогда + УдалитьПустогоПолучателя(ПолучателиПисьма); + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Результат, ПолучателиПисьма); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьГруппуПоУмолчанию() + + Если Параметры.Свойство("ГруппаПоУмолчанию") Тогда + ГруппаПоУмолчанию = Параметры.ГруппаПоУмолчанию; + КонецЕсли; + Если ПустаяСтрока(ГруппаПоУмолчанию) Тогда + ГруппаПоУмолчанию = НСтр("ru = 'Кому'"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УправлениеСтраницами() + + Если Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаВсеКонтактыПоПредмету + ИЛИ Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов + ИЛИ Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы.Количество() = 1 + ИЛИ (Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПользователей + И (НЕ ИспользоватьГруппыПользователей))Тогда + + Элементы.СтраницыПереместить.ТекущаяСтраница = Элементы.СтраницаПереместитьОднаТаблица; + + Иначе + + Элементы.СтраницыПереместить.ТекущаяСтраница = Элементы.СтраницаПереместитьДвеТаблицы; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокВыбораАдресаЭППослеЗавершения(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт + + Если ВыбранныйЭлемент = Неопределено Тогда + Возврат; + КонецЕсли; + + Индекс = ВыбранныйЭлемент.Значение; + Адрес = ДополнительныеПараметры.Результат[Индекс].АдресЭП; + Представление = ДополнительныеПараметры.Результат[Индекс].Представление; + УстановитьАдресИПредставлениеВыбранногоКонтакта(ДополнительныеПараметры.ТекущиеДанные, Представление, Адрес); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьАдресИПредставлениеВыбранногоКонтакта(ТекущиеДанные, Представление, Адрес) + + Позиция = СтрНайти(Представление, "<"); + Представление = ?(Позиция= 0, "", СокрЛП(Лев(Представление, Позиция-1))); + + ТекущиеДанные.Адрес = Адрес; + Если Не ПустаяСтрока(Представление) Тогда + ТекущиеДанные.Представление = Представление; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + Взаимодействия.УстановитьУсловноеОформлениеСпискаВыбора(ЭтотОбъект, "Группа", "ПолучателиПисьма.Группа"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьМенюВариантовПоиска() + + Элементы.ВариантПоискаВезде.Пометка = (ВариантыПоиска = "Везде"); + Элементы.ВариантПоискаВАдресах.Пометка = (ВариантыПоиска = "ПоEmail"); + Элементы.ВариантПоискаВНаименованияхКонтактов.Пометка = (ВариантыПоиска = "ПоСтроке"); + Элементы.ВариантПоискаПоДоменномуИмени.Пометка = (ВариантыПоиска = "ПоДомену"); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ПриИзмененииТолькоКонтактыСАдресами(Форма) + + Для Каждого ИмяСписка Из Форма.ИменаДобавленныхТаблиц Цикл + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.ЭтотОбъект[ИмяСписка.Значение], "Адрес", , ВидСравненияКомпоновкиДанных.Заполнено,, Форма.ПоказыватьТолькоКонтактыСАдресами); + + КонецЦикла; + + Если Форма.ПоказыватьТолькоКонтактыСАдресами Тогда + + Форма.Элементы.КонтактыПоПредмету.ОтборСтрок = Новый ФиксированнаяСтруктура("АдресЗаполнен", Истина); + Форма.Элементы.НайденныеКонтакты.ОтборСтрок = Новый ФиксированнаяСтруктура("ПредставлениеЗаполнено", Истина); + + + Иначе + + Форма.Элементы.НайденныеКонтакты.ОтборСтрок = Неопределено; + Форма.Элементы.КонтактыПоПредмету.ОтборСтрок = Неопределено; + + КонецЕсли + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260.mdo" new file mode 100644 index 00000000..cf1c217a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260/\320\220\320\264\321\200\320\265\321\201\320\275\320\260\321\217\320\232\320\275\320\270\320\263\320\260.mdo" @@ -0,0 +1,16 @@ + + + АдреснаяКнига + + ru + Адресная книга + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Form.form" new file mode 100644 index 00000000..0748bb40 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Form.form" @@ -0,0 +1,266 @@ + + + + ДекорацияИнформационнаяНадпись + 1 + + <key>ru</key> + <value>Для выполнения этого действия введите, пожалуйста, Ваш пароль.</value> + + true + true + + true + + + ДекорацияИнформационнаяНадписьExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияИнформационнаяНадписьКонтекстноеМеню + 2 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + + Пароль + 3 + true + true + + true + + + + Пароль + + + + ПарольExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + Bottom + + ФормаКоманднаяПанель + -1 + + ОК + 5 + true + true + + true + + + ОКExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + Отмена + 9 + true + true + + true + + + ОтменаExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnOpen + ПриОткрытии + + + OnClose + ПриЗакрытии + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 1 + + String + + + + true + + + true + + + + ПарольПользователяСервиса + 2 + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + Отмена + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Отмена + + + true + + + + Отмена + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Module.bsl" new file mode 100644 index 00000000..6e1c1193 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/Module.bsl" @@ -0,0 +1,79 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ВладелецФормы = Неопределено Тогда + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + ОповеститьОВыборе(ПарольПользователяСервиса); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + ТекстОшибки = ""; + + Если ТипЗнч(ЭтотОбъект.ОписаниеОповещенияОЗакрытии) = Тип("ОписаниеОповещения") Тогда + ПарольПользователяСервиса = Пароль; + Попытка + ВыполнитьОбработкуОповещения(ЭтотОбъект.ОписаниеОповещенияОЗакрытии, ПарольПользователяСервиса); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ЗаписатьОшибкуВЖурнал(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке) + Символы.ПС + + НСтр("ru = 'Возможно пароль введен неверно, повторите ввод пароля.'"); + КонецПопытки; + КонецЕсли; + + Закрыть(); + + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ПоказатьПредупреждение(, ТекстОшибки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Отмена(Команда) + + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Процедура ЗаписатьОшибкуВЖурнал(ТекстОшибки) + + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Ошибка выполнения'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265.mdo" new file mode 100644 index 00000000..90c657cd --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265/\320\220\321\203\321\202\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\222\320\241\320\265\321\200\320\262\320\270\321\201\320\265.mdo" @@ -0,0 +1,10 @@ + + + АутентификацияВСервисе + + ru + Аутентификация в сервисе + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Form.form" new file mode 100644 index 00000000..912a30dc --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Form.form" @@ -0,0 +1,634 @@ + + + + <key>ru</key> + <value>Информационная база была перемещена или восстановлена из резервной копии</value> + + + ГруппаПараметрыФормы + 18 + + ГруппаПринятиеРешенияОБлокировке + 20 + + НадписьПредупреждение + 1 + + <key>ru</key> + <value>Работа со всеми внешними ресурсами (синхронизация данных, отправка почты и т.п.), выполняемая по расписанию, +заблокирована для предотвращения конфликтов с основой информационной базой. + +Блокировка выполнена на сервере <b>Server-1C2 </>в<b> 10.01.2019 15:00 </>при попытке выполнения регламентного задания <b>Отправка SMS</>. + +Размещение информационной базы изменилось с +<b>C:\1c\db\</><b> +</>на +<b>Srvr="server-1c.local";Ref="db";</> + +<link ЖурналРегистрации>Техническая информация о причине блокировки</> + +• Если информационная база будет использоваться для ведения учета, нажмите <b>Информационная база перемещена</>. +• Если это копия информационной базы, нажмите <b>Это копия информационной базы</><b>.</> +• При работе в масштабируемом кластере для предотвращения ложных срабатываний из-за смены компьютеров, выступающих + в роли рабочих серверов, отключите проверку имени компьютера, нажмите <b>Еще - Проверять имя сервера</>. + +Блокировку также можно снять позднее в разделе <b>Администрирование</><b> - </><b>Обслуживание</>.</value> + + true + true + + true + + + НадписьПредупреждениеРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + НадписьПредупреждениеКонтекстноеМеню + 2 + true + true + + true + + true + + true + Label + true + + + URLProcessing + НадписьПредупреждениеОбработкаНавигационнойСсылки + + Left + + + + ГруппаКоманднаяПанель + 27 + + ИнформационнаяБазаПеремещена + 6 + true + true + + true + + + ИнформационнаяБазаПеремещенаРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИнформационнаяБазаПеремещена + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ЭтоКопияИнформационнойБазы + 8 + true + true + + true + + + ЭтоКопияИнформационнойБазыРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЭтоКопияИнформационнойБазы + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ФормаГруппаЕще + 14 + + ФормаПроверятьИмяСервера + 10 + true + true + + true + + + ФормаПроверятьИмяСервераРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПроверятьИмяСервера + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ФормаСправкаВГруппе + 12 + true + true + + true + + + ФормаСправкаВГруппеРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Еще</value> + + + ФормаГруппаЕщеРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ФормаСправка + 16 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + ГруппаКоманднаяПанельРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Center + + + true + true + + true + + + <key>ru</key> + <value>Принятие решения о блокировке</value> + + + ГруппаПринятиеРешенияОБлокировкеРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ГруппаПараметрыБлокировки + 22 + + ГруппаКоманднаяПанельПараметры + 32 + + ЗаписатьИЗакрыть + 34 + true + true + + true + + + ЗаписатьИЗакрытьРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ГруппаКоманднаяПанельПараметрыРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ПроверятьИмяСервера + 29 + true + true + + true + + + + ПроверятьИмяСервера + + + Right + ShowBottom + + ПроверятьИмяСервераРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + ПроверятьИмяСервераКонтекстноеМеню + 30 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Параметры блокировки</value> + + + ГруппаПараметрыБлокировкиРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + ГруппаПараметрыФормыРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + true + true + + true + + Center + + + OnCreateAtServer + ПриСозданииНаСервере + + LockWholeInterface + true + Vertical + true + true + true + true + + ПроверятьИмяСервера + + <key>ru</key> + <value>Проверять имя сервера</value> + + 2 + + Boolean + + + true + + + true + + + + ИмяСобытияЖурналаРегистрации + 1 + + String + + + + true + + + true + + + + ИнформационнаяБазаПеремещена + + <key>ru</key> + <value>Информационная база перемещена</value> + + 1 + + ru + Информационная база перемещена + + + true + + + + ИнформационнаяБазаПеремещена + + + DontUse + + + ЭтоКопияИнформационнойБазы + + <key>ru</key> + <value>Это копия информационной базы</value> + + 2 + + ru + Это копия информационной базы + + + true + + + + ЭтоКопияИнформационнойБазы + + + DontUse + + + ПроверятьИмяСервера + + <key>ru</key> + <value>Проверять имя сервера</value> + + 3 + + ru + Проверять имя сервера + + + true + + + + ПроверятьИмяСервера + + + DontUse + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 4 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + ПринятиеРешенияОБлокировке + + Boolean + + true + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Help/ru.html" new file mode 100644 index 00000000..cc1804b5 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Help/ru.html" @@ -0,0 +1,23 @@ + +

        При копировании информационной базы в другое местоположение возможны ситуации, когда обе информационные базы (и исходная и скопированная) продолжают взаимодействовать с внешними ресурсами (например, выполнение рассылки отчетов, синхронизация данных с другими программами, отправка или получение почты и т.п.). Для предотвращения таких ситуаций при изменении местоположения информационной базы блокируются все подобные регламентные задания. При первом входе в перемещенную базу администратор должен принять решение о ее роли: информационная база была перемещена (тогда работа с внешними ресурсами будет возобновлена) или это копия информационной базы (сохраняется блокировка работы с внешними ресурсами).

        +

        Как определяется факт перемещения информационной базы

        +

        При определении факта перемещения информационной базы в первую очередь проверяется изменение типа расположения информационной базы: с файлового на клиент-серверный и наоборот. Если тип расположения изменился, то она считается перемещенной. Если тип расположения не изменился, то сравнивается строка соединения информационной базы. Если строка соединения не изменилась, то дальнейшая проверка прекращается и база считается не перемещенной. Дальнейшая проверка зависит от типа расположения базы:

        +
      • +
        В файловой информационной базе факт перемещения определяется по служебному файлу DoNotCopy.txt, автоматически создаваемому программой в каталоге информационной базы. Внутри файла находится идентификатор информационной базы. Если файл отсутствует или идентификатор в файле отличается от идентификатора в базе, то информационная база считается перемещенной.
        +
      • +
        В клиент-серверной информационной базе факт перемещения определяется:
        +
        • +
          По изменению имени информационной базы. Например, если имя информационной базы было "base_bp", а стало "base_bp_test".
        • +
        • +
          Или по изменению имени компьютера и имени сервера. Например, если имя компьютера было "main_server", а стало "test_server", а также изменилось имя сервера с "main" на "test".

        При работе в модели сервиса признак перемещения приложения устанавливается Менеджером сервиса. Если информационная база загружается в приложение или выгружается из него, то этот факт определяется автоматически.

        +

        Действия по разблокированию информационной базы

        +
        • Если информационная база будет использоваться для ведения учета, нажмите кнопку Информационная база перемещена.
        • +
        • Если это копия информационная базы, нажмите кнопку Это копия информационной базы.
        В серверной информационной базе:
        +
        +
        • Для того чтобы окно о перемещении информационной базы не появлялось у всех пользователей, необходимо первому пользователю, у которого появилось данное окно, выключить флажок Еще - Проверять имя сервера
        • +
        • Данная настройка перенесется остальным пользователям централизованно.
        +

        +
        См. также:
        +

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Module.bsl" new file mode 100644 index 00000000..3c3dcea4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/Module.bsl" @@ -0,0 +1,190 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ИмяСобытияЖурналаРегистрации = БлокировкаРаботыСВнешнимиРесурсами.ИмяСобытияЖурналаРегистрации(); + + ПараметрыБлокировки = БлокировкаРаботыСВнешнимиРесурсами.СохраненныеПараметрыБлокировки(); + ПроверятьИмяСервера = ПараметрыБлокировки.ПроверятьИмяСервера; + + Если Параметры.ПринятиеРешенияОБлокировке Тогда + + ТекстСнятияБлокировки = РегламентныеЗаданияСлужебный.ЗначениеНастройки("РасположениеКомандыСнятияБлокировки"); + РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); + ИзменилосьРазделение = ПараметрыБлокировки.РазделениеВключено <> РазделениеВключено; + + Если РазделениеВключено Тогда + Элементы.ИнформационнаяБазаПеремещена.Заголовок = НСтр("ru = 'Приложение перемещено'"); + Элементы.ЭтоКопияИнформационнойБазы.Заголовок = НСтр("ru = 'Это копия приложения'"); + Заголовок = НСтр("ru = 'Приложение было перемещено или восстановлено из резервной копии'"); + КонецЕсли; + + Если Не РазделениеВключено И Не ИзменилосьРазделение Тогда + + УточнениеМасштабируемыйКластер = ?(ОбщегоНазначения.ИнформационнаяБазаФайловая(), "", + НСтр("ru = '• При работе в масштабируемом кластере для предотвращения ложных срабатываний из-за смены компьютеров, выступающих + | в роли рабочих серверов, отключите проверку имени компьютера, нажмите Еще - Проверять имя сервера.'")); + + НадписьПредупреждение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Работа со всеми внешними ресурсами (синхронизация данных, отправка почты и т.п.), выполняемая по расписанию, + |заблокирована для предотвращения конфликтов с основной информационной базой. + | + |%1 + | + |Техническая информация о причине блокировки + | + |• Если информационная база будет использоваться для ведения учета, нажмите Информационная база перемещена. + |• Если это копия информационной базы, нажмите Это копия информационной базы. + |%2 + | + |%3'"), + ПараметрыБлокировки.ПричинаБлокировки, + УточнениеМасштабируемыйКластер, + ТекстСнятияБлокировки); + ИначеЕсли Не РазделениеВключено И ИзменилосьРазделение Тогда + НадписьПредупреждение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Работа со всеми внешними ресурсами (синхронизация данных, отправка почты и т.п.), выполняемая по расписанию, + |заблокирована для предотвращения конфликтов с приложением в Интернете. + | + |Информационная база была загружена из приложения в Интернете + | + |• Если информационная база будет использоваться для ведения учета, нажмите Информационная база перемещена. + |• Если это копия информационной базы, нажмите Это копия информационной базы. + | + |%1'"), + ТекстСнятияБлокировки); + ИначеЕсли РазделениеВключено И Не ИзменилосьРазделение Тогда + НадписьПредупреждение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Работа со всеми внешними ресурсами (синхронизация данных, отправка почты и т.п.), выполняемая по расписанию, + |заблокирована для предотвращения конфликтов с приложением в Интернете. + | + |Приложение было перемещено + | + |• Если приложение будет использоваться для ведения учета, нажмите Приложение перемещено. + |• Если это копия приложения, нажмите Это копия приложения. + | + |%1'"), + ТекстСнятияБлокировки); + Иначе // Если РазделениеВключено И ИзменилосьРазделение + НадписьПредупреждение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Работа со всеми внешними ресурсами (синхронизация данных, отправка почты и т.п.), выполняемая по расписанию, + |заблокирована для предотвращения конфликтов с локальной версией. + | + |Приложение было загружено из локальной версии + | + |• Если приложение будет использоваться для ведения учета, нажмите Приложение перемещено. + |• Если это копия приложения, нажмите Это копия приложения. + | + |%1'"), + ТекстСнятияБлокировки); + КонецЕсли; + + Элементы.НадписьПредупреждение.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(НадписьПредупреждение); + + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Элементы.ФормаГруппаЕще.Видимость = Ложь; + Иначе + Элементы.ФормаПроверятьИмяСервера.Пометка = ПроверятьИмяСервера; + Элементы.ФормаСправка.Видимость = Ложь; + КонецЕсли; + + Иначе + Элементы.ГруппаПараметрыФормы.ТекущаяСтраница = Элементы.ГруппаПараметрыБлокировки; + Элементы.НадписьПредупреждение.Видимость = Ложь; + Элементы.ЗаписатьИЗакрыть.КнопкаПоУмолчанию = Истина; + Заголовок = НСтр("ru = 'Параметры блокировки работы с внешними ресурсами'"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НадписьПредупреждениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СобытиеЖурналаРегистрации", ИмяСобытияЖурналаРегистрации); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", ПараметрыФормы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ИнформационнаяБазаПеремещена(Команда) + + РазрешитьРаботуСВнешнимиРесурсами(); + СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения(); + ОбновитьИнтерфейс(); + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЭтоКопияИнформационнойБазы(Команда) + + ЗапретитьРаботуСВнешнимиРесурсами(); + СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения(); + ОбновитьИнтерфейс(); + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверятьИмяСервера(Команда) + + ПроверятьИмяСервера = Не ПроверятьИмяСервера; + Элементы.ФормаПроверятьИмяСервера.Пометка = ПроверятьИмяСервера; + УстановитьПроверкуИмениСервераВПараметрыБлокировки(ПроверятьИмяСервера); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + УстановитьПроверкуИмениСервераВПараметрыБлокировки(ПроверятьИмяСервера); + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Процедура РазрешитьРаботуСВнешнимиРесурсами() + + БлокировкаРаботыСВнешнимиРесурсами.РазрешитьРаботуСВнешнимиРесурсами(); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ЗапретитьРаботуСВнешнимиРесурсами() + + БлокировкаРаботыСВнешнимиРесурсами.ЗапретитьРаботуСВнешнимиРесурсами(); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьПроверкуИмениСервераВПараметрыБлокировки(ПроверятьИмяСервера) + + БлокировкаРаботыСВнешнимиРесурсами.УстановитьПроверкуИмениСервераВПараметрыБлокировки(ПроверятьИмяСервера); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270.mdo" new file mode 100644 index 00000000..15a98486 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270/\320\221\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\260\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\321\201\321\203\321\200\321\201\320\260\320\274\320\270.mdo" @@ -0,0 +1,15 @@ + + + БлокировкаРаботыСВнешнимиРесурсами + + ru + Блокировка работы с внешними ресурсами + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Form.form" new file mode 100644 index 00000000..80aa24f1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Form.form" @@ -0,0 +1,1516 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + None + Change + Copy + EndEdit + + Колонки + 37 + + СписокПометка + 12 + true + true + + true + + + + Список.Check + + + + СписокПометкаРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + СписокПометкаКонтекстноеМеню + 13 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + СписокЗначение + 30 + true + true + + true + + + + Список.Value + + + + СписокЗначениеРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + СписокЗначениеКонтекстноеМеню + 31 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Колонки</value> + + + КолонкиРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + None + + СписокКоманднаяПанель + 3 + true + true + + true + + Left + + + BeforeAddRow + СписокПередНачаломДобавления + + + BeforeDeleteRow + СписокПередУдалением + + + BeforeEditEnd + СписокПередОкончаниемРедактирования + + + ChoiceProcessing + СписокОбработкаВыбора + + + BeforeRowChange + СписокПередНачаломИзменения + + + true + true + + true + + СписокСтрокаПоиска + 45 + + СписокСтрокаПоискаРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 46 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостояниеПросмотра + 48 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 49 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокУправлениеПоиском + 51 + + СписокУправлениеПоискомРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 52 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокДобавлениеУдалениеМеню + 104 + + СписокПодборМеню + 74 + true + true + + true + + + СписокПодборМенюРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Pickup + Auto + true + true + UserCmds + Auto + + + СписокДобавитьМеню + 86 + true + true + + true + + + СписокДобавитьМенюРасширеннаяПодсказка + 87 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Add + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокВставитьИзБуфераОбменаМеню + 76 + true + true + + true + + + СписокВставитьИзБуфераОбменаМенюРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВставитьИзБуфераОбмена + Auto + true + true + UserCmds + Auto + + + СписокУдалитьМеню + 88 + true + true + + true + + + СписокУдалитьМенюРасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавление удаление меню</value> + + + СписокДобавлениеУдалениеМенюРасширеннаяПодсказка + 105 + true + true + + true + + Label + true + true + + Left + + + + + + СписокВключениеОтключениеФлажковМеню + 78 + + СписокУстановитьФлажкиМеню + 80 + true + true + + true + + + СписокУстановитьФлажкиМенюРасширеннаяПодсказка + 81 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CheckAll + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + СписокСнятьФлажкиМеню + 82 + true + true + + true + + + СписокСнятьФлажкиМенюРасширеннаяПодсказка + 83 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.UncheckAll + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Включение отключение флажков меню</value> + + + СписокВключениеОтключениеФлажковМенюРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + + + + СписокСортировкаМеню + 90 + + СписокСортироватьПоВозрастаниюМеню + 92 + true + true + + true + + + СписокСортироватьПоВозрастаниюМенюРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SortListAsc + Auto + true + true + UserCmds + Auto + + + СписокСортироватьПоУбываниюМеню + 94 + true + true + + true + + + СписокСортироватьПоУбываниюМенюРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SortListDesc + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Сортировка меню</value> + + + СписокСортировкаМенюРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + + + + СписокПеремещениеМеню + 96 + + СписокПереместитьВверхМеню + 98 + true + true + + true + + + СписокПереместитьВверхМенюРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.MoveUp + Auto + true + true + UserCmds + Auto + + + СписокПереместитьВнизМеню + 100 + true + true + + true + + + СписокПереместитьВнизМенюРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.MoveDown + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Перемещение меню</value> + + + СписокПеремещениеМенюРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + + Список.Picture + + + + Подвал + 106 + + СписокПодборПодвал + 108 + + <key>ru</key> + <value>Подобрать еще</value> + + true + true + + true + + + СписокПодборПодвалРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Item.Список.StandardCommand.Pickup + Auto + true + true + UserCmds + Auto + + + НижняяКоманднаяПанель + 24 + + КомандаОК + 26 + true + true + + true + + + КомандаОКРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗавершитьРедактирование + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 28 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Нижняя командная панель</value> + + + НижняяКоманднаяПанельРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Подвал</value> + + + ПодвалРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + СписокДобавлениеУдаление + 102 + + СписокПодбор + 22 + true + true + + true + + + СписокПодборРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Pickup + Auto + true + true + UserCmds + Auto + + + СписокДобавить + 10 + true + true + + true + + + СписокДобавитьРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Add + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокВставитьИзБуфераОбмена + 33 + true + true + + true + + + СписокВставитьИзБуфераОбменаРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВставитьИзБуфераОбмена + Auto + true + true + UserCmds + Auto + + + СписокУдалить + 60 + true + true + + true + + + СписокУдалитьРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавление удаление</value> + + + СписокДобавлениеУдалениеРасширеннаяПодсказка + 103 + true + true + + true + + Label + true + true + + Left + + + + + + СписокВключениеОтключениеФлажков + 43 + + СписокУстановитьФлажки + 18 + true + true + + true + + + СписокУстановитьФлажкиРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CheckAll + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + СписокСнятьФлажки + 20 + true + true + + true + + + СписокСнятьФлажкиРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.UncheckAll + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Включение отключение флажков</value> + + + СписокВключениеОтключениеФлажковРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + + СписокСортировка + 54 + + СписокСортироватьПоВозрастанию + 56 + true + true + + true + + + СписокСортироватьПоВозрастаниюРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SortListAsc + Auto + true + true + UserCmds + Auto + + + СписокСортироватьПоУбыванию + 58 + true + true + + true + + + СписокСортироватьПоУбываниюРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SortListDesc + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Сортировка</value> + + + СписокСортировкаРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + + СписокПеремещение + 8 + + СписокПереместитьВверх + 64 + true + true + + true + + + СписокПереместитьВверхРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.MoveUp + Auto + true + true + UserCmds + Auto + + + СписокПереместитьВниз + 66 + true + true + + true + + + СписокПереместитьВнизРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.MoveDown + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Перемещение</value> + + + СписокПеремещениеРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + + ФормаИзменитьФорму + 70 + true + true + + true + + + ФормаИзменитьФормуРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 72 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + НижняяКоманднаяПанель + + + + Список + + <key>ru</key> + <value>Список</value> + + 1 + + ValueList + + + true + + + true + + + + + + + ОграничиватьВыборУказаннымиЗначениями + 2 + + Boolean + + + true + + + true + + + + ЗавершитьРедактирование + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + Завершить редактирование + + + true + + + + ЗавершитьРедактирование + + + DontUse + + + ВставитьИзБуфераОбмена + + <key>ru</key> + <value>Вставить из буфера обмена...</value> + + 2 + + ru + Вставить из буфера обмена + + + true + + + CommonPicture.ВставитьИзБуфераОбмена + + + + ВставитьИзБуфераОбмена + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Help/ru.html" new file mode 100644 index 00000000..5414697a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Help/ru.html" @@ -0,0 +1,13 @@ + +

        Предназначен для ввода нескольких значений в список для отбора.

        +

        Открывается из вкладки Отборы окна Настройки отчета по двойному щелчку мыши в столбце Значение для операций В списке, Не в списке, В группе из списка, Не в группе из списка.

        +

        Подбор значений

        +
        • +
          Для добавления нескольких значений в список нажмите кнопку Подбор. Выберите несколько значений из соответствующего списка.
          +
        • +
          Для того чтобы выбирать значения по одному, выполните команду Добавить меню Еще.
          +
        • +
          Для того чтобы элементы списка попали в список значений для отбора, необходимо установить соответствующие флажки (по умолчанию все флажки установлены).

        Подбор значений из буфера обмена

        +
        • Нажмите кнопку , выберите значения, нажмите кнопку Вставить в список.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Module.bsl" new file mode 100644 index 00000000..52a6e2eb --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/Module.bsl" @@ -0,0 +1,311 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ЭлементСпискаДоНачалаИзменения; // см. ЭлементСпискаДоНачалаИзменения + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Параметры.Свойство("ОграничиватьВыборУказаннымиЗначениями", ОграничиватьВыборУказаннымиЗначениями); + БыстрыйВыбор = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "БыстрыйВыбор", Ложь); + + ИнформацияОТипах = ОтчетыСервер.РасширенноеОписаниеТипов(Параметры.ОписаниеТипов, Истина); + ИнформацияОТипах.Вставить("СодержитСсылочныеТипы", Ложь); + + ВсеТипыСБыстрымВыбором = ИнформацияОТипах.КоличествоТипов < 10 + И (ИнформацияОТипах.КоличествоТипов = ИнформацияОТипах.ОбъектныеТипы.Количество()); + Для Каждого Тип Из ИнформацияОТипах.ОбъектныеТипы Цикл + ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип); + Если ОбъектМетаданных = Неопределено Тогда + Продолжить; + КонецЕсли; + + ИнформацияОТипах.СодержитСсылочныеТипы = Истина; + + Вид = ВРег(СтрРазделить(ОбъектМетаданных.ПолноеИмя(), ".")[0]); + Если Вид <> "ПЕРЕЧИСЛЕНИЕ" Тогда + Если Вид = "СПРАВОЧНИК" + Или Вид = "ПЛАНВИДОВРАСЧЕТА" + Или Вид = "ПЛАНВИДОВХАРАКТЕРИСТИК" + Или Вид = "ПЛАНОБМЕНА" + Или Вид = "ПЛАНСЧЕТОВ" Тогда + Если ОбъектМетаданных.СпособВыбора <> Метаданные.СвойстваОбъектов.СпособВыбора.БыстрыйВыбор Тогда + ВсеТипыСБыстрымВыбором = Ложь; + КонецЕсли; + Иначе + ВсеТипыСБыстрымВыбором = Ложь; + КонецЕсли; + КонецЕсли; + + Если Не ВсеТипыСБыстрымВыбором Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + ЗначенияДляВыбора = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ЗначенияДляВыбора"); + Отмеченные = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Отмеченные"); + + Если ВсеТипыСБыстрымВыбором Тогда + БыстрыйВыбор = Истина; + КонецЕсли; + + Если Не ОграничиватьВыборУказаннымиЗначениями И БыстрыйВыбор И Не Параметры.ЗначенияДляВыбораЗаполнены Тогда + ЗначенияДляВыбора = ОтчетыСервер.ЗначенияДляВыбора(Параметры); + КонецЕсли; + + Заголовок = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Представление"); + Если ПустаяСтрока(Заголовок) Тогда + Заголовок = Строка(Параметры.ОписаниеТипов); + КонецЕсли; + + Если ИнформацияОТипах.КоличествоТипов = 0 Тогда + ОграничиватьВыборУказаннымиЗначениями = Истина; + ИначеЕсли Не ИнформацияОТипах.СодержитОбъектныеТипы Или БыстрыйВыбор Тогда + Элементы.СписокПодбор.Видимость = Ложь; + Элементы.СписокПодборМеню.Видимость = Ложь; + Элементы.СписокПодборПодвал.Видимость = Ложь; + Элементы.СписокДобавить.ТолькоВоВсехДействиях = Ложь; + КонецЕсли; + + ВыборГруппИЭлементов = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыборГруппИЭлементов"); + Элементы.СписокЗначение.ВыборГруппИЭлементов = ОтчетыКлиентСервер.ЗначениеТипаГруппыИЭлементы(ВыборГруппИЭлементов); + + Список.ТипЗначения = ИнформацияОТипах.ОписаниеТиповДляФормы; + Если ТипЗнч(ЗначенияДляВыбора) = Тип("СписокЗначений") Тогда + ЗначенияДляВыбора.ЗаполнитьПометки(Ложь); + ОтчетыКлиентСервер.ДополнитьСписок(Список, ЗначенияДляВыбора, Истина, Истина); + КонецЕсли; + Если ТипЗнч(Отмеченные) = Тип("СписокЗначений") Тогда + Отмеченные.ЗаполнитьПометки(Истина); + ОтчетыКлиентСервер.ДополнитьСписок(Список, Отмеченные, Истина, Не ОграничиватьВыборУказаннымиЗначениями); + КонецЕсли; + + Если Список.Количество() = 0 Тогда + Элементы.СписокПодборПодвал.Видимость = Ложь; + КонецЕсли; + + Если ОграничиватьВыборУказаннымиЗначениями Тогда + Элементы.СписокЗначение.ТолькоПросмотр = Истина; + Элементы.Список.ИзменятьСоставСтрок = Ложь; + + Элементы.СписокДобавлениеУдаление.Видимость = Ложь; + Элементы.СписокДобавлениеУдалениеМеню.Видимость = Ложь; + + Элементы.СписокСортировка.Видимость = Ложь; + Элементы.СписокСортировкаМеню.Видимость = Ложь; + + Элементы.СписокПеремещение.Видимость = Ложь; + Элементы.СписокПеремещениеМеню.Видимость = Ложь; + + Элементы.СписокПодборПодвал.Видимость = Ложь; + КонецЕсли; + + ПараметрыВыбора = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ПараметрыВыбора"); + Если ТипЗнч(ПараметрыВыбора) = Тип("Массив") Тогда + Элементы.СписокЗначение.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора); + КонецЕсли; + + КлючСохраненияПоложенияОкна = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "КлючУникальности"); + Если ПустаяСтрока(КлючСохраненияПоложенияОкна) Тогда + КлючСохраненияПоложенияОкна = ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой(Строка(Список.ТипЗначения), 128); + КонецЕсли; + + Если ОграничиватьВыборУказаннымиЗначениями + Или Не ИнформацияОТипах.СодержитСсылочныеТипы + Или Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла") Тогда + Элементы.СписокВставитьИзБуфераОбмена.Видимость = Ложь; + Элементы.СписокВставитьИзБуфераОбменаМеню.Видимость = Ложь; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПередНачаломИзменения(Элемент, Отказ) + СтрокаИдентификатор = Элемент.ТекущаяСтрока; + Если СтрокаИдентификатор = Неопределено Тогда + Возврат; + КонецЕсли; + + СписокЗначенийВФорме = ЭтотОбъект[Элемент.Имя]; + ЭлементСпискаВФорме = СписокЗначенийВФорме.НайтиПоИдентификатору(СтрокаИдентификатор); + + ТекущаяСтрока = Элемент.ТекущиеДанные; + Если ТекущаяСтрока = Неопределено Тогда + Возврат; + КонецЕсли; + ЭлементСпискаДоНачалаИзменения = ЭлементСпискаДоНачалаИзменения(); + ЗаполнитьЗначенияСвойств(ЭлементСпискаДоНачалаИзменения, ЭлементСпискаВФорме); + ЭлементСпискаДоНачалаИзменения.Идентификатор = СтрокаИдентификатор; +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Если ОграничиватьВыборУказаннымиЗначениями Тогда + Отказ = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередУдалением(Элемент, Отказ) + Если ОграничиватьВыборУказаннымиЗначениями Тогда + Отказ = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СписокПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаНачалаРедактирования, ОтменаЗавершенияРедактирования) + Если ОтменаНачалаРедактирования Тогда + Возврат; + КонецЕсли; + + СтрокаИдентификатор = Элемент.ТекущаяСтрока; + Если СтрокаИдентификатор = Неопределено Тогда + Возврат; + КонецЕсли; + СписокЗначенийВФорме = ЭтотОбъект[Элемент.Имя]; + ЭлементСпискаВФорме = СписокЗначенийВФорме.НайтиПоИдентификатору(СтрокаИдентификатор); + + Значение = ЭлементСпискаВФорме.Значение; + + Для Каждого ЭлементСпискаДубльВФорме Из СписокЗначенийВФорме Цикл + Если ЭлементСпискаДубльВФорме.Значение = Значение И ЭлементСпискаДубльВФорме <> ЭлементСпискаВФорме Тогда + ОтменаЗавершенияРедактирования = Истина; // Запрет дублей. + Прервать; + КонецЕсли; + КонецЦикла; + + ЕстьИнформация = (ЭлементСпискаДоНачалаИзменения <> Неопределено И ЭлементСпискаДоНачалаИзменения.Идентификатор = СтрокаИдентификатор); + Если Не ОтменаЗавершенияРедактирования И ЕстьИнформация И ЭлементСпискаДоНачалаИзменения.Значение <> Значение Тогда + Если ОграничиватьВыборУказаннымиЗначениями Тогда + ОтменаЗавершенияРедактирования = Истина; + Иначе + ЭлементСпискаВФорме.Представление = ""; // Автозаполнение представления. + ЭлементСпискаВФорме.Пометка = Истина; // Включение флажка. + КонецЕсли; + КонецЕсли; + + Если ОтменаЗавершенияРедактирования Тогда + // Откат значений. + Если ЕстьИнформация Тогда + ЗаполнитьЗначенияСвойств(ЭлементСпискаВФорме, ЭлементСпискаДоНачалаИзменения); + КонецЕсли; + // Перезапуск события "ПередОкончаниемРедактирования" с ОтменаНачалаРедактирования = Истина. + Элемент.ЗакончитьРедактированиеСтроки(Истина); + Иначе + Если НоваяСтрока Тогда + ЭлементСпискаВФорме.Пометка = Истина; // Включение флажка. + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СписокОбработкаВыбора(Элемент, РезультатВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Выбранные = ОтчетыКлиентСервер.ЗначенияСписком(РезультатВыбора); + Выбранные.ЗаполнитьПометки(Истина); + + Дополнение = ОтчетыКлиентСервер.ДополнитьСписок(Список, Выбранные, Истина, Истина); + Если Дополнение.Всего = 0 Тогда + Возврат; + КонецЕсли; + Если Дополнение.Всего = 1 Тогда + ЗаголовокОповещения = НСтр("ru = 'Элемент добавлен в список'"); + Иначе + ЗаголовокОповещения = НСтр("ru = 'Элементы добавлены в список'"); + КонецЕсли; + ПоказатьОповещениеПользователя( + ЗаголовокОповещения, + , + Строка(Выбранные), + БиблиотекаКартинок.ВыполнитьЗадачу); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗавершитьРедактирование(Команда) + Если МодальныйРежим + Или РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс + Или ВладелецФормы = Неопределено Тогда + Закрыть(Список); + Иначе + ОповеститьОВыборе(Список); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ВставитьИзБуфераОбмена(Команда) + ПараметрыПоиска = Новый Структура; + ПараметрыПоиска.Вставить("ОписаниеТипов", Список.ТипЗначения); + ПараметрыПоиска.Вставить("ПараметрыВыбора", Элементы.СписокЗначение.ПараметрыВыбора); + ПараметрыПоиска.Вставить("ПредставлениеПоля", Заголовок); + ПараметрыПоиска.Вставить("Сценарий", "ПоискСсылок"); + + ПараметрыВыполнения = Новый Структура; + Обработчик = Новый ОписаниеОповещения("ВставитьИзБуфераОбменаЗавершение", ЭтотОбъект, ПараметрыВыполнения); + + МодульЗагрузкаДанныхИзФайлаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗагрузкаДанныхИзФайлаКлиент"); + МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ВставитьИзБуфераОбменаЗавершение(НайденныеОбъекты, ПараметрыВыполнения) Экспорт + + Если НайденныеОбъекты = Неопределено Тогда + Возврат; + КонецЕсли; + + Для Каждого Значение Из НайденныеОбъекты Цикл + ОтчетыКлиентСервер.ДобавитьУникальноеЗначениеВСписок(Список, Значение, Неопределено, Истина); + КонецЦикла; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Конструкторы. + +// Конструктор описания свойств элемента списка значений. +// +// Возвращаемое значение: +// Структура - описание свойств элемента списка значений, где: +// * Идентификатор - Число +// * Пометка - Булево +// * Значение - Неопределено +// * Представление - Строка +// +&НаКлиенте +Функция ЭлементСпискаДоНачалаИзменения() + + Элемент = Новый Структура(); + Элемент.Вставить("Идентификатор", 0); + Элемент.Вставить("Пометка", Ложь); + Элемент.Вставить("Значение", Неопределено); + Элемент.Вставить("Представление", ""); + + Возврат Элемент; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270.mdo" new file mode 100644 index 00000000..186e2e99 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270/\320\222\320\262\320\276\320\264\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\320\270\321\201\320\272\320\276\320\274\320\241\320\244\320\273\320\260\320\266\320\272\320\260\320\274\320\270.mdo" @@ -0,0 +1,15 @@ + + + ВводЗначенийСпискомСФлажками + + ru + Ввод значений списком с флажками + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Form.form" new file mode 100644 index 00000000..4df76c12 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Form.form" @@ -0,0 +1,368 @@ + + + + Перевести + 11 + + <key>ru</key> + <value>Перевести автоматически</value> + + true + true + + true + + + ПеревестиРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Перевести + PictureAndText + true + true + UserCmds + + CommonPicture.ЗаполнитьФорму + + Auto + + + ГруппаЯзыки + 5 + true + true + + true + + + <key>ru</key> + <value>Языки</value> + + + ГруппаЯзыкиРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ОК + 7 + true + true + + true + + true + + ОКРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + true + true + true + UserCmds + + StdPicture.WriteAndClose + + Auto + + + ФормаОтмена + 3 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ОсновнойЯзык + 1 + + + true + + + true + + + + Языки + 3 + + ValueTable + + + true + + + true + + + КодЯзыка + 1 + + String + + 10 + + + + true + + + true + + + + Представление + 2 + + String + + + + true + + + true + + + + Имя + 3 + + String + + 32 + + + + true + + + true + + + + Суффикс + 4 + + String + + 10 + + + + true + + + true + + + + ФормаРедактирования + 5 + + String + + + + true + + + true + + + + + МультиязычныеСтрокиВРеквизитах + 2 + + Boolean + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + Auto + + + Перевести + + <key>ru</key> + <value>Перевести</value> + + 2 + + ru + Перевести + + + true + + + + Перевести + + + Auto + + + Заголовок + + String + + + + + ИмяРеквизита + + String + + + + + Представления + + + + Ссылка + + AnyRef + + + + ТекущиеЗначение + + String + + + + + ТолькоПросмотр + + Boolean + + + + ЗначенияРеквизитов + + + + Объект + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Help/ru.html" new file mode 100644 index 00000000..030e6324 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Help/ru.html" @@ -0,0 +1,6 @@ +Предназначена для перевода текстовых реквизитов на другие языки. +
        У таких реквизитов есть кнопка, при нажатии на которую открывается ввод на разных языках. Необходимо ее нажать и ввести значение на нужном языке, перевести можно вручную. 
        +
        Если подключен сервис автоматического перевода, появляется возможность автоматического перевода реквизитов на другие языки. Нажмите кнопку Перевести автоматически.
        + + + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Module.bsl" new file mode 100644 index 00000000..5302735c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/Module.bsl" @@ -0,0 +1,343 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОбъектМетаданных = МультиязычностьСервер.ОбъектМетаданных(Параметры.Объект); + Если ОбъектМетаданных = Неопределено Тогда + ОбъектМетаданных = МультиязычностьСервер.ОбъектМетаданных(Параметры.Ссылка); + КонецЕсли; + + ТолькоПросмотр = Не ПравоДоступа("Изменение", ОбъектМетаданных); + + МультиязычныеСтрокиВРеквизитах = МультиязычностьСервер.МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных); + Реквизит = ОбъектМетаданных.Реквизиты.Найти(Параметры.ИмяРеквизита); + Если Реквизит = Неопределено Тогда + Для каждого СтандартныйРеквизит Из ОбъектМетаданных.СтандартныеРеквизиты Цикл + Если СтрСравнить(СтандартныйРеквизит.Имя, Параметры.ИмяРеквизита) = 0 Тогда + Реквизит = СтандартныйРеквизит; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + СуффиксОсновногоЯзыка = ""; + СуффиксДополнительногоЯзыка1 = "Язык1"; + СуффиксДополнительногоЯзыка2 = "Язык2"; + + Если СтрСравнить(Константы.ОсновнойЯзык.Получить(), ТекущийЯзык().КодЯзыка) <> 0 Тогда + СуффиксОсновногоЯзыка = МультиязычностьСервер.СуффиксТекущегоЯзыка(); + Если СуффиксОсновногоЯзыка = "Язык1" Тогда + СуффиксДополнительногоЯзыка1 = ""; + ИначеЕсли СуффиксОсновногоЯзыка = "Язык2" Тогда + СуффиксДополнительногоЯзыка2 = ""; + КонецЕсли; + + КонецЕсли; + + НаборЯзыков = Новый ТаблицаЗначений; + НаборЯзыков.Колонки.Добавить("КодЯзыка", ОбщегоНазначения.ОписаниеТипаСтрока(10)); + НаборЯзыков.Колонки.Добавить("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(150)); + НаборЯзыков.Колонки.Добавить("Суффикс", ОбщегоНазначения.ОписаниеТипаСтрока(50)); + + Если МультиязычныеСтрокиВРеквизитах Тогда + + ПредставленияЯзыков = Новый Соответствие; + Для Каждого ЯзыкКонфигурации Из Метаданные.Языки Цикл + ПредставленияЯзыков.Вставить(ЯзыкКонфигурации.КодЯзыка, ЯзыкКонфигурации.Представление()); + КонецЦикла; + + НовыйЯзык = НаборЯзыков.Добавить(); + НовыйЯзык.КодЯзыка = Константы.ОсновнойЯзык.Получить(); + НовыйЯзык.Представление = ПредставленияЯзыков[НовыйЯзык.КодЯзыка]; + НовыйЯзык.Суффикс = СуффиксОсновногоЯзыка; + + Если МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда + НовыйЯзык = НаборЯзыков.Добавить(); + НовыйЯзык.КодЯзыка = МультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы(); + НовыйЯзык.Представление = ПредставленияЯзыков[НовыйЯзык.КодЯзыка]; + НовыйЯзык.Суффикс = СуффиксДополнительногоЯзыка1; + КонецЕсли; + + Если МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда + НовыйЯзык = НаборЯзыков.Добавить(); + НовыйЯзык.КодЯзыка = МультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы(); + НовыйЯзык.Представление = ПредставленияЯзыков[НовыйЯзык.КодЯзыка]; + НовыйЯзык.Суффикс = СуффиксДополнительногоЯзыка2; + КонецЕсли; + + Иначе + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + МодульУправлениеПечатьюМультиязычность.ПриЗаполненииНабораЯзыков(НаборЯзыков); + КонецЕсли; + + Для Каждого ЯзыкКонфигурации Из Метаданные.Языки Цикл + + Если НаборЯзыков.НайтиСтроки(Новый Структура("КодЯзыка", ЯзыкКонфигурации.КодЯзыка)).Количество() > 0 Тогда + Продолжить; + КонецЕсли; + + НовыйЯзык = НаборЯзыков.Добавить(); + НовыйЯзык.КодЯзыка = ЯзыкКонфигурации.КодЯзыка; + НовыйЯзык.Представление = ЯзыкКонфигурации.Представление(); + + КонецЦикла; + + КонецЕсли; + + Если Реквизит = Неопределено Тогда + ШаблонОшибки = НСтр("ru = 'При открытии формы ВводНаРазныхЯзыках в параметре ИмяРеквизита указан не существующий реквизит %1'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, Параметры.ИмяРеквизита); + КонецЕсли; + + Если Реквизит.МногострочныйРежим Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "МногострочныйРежим"); + КонецЕсли; + + Для Каждого ЯзыкКонфигурации Из НаборЯзыков Цикл + НоваяСтрока = Языки.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ЯзыкКонфигурации); + НоваяСтрока.Имя = "_" + СтрЗаменить(Новый УникальныйИдентификатор, "-", ""); + КонецЦикла; + + СформироватьПоляВводаНаРазныхЯзыках(Реквизит.МногострочныйРежим, Параметры.ТолькоПросмотр Или ТолькоПросмотр); + + Если Не ПустаяСтрока(Параметры.Заголовок) Тогда + Заголовок = Параметры.Заголовок; + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 на разных языках'"), Реквизит.Представление()); + Если ПустаяСтрока(Заголовок) Тогда + Заголовок = Реквизит.Представление(); + КонецЕсли; + КонецЕсли; + + ОписаниеЯзыка = ОписаниеЯзыка(ТекущийЯзык().КодЯзыка); + Если ОписаниеЯзыка <> Неопределено Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; + КонецЕсли; + + Если МультиязычныеСтрокиВРеквизитах Тогда + + ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка(); + + ОписаниеЯзыка = ОписаниеЯзыка(Константы.ОсновнойЯзык.Получить()); + Если ПустаяСтрока(СуффиксОсновногоЯзыка) Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; + Иначе + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксОсновногоЯзыка]; + КонецЕсли; + + Если МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда + ОписаниеЯзыка = ОписаниеЯзыка(Константы.ДополнительныйЯзык1.Получить()); + Если ПустаяСтрока(СуффиксДополнительногоЯзыка1) Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; + Иначе + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка1]; + КонецЕсли; + КонецЕсли; + + Если МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда + ОписаниеЯзыка = ОписаниеЯзыка(Константы.ДополнительныйЯзык2.Получить()); + Если ПустаяСтрока(СуффиксДополнительногоЯзыка2) Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; + Иначе + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка2]; + КонецЕсли; + КонецЕсли; + + Иначе + + ОсновнойЯзык = Метаданные.ОсновнойЯзык.КодЯзыка; + + Для каждого Представление Из Параметры.Представления Цикл + + ОписаниеЯзыка = ОписаниеЯзыка(Представление.КодЯзыка); + Если ОписаниеЯзыка <> Неопределено Тогда + Если СтрСравнить(ОписаниеЯзыка.КодЯзыка, ТекущийЯзык().КодЯзыка) = 0 Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = ?(ЗначениеЗаполнено(Параметры.ТекущиеЗначение), Параметры.ТекущиеЗначение, Представление[Параметры.ИмяРеквизита]); + Иначе + ЭтотОбъект[ОписаниеЯзыка.Имя] = Представление[Параметры.ИмяРеквизита]; + КонецЕсли; + КонецЕсли; + + КонецЦикла; + КонецЕсли; + + Элементы.Перевести.Видимость = Ложь; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.ПереводТекста") Тогда + МодульПереводТекстаНаДругиеЯзыки = ОбщегоНазначения.ОбщийМодуль("ПереводТекстаНаДругиеЯзыки"); + Элементы.Перевести.Видимость = МодульПереводТекстаНаДругиеЯзыки.ДоступенПереводТекста() + И Не Параметры.ТолькоПросмотр И Не ТолькоПросмотр; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + Элементы.Переместить(Элементы.Перевести, Элементы.ФормаКоманднаяПанель); + Элементы.ОК.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + Если Не Модифицированность Тогда + Закрыть(); + Возврат; + КонецЕсли; + + Результат = Новый Структура; + + Результат.Вставить("ОсновнойЯзык", ОсновнойЯзык); + Результат.Вставить("ХранениеВТабличнойЧасти", Не МультиязычныеСтрокиВРеквизитах); + Результат.Вставить("Модифицированность", Модифицированность); + Результат.Вставить("ЗначенияНаРазныхЯзыках", Новый Массив); + + Для каждого Язык Из Языки Цикл + + Если Язык.КодЯзыка = ТекущийЯзык() Тогда + Результат.Вставить("СтрокаНаТекущемЯзыке", ЭтотОбъект[Язык.Имя]); + КонецЕсли; + + Если ТекущийЯзык() = ОсновнойЯзык И Язык.КодЯзыка = ОсновнойЯзык Тогда + Продолжить; + КонецЕсли; + + Значения = Новый Структура; + Значения.Вставить("КодЯзыка", Язык.КодЯзыка); + Значения.Вставить("ЗначениеРеквизита", ЭтотОбъект[Язык.Имя]); + Значения.Вставить("Суффикс", Язык.Суффикс); + + Результат.ЗначенияНаРазныхЯзыках.Добавить(Значения); + КонецЦикла; + + Закрыть(Результат); + +КонецПроцедуры + +&НаКлиенте +Процедура Перевести(Команда) + + ПеревестиНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура СформироватьПоляВводаНаРазныхЯзыках(МногострочныйРежим, ТолькоПросмотр) + + Добавлять = Новый Массив; + ТипСтрока = Новый ОписаниеТипов("Строка"); + Для Каждого ЯзыкКонфигурации Из Языки Цикл + НовыйРеквизит = Новый РеквизитФормы(ЯзыкКонфигурации.Имя, ТипСтрока,, ЯзыкКонфигурации.Представление); + НовыйРеквизит.СохраняемыеДанные = Истина; + Добавлять.Добавить(НовыйРеквизит); + КонецЦикла; + + ИзменитьРеквизиты(Добавлять); + РодительЭлементов = Элементы.ГруппаЯзыки; + + Для Каждого ЯзыкКонфигурации Из Языки Цикл + + Если СтрСравнить(ЯзыкКонфигурации.КодЯзыка, ТекущийЯзык().КодЯзыка) = 0 И РодительЭлементов.ПодчиненныеЭлементы.Количество() > 0 Тогда + Элемент = Элементы.Вставить(ЯзыкКонфигурации.Имя, Тип("ПолеФормы"), РодительЭлементов, РодительЭлементов.ПодчиненныеЭлементы.Получить(0)); + ТекущийЭлемент = Элемент; + Иначе + Элемент = Элементы.Добавить(ЯзыкКонфигурации.Имя, Тип("ПолеФормы"), РодительЭлементов); + КонецЕсли; + + Элемент.ПутьКДанным = ЯзыкКонфигурации.Имя; + + Если ЗначениеЗаполнено(ЯзыкКонфигурации.ФормаРедактирования) Тогда + Элемент.Вид = ВидПоляФормы.ПолеНадписи; + Элемент.Гиперссылка = Истина; + Элемент.УстановитьДействие("Нажатие", "Подключаемый_Нажатие"); + Иначе + Элемент.Вид = ВидПоляФормы.ПолеВвода; + Элемент.Ширина = 40; + Элемент.МногострочныйРежим = МногострочныйРежим; + Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элемент.ТолькоПросмотр = ТолькоПросмотр; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ОписаниеЯзыка(КодЯзыка) + + Отбор = Новый Структура("КодЯзыка", КодЯзыка); + НайденныеЭлементы = Языки.НайтиСтроки(Отбор); + Если НайденныеЭлементы.Количество() > 0 Тогда + Возврат НайденныеЭлементы[0]; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +&НаСервере +Процедура ПеревестиНаСервере() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.ПереводТекста") Тогда + МодульПереводТекстаНаДругиеЯзыки = ОбщегоНазначения.ОбщийМодуль("ПереводТекстаНаДругиеЯзыки"); + Иначе + Возврат; + КонецЕсли; + + ЗначениеДляПеревода = Языки[0]; + ИсходныйЯзык = СтрРазделить(ЗначениеДляПеревода.КодЯзыка, "_", Ложь)[0]; + ПредставлениеНаИсходномЯзыке = ЭтотОбъект[ЗначениеДляПеревода.Имя]; + + ДоступныеЯзыки = МодульПереводТекстаНаДругиеЯзыки.ДоступныеЯзыки(); + Если ДоступныеЯзыки.НайтиПоЗначению(ИсходныйЯзык) = Неопределено Тогда + Возврат; + КонецЕсли; + + Для Индекс = 1 По Языки.Количество() - 1 Цикл + СтрокаТаблицы = Языки[Индекс]; + ЯзыкПеревода = СтрРазделить(СтрокаТаблицы.КодЯзыка, "_", Ложь)[0]; + Если ДоступныеЯзыки.НайтиПоЗначению(ЯзыкПеревода) = Неопределено Тогда + Продолжить; + КонецЕсли; + Если ЗначениеЗаполнено(ЭтотОбъект[СтрокаТаблицы.Имя]) Тогда + Элементы[СтрокаТаблицы.Имя].ЦветФона = Новый Цвет; + Иначе + ЭтотОбъект[СтрокаТаблицы.Имя] = ПеревестиТекстНаСервере(ПредставлениеНаИсходномЯзыке, ЯзыкПеревода, ИсходныйЯзык); + Элементы[СтрокаТаблицы.Имя].ЦветФона = ЦветаСтиля.ЦветИзмененногоПоля; + Модифицированность = Истина; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПеревестиТекстНаСервере(ИсходныйТекст, ЯзыкПеревода, ИсходныйЯзык) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.ПереводТекста") Тогда + МодульПереводТекстаНаДругиеЯзыки = ОбщегоНазначения.ОбщийМодуль("ПереводТекстаНаДругиеЯзыки"); + Возврат МодульПереводТекстаНаДругиеЯзыки.ПеревестиТекст(ИсходныйТекст, ЯзыкПеревода, ИсходныйЯзык); + КонецЕсли; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205.mdo" new file mode 100644 index 00000000..8ed50d5b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205/\320\222\320\262\320\276\320\264\320\235\320\260\320\240\320\260\320\267\320\275\321\213\321\205\320\257\320\267\321\213\320\272\320\260\321\205.mdo" @@ -0,0 +1,15 @@ + + + ВводНаРазныхЯзыках + + ru + Ввод на разных языках + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/Form.form" new file mode 100644 index 00000000..cbec1a53 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/Form.form" @@ -0,0 +1,412 @@ + + + + Колонки + 15 + + Предупреждение + 5 + VeryHigh + + <key>ru</key> + <value>Предупреждение</value> + + true + true + + true + + + ПредупреждениеExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + ПредупреждениеКонтекстноеМеню + 6 + true + true + + true + + true + + true + true + + + CommonPicture.Вопрос32 + + + + + Строки + 16 + VeryHigh + + МногострочныйТекстСообщения + 10 + true + true + + true + + + + ТекстСообщения + + + true + None + + МногострочныйТекстСообщенияExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + МногострочныйТекстСообщенияКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + + Style.FormBackColor + + + + + БольшеНеЗадаватьЭтотВопрос + 3 + true + true + + true + + + + БольшеНеЗадаватьЭтотВопрос + + + Right + + БольшеНеЗадаватьЭтотВопросExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + БольшеНеЗадаватьЭтотВопросКонтекстноеМеню + 4 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + 35 + + СтрокиExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + КолонкиExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + true + true + + true + + Right + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + DefaultButton + Vertical + true + true + true + + СоответствиеКнопокИВозвращаемыхЗначений + 1 + + + true + + + true + + + + БольшеНеЗадаватьЭтотВопрос + + <key>ru</key> + <value>Больше не задавать этот вопрос</value> + + 3 + + Boolean + + + true + + + true + + + + ОжиданиеСчетчик + 4 + + Number + + 5 + true + + + + true + + + true + + + + ОжиданиеИмяКнопки + 5 + + String + + + + true + + + true + + + + ОжиданиеЗаголовокКнопки + 6 + + String + + + + true + + + true + + + + ТекстСообщения + 2 + + String + + + + true + + + true + + + + Заголовок + + String + + + + + Кнопки + + ValueList + String + + + true + + + ТекстСообщения + + String + + + + + Таймаут + + Number + + 5 + true + + + + + КнопкаПоУмолчанию + + + + КнопкаТаймаута + + + + ПредлагатьБольшеНеЗадаватьЭтотВопрос + + Boolean + + + + ТекстФлажка + + String + + + + + БлокироватьВесьИнтерфейс + + Boolean + + + + Картинка + + Picture + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/Module.bsl" new file mode 100644 index 00000000..8cf0c269 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/Module.bsl" @@ -0,0 +1,301 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Размещение заголовка. + Если Не ПустаяСтрока(Параметры.Заголовок) Тогда + Заголовок = Параметры.Заголовок; + ШиринаЗаголовка = 1.3 * СтрДлина(Заголовок); + Если ШиринаЗаголовка > 40 И ШиринаЗаголовка < 80 Тогда + Ширина = ШиринаЗаголовка; + ИначеЕсли ШиринаЗаголовка >= 80 Тогда + Ширина = 80; + КонецЕсли; + КонецЕсли; + + Если Параметры.БлокироватьВесьИнтерфейс Тогда + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс; + КонецЕсли; + + // Картинка. + Если Параметры.Картинка.Вид <> ВидКартинки.Пустая Тогда + Элементы.Предупреждение.Картинка = Параметры.Картинка; + Иначе + // В этом случае можно скрыть картинку. + // Но для обратной совместимости реализован параметр ПоказыватьКартинку. + // Например, кто-то из потребителей мог открывать форму напрямую со своими параметрами, + // в обход API БФ, в частности СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю. + ПоказыватьКартинку = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ПоказыватьКартинку", Истина); + Если Не ПоказыватьКартинку Тогда + Элементы.Предупреждение.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + // Размещение текста. + ТекстСообщения = Параметры.ТекстСообщения; + + МинимальнаяШиринаПоля = 50; + ПримернаяВысотаПоля = ЧислоСтрок(Параметры.ТекстСообщения, МинимальнаяШиринаПоля); + Элементы.МногострочныйТекстСообщения.Ширина = МинимальнаяШиринаПоля; + Элементы.МногострочныйТекстСообщения.Высота = Мин(ПримернаяВысотаПоля, 10); + + // Размещение флажка. + Если ЗначениеЗаполнено(Параметры.ТекстФлажка) Тогда + Элементы.БольшеНеЗадаватьЭтотВопрос.Заголовок = Параметры.ТекстФлажка; + ИначеЕсли НЕ ПравоДоступа("СохранениеДанныхПользователя", Метаданные) ИЛИ НЕ Параметры.ПредлагатьБольшеНеЗадаватьЭтотВопрос Тогда + Элементы.БольшеНеЗадаватьЭтотВопрос.Видимость = Ложь; + КонецЕсли; + + // Размещение кнопок. + ДобавитьКомандыИКнопкиНаФорму(Параметры.Кнопки); + + // Установка кнопки по умолчанию. + ВыделятьКнопкуПоУмолчанию = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыделятьКнопкуПоУмолчанию", Истина); + УстановитьКнопкуПоУмолчанию(Параметры.КнопкаПоУмолчанию, ВыделятьКнопкуПоУмолчанию); + + // Установка кнопки для обратного отсчета. + УстановитьКнопкуОжидания(Параметры.КнопкаТаймаута); + + // Установка таймера обратного отсчета. + ОжиданиеСчетчик = Параметры.Таймаут; + + // Сброс размеров и положения окна этой формы. + СброситьРазмерыИПоложениеОкна(); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Переместить(Элементы.БольшеНеЗадаватьЭтотВопрос, ЭтотОбъект); + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + // Запуск обратного отсчета. + Если ОжиданиеСчетчик >= 1 Тогда + ОжиданиеСчетчик = ОжиданиеСчетчик + 1; + ПродолжитьОбратныйОтсчет(); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +// Параметры: +// Команда - КомандаФормы +// +&НаКлиенте +Процедура Подключаемый_ОбработчикКоманды(Команда) + ВыбранноеЗначение = СоответствиеКнопокИВозвращаемыхЗначений.Получить(Команда.Имя); + + РезультатВыбора = Новый Структура; + РезультатВыбора.Вставить("БольшеНеЗадаватьЭтотВопрос", БольшеНеЗадаватьЭтотВопрос); + РезультатВыбора.Вставить("Значение", КодВозвратаДиалогаПоЗначению(ВыбранноеЗначение)); + + Закрыть(РезультатВыбора); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Клиент + +&НаКлиенте +Процедура ПродолжитьОбратныйОтсчет() + ОжиданиеСчетчик = ОжиданиеСчетчик - 1; + Если ОжиданиеСчетчик <= 0 Тогда + Закрыть(Новый Структура("БольшеНеЗадаватьЭтотВопрос, Значение", Ложь, КодВозвратаДиалога.Таймаут)); + Иначе + Если ОжиданиеИмяКнопки <> "" Тогда + НовыйЗаголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 (осталось %2 сек.)'"), + ОжиданиеЗаголовокКнопки, + Строка(ОжиданиеСчетчик)); + + ЭлементФормы = Элементы[ОжиданиеИмяКнопки]; // ВсеЭлементыФормы + ЭлементФормы.Заголовок = НовыйЗаголовок; + КонецЕсли; + ПодключитьОбработчикОжидания("ПродолжитьОбратныйОтсчет", 1, Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция КодВозвратаДиалогаПоЗначению(Значение) + Если ТипЗнч(Значение) <> Тип("Строка") Тогда + Возврат Значение; + КонецЕсли; + + Если Значение = "КодВозвратаДиалога.Да" Тогда + Результат = КодВозвратаДиалога.Да; + ИначеЕсли Значение = "КодВозвратаДиалога.Нет" Тогда + Результат = КодВозвратаДиалога.Нет; + ИначеЕсли Значение = "КодВозвратаДиалога.ОК" Тогда + Результат = КодВозвратаДиалога.ОК; + ИначеЕсли Значение = "КодВозвратаДиалога.Отмена" Тогда + Результат = КодВозвратаДиалога.Отмена; + ИначеЕсли Значение = "КодВозвратаДиалога.Повторить" Тогда + Результат = КодВозвратаДиалога.Повторить; + ИначеЕсли Значение = "КодВозвратаДиалога.Прервать" Тогда + Результат = КодВозвратаДиалога.Прервать; + ИначеЕсли Значение = "КодВозвратаДиалога.Пропустить" Тогда + Результат = КодВозвратаДиалога.Пропустить; + Иначе + Результат = Значение; + КонецЕсли; + + Возврат Результат; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Сервер + +&НаСервере +Процедура ДобавитьКомандыИКнопкиНаФорму(Кнопки) + // Добавляет команды и соответствующие им кнопки на форму. + // + // Параметры: + // Кнопки - Строка / СписокЗначений - набор кнопок + // если строка - строковый идентификатор в формате "РежимДиалогаВопрос.<одно из значений РежимДиалогаВопрос>", + // например "РежимДиалогаВопрос.ДаНет" + // если СписокЗначений - для каждой записи, + // Значение - значение возвращаемое формой при нажатии кнопки. + // Представление - заголовок кнопки. + + Если ТипЗнч(Кнопки) = Тип("Строка") Тогда + КнопкиСписокЗначений = СтандартныйНабор(Кнопки); + Иначе + КнопкиСписокЗначений = Кнопки; + КонецЕсли; + + СоответствиеКнопокЗначениям = Новый Соответствие; + + Индекс = 0; + + Для Каждого ЭлементОписаниеКнопки Из КнопкиСписокЗначений Цикл + Индекс = Индекс + 1; + ИмяКоманды = "Команда" + XMLСтрока(Индекс); + Команда = Команды.Добавить(ИмяКоманды); + Команда.Действие = "Подключаемый_ОбработчикКоманды"; + Команда.Заголовок = ЭлементОписаниеКнопки.Представление; + Команда.ИзменяетСохраняемыеДанные = Ложь; + + Кнопка= Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), КоманднаяПанель); + Кнопка.ТолькоВоВсехДействиях = Ложь; + Кнопка.ИмяКоманды = ИмяКоманды; + + СоответствиеКнопокЗначениям.Вставить(ИмяКоманды, ЭлементОписаниеКнопки.Значение); + КонецЦикла; + + СоответствиеКнопокИВозвращаемыхЗначений = Новый ФиксированноеСоответствие(СоответствиеКнопокЗначениям); +КонецПроцедуры + +&НаСервере +Процедура УстановитьКнопкуПоУмолчанию(КнопкаПоУмолчанию, ВыделятьКнопкуПоУмолчанию) + Если СоответствиеКнопокИВозвращаемыхЗначений.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Кнопка = Неопределено; + Для Каждого Элемент Из СоответствиеКнопокИВозвращаемыхЗначений Цикл + Если Элемент.Значение = КнопкаПоУмолчанию Тогда + Кнопка = Элементы[Элемент.Ключ]; + Прервать; + КонецЕсли; + КонецЦикла; + + Если Кнопка = Неопределено Тогда + Кнопка = КоманднаяПанель.ПодчиненныеЭлементы[0]; + КонецЕсли; + + Если ВыделятьКнопкуПоУмолчанию Тогда + Кнопка.КнопкаПоУмолчанию = Истина; + КонецЕсли; + ТекущийЭлемент = Кнопка; +КонецПроцедуры + +&НаСервере +Процедура УстановитьКнопкуОжидания(ЗначениеКнопкиОжидания) + Если СоответствиеКнопокИВозвращаемыхЗначений.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Для Каждого Элемент Из СоответствиеКнопокИВозвращаемыхЗначений Цикл + Если Элемент.Значение = ЗначениеКнопкиОжидания Тогда + ОжиданиеИмяКнопки = Элемент.Ключ; + КомандаФормы = Команды[ОжиданиеИмяКнопки]; // КомандаФормы + ОжиданиеЗаголовокКнопки = КомандаФормы.Заголовок; + Возврат; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура СброситьРазмерыИПоложениеОкна() + ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя; + Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + ХранилищеСистемныхНастроек.Удалить("ОбщаяФорма.Вопрос", "", ИмяПользователя); + КонецЕсли; + КлючСохраненияПоложенияОкна = Строка(Новый УникальныйИдентификатор); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СтандартныйНабор(Кнопки) + Результат = Новый СписокЗначений; + + Если Кнопки = "РежимДиалогаВопрос.ДаНет" Тогда + Результат.Добавить("КодВозвратаДиалога.Да", НСтр("ru = 'Да'")); + Результат.Добавить("КодВозвратаДиалога.Нет", НСтр("ru = 'Нет'")); + ИначеЕсли Кнопки = "РежимДиалогаВопрос.ДаНетОтмена" Тогда + Результат.Добавить("КодВозвратаДиалога.Да", НСтр("ru = 'Да'")); + Результат.Добавить("КодВозвратаДиалога.Нет", НСтр("ru = 'Нет'")); + Результат.Добавить("КодВозвратаДиалога.Отмена", НСтр("ru = 'Отмена'")); + ИначеЕсли Кнопки = "РежимДиалогаВопрос.ОК" Тогда + Результат.Добавить("КодВозвратаДиалога.ОК", НСтр("ru = 'ОК'")); + ИначеЕсли Кнопки = "РежимДиалогаВопрос.ОКОтмена" Тогда + Результат.Добавить("КодВозвратаДиалога.ОК", НСтр("ru = 'ОК'")); + Результат.Добавить("КодВозвратаДиалога.Отмена", НСтр("ru = 'Отмена'")); + ИначеЕсли Кнопки = "РежимДиалогаВопрос.ПовторитьОтмена" Тогда + Результат.Добавить("КодВозвратаДиалога.Повторить", НСтр("ru = 'Повторить'")); + Результат.Добавить("КодВозвратаДиалога.Отмена", НСтр("ru = 'Отмена'")); + ИначеЕсли Кнопки = "РежимДиалогаВопрос.ПрерватьПовторитьПропустить" Тогда + Результат.Добавить("КодВозвратаДиалога.Прервать", НСтр("ru = 'Прервать'")); + Результат.Добавить("КодВозвратаДиалога.Повторить", НСтр("ru = 'Повторить'")); + Результат.Добавить("КодВозвратаДиалога.Пропустить", НСтр("ru = 'Пропустить'")); + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Определяет примерное число строк с учетом переносов. +&НаСервереБезКонтекста +Функция ЧислоСтрок(Текст, ОтсечкаПоШирине, ПриводитьКРазмерамЭлементовФормы = Истина) + ЧислоСтрок = СтрЧислоСтрок(Текст); + ЧислоПереносов = 0; + Для НомерСтроки = 1 По ЧислоСтрок Цикл + Строка = СтрПолучитьСтроку(Текст, НомерСтроки); + ЧислоПереносов = ЧислоПереносов + Цел(СтрДлина(Строка)/ОтсечкаПоШирине); + КонецЦикла; + ПримерноеЧислоСтрок = ЧислоСтрок + ЧислоПереносов; + Если ПриводитьКРазмерамЭлементовФормы Тогда + Коэффициент = 2/3; // В такси в высоту 2 вмещается примерно 3 строки текста. + ПримерноеЧислоСтрок = Цел((ПримерноеЧислоСтрок+1)*Коэффициент); + КонецЕсли; + Если ПримерноеЧислоСтрок = 2 Тогда + ПримерноеЧислоСтрок = 3; + КонецЕсли; + Возврат ПримерноеЧислоСтрок; +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/\320\222\320\276\320\277\321\200\320\276\321\201.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/\320\222\320\276\320\277\321\200\320\276\321\201.mdo" new file mode 100644 index 00000000..8db1106d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201/\320\222\320\276\320\277\321\200\320\276\321\201.mdo" @@ -0,0 +1,10 @@ + + + Вопрос + + ru + Вопрос + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Form.form" new file mode 100644 index 00000000..abcde67c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Form.form" @@ -0,0 +1,189 @@ + + + + <key>ru</key> + <value>Установка внешней компоненты</value> + + + Шапка + 16 + + ДекорацияПояснение + 10 + + <key>ru</key> + <value>Установить внешнюю компоненту?</value> + + true + true + + true + + + ДекорацияПояснениеРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПояснениеКонтекстноеМеню + 11 + true + true + + true + + true + + Label + 75 + true + true + + Style.NormalTextFont + 100 + + + Left + + + true + true + + true + + + ШапкаРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + УстановитьИПродолжить + 1 + + <key>ru</key> + <value>Установить и продолжить</value> + + true + true + + true + + true + + УстановитьИПродолжитьРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Yes + Auto + true + true + true + UserCmds + Auto + + + Закрыть + 3 + true + true + + true + + + ЗакрытьРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + 40 + LockOwnerWindow + true + Vertical + true + true + true + true + + ТекстПояснения + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Module.bsl" new file mode 100644 index 00000000..bb36e819 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Module.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не ПустаяСтрока(Параметры.ТекстПояснения) Тогда + Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 + |Установить?'"), + Параметры.ТекстПояснения); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" new file mode 100644 index 00000000..b76a8feb --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" @@ -0,0 +1,10 @@ + + + ВопросОбУстановкеВнешнейКомпоненты + + ru + Вопрос об установке внешней компоненты + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/Form.form" new file mode 100644 index 00000000..5e016a34 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/Form.form" @@ -0,0 +1,224 @@ + + + + <key>ru</key> + <value>Установка расширения работы с криптографией</value> + + + Пояснение + 6 + + <key>ru</key> + <value>Для возможности электронной подписи или шифрования требуется установить дополнительное расширение веб-клиента для 1С:Предприятия.</value> + + true + true + + true + + + ПояснениеРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеКонтекстноеМеню + 7 + true + true + + true + + true + + Label + 50 + true + true + false + + Left + Top + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаУстановитьИПродолжить + 8 + true + true + + true + + false + + ФормаУстановитьИПродолжитьРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьИПродолжить + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 15 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + Vertical + true + true + true + true + + Пояснение + 1 + + String + + + + true + + + true + + + + УстановитьИПродолжить + + <key>ru</key> + <value>Установить и продолжить</value> + + 1 + + ru + Установить расширение и продолжить + + + true + + + + УстановитьИПродолжить + + + DontUse + + + Отмена + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Не устанавливать расширение и отменить последнее действие + + + true + + + + Отмена + + + DontUse + + + ЗаголовокВопроса + + String + + + + + ТекстВопроса + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/Module.bsl" new file mode 100644 index 00000000..13cfaad2 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/Module.bsl" @@ -0,0 +1,42 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не ПустаяСтрока(Параметры.ЗаголовокВопроса) Тогда + Заголовок = Параметры.ЗаголовокВопроса; + КонецЕсли; + + Если Не ПустаяСтрока(Параметры.ТекстВопроса) Тогда + Элементы.Пояснение.Заголовок = Параметры.ТекстВопроса; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура УстановитьИПродолжить(Команда) + + Закрыть(КодВозвратаДиалога.Да); + +КонецПроцедуры + +&НаКлиенте +Процедура Отмена(Команда) + + Закрыть(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271.mdo" new file mode 100644 index 00000000..8aa78d4f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\232\321\200\320\270\320\277\321\202\320\276\320\263\321\200\320\260\321\204\320\270\320\265\320\271.mdo" @@ -0,0 +1,11 @@ + + + ВопросОбУстановкеРасширенияРаботыСКриптографией + + ru + Вопрос об установке расширения работы с криптографией + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/Form.form" new file mode 100644 index 00000000..d2125224 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/Form.form" @@ -0,0 +1,276 @@ + + + + <key>ru</key> + <value>Установка расширения работы с файлами</value> + + + ДекорацияПояснение + 6 + + <key>ru</key> + <value>Для удобной работы с программой предлагается установить расширение для работы с 1С:Предприятием. +Установить?</value> + + true + true + + true + + + ДекорацияПояснениеExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПояснениеКонтекстноеМеню + 7 + true + true + + true + + true + + Label + true + false + + Left + Top + + + Bottom + + ФормаКоманднаяПанель + -1 + + УстановитьИПродолжить + 8 + true + true + + true + + false + + УстановитьИПродолжитьРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьИПродолжить + Auto + true + true + true + UserCmds + Auto + + + ПродолжитьБезУстановки + 9 + true + true + + true + + false + + ПродолжитьБезУстановкиРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПродолжитьБезУстановки + Auto + true + true + UserCmds + Auto + + + БольшеНеНапоминать + 10 + true + true + + true + + false + + БольшеНеНапоминатьРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + Form.Command.БольшеНеНапоминать + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + Vertical + true + true + true + true + + Пояснение + 1 + + String + + + + true + + + true + + + + УстановитьИПродолжить + + <key>ru</key> + <value>Установить и продолжить</value> + + 1 + + ru + Установить расширение для работы с 1С:Предприятием и продолжить + + + true + + + + УстановитьИПродолжить + + + DontUse + + + ПродолжитьБезУстановки + + <key>ru</key> + <value>Продолжить без установки</value> + + 2 + + ru + Продолжить без установки расширения для веб-клиента 1С:Предприятие + + + true + + + + ПродолжитьБезУстановки + + + DontUse + + + БольшеНеНапоминать + + <key>ru</key> + <value>Больше не напоминать</value> + + 3 + + ru + Не устанавливать и больше не напоминать + + + true + + + + БольшеНеНапоминать + + + DontUse + + + ТекстПредложения + + String + + + true + + + ВозможноПродолжениеБезУстановки + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/Module.bsl" new file mode 100644 index 00000000..0bf0f0ea --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/Module.bsl" @@ -0,0 +1,81 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не ПустаяСтрока(Параметры.ТекстПредложения) Тогда + Элементы.ДекорацияПояснение.Заголовок = Параметры.ТекстПредложения + + Символы.ПС + + НСтр("ru = 'Установить?'"); + + ИначеЕсли Не Параметры.ВозможноПродолжениеБезУстановки Тогда + Элементы.ДекорацияПояснение.Заголовок = + НСтр("ru = 'Для выполнения действия требуется установить расширение для работы с 1С:Предприятием. + |Установить?'"); + КонецЕсли; + + Если Не Параметры.ВозможноПродолжениеБезУстановки Тогда + Элементы.ПродолжитьБезУстановки.Заголовок = НСтр("ru = 'Отмена'"); + Элементы.БольшеНеНапоминать.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура УстановитьИПродолжить(Команда) + + Оповещение = Новый ОписаниеОповещения("УстановитьИПродолжитьЗавершение", ЭтотОбъект); + НачатьУстановкуРасширенияРаботыСФайлами(Оповещение); + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьБезУстановки(Команда) + + Закрыть("ПродолжитьБезУстановки"); + +КонецПроцедуры + +&НаКлиенте +Процедура БольшеНеНапоминать(Команда) + + Закрыть("БольшеНеПредлагать"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура УстановитьИПродолжитьЗавершение(Контекст) Экспорт + + Оповещение = Новый ОписаниеОповещения("УстановитьИПродолжитьПослеПодключенияРасширения", ЭтотОбъект); + НачатьПодключениеРасширенияРаботыСФайлами(Оповещение); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьИПродолжитьПослеПодключенияРасширения(Подключено, Контекст) Экспорт + + Если Подключено Тогда + Закрыть("РасширениеПодключено"); + Иначе + Закрыть("ПродолжитьБезУстановки"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.mdo" new file mode 100644 index 00000000..dd00fc5b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270/\320\222\320\276\320\277\321\200\320\276\321\201\320\236\320\261\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217\320\240\320\260\320\261\320\276\321\202\321\213\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.mdo" @@ -0,0 +1,11 @@ + + + ВопросОбУстановкеРасширенияРаботыСФайлами + + ru + Вопрос об установке расширения работы с файлами + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Form.form" new file mode 100644 index 00000000..ab777f09 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Form.form" @@ -0,0 +1,2749 @@ + + + + <key>ru</key> + <value>Помощь и восстановление паролей при входе</value> + + + ОтображатьГиперссылкуПомощи + 1 + true + true + + true + + + + ОтображатьГиперссылкуПомощи + + + Right + + OnChange + НужнаПомощьПриИзменении + + + ОтображатьГиперссылкуПомощиРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ОтображатьГиперссылкуПомощиКонтекстноеМеню + 2 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + НавигационнаяСсылкаПомощи + 4 + true + true + + true + + + + НавигационнаяСсылкаПомощи + + + None + + НавигационнаяСсылкаПомощиРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + НавигационнаяСсылкаПомощиКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Opening + НавигационнаяСсылкаПомощиОткрытие + + true + true + true + true + true + true + true + + ru + http://server/help + + + + + ВосстановлениеПароля + 7 + + ВосстанавливатьПароль + 45 + true + true + + true + + + + ВосстанавливатьПароль + + + Right + + OnChange + ВосстанавливатьПарольПриИзменении + + + ВосстанавливатьПарольРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + ВосстанавливатьПарольКонтекстноеМеню + 46 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ВариантВосстановленияПароля + 9 + + <key>ru</key> + <value>Восстанавливать пароль</value> + + true + true + + true + + + + ВариантВосстановленияПароля + + + + OnChange + ВариантВосстановленияПароляПриИзменении + + + ВариантВосстановленияПароляРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + + ВариантВосстановленияПароляКонтекстноеМеню + 10 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + Tumbler + + + ru + по электронной почте + + + ЧерезЭлектроннуюПочту + + + + + ru + переходом по ссылке + + + ПереходПоСсылке + + + + + + ВариантыВосстановления + 17 + + ЭлектроннаяПочта + 19 + + ГруппаОтправкиПоПочте + 106 + + ДекорацияОтправлятьОт + 108 + + <key>ru</key> + <value>Отправлять письмо от:</value> + + true + true + + true + + + ДекорацияОтправлятьОтРасширеннаяПодсказка + 110 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияОтправлятьОтКонтекстноеМеню + 109 + true + true + + true + + true + + Label + true + true + + Left + + + + ГруппаВарианты + 69 + + ВариантОтправкиПоПочтеСтандартныйСервис + 100 + + <key>ru</key> + <value>Сервер отправки</value> + + true + true + + true + + + + ВариантОтправкиПоПочте + + + None + + OnChange + ВариантОтправкиСтандартныйСервисПриИзменении + + + ВариантОтправкиПоПочтеСтандартныйСервисРасширеннаяПодсказка + 102 + true + true + + true + + Label + true + true + + Left + + + + ВариантОтправкиПоПочтеСтандартныйСервисКонтекстноеМеню + 101 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Стандартный сервис отправки + + + СтандартныйСервис + + + + + + ГруппаНастройкиПочты + 111 + + ВариантОтправкиПоПочтеУчетнаяЗапись + 103 + + <key>ru</key> + <value>Сервер отправки</value> + + true + true + + true + + + + ВариантОтправкиПоПочте + + + None + + OnChange + ВариантОтправкиПоНастройкеПочтыПриИзменении + + + ВариантОтправкиПоПочтеУчетнаяЗаписьРасширеннаяПодсказка + 105 + true + true + + true + + Label + true + true + + Left + + + + ВариантОтправкиПоПочтеУчетнаяЗаписьКонтекстноеМеню + 104 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Настройки почты: + + + ВнешнийПочтовыйСервер + + + + + + УчетнаяЗаписьПочты + 35 + true + true + + true + + + + УчетнаяЗаписьПочты + + + None + + УчетнаяЗаписьПочтыРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + + УчетнаяЗаписьПочтыКонтекстноеМеню + 36 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Настройки почты</value> + + + ГруппаНастройкиПочтыРасширеннаяПодсказка + 112 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ВариантОтправкиПоПочтеСвоиНастройки + 40 + + <key>ru</key> + <value>Сервер отправки</value> + + true + true + + true + + + + ВариантОтправкиПоПочте + + + None + + OnChange + ВариантОтправкиПоПочтеПриИзменении + + + ВариантОтправкиПоПочтеСвоиНастройкиРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + + ВариантОтправкиПоПочтеСвоиНастройкиКонтекстноеМеню + 41 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Указанный почтовый сервер + + + РучнаяНастройка + + + + + true + true + + true + + + <key>ru</key> + <value>Варианты</value> + + + ГруппаВариантыРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Отправки по почте</value> + + + ГруппаОтправкиПоПочтеРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаРучныеНастройкиПочты + 71 + + ГруппаСерверSMTP + 88 + + АдресСервераSMTP + 85 + true + true + + true + + + + АдресСервераSMTP + + + + АдресСервераSMTPРасширеннаяПодсказка + 87 + true + true + + true + + Label + true + true + + Left + + + + АдресСервераSMTPКонтекстноеМеню + 86 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 27 + true + true + true + true + true + true + + + + ШифрованиеПриОтправкеПочты + 113 + true + true + + true + + + + ШифрованиеПриОтправкеПочты + + + + OnChange + ШифрованиеПриПолученииПочтыПриИзменении + + + ШифрованиеПриОтправкеПочтыРасширеннаяПодсказка + 115 + true + true + + true + + Label + true + true + + Left + + + + ШифрованиеПриОтправкеПочтыКонтекстноеМеню + 114 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 2 + + + ru + STARTTLS + + + Авто + + + + + ru + SSL + + + SSL + + + + + + ПортSMTP + 73 + true + true + + true + + + + ПортSMTP + + + + ПортSMTPРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + + ПортSMTPКонтекстноеМеню + 74 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Сервер SMTP</value> + + + ГруппаСерверSMTPРасширеннаяПодсказка + 89 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаПользовательSMTP + 90 + + ПользовательSMTP + 76 + true + true + + true + + + + ПользовательSMTP + + + + ПользовательSMTPРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + + ПользовательSMTPКонтекстноеМеню + 77 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + true + true + true + true + + + + ПарольSMTP + 79 + true + true + + true + + + + ПарольSMTP + + + + ПарольSMTPРасширеннаяПодсказка + 81 + true + true + + true + + Label + true + true + + Left + + + + ПарольSMTPКонтекстноеМеню + 80 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пользователь SMTP</value> + + + ГруппаПользовательSMTPРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ИмяОтправителя + 82 + true + true + + true + + + + ИмяОтправителя + + + + ИмяОтправителяРасширеннаяПодсказка + 84 + true + true + + true + + Label + true + true + + Left + + + + ИмяОтправителяКонтекстноеМеню + 83 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + ru + Имя отправителя почтовых сообщений + + + + true + true + + true + + + <key>ru</key> + <value>Настройки почтового сервера</value> + + + ГруппаРучныеНастройкиПочтыРасширеннаяПодсказка + 72 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Collapsible + true + Picture + true + true + true + Auto + Auto + + + + ГруппаТекстСообщения + 57 + + ТемаПисьма + 59 + + <key>ru</key> + <value>Тема</value> + + true + true + + true + + + + ТемаПисьма + + + + ТемаПисьмаРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + ТемаПисьмаКонтекстноеМеню + 60 + + ВставитьПараметрКонтекстноеМенюГруппа + 120 + + ТемаПисьмаКонтекстноеМенюИмяПользователя + 118 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюИмяПользователяРасширеннаяПодсказка + 119 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИмяПользователя + Auto + true + true + UserCmds + Auto + + + ТемаПисьмаКонтекстноеМенюНаименованиеКонфигурации + 124 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюНаименованиеКонфигурацииРасширеннаяПодсказка + 125 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НаименованиеКонфигурации + Auto + true + true + UserCmds + Auto + + + ТемаПисьмаКонтекстноеМенюКодПодтверждения + 122 + true + true + + true + + + ТемаПисьмаКонтекстноеМенюКодПодтвержденияРасширеннаяПодсказка + 123 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КодПодтверждения + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вставить параметр</value> + + + ВставитьПараметрКонтекстноеМенюГруппаРасширеннаяПодсказка + 121 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ГруппаКнопкиФорматированногоДокумента + 67 + + ТелоГруппаПараметры + 92 + + ИмяПользователя + 94 + true + true + + true + + + ИмяПользователяРасширеннаяПодсказка + 95 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИмяПользователя + Auto + true + true + UserCmds + Auto + + + ИмяКонфигурации + 96 + true + true + + true + + + ИмяКонфигурацииРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НаименованиеКонфигурации + Auto + true + true + UserCmds + Auto + + + КодПодтверждения + 98 + true + true + + true + + + КодПодтвержденияРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КодПодтверждения + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вставить параметр</value> + + + ТелоГруппаПараметрыРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ГруппаКнопки + 65 + true + true + + true + + + <key>ru</key> + <value>Кнопки</value> + + + ГруппаКнопкиРасширеннаяПодсказка + 66 + true + true + + true + + Label + true + true + + Left + + + + Item.ТекстСообщения + + + true + true + + true + + + <key>ru</key> + <value>Кнопки форматированного документа</value> + + + ГруппаКнопкиФорматированногоДокументаРасширеннаяПодсказка + 68 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ТекстСообщения + 62 + true + true + + true + + + + ТекстСообщения + + + None + + ТекстСообщенияРасширеннаяПодсказка + 64 + true + true + + true + + Label + true + true + + Left + + + + ТекстСообщенияКонтекстноеМеню + 63 + + ВставитьПараметрТелоКонтекстноеМенюГруппа + 132 + + ТекстСообщенияКонтекстноеМенюИмяПользователя + 126 + true + true + + true + + + ТекстСообщенияКонтекстноеМенюИмяПользователяРасширеннаяПодсказка + 127 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИмяПользователя + Auto + true + true + UserCmds + Auto + + + ТекстСообщенияКонтекстноеМенюНаименованиеКонфигурации + 130 + true + true + + true + + + ТекстСообщенияКонтекстноеМенюНаименованиеКонфигурацииРасширеннаяПодсказка + 131 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НаименованиеКонфигурации + Auto + true + true + UserCmds + Auto + + + ТекстСообщенияКонтекстноеМенюКодПодтверждения + 128 + true + true + + true + + + ТекстСообщенияКонтекстноеМенюКодПодтвержденияРасширеннаяПодсказка + 129 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КодПодтверждения + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вставить параметр</value> + + + ВставитьПараметрТелоКонтекстноеМенюГруппаРасширеннаяПодсказка + 133 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + true + + FormattedDocumentField + Enter + true + Left + true + + 50 + true + 5 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шаблон сообщения с кодом восстановления пароля</value> + + + ГруппаТекстСообщенияРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + Picture + true + true + true + Auto + Auto + + + + ПараметрыКодаПодтверждения + 48 + + ДлинаКода + 12 + true + true + + true + + + + ДлинаКодаПодтверждения + + + + ДлинаКодаРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + ДлинаКодаКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ГруппаДлительностьБлокировкиЗапроса + 50 + + ДлительностьБлокировкиЗапроса + 23 + true + true + + true + + + + ДлительностьБлокировкиЗапросаОбновленияКодаПодтверждения + + + + ДлительностьБлокировкиЗапросаРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + ДлительностьБлокировкиЗапросаКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ДекорацияСек + 52 + + <key>ru</key> + <value>сек.</value> + + true + true + + true + + + ДекорацияСекРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияСекКонтекстноеМеню + 53 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Длительность блокировки запроса</value> + + + ГруппаДлительностьБлокировкиЗапросаРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + МаксимальноеКоличествоПопыток + 26 + true + true + + true + + + + МаксимальноеКоличествоНеуспешныхПопытокПроверкиКодаПодтверждения + + + + МаксимальноеКоличествоПопытокРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + МаксимальноеКоличествоПопытокКонтекстноеМеню + 27 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 3 + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Код подтверждения</value> + + + ПараметрыКодаПодтвержденияРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + Picture + true + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Электронная почта</value> + + + ЭлектроннаяПочтаРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + ПереходПоСсылке + 21 + + АдресСсылкиДляВосстановленияПароля + 29 + + <key>ru</key> + <value>Адрес страницы восстановления пароля</value> + + true + true + + true + + + + НавигационнаяСсылкаВосстановленияПароля + + + Top + + АдресСсылкиДляВосстановленияПароляРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + АдресСсылкиДляВосстановленияПароляКонтекстноеМеню + 30 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + ru + http://server/password + + + + true + true + + true + + + <key>ru</key> + <value>Переход по ссылке</value> + + + ПереходПоСсылкеРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Варианты восстановления</value> + + + ВариантыВосстановленияРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Восстановление пароля</value> + + + ВосстановлениеПароляРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 43 + true + true + + true + + true + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 116 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 117 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Записать + Auto + true + true + UserCmds + + StdPicture.SaveFile + + Auto + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + Vertical + true + true + true + true + true + + ОтображатьГиперссылкуПомощи + + <key>ru</key> + <value>Отображать гиперссылку "Нужна помощь?" в диалоге аутентификации:</value> + + 1 + + Boolean + + + true + + + true + + true + + + НавигационнаяСсылкаПомощи + + <key>ru</key> + <value>Навигационная ссылка помощи</value> + + 2 + + String + + + + true + + + true + + true + + + ДлинаКодаПодтверждения + + <key>ru</key> + <value>Длина генерируемого кода</value> + + 3 + + Number + + 3 + true + + + + true + + + true + + true + + + МаксимальноеКоличествоНеуспешныхПопытокПроверкиКодаПодтверждения + + <key>ru</key> + <value>Допустимое количество неудачных попыток ввода</value> + + 4 + + Number + + 2 + true + + + + true + + + true + + true + + + ДлительностьБлокировкиЗапросаОбновленияКодаПодтверждения + + <key>ru</key> + <value>Минимальное время между повторными запросами</value> + + 5 + + Number + + 3 + true + + + + true + + + true + + true + + + ВариантОтправкиПоПочте + + <key>ru</key> + <value>Вариант отправки по почте</value> + + 6 + + String + + + + true + + + true + + true + + + ВариантВосстановленияПароля + + <key>ru</key> + <value>Вариант восстановления пароля</value> + + 7 + + String + + + + true + + + true + + true + + + УчетнаяЗаписьПочты + + <key>ru</key> + <value>Учетная запись почты</value> + + 8 + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + true + + + true + + true + + + НавигационнаяСсылкаВосстановленияПароля + + <key>ru</key> + <value>Навигационная ссылка восстановления пароля</value> + + 9 + + String + + + + true + + + true + + true + + + ВосстанавливатьПароль + + <key>ru</key> + <value>Отображать гиперссылку "Забыли пароль?":</value> + + 10 + + Boolean + + + true + + + true + + true + + + ТекстСообщенияHTML + 11 + + String + + + + true + + + true + + + + ТемаПисьма + + <key>ru</key> + <value>Тема письма</value> + + 12 + + String + + + + true + + + true + + true + + + ТекстСообщения + + <key>ru</key> + <value>Текст сообщения</value> + + 13 + + FormattedDocument + + + true + + + true + + true + + + ПортSMTP + + <key>ru</key> + <value>Порт</value> + + 14 + + Number + + 5 + true + + + + true + + + true + + true + + + АдресСервераSMTP + + <key>ru</key> + <value>Сервер SMTP</value> + + 15 + + String + + 200 + + + + true + + + true + + true + + + ИмяОтправителя + + <key>ru</key> + <value>Отправитель</value> + + 16 + + String + + 200 + + + + true + + + true + + true + + + ПарольSMTP + + <key>ru</key> + <value>Пароль</value> + + 17 + + String + + 100 + + + + true + + + true + + true + + + ПользовательSMTP + + <key>ru</key> + <value>Пользователь</value> + + 18 + + String + + 200 + + + + true + + + true + + true + + + SSL + 19 + + String + + + + true + + + true + + + + ШифрованиеПриОтправкеПочты + + <key>ru</key> + <value>Шифрование</value> + + 20 + + String + + + + true + + + true + + true + + + ПарольИзменен + 21 + + Boolean + + + true + + + true + + + + ИспользоватьSSL + 22 + + Boolean + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 2 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + Auto + + + ИмяПользователя + + <key>ru</key> + <value>Имя пользователя</value> + + 3 + + ru + Имя пользователя + + + true + + + + ПараметрИмяПользователя + + + Auto + + + НаименованиеКонфигурации + + <key>ru</key> + <value>Наименование конфигурации</value> + + 4 + + true + + + + НаименованиеКонфигурации + + + Auto + + + КодПодтверждения + + <key>ru</key> + <value>Код подтверждения</value> + + 5 + + ru + Код подтверждения + + + true + + + + КодПодтверждения + + + Auto + + + Записать + + <key>ru</key> + <value>Записать</value> + + 1 + + ru + Записать + + + true + + + + Записать + + + Picture + Auto + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Help/ru.html" new file mode 100644 index 00000000..66631be4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Help/ru.html" @@ -0,0 +1,49 @@ +Предназначена для настройки восстановления паролей.  +
        Открывается в разделе Администрирование - Настройки пользователей и прав - Пользователи.
        В настоящее время возросло количество удаленных работников. Это накладывает определенные требования к программам, используемым в компаниях. В частности, может возникнуть случай, когда пользователь не помнит свой пароль. В программе предусмотрена возможность оперативного и безопасного восстановления паролей пользователей.
        +

        Включение ссылок под приглашением в программу

        +

        +
        Включите флажок Отображать гиперссылку "Нужна помощь", введите адрес страницы для получения помощи в Интернете.
        +
        Включите флажок Отображать гиперссылку "Забыли пароль", для того чтобы у пользователей была возможность восстановить забытый пароль при входе в программу.
        +

        Выбор способа восстановления пароля

        +

        +
        Выберите с помощью кнопок, как Восстанавливать пароль:
        +
        +
        • по электронной почте;
        • +
        • переходом по ссылке.
        +
        +

        Настройка восстановления пароля переходом по ссылке

        +
        +
        • Выберите с помощью кнопки данный способ;
        • +
        • Введите гиперссылку в строку Адрес страницы восстановления пароля в Интернете.
        +

        Настройка восстановления пароля по электронной почте: Стандартный сервис отправки

        +
        +
        • Выберите восстановления пароля по электронной почте с помощью кнопки;
        • +
        • С помощью переключателя Отправлять письмо от выберите Стандартный сервис отправки

        Настройка восстановления пароля по электронной почте: От настройки почты

        +
        +
        • Выберите восстановления пароля по электронной почте с помощью кнопки;
        • +
        • С помощью переключателя Отправлять письмо от выберите От настройки почты
        • +
          • Выберите из списка нужную настройку почты. 

        Настройка восстановления пароля по электронной почте: Указанный почтовый сервер

        +
        +
        • Выберите восстановления пароля по электронной почте с помощью кнопки;
        • +
        • С помощью переключателя Отправлять письмо от выберите Указанный почтовый сервер
        • +
          • Введите параметры почтового сервера для отправки сообщения:
          • +
          • Сервер SMTP;
          • +
          • Шифрование - выберите с помощью переключателя;
          • +
          • Порт;
          • +
          • Пользователь;
          • +
          • Пароль.
          • +
          • Отправитель.

        Шаблон сообщения с кодом восстановления пароля

        +
        Можно написать текст письма, который придет пользователю с кодом для восстановления пароля. Текст сообщения является произвольным, но в него необходимо Вставить параметры с помощью кнопки:
        +
        +
        • Код подтверждения (&VerificationCode) - код для восстановления пароля, является обязательным, генерируется программой автоматически во время отправки сообщения;
        • +
        • Имя пользователя (&UserPresentation);
        • +
        • Наименование конфигурации (&ApplicationPresentation).
        Доступны стандартные средства редактирования текста.
        +

        Код подтверждения

        +
        Можно изменить настройки длины кода подтверждения и попыток восстановления пароля, установленные по умолчанию:
        +
        +
        • Длина генерируемого кода - длина кода подтверждения для восстановления пароля, целое число в диапазоне от 8 до 50;
        • +
        • Минимальное время между повторными запросами - длительность блокировки запроса отправки нового кода для подтверждения пароля (в секундах);
        • +
        • Допустимое количество неудачных попыток ввода - максимальное количество попыток проверки кода подтверждения восстановления пароля. Если данное значение превышено, пользователю необходимо запросить отправку нового кода для восстановления пароля.
        +

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Module.bsl" new file mode 100644 index 00000000..d442adc5 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/Module.bsl" @@ -0,0 +1,535 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда + ВызватьИсключение НСтр("ru = 'Недостаточно прав для выполнения операции.'"); + КонецЕсли; + + Если Не ПользователиСлужебныйПовтИсп.ВерсияПредприятияПоддерживаетВосстановлениеПаролей() Тогда + ВызватьИсключение НСтр("ru = 'Восстановление паролей пользователей не поддерживается. + |Необходимо обновить версию платформы 1С: Предприятие.'"); + КонецЕсли; + + ПрочитьНастройкиВосстановленияПароля(); + + Если ОтображатьГиперссылкуПомощи И ПустаяСтрока(НавигационнаяСсылкаПомощи) Тогда + Элементы.НавигационнаяСсылкаПомощи.ОтметкаНезаполненного = Истина; + КонецЕсли; + + Флаг = ВариантОтправкиПоПочте = "РучнаяНастройка"; + Элементы.ГруппаСерверSMTP.Доступность = Флаг; + Элементы.ГруппаПользовательSMTP.Доступность = Флаг; + Элементы.ИмяОтправителя.Доступность = Флаг; + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + УчетнаяЗаписьПочты = Неопределено; + Элементы.ГруппаНастройкиПочты.Видимость = Ложь; + КонецЕсли; + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + Элементы.ГруппаНастройкиПочты.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВариантВосстановленияПароляПриИзменении(Элемент) + + Если ВариантВосстановленияПароля = "ЧерезЭлектроннуюПочту" Тогда + Элементы.ВариантыВосстановления.ТекущаяСтраница = Элементы.ЭлектроннаяПочта; + Иначе + Элементы.ВариантыВосстановления.ТекущаяСтраница = Элементы.ПереходПоСсылке; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВосстанавливатьПарольПриИзменении(Элемент) + + Если ВосстанавливатьПароль Тогда + Элементы.ВариантВосстановленияПароля.Доступность = Истина; + Элементы.ВариантыВосстановления.Доступность = Истина; + Иначе + Элементы.ВариантВосстановленияПароля.Доступность = Ложь; + Элементы.ВариантыВосстановления.Доступность = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НужнаПомощьПриИзменении(Элемент) + + Элементы.НавигационнаяСсылкаПомощи.Доступность = ОтображатьГиперссылкуПомощи; + +КонецПроцедуры + +&НаКлиенте +Процедура ВариантОтправкиПоПочтеПриИзменении(Элемент) + + Флаг = ВариантОтправкиПоПочте = "РучнаяНастройка"; + Элементы.ГруппаСерверSMTP.Доступность = Флаг; + Элементы.ГруппаПользовательSMTP.Доступность = Флаг; + Элементы.ИмяОтправителя.Доступность = Флаг; + + Если Флаг Тогда + Элементы.ГруппаРучныеНастройкиПочты.Показать(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВариантОтправкиПоНастройкеПочтыПриИзменении(Элемент) + + Элементы.ГруппаСерверSMTP.Доступность = Ложь; + Элементы.ГруппаПользовательSMTP.Доступность = Ложь; + Элементы.ИмяОтправителя.Доступность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ВариантОтправкиСтандартныйСервисПриИзменении(Элемент) + + Элементы.ГруппаСерверSMTP.Доступность = Ложь; + Элементы.ГруппаПользовательSMTP.Доступность = Ложь; + Элементы.ИмяОтправителя.Доступность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ШифрованиеПриПолученииПочтыПриИзменении(Элемент) + + Если ШифрованиеПриОтправкеПочты = "Авто" Тогда + ПортSMTP = 25; + Иначе + ПортSMTP = 465 + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + Если НастройкиВосстановленияПароляКорректные() Тогда + СохранитьНастройкиВосстановленияПароля(); + Закрыть(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Записать(Команда) + + Если НастройкиВосстановленияПароляКорректные() Тогда + СохранитьНастройкиВосстановленияПароля(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НавигационнаяСсылкаПомощиОткрытие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылкаПомощи); + +КонецПроцедуры + +&НаКлиенте +Процедура КодПодтверждения(Команда) + + ВставитьПараметрВШаблон("&VerificationCode"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПараметрИмяПользователя(Команда) + + ВставитьПараметрВШаблон("&UserPresentation"); + +КонецПроцедуры + +&НаКлиенте +Процедура НаименованиеКонфигурации(Команда) + + ВставитьПараметрВШаблон("&ConfigurationPresentation"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция НастройкиВосстановленияПароляКорректные() + + ОчиститьСообщения(); + + НастройкиКорректные = Истина; + + Если ОтображатьГиперссылкуПомощи И ПустаяСтрока(НавигационнаяСсылкаПомощи) Тогда + + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не заполнен адрес страницы помощи'"),, + "НавигационнаяСсылкаПомощи"); + НастройкиКорректные = Ложь; + + КонецЕсли; + + Если ВариантВосстановленияПароля <> "ЧерезЭлектроннуюПочту" Тогда + + Если ПустаяСтрока(НавигационнаяСсылкаВосстановленияПароля) Тогда + + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не заполнен адрес страницы восстановления пароля'"),, + "НавигационнаяСсылкаВосстановленияПароля"); + НастройкиКорректные = Ложь; + + КонецЕсли; + + Возврат НастройкиКорректные; + + КонецЕсли; + + Если ВариантОтправкиПоПочте = "ВнешнийПочтовыйСервер" Тогда + + Если Не ЗначениеЗаполнено(УчетнаяЗаписьПочты) Тогда + + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не заполнены настройки почты'"),, + "УчетнаяЗаписьПочты"); + НастройкиКорректные = Ложь; + + ИначеЕсли Не УчетнаяЗаписьНастроена(УчетнаяЗаписьПочты) Тогда + + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Почта не настроена для отправки писем'"),, + "УчетнаяЗаписьПочты"); + НастройкиКорректные = Ложь; + + КонецЕсли; + + ИначеЕсли ВариантОтправкиПоПочте = "РучнаяНастройка" Тогда + + Если ПустаяСтрока(АдресСервераSMTP) Тогда + + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не заполнен адрес сервера SMTP'"),, + "АдресСервераSMTP"); + НастройкиКорректные = Ложь; + + КонецЕсли; + + Если ПустаяСтрока(ПользовательSMTP) Тогда + + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не заполнен пользователь SMTP'"),, + "ПользовательSMTP"); + НастройкиКорректные = Ложь; + + КонецЕсли; + + Если ПустаяСтрока(ПарольSMTP) Тогда + + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не заполнен пароль SMTP'"),, + "ПарольSMTP"); + НастройкиКорректные = Ложь; + + КонецЕсли; + + Если ПустаяСтрока(ИмяОтправителя) Тогда + + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не заполнено имя отправителя'"),, + "ИмяОтправителя"); + НастройкиКорректные = Ложь; + + КонецЕсли; + + + КонецЕсли; + + Возврат НастройкиКорректные; + +КонецФункции + +&НаСервереБезКонтекста +Функция УчетнаяЗаписьНастроена(УчетнаяЗапись) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + + МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями"); + Возврат МодульРаботаСПочтовымиСообщениями.УчетнаяЗаписьНастроена(УчетнаяЗапись, Истина, Ложь); + + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +&НаКлиенте +Процедура ВставитьПараметрВШаблон(ИмяПараметра) + + Если ТекущийЭлемент.Имя = Элементы.ТемаПисьма.Имя Тогда + ТемаПисьма = ТемаПисьма + " " + ИмяПараметра; + Иначе + ЗакладкаДляВставкиНачало = Неопределено; + ЗакладкаДляВставкиКонец = Неопределено; + Элементы.ТекстСообщения.ПолучитьГраницыВыделения(ЗакладкаДляВставкиНачало, ЗакладкаДляВставкиКонец); + ТекстСообщения.Вставить(ЗакладкаДляВставкиКонец, ИмяПараметра); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗапуститьФоновоеЗаполнениеПочтыПользователей() + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Заполнение почты пользователей для восстановления пароля'"); + + ДлительныеОперации.ВыполнитьВФоне("ПользователиСлужебный.ЗаполнитьПочтуДляВосстановленияПароляУПользователейВФоне", + Новый Структура, ПараметрыВыполнения); + +КонецПроцедуры + +&НаСервере +Функция ТребуетсяЗапускЗаполненияПочтыПользователей() + + Если Не ПользователиСлужебныйПовтИсп.ВерсияПредприятияПоддерживаетВосстановлениеПаролей() Тогда + Возврат Ложь; + КонецЕсли; + + Если Не ВосстанавливатьПароль Тогда + Возврат Ложь; + КонецЕсли; + + Настройки = ПользователиСлужебный.НастройкиВосстановленияПароля(); + Если Настройки = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + // Предыдущие значение + Если Настройки.СпособВосстановленияПароля <> ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("Нет") Тогда + Возврат Ложь; + КонецЕсли; + + ПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей(); + Для Каждого ПользовательИБ Из ПользователиИБ Цикл + Если ПользовательИБ.ЗапрещеноВосстанавливатьПароль = Ложь Тогда + Возврат Ложь; + КонецЕсли; + КонецЦикла; + + Возврат Истина; + +КонецФункции + +&НаСервере +Процедура СохранитьНастройкиВосстановленияПароля() + + ЗапуститьФоновоеЗаполнениеПочтыПользователей = ТребуетсяЗапускЗаполненияПочтыПользователей(); + + Если ПарольИзменен Тогда + ТекущийПарольSMTP = ПарольSMTP; + Иначе + ТекущиеНастройки = ПользователиСлужебный.НастройкиВосстановленияПароля(); + Если ТекущиеНастройки <> Неопределено Тогда + ТекущийПарольSMTP = ТекущиеНастройки.ПарольSMTP; + Иначе + ТекущийПарольSMTP = ""; + КонецЕсли; + КонецЕсли; + + Вложения = Новый Структура; + ТекстСообщения.ПолучитьHTML(ТекстСообщенияHTML, Вложения); + + Для каждого Вложение Из Вложения Цикл + + ФорматИзображения = ?(Вложение.Значение.Формат() <> ФорматКартинки.НеизвестныйФормат, + НРег(Вложение.Значение.Формат()), НРег(ФорматКартинки.PNG)); + + ТекстКартинки = "src=""data:image/" + ФорматИзображения + ";base64," + Base64Строка(Вложение.Значение.ПолучитьДвоичныеДанные()) + """"; + ТекстСообщенияHTML = СтрЗаменить(ТекстСообщенияHTML, + "src=""" + Вложение.Ключ + """", + ТекстКартинки); + + КонецЦикла; + + Настройки = ПользователиСлужебный.НовыеНастройкиВосстановленияПароля(); + Если Настройки = Неопределено Тогда + Возврат; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(Настройки, ЭтотОбъект, СписокПолейНастроек()); + + Настройки.Заголовок = ТемаПисьма; + Настройки.ПарольSMTP = ТекущийПарольSMTP; + + Если ВосстанавливатьПароль Тогда + + Если ВариантВосстановленияПароля = "ПереходПоСсылке" Тогда + Настройки.СпособВосстановленияПароля = + ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("ПереходПоНавигационнойСсылке"); + ИначеЕсли ВариантОтправкиПоПочте = "СтандартныйСервис" Тогда + Настройки.СпособВосстановленияПароля = + ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("ОтправкаКодаПодтвержденияЧерезСтандартныйСервис"); + ИначеЕсли ВариантОтправкиПоПочте = "ВнешнийПочтовыйСервер" Тогда + Настройки.СпособВосстановленияПароля = + ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("ОтправкаКодаПодтвержденияПоЗаданнымПараметрам"); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + + МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный"); + НастройкиУчетнойЗаписиДляОтправкиПочта = МодульРаботаСПочтовымиСообщениямиСлужебный.НастройкиУчетнойЗаписиДляОтправкиПочта(УчетнаяЗаписьПочты); + ЗаполнитьЗначенияСвойств(Настройки, НастройкиУчетнойЗаписиДляОтправкиПочта); + + КонецЕсли; + + Иначе + + Настройки.СпособВосстановленияПароля = + ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("ОтправкаКодаПодтвержденияПоЗаданнымПараметрам"); + ЗаполнитьЗначенияСвойств(Настройки, ЭтотОбъект, "АдресСервераSMTP, ПарольSMTP, ПользовательSMTP, ПортSMTP,ИмяОтправителя"); + Настройки.ИспользоватьSSL = ШифрованиеПриОтправкеПочты = "SSL"; + + КонецЕсли; + Иначе + Настройки.СпособВосстановленияПароля = ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("Нет"); + КонецЕсли; + + УстановитьУчетнуюЗаписьДляВосстановленияПароля(УчетнаяЗаписьПочты, ВариантОтправкиПоПочте = "ВнешнийПочтовыйСервер"); + ПользователиСлужебный.УстановитьНастройкиВосстановленияПароля(Настройки); + + Если ЗапуститьФоновоеЗаполнениеПочтыПользователей Тогда + ЗапуститьФоновоеЗаполнениеПочтыПользователей(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПрочитьНастройкиВосстановленияПароля() + + ВариантОтправкиПоПочте = "СтандартныйСервис"; + ВариантВосстановленияПароля = "ЧерезЭлектроннуюПочту"; + + СведенияОбУчетнойЗаписи = НастройкиУчетнойЗаписиДляВосстановленияПароля(); + + Если ТипЗнч(СведенияОбУчетнойЗаписи) = Тип("Структура") Тогда + УчетнаяЗаписьПочты = СведенияОбУчетнойЗаписи.УчетнаяЗаписьПочты; + КонецЕсли; + + Настройки = ПользователиСлужебный.НастройкиВосстановленияПароля(); + Если Настройки = Неопределено Тогда + Возврат; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, Настройки, СписокПолейНастроек()); + + Если ЗначениеЗаполнено(Настройки.ПарольSMTP) Тогда + ПарольSMTP = Строка(Новый УникальныйИдентификатор); + КонецЕсли; + + ШифрованиеПриОтправкеПочты = ?(Настройки.ИспользоватьSSL, "SSL", "Авто"); + + Если ПустаяСтрока(ТекстСообщенияHTML) Тогда + ТекстСообщенияHTML = ТекстПоУмолчанию(); + КонецЕсли; + ТекстСообщения.УстановитьHTML(ТекстСообщенияHTML, Новый Структура); + + ТемаПисьма = ?(ЗначениеЗаполнено(Настройки.Заголовок), + Настройки.Заголовок, НСтр("ru='Восстановление пароля'")); + + Если Настройки.СпособВосстановленияПароля = ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("Нет") Тогда + ВосстанавливатьПароль = Ложь; + + Иначе + ВосстанавливатьПароль = Истина; + Если Настройки.СпособВосстановленияПароля = ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("ОтправкаКодаПодтвержденияЧерезСтандартныйСервис") Тогда + ВариантОтправкиПоПочте = "СтандартныйСервис"; + Иначе + Если Настройки.СпособВосстановленияПароля = + ПользователиСлужебный.СпособВосстановленияПароляПользователяИнформационнойБазы("ОтправкаКодаПодтвержденияПоЗаданнымПараметрам") Тогда + Элементы.ВариантыВосстановления.ТекущаяСтраница = Элементы.ЭлектроннаяПочта; + ВариантВосстановленияПароля = "ЧерезЭлектроннуюПочту"; + Если СведенияОбУчетнойЗаписи.Используется Тогда + ВариантОтправкиПоПочте = "ВнешнийПочтовыйСервер"; + Иначе + ВариантОтправкиПоПочте = "РучнаяНастройка"; + Элементы.ГруппаРучныеНастройкиПочты.Показать(); + КонецЕсли; + Иначе + Элементы.ВариантыВосстановления.ТекущаяСтраница = Элементы.ПереходПоСсылке; + ВариантВосстановленияПароля = "ПереходПоСсылке"; + КонецЕсли; + + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СписокПолейНастроек() + + Возврат "ДлительностьБлокировкиЗапросаОбновленияКодаПодтверждения, + |МаксимальноеКоличествоНеуспешныхПопытокПроверкиКодаПодтверждения,НавигационнаяСсылкаВосстановленияПароля, + |ОтображатьГиперссылкуПомощи,НавигационнаяСсылкаПомощи,ДлинаКодаПодтверждения,ТекстСообщенияHTML, + |АдресСервераSMTP,ПортSMTP,ИспользоватьSSL,ПользовательSMTP,ИмяОтправителя"; + +КонецФункции + +&НаСервереБезКонтекста +Функция ТекстПоУмолчанию() + + ТекстСообщенияHTML = НСтр("ru='Здравствуйте, &UserPresentation + | + |Мы получили запрос на восстановление пароля от &ConfigurationPresentation. + | + |Введите код &VerificationCode для сброса пароля. + | + |Если восстановление пароля не запрашивалось, сообщите об этом техническому специалисту.'"); + + Возврат ТекстСообщенияHTML; + +КонецФункции + +&НаСервереБезКонтекста +Процедура УстановитьУчетнуюЗаписьДляВосстановленияПароля(УчетнаяЗаписьПочты, Используется) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + + МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный"); + + СведенияОбУчетнойЗаписи = МодульРаботаСПочтовымиСообщениямиСлужебный.ОписаниеНастроекУчетнойЗаписиДляВосстановленияПароля(); + СведенияОбУчетнойЗаписи.УчетнаяЗаписьПочты = УчетнаяЗаписьПочты; + СведенияОбУчетнойЗаписи.Используется = Используется; + + МодульРаботаСПочтовымиСообщениямиСлужебный.СохранитьНастройкиУчетнойЗаписиДляВосстановленияПароля(СведенияОбУчетнойЗаписи); + + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция НастройкиУчетнойЗаписиДляВосстановленияПароля() + + СведенияОбУчетнойЗаписи = Неопределено; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный"); + СведенияОбУчетнойЗаписи = МодульРаботаСПочтовымиСообщениямиСлужебный.НастройкиУчетнойЗаписиДляВосстановленияПароля(); + КонецЕсли; + + Возврат СведенияОбУчетнойЗаписи; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271.mdo" new file mode 100644 index 00000000..2763d3af --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\276\320\273\320\265\320\271.mdo" @@ -0,0 +1,16 @@ + + + ВосстановлениеПаролей + + ru + Восстановление паролей + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Form.form" new file mode 100644 index 00000000..3282c1c3 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Form.form" @@ -0,0 +1,427 @@ + + + + ГруппаПредупреждение + 4 + + ЗначокПредупреждения + 1 + + <key>ru</key> + <value>Значок предупреждения</value> + + true + true + + true + + + ЗначокПредупрежденияРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ЗначокПредупрежденияКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + ТекстПредупреждения + 6 + + <key>ru</key> + <value>Была отменена связь с главным узлом "%1" распределенной информационной базы.</value> + + true + true + + true + + Button + + ТекстПредупрежденияРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + + ТекстПредупрежденияКонтекстноеМеню + 7 + true + true + + true + + true + + Label + 46 + true + 2 + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Предупреждение</value> + + 2 + + ГруппаПредупреждениеРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + Пояснение + 30 + + <key>ru</key> + <value>- Для восстановления связи с главным узлом нажмите "Восстановить". +- Для того чтобы подтвердить отмену связи и начать работу в программе как с самостоятельной информационной базой, нажмите "Отключить". +</value> + + true + true + + true + + + ПояснениеРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеКонтекстноеМеню + 31 + true + true + + true + + true + + Label + 50 + true + true + + Left + + + + Команды + 12 + + Восстановить + 16 + true + true + + true + + true + + ВосстановитьРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Восстановить + Auto + true + true + UserCmds + Auto + + + Отключить + 18 + true + true + + true + + + ОтключитьРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отключить + Auto + true + true + UserCmds + Auto + + + ЗавершитьРаботу + 22 + true + true + + true + + + ЗавершитьРаботуРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗавершитьРаботу + Auto + true + true + UserCmds + Auto + + + Справка + 14 + true + true + + true + + + СправкаРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды</value> + + + КомандыРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockWholeInterface + true + true + Vertical + true + true + true + true + true + + ГлавныйУзел + 1 + + ExchangePlanRef + + + true + + + true + + + + Восстановить + + <key>ru</key> + <value>Восстановить</value> + + 1 + + true + + + + Восстановить + + + DontUse + + + Отключить + + <key>ru</key> + <value>Отключить</value> + + 2 + + true + + + + Отключить + + + DontUse + + + ЗавершитьРаботу + + <key>ru</key> + <value>Завершить работу</value> + + 4 + + ru + Завершить работу и принять решение позже. + + + true + + + + ЗавершитьРаботу + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Help/ru.html" new file mode 100644 index 00000000..469d48e8 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Help/ru.html" @@ -0,0 +1,11 @@ + +

        Предназначена для восстановления связи подчиненного узла с главным узлом.

        +

        Сообщение выводится при входе в подчиненный узел, на время отключенный от главного узла (т.е. после отмены главного узла).

        +

        Отмена главного узла (временное отключение подчиненного узла) может потребоваться в случаях:

        +
        • Для загрузки в подчиненный узел конфигурации главного узла. Производится в процессе восстановления распределенной информационной базы (недопустимо загружать конфигурацию более ранней версии). +
        • При восстановлении конфигурации главного узла. Это может понадобиться, если произошел сбой, в результате которого информационная база главного узла была повреждена.

        Нажмите кнопку Восстановить, для того чтобы восстановить главный узел перед продолжением запуска.

        +

         Нажмите кнопку Отключить, для того чтобы безвозвратно отключить связь с главным узлом перед продолжением запуска. Это требуется после отмены главного узла в следующих случаях:

        +
        • при создании главного узла из копии подчиненного узла; +
        • при создании самостоятельной информационной базы из подчиненного узла (или его копии). +
        • Внимание! Данная операция является необратимой. Восстановление связи с главным узлом после этого будет возможно только программными средствами.

        См. также статью на ИТС Администрирование узлов распределенной информационной базы (БСП).

        +

         

        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Module.bsl" new file mode 100644 index 00000000..46098bb2 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/Module.bsl" @@ -0,0 +1,113 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ГлавныйУзел = Константы.ГлавныйУзел.Получить(); + + Если Не ЗначениеЗаполнено(ГлавныйУзел) Тогда + ВызватьИсключение НСтр("ru = 'Главный узел не сохранен.'"); + КонецЕсли; + + Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда + ВызватьИсключение НСтр("ru = 'Главный узел установлен.'"); + КонецЕсли; + + Элементы.ТекстПредупреждения.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Элементы.ТекстПредупреждения.Заголовок, Строка(ГлавныйУзел)); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Восстановить(Команда) + + ВосстановитьНаСервере(); + + Закрыть(Новый Структура("Отказ", Ложь)); + +КонецПроцедуры + +&НаКлиенте +Процедура Отключить(Команда) + + ОтключитьНаСервере(); + + Закрыть(Новый Структура("Отказ", Ложь)); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьРаботу(Команда) + + Закрыть(Новый Структура("Отказ", Истина)); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Процедура ОтключитьНаСервере() + + НачатьТранзакцию(); + Попытка + ГлавныйУзел = Константы.ГлавныйУзел.Получить(); + + ГлавныйУзелМенеджер = Константы.ГлавныйУзел.СоздатьМенеджерЗначения(); + ГлавныйУзелМенеджер.Значение = Неопределено; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ГлавныйУзелМенеджер); + + ЭтоАвтономноеРабочееМесто = Константы.ЭтоАвтономноеРабочееМесто.СоздатьМенеджерЗначения(); + ЭтоАвтономноеРабочееМесто.Прочитать(); + Если ЭтоАвтономноеРабочееМесто.Значение Тогда + ЭтоАвтономноеРабочееМесто.Значение = Ложь; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ЭтоАвтономноеРабочееМесто); + + НеИспользоватьРазделениеПоОбластямДанных = Константы.НеИспользоватьРазделениеПоОбластямДанных.СоздатьМенеджерЗначения(); + НеИспользоватьРазделениеПоОбластямДанных.Прочитать(); + Если Не Константы.ИспользоватьРазделениеПоОбластямДанных.Получить() + И Не НеИспользоватьРазделениеПоОбластямДанных.Значение Тогда + НеИспользоватьРазделениеПоОбластямДанных.Значение = Истина; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НеИспользоватьРазделениеПоОбластямДанных); + КонецЕсли; + + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда + МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер.УдалитьНастройкиСинхронизацииСГлавнымУзломРИБ(ГлавныйУзел); + КонецЕсли; + + СтандартныеПодсистемыСервер.ВосстановитьПредопределенныеЭлементы(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ВосстановитьНаСервере() + + ГлавныйУзел = Константы.ГлавныйУзел.Получить(); + + ПланыОбмена.УстановитьГлавныйУзел(ГлавныйУзел); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274.mdo" new file mode 100644 index 00000000..23d906c6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274/\320\222\320\276\321\201\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\270\320\241\320\223\320\273\320\260\320\262\320\275\321\213\320\274\320\243\320\267\320\273\320\276\320\274.mdo" @@ -0,0 +1,15 @@ + + + ВосстановлениеСвязиСГлавнымУзлом + + ru + Восстановление связи с главным узлом + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/Form.form" new file mode 100644 index 00000000..960c1f73 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/Form.form" @@ -0,0 +1,86 @@ + + + + КомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Пользовательские настройки</value> + + + КомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + true + true + + true + + Right + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + Отчет + 1 + + ReportObject + + + true + + + true + +
        true
        +
        + + + + + + Settings + КомпоновщикНастроекПользовательскиеНастройки + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..caaf39bc --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/Module.bsl" @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260.mdo" new file mode 100644 index 00000000..f32d2f3b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260/\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\236\321\202\321\207\320\265\321\202\320\260.mdo" @@ -0,0 +1,10 @@ + + + ВспомогательнаяФормаНастроекОтчета + + ru + Вспомогательная форма настроек отчета + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/Form.form" new file mode 100644 index 00000000..16bb05d0 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/Form.form" @@ -0,0 +1,217 @@ + + + + ГруппаПредупреждение + 9 + + Картинка + 6 + + <key>ru</key> + <value>Картинка</value> + + true + true + + true + + + КартинкаРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + + КартинкаКонтекстноеМеню + 7 + true + true + + true + + true + + true + true + + + CommonPicture.Ошибка32 + + + + + Надпись + 1 + + <key>ru</key> + <value>Ваша учетная запись отключена. +Дальнейшая работа невозможна и будет +автоматически завершена через 5 минут. + +Обратитесь к администратору.</value> + + true + true + + true + + + НадписьРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + НадписьКонтекстноеМеню + 2 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Предупреждение</value> + + + ГруппаПредупреждениеРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаЗавершитьРаботу + 4 + true + true + + true + + true + + ФормаЗавершитьРаботуРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗавершитьРаботу + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Center + + + OnOpen + ПриОткрытии + + + OnClose + ПриЗакрытии + + LockWholeInterface + true + true + Vertical + true + true + true + true + true + + ЗавершитьРаботу + + <key>ru</key> + <value>Завершить работу</value> + + 1 + + ru + Завершить работу + + + true + + + + ЗавершитьРаботу + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/Module.bsl" new file mode 100644 index 00000000..05f3e6e4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/Module.bsl" @@ -0,0 +1,47 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ПодключитьОбработчикОжидания("ОбработчикОжиданияЗавершитьРаботу", 5 * 60, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + ПрекратитьРаботуСистемы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗавершитьРаботу(Команда) + + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбработчикОжиданияЗавершитьРаботу() + + Закрыть(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275.mdo" new file mode 100644 index 00000000..eb02759c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275/\320\222\321\205\320\276\320\264\320\222\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\203\320\227\320\260\320\277\321\200\320\265\321\211\320\265\320\275.mdo" @@ -0,0 +1,10 @@ + + + ВходВПрограммуЗапрещен + + ru + Вход в программу запрещен + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Form.form" new file mode 100644 index 00000000..71f2da4a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Form.form" @@ -0,0 +1,323 @@ + + + + ПоясняющийТекст + 13 + true + true + + true + + + ПоясняющийТекстРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + + ПоясняющийТекстКонтекстноеМеню + 14 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + + Календарь + 1 + true + true + + true + + + + Календарь + + + None + + КалендарьExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + КалендарьКонтекстноеМеню + 2 + true + true + + true + + true + + CalendarField + Enter + true + Left + true + + + Selection + КалендарьВыбор + + 1 + true + 1 + true + true + true + true + 2 + 1 + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОК + 3 + true + true + + true + + + ФормаОКExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 4 + true + true + + true + + + ФормаОтменаExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отмена + PictureAndText + true + true + UserCmds + Auto + + + ФормаСправка + 5 + true + true + + true + + + ФормаСправкаExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Календарь + + <key>ru</key> + <value>Календарь</value> + + 1 + + Date + + Date + + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + Отмена + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Отмена + + + true + + + + Отмена + + + DontUse + + + НачальноеЗначение + + Date + + Date + + + + + ПоясняющийТекст + + String + + + + + НачалоПериодаОтображения + + Date + + Date + + + + + КонецПериодаОтображения + + Date + + Date + + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Help/ru.html" new file mode 100644 index 00000000..e73b29d2 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Help/ru.html" @@ -0,0 +1,6 @@ + +

        Предназначен для выбора даты переноса праздничного дня производственного календаря.

        +

        В поставку программы входит общегосударственный производственный календарь с утвержденными правительством сведениями о рабочих днях, праздниках и переносах праздничных дней.

        +

        Однако иногда (как правило, в начале года) необходимо временно заполнить данные самостоятельно. Это имеет смысл, если данные календаря нужны, но официально он еще не принят и в программе его еще нет, т.к. еще не все переносы правительство утвердило. Можно заполнить переносы раньше, а потом, когда данные общегосударственного календаря будут утверждены и войдут в поставку программы, переносы автоматически корректируются.

        +

        Открывается по команде Перенести день в производственном календаре.

        +

        Выберите дату переноса, нажмите ОК.

        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Module.bsl" new file mode 100644 index 00000000..aee6e2e1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/Module.bsl" @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ДействиеВыбрано; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + НачальноеЗначение = Параметры.НачальноеЗначение; + + Если Не ЗначениеЗаполнено(НачальноеЗначение) Тогда + НачальноеЗначение = ТекущаяДатаСеанса(); + КонецЕсли; + + Параметры.Свойство("НачалоПериодаОтображения", Элементы.Календарь.НачалоПериодаОтображения); + Параметры.Свойство("КонецПериодаОтображения", Элементы.Календарь.КонецПериодаОтображения); + + Календарь = НачальноеЗначение; + + Параметры.Свойство("Заголовок", Заголовок); + + Если Параметры.Свойство("ПоясняющийТекст") Тогда + Элементы.ПоясняющийТекст.Заголовок = Параметры.ПоясняющийТекст; + Иначе + Элементы.ПоясняющийТекст.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + Если ДействиеВыбрано <> Истина Тогда + ОповеститьОВыборе(Неопределено); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура КалендарьВыбор(Элемент, ВыбраннаяДата) + + ДействиеВыбрано = Истина; + ОповеститьОВыборе(ВыбраннаяДата); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + ВыделенныеДаты = Элементы.Календарь.ВыделенныеДаты; + + Если ВыделенныеДаты.Количество() = 0 Тогда + ПоказатьПредупреждение(,НСтр("ru = 'Дата не выбрана.'")); + Возврат; + КонецЕсли; + + ДействиеВыбрано = Истина; + ОповеститьОВыборе(ВыделенныеДаты[0]); + +КонецПроцедуры + +&НаКлиенте +Процедура Отмена(Команда) + + ДействиеВыбрано = Истина; + ОповеститьОВыборе(Неопределено); + +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213.mdo" new file mode 100644 index 00000000..dec3301d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213/\320\222\321\213\320\261\320\276\321\200\320\224\320\260\321\202\321\213.mdo" @@ -0,0 +1,15 @@ + + + ВыборДаты + + ru + Выбор даты + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/Form.form" new file mode 100644 index 00000000..f8f5b2d6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/Form.form" @@ -0,0 +1,1067 @@ + + + + СообщениеДляПользователя + 20 + + ЗначокСообщения + 21 + + <key>ru</key> + <value>Значок сообщения</value> + + true + true + + true + + + ЗначокСообщенияExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + ЗначокСообщенияКонтекстноеМеню + 22 + true + true + + true + + true + + true + true + false + + + CommonPicture.Предупреждение32 + + + + + Сообщение + 14 + true + true + + true + + + + Сообщение + + + None + + СообщениеExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + + СообщениеКонтекстноеМеню + 15 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 6 + true + true + + + true + true + + true + + + СообщениеДляПользователяExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ФайлИКнопка + 19 + + ПолноеИмяФайлаВРабочемКаталоге + 1 + true + true + + true + + + + ПолноеИмяФайлаВРабочемКаталоге + + + Top + + ПолноеИмяФайлаВРабочемКаталогеРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + ПолноеИмяФайлаВРабочемКаталогеКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 60 + true + true + true + true + true + + + + ОткрытьКаталог + 13 + true + true + + true + + false + + ОткрытьКаталогExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОткрытьКаталог + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ФайлИКнопкаExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + NormalSeparation + true + true + Auto + Auto + + + + СвойстваФайлов + 36 + + ДатаИзменения + 27 + true + true + + true + + + <key>ru</key> + <value>Дата изменения (местное время)</value> + + + ДатаИзмененияExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + + Размер + 12 + true + true + + true + + + <key>ru</key> + <value>Размер (байт)</value> + + + РазмерExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + + ГруппаНаКомпьютере + 63 + + ДатаИзмененияВРабочемКаталоге + 60 + true + true + + true + + + + ДатаИзмененияВРабочемКаталоге + + + + ДатаИзмененияВРабочемКаталогеРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + + ДатаИзмененияВРабочемКаталогеКонтекстноеМеню + 61 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + РазмерВРабочемКаталоге + 32 + true + true + + true + + + + РазмерВРабочемКаталоге + + + + РазмерВРабочемКаталогеExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + РазмерВРабочемКаталогеКонтекстноеМеню + 33 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Копия на компьютере</value> + + + ГруппаНаКомпьютереРасширеннаяПодсказка + 64 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + + ГруппаВПрограмме + 65 + + ДатаИзмененияВХранилищеФайлов + 57 + true + true + + true + + + + ДатаИзмененияВХранилищеФайлов + + + + ДатаИзмененияВХранилищеФайловРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + ДатаИзмененияВХранилищеФайловКонтекстноеМеню + 58 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + РазмерВХранилищеФайлов + 34 + true + true + + true + + + + РазмерВХранилищеФайлов + + + + РазмерВХранилищеФайловExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + РазмерВХранилищеФайловКонтекстноеМеню + 35 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Файл в программе</value> + + + ГруппаВПрограммеРасширеннаяПодсказка + 66 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + true + true + + true + + + СвойстваФайловExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОткрытьСуществующий + 25 + true + true + + true + + + ФормаОткрытьСуществующийExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьСуществующий + Auto + true + true + UserCmds + Auto + + + ФормаПоместить + 23 + true + true + + true + + + ФормаПоместитьExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Поместить + Auto + true + true + UserCmds + Auto + + + ФормаВзятьИзХранилища + 26 + true + true + + true + + + ФормаВзятьИзХранилищаExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВзятьИзПрограммы + Auto + true + true + UserCmds + Auto + + + ФормаНеПомещать + 24 + true + true + + true + + + ФормаНеПомещатьExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НеПомещать + Auto + true + true + UserCmds + Auto + + + Отменить + 11 + true + true + + true + + false + + ОтменитьExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отменить + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Help + LockOwnerWindow + true + Vertical + true + true + true + true + + ПолноеИмяФайлаВРабочемКаталоге + + <key>ru</key> + <value>Копия файла на компьютере</value> + + 1 + + String + + + + true + + + true + + + + Сообщение + + <key>ru</key> + <value>Сообщение</value> + + 4 + + String + + + + true + + + true + + + + ДатаИзмененияВХранилищеФайлов + + <key>ru</key> + <value>Изменен</value> + + 5 + + String + + + + true + + + true + + + + ДатаИзмененияВРабочемКаталоге + + <key>ru</key> + <value>Изменен</value> + + 6 + + String + + + + true + + + true + + + + РазмерВРабочемКаталоге + + <key>ru</key> + <value>Размер (байт)</value> + + 7 + + Number + + 10 + + + + true + + + true + + + + РазмерВХранилищеФайлов + + <key>ru</key> + <value>Размер (байт)</value> + + 8 + + Number + + 10 + + + + true + + + true + + + + ОткрытьСуществующий + + <key>ru</key> + <value>Открыть копию</value> + + 1 + + ru + Открыть копию файла на компьютере. + + + true + + + + ОткрытьСуществующий + + + DontUse + + + ВзятьИзПрограммы + + <key>ru</key> + <value>Взять из программы</value> + + 2 + + ru + Заменить копию файла на компьютере копией файла из программы и открыть. + + + true + + + + ВзятьИзПрограммы + + + DontUse + + + ОткрытьКаталог + + <key>ru</key> + <value>Открыть каталог</value> + + 3 + + ru + Открыть рабочий каталог. + + + true + + + CommonPicture.Папка + + + + ОткрытьКаталог + + + Picture + DontUse + + + Поместить + + <key>ru</key> + <value>Поместить</value> + + 4 + + ru + Поместить файл в программу. + + + true + + + + Поместить + + + DontUse + + + НеПомещать + + <key>ru</key> + <value>Не помещать</value> + + 5 + + ru + Не помещать файл с компьютера в программу. + + + true + + + + НеПомещать + + + DontUse + + + Отменить + + <key>ru</key> + <value>Отменить</value> + + 6 + + ru + Отмена действие с файлом. + + + true + + + + Отменить + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/Module.bsl" new file mode 100644 index 00000000..5aee8c1a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/Module.bsl" @@ -0,0 +1,102 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЗаполнитьЗначенияСвойств( + ЭтотОбъект, + Параметры, + "ДатаИзмененияВРабочемКаталоге, + |ДатаИзмененияВХранилищеФайлов, + |ПолноеИмяФайлаВРабочемКаталоге, + |РазмерВРабочемКаталоге, + |РазмерВХранилищеФайлов, + |Сообщение, + |Заголовок"); + + ТестНовее = " (" + НСтр("ru = 'новее'") + ")"; + Если ДатаИзмененияВРабочемКаталоге > ДатаИзмененияВХранилищеФайлов Тогда + ДатаИзмененияВРабочемКаталоге = Строка(ДатаИзмененияВРабочемКаталоге) + ТестНовее; + Иначе + ДатаИзмененияВХранилищеФайлов = Строка(ДатаИзмененияВХранилищеФайлов) + ТестНовее; + КонецЕсли; + + Элементы.Сообщение.Высота = СтрЧислоСтрок(Сообщение) + 2; + + Если Параметры.ДействиеНадФайлом = "ПомещениеВХранилищеФайлов" Тогда + + Элементы.ФормаОткрытьСуществующий.Видимость = Ложь; + Элементы.ФормаВзятьИзХранилища.Видимость = Ложь; + Элементы.ФормаПоместить.КнопкаПоУмолчанию = Истина; + + ИначеЕсли Параметры.ДействиеНадФайлом = "ОткрытиеВРабочемКаталоге" Тогда + + Элементы.ФормаПоместить.Видимость = Ложь; + Элементы.ФормаНеПомещать.Видимость = Ложь; + Элементы.ФормаОткрытьСуществующий.КнопкаПоУмолчанию = Истина; + Иначе + ВызватьИсключение НСтр("ru = 'Неизвестное действие над файлом'"); + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + Элементы.ЗначокСообщения.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОткрытьСуществующий(Команда) + + Закрыть("ОткрытьСуществующий"); + +КонецПроцедуры + +&НаКлиенте +Процедура Поместить(Команда) + + Закрыть("ПОМЕСТИТЬ"); + +КонецПроцедуры + +&НаКлиенте +Процедура ВзятьИзПрограммы(Команда) + + Закрыть("ВзятьИзХранилищаИОткрыть"); + +КонецПроцедуры + +&НаКлиенте +Процедура НеПомещать(Команда) + + Закрыть("НеПомещать"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьКаталог(Команда) + + РаботаСФайламиСлужебныйКлиент.ОткрытьПроводникСФайлом(ПолноеИмяФайлаВРабочемКаталоге); + +КонецПроцедуры + +&НаКлиенте +Процедура Отменить(Команда) + + Закрыть("Отменить"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260.mdo" new file mode 100644 index 00000000..57d9f617 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260/\320\222\321\213\320\261\320\276\321\200\320\224\320\265\320\271\321\201\321\202\320\262\320\270\321\217\320\237\321\200\320\270\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\265\320\275\320\270\320\270\320\236\321\202\320\273\320\270\321\207\320\270\320\271\320\244\320\260\320\271\320\273\320\260.mdo" @@ -0,0 +1,10 @@ + + + ВыборДействияПриОбнаруженииОтличийФайла + + ru + Выбор действия при обнаружении отличий файла + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\240\320\276\320\273\320\270/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\240\320\276\320\273\320\270/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..8458a914 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\240\320\276\320\273\320\270/ExtInfo/ListSettings.dcss" @@ -0,0 +1,23 @@ + + + + + false + ИспользуетсяБезОбъектовАдресации + Equal + false + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Form.form" new file mode 100644 index 00000000..ec65fd07 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Form.form" @@ -0,0 +1,1017 @@ + + + + Страницы + 23 + + Пользователи + 24 + + КоманднаяПанельПользователи + 31 + true + true + + true + + + КоманднаяПанельПользователиExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Item.СписокПользователи + + + + СписокПользователи + 1 + true + true + + true + + + СписокПользователи + + false + None + Change + Choose + Copy + Create + Delete + SetDeletionMark + + Наименование + 4 + true + true + + true + + + + СписокПользователи.Description + + + true + + НаименованиеExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 20 + true + true + + + + Ссылка + 83 + true + true + + + + СписокПользователи.Ref + + + + СсылкаРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 84 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокПользователиКоманднаяПанель + 3 + true + true + + true + + Left + true + + + ValueChoice + СписокПользователиВыборЗначения + + + true + true + + true + + СписокПользователиSearchString + 65 + + СписокПользователиSearchStringExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователиSearchStringContextMenu + 66 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокПользователиViewStatus + 68 + + СписокПользователиViewStatusExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователиViewStatusContextMenu + 69 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокПользователиSearchControl + 71 + + СписокПользователиSearchControlExtendedTooltip + 73 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователиSearchControlContextMenu + 72 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокПользователиExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователиКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + true + + СписокПользователи.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + + + true + true + + true + + + <key>ru</key> + <value>Пользователи</value> + + + ПользователиExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Роли + 25 + + СписокРоли + 26 + true + true + + true + + + СписокРоли + + false + None + Change + Choose + Copy + Create + Delete + SetDeletionMark + + НаименованиеРоли + 29 + true + true + + true + + + + СписокРоли.Description + + + + НаименованиеРолиExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеРолиКонтекстноеМеню + 30 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокРолиСсылка + 86 + true + true + + + + СписокРоли.Ref + + + + СписокРолиСсылкаРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + + СписокРолиСсылкаКонтекстноеМеню + 87 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокРолиКоманднаяПанель + 28 + true + true + + true + + Left + true + + + ValueChoice + СписокРолиВыборЗначения + + + true + true + + true + + СписокРолиSearchString + 74 + + СписокРолиSearchStringExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + + СписокРолиSearchStringContextMenu + 75 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокРолиViewStatus + 77 + + СписокРолиViewStatusExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + + СписокРолиViewStatusContextMenu + 78 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокРолиSearchControl + 80 + + СписокРолиSearchControlExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + + СписокРолиSearchControlContextMenu + 81 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокРолиExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + + СписокРолиКонтекстноеМеню + 27 + true + true + + true + + true + + true + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + + СписокРоли.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + + + + СписокРолиКомментарий + 53 + true + true + + true + + + + Items.СписокРоли.CurrentData.Комментарий + + + Left + + СписокРолиКомментарийExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + + СписокРолиКомментарийКонтекстноеМеню + 54 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Роли исполнителей</value> + + + РолиExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + СтраницыExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + ФормаКоманднаяПанель + -1 + + Выбрать + 22 + true + true + + true + + false + + ВыбратьExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + ChoiceProcessing + ОбработкаВыбора + + + OnCreateAtServer + ПриСозданииНаСервере + + CustomizeForm + LockOwnerWindow + Use + true + true + HorizontalIfPossible + true + true + true + true + true + + СписокПользователи + + <key>ru</key> + <value>Список пользователи</value> + + 1 + + DynamicList + + + true + + + true + + + СписокПользователи.Ref + + + ВЫБРАТЬ + Пользователи.Ссылка, + Пользователи.ПометкаУдаления, + Пользователи.Предопределенный, + Пользователи.Наименование, + ВЫБОР + КОГДА Пользователи.ПометкаУдаления + ТОГДА 0 + ИНАЧЕ 1 + КОНЕЦ КАК НомерКартинки +ИЗ + Справочник.Пользователи КАК Пользователи +ГДЕ + Пользователи.Недействителен = ЛОЖЬ + И Пользователи.Служебный = ЛОЖЬ + И Пользователи.ПометкаУдаления = ЛОЖЬ + Catalog.Пользователи + true + true + true + true + true + + + + СписокРоли + + <key>ru</key> + <value>Список роли</value> + + 3 + + DynamicList + + + true + + + true + + + СписокРоли.Ref + + + СписокРоли.ИспользуетсяСОбъектамиАдресации + + + ВЫБРАТЬ + СправочникРолиИсполнителей.Ссылка, + СправочникРолиИсполнителей.ВерсияДанных, + СправочникРолиИсполнителей.ПометкаУдаления, + СправочникРолиИсполнителей.Предопределенный, + СправочникРолиИсполнителей.Код, + СправочникРолиИсполнителей.Наименование, + СправочникРолиИсполнителей.ИспользуетсяБезОбъектовАдресации, + СправочникРолиИсполнителей.КраткоеПредставление, + СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации, + СправочникРолиИсполнителей.Комментарий, + СправочникРолиИсполнителей.ТипыДополнительногоОбъектаАдресации, + СправочникРолиИсполнителей.ТипыОсновногоОбъектаАдресации, + СправочникРолиИсполнителей.ВнешняяРоль, + СправочникРолиИсполнителей.УзелОбмена, + ВЫБОР + КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации + ТОГДА ИСТИНА + КОГДА СправочникРолиИсполнителей.Ссылка В + (ВЫБРАТЬ ПЕРВЫЕ 1 + РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка + ИЗ + РегистрСведений.ИсполнителиЗадач + ГДЕ + РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ КАК ЕстьИсполнители +ИЗ + Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей + Catalog.РолиИсполнителей + true + true + true + true + true + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать + + + true + + + StdPicture.ChooseValue + + + + Выбрать + + + TextPicture + DontUse + + + Исполнитель + + + + ПоказыватьФункции + + Boolean + + + + ТолькоПростыеРоли + + Boolean + + + + БезВнешнихРолей + + Boolean + + + + + + + 0:84aada14-1a22-46de-b6dc-67e663d3a9f7 + + + + CommonCommand.ИсторияИзменений + + + + 0 + + + + 0 + + + + 0 + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Help/ru.html" new file mode 100644 index 00000000..f8b592ce --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Help/ru.html" @@ -0,0 +1,27 @@ + +

        Предназначен для выбора исполнителя бизнес-процесса (например, Задания).

        +

        Открывается из бизнес-процесса по кнопке выбора в поле Исполнитель

        +

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

        +

        Если выбирается исполнитель, то бизнес-процесс будет адресован этому исполнителю. Если выполняется выбор роли, то бизнес-процесс адресуется тому исполнителю, который в момент рассмотрения задачи назначен исполнителем этой роли.
        В процессе работы роли могут быть переназначены. В этом случае задача автоматически переадресовывается новым исполнителям.

        +

        Пользователи

        +

        Особенности взаимодействия с внешними пользователями

        +
        • +
          Исполнителями некоторых бизнес-процессов могут быть и внешние пользователи (например, партнеры или контактные лица партнеров).
          +
        • +
          Внешним пользователям, как правило, недоступны имена конкретных сотрудников компании, поэтому в качестве исполнителя они могут указывать только предназначенные для них роли исполнителей.
          +
        • +
          Для этого нужно настроить список таких ролей, указав, что они предназначены для определенных категорий внешних пользователей.

        Роли исполнителей

        +
        • +
          При ролевой адресации поручение выдается не персонально исполнителю, а некоторой роли бизнес-процесса (например, Старший по залу). 
          +
          • +
            Могут использоваться "уточняющие" объекты адресации, основные и дополнительные. Например, у роли Руководитель проектов могут присутствовать основной объект адресации Подразделение и дополнительный объект Проект.
            +
          • +
            Таким образом, с помощью объектов адресации происходит уточнение, руководителям какого проекта и в каком подразделении адресуется задача.
        • +
          Выделите нужную роль исполнителя, нажмите Выбрать.
          +
        • +
          Также можно воспользоваться двойным щелчком мыши.
          +
        • +
          При необходимости выберите объект адресации. Нажмите ОК.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Module.bsl" new file mode 100644 index 00000000..c76a9a3c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/Module.bsl" @@ -0,0 +1,130 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Параметры.ТолькоПростыеРоли Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + СписокРоли, "ИспользуетсяБезОбъектовАдресации", Истина,,Истина); + КонецЕсли; + Если Параметры.БезВнешнихРолей = Истина Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + СписокРоли, "ВнешняяРоль", Ложь); + КонецЕсли; + + Если ТипЗнч(Параметры.Исполнитель) = Тип("СправочникСсылка.Пользователи") Тогда + + ТекущийЭлемент = Элементы.СписокПользователи; + Элементы.СписокПользователи.ТекущаяСтрока = Параметры.Исполнитель; + + ИначеЕсли ТипЗнч(Параметры.Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей") Тогда + + Элементы.Страницы.ТекущаяСтраница = Элементы.Роли; + ТекущийЭлемент = Элементы.СписокРоли; + Элементы.СписокРоли.ТекущаяСтрока = Параметры.Исполнитель; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборРолиИсполнителя") Тогда + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + ОповеститьОВыборе(ВыбранноеЗначение); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокРоли + +&НаКлиенте +Процедура СписокПользователиВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ОповеститьОВыборе(Значение); + +КонецПроцедуры + +&НаКлиенте +Процедура СписокРолиВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ВыборРоли(Элемент.ТекущиеДанные); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + + Если Элементы.Страницы.ТекущаяСтраница = Элементы.Пользователи Тогда + ОповеститьОВыборе(Элементы.СписокПользователи.ТекущаяСтрока); + + ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.Роли Тогда + ВыборРоли(Элементы.СписокРоли.ТекущиеДанные); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ВыборРоли(ТекущиеДанные) + + Если ТекущиеДанные.ИспользуетсяСОбъектамиАдресации Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РольИсполнителя", ТекущиеДанные.Ссылка); + ПараметрыФормы.Вставить("ОсновнойОбъектАдресации", Неопределено); + ПараметрыФормы.Вставить("ДополнительныйОбъектАдресации", Неопределено); + ПараметрыФормы.Вставить("ВыборОбъектаАдресации", Истина); + ОткрытьФорму("ОбщаяФорма.ВыборРолиИсполнителя", ПараметрыФормы, ЭтотОбъект); + Иначе + ВыбранноеЗначение = Новый Структура("РольИсполнителя, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации", ТекущиеДанные.Ссылка, Неопределено, Неопределено); + ОповеститьОВыборе(ВыбранноеЗначение); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + СписокРоли.УсловноеОформление.Элементы.Очистить(); + Элемент = СписокРоли.УсловноеОформление.Элементы.Добавить(); + + ГруппаЭлементовОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаЭлементовОтбора .ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + + ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЕстьИсполнители"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВнешняяРоль"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Ложь; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.РольБезИсполнителей); + +КонецПроцедуры + + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260.mdo" new file mode 100644 index 00000000..0dbc7d3d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260/\320\222\321\213\320\261\320\276\321\200\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260.mdo" @@ -0,0 +1,16 @@ + + + ВыборИсполнителяБизнесПроцесса + + ru + Выбор исполнителя + + true + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Attributes/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..9b5b065d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/ExtInfo/ListSettings.dcss" @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Form.form" new file mode 100644 index 00000000..9ea41ede --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Form.form" @@ -0,0 +1,2205 @@ + + + + СтраницыСписки + 1 + + СтраницаПоискКонтактов + 2 + + ГруппаСтрокаПоиска + 78 + + ВариантыПоиска + 79 + true + true + + true + + + + ВариантыПоиска + + + None + + OnChange + ВариантыПоискаПриИзменении + + + ВариантыПоискаExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + + ВариантыПоискаКонтекстноеМеню + 80 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + ВариантыПоискаОчистка + + 15 + true + true + false + true + true + true + + + + СтрокаПоиска + 17 + true + true + + true + + + + СтрокаПоиска + + + true + None + + СтрокаПоискаExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + + СтрокаПоискаКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 28 + true + true + true + true + true + + ru + Введите часть адреса или имени контакта + + + + + КомандаНайти + 19 + true + true + + true + + false + + КомандаНайтиExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.КомандаНайти + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ГруппаСтрокаПоискаExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + НайденныеКонтакты + 20 + true + true + + true + + + НайденныеКонтакты + + false + None + + Контакт + 25 + + <key>ru</key> + <value>Контакт</value> + + true + true + + true + + + + НайденныеКонтакты.НаименованиеКонтакта + + + + КонтактExtendedTooltip + 114 + true + true + + true + + Label + true + true + + Left + + + + КонтактКонтекстноеМеню + 26 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Представление + 23 + true + true + + true + + + + НайденныеКонтакты.Представление + + + + ПредставлениеExtendedTooltip + 115 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + Enter + true + true + Left + true + + true + 3 + true + true + true + true + + + None + + НайденныеКонтактыКоманднаяПанель + 22 + true + true + + true + + Left + + + Selection + НайденныеКонтактыВыбор + + + true + true + + true + + НайденныеКонтактыСтрокаПоиска + 128 + + НайденныеКонтактыСтрокаПоискаРасширеннаяПодсказка + 130 + true + true + + true + + Label + true + true + + Left + + + + НайденныеКонтактыСтрокаПоискаКонтекстноеМеню + 129 + true + true + + true + + true + + + true + + + + true + true + + true + + НайденныеКонтактыСостояниеПросмотра + 131 + + НайденныеКонтактыСостояниеПросмотраРасширеннаяПодсказка + 133 + true + true + + true + + Label + true + true + + Left + + + + НайденныеКонтактыСостояниеПросмотраКонтекстноеМеню + 132 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НайденныеКонтактыУправлениеПоиском + 134 + + НайденныеКонтактыУправлениеПоискомРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + + НайденныеКонтактыУправлениеПоискомКонтекстноеМеню + 135 + true + true + + true + + true + + SearchControlAddition + + true + + + + НайденныеКонтактыExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + + НайденныеКонтактыКонтекстноеМеню + 21 + + НайденныеКонтактыКонтекстноеМенюПросмотр + 170 + true + true + + true + + + НайденныеКонтактыКонтекстноеМенюПросмотрРасширеннаяПодсказка + 171 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Просмотр + Auto + true + true + UserCmds + Auto + + + НайтиВСпискеИзСпискаНайденных + 90 + true + true + + true + + false + + НайтиВСпискеИзСпискаНайденныхExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НайтиВСпискеИзСпискаНайденных + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + 10 + true + true +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + +
        + true + true + + true + + + <key>ru</key> + <value>Поиск контактов</value> + + + СтраницаПоискКонтактовExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + СтраницаВсеКонтактыПоПредмету + 70 + + КонтактыПоПредмету + 71 + true + true + + true + + + КонтактыПоПредмету + + false + None + + ПредставлениеНаименования + 91 + true + true + + true + + + + КонтактыПоПредмету.ПредставлениеНаименования + + + + ПредставлениеНаименованияExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеНаименованияКонтекстноеМеню + 92 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + None + + КонтактыПоПредметуКоманднаяПанель + 73 + true + true + + true + + Left + + + Selection + КонтактыПоПредметуВыбор + + + true + true + + true + + КонтактыПоПредметуСтрокаПоиска + 137 + + КонтактыПоПредметуСтрокаПоискаРасширеннаяПодсказка + 139 + true + true + + true + + Label + true + true + + Left + + + + КонтактыПоПредметуСтрокаПоискаКонтекстноеМеню + 138 + true + true + + true + + true + + + true + + + + true + true + + true + + КонтактыПоПредметуСостояниеПросмотра + 140 + + КонтактыПоПредметуСостояниеПросмотраРасширеннаяПодсказка + 142 + true + true + + true + + Label + true + true + + Left + + + + КонтактыПоПредметуСостояниеПросмотраКонтекстноеМеню + 141 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + КонтактыПоПредметуУправлениеПоиском + 143 + + КонтактыПоПредметуУправлениеПоискомРасширеннаяПодсказка + 145 + true + true + + true + + Label + true + true + + Left + + + + КонтактыПоПредметуУправлениеПоискомКонтекстноеМеню + 144 + true + true + + true + + true + + SearchControlAddition + + true + + + + КонтактыПоПредметуExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + + КонтактыПоПредметуКонтекстноеМеню + 72 + + НайтиВСпискеИзСпискаПредметов + 89 + true + true + + true + + false + + НайтиВСпискеИзСпискаПредметовExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НайтиВСпискеИзСпискаПредметов + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + 10 + true +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + +
        + true + true + + true + + + <key>ru</key> + <value>Контакты по предмету</value> + + + СтраницаВсеКонтактыПоПредметуExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + СтраницаПользователей + 83 + + ГруппыПользователей + 100 + true + true + + true + + + ГруппыПользователей + + false + None + Change + Copy + CopyToClipboard + Create + Delete + HierarchicalList + List + ListSettings + MoveItem + OutputList + Refresh + SetDeletionMark + Tree + + НаименованиеГруппы + 103 + true + true + + true + + + + ГруппыПользователей.Description + + + + НаименованиеГруппыExtendedTooltip + 125 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеГруппыКонтекстноеМеню + 104 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + + + + ГруппыПользователейСсылка + 164 + true + true + + + + ГруппыПользователей.Ref + + + + ГруппыПользователейСсылкаРасширеннаяПодсказка + 166 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейСсылкаКонтекстноеМеню + 165 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ГруппыПользователейКоманднаяПанель + 102 + true + true + + true + + Left + true + + + OnActivateRow + ГруппыПользователейПриАктивизацииСтроки + + + true + true + + true + + ГруппыПользователейСтрокаПоиска + 146 + + ГруппыПользователейСтрокаПоискаРасширеннаяПодсказка + 148 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейСтрокаПоискаКонтекстноеМеню + 147 + true + true + + true + + true + + + true + + + + true + true + + true + + ГруппыПользователейСостояниеПросмотра + 149 + + ГруппыПользователейСостояниеПросмотраРасширеннаяПодсказка + 151 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейСостояниеПросмотраКонтекстноеМеню + 150 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ГруппыПользователейУправлениеПоиском + 152 + + ГруппыПользователейУправлениеПоискомРасширеннаяПодсказка + 154 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейУправлениеПоискомКонтекстноеМеню + 153 + true + true + + true + + true + + SearchControlAddition + + true + + + + ГруппыПользователейExtendedTooltip + 124 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПользователейКонтекстноеМеню + 101 + true + true + + true + + true + + Tree + true + true + true + 5 + true + true + Row + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + + ГруппыПользователей.НомерКартинки + + + CommonPicture.СостоянияПользователей + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + СписокПользователей + 84 + true + true + + true + + + СписокПользователей + + false + None + Change + Copy + Create + Delete + SetDeletionMark + + Пользователь + 87 + + <key>ru</key> + <value>Пользователь</value> + + true + true + + true + + + + СписокПользователей.Ref + + + + ПользовательExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + + ПользовательКонтекстноеМеню + 88 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + СписокПользователейСсылка + 167 + true + true + + + + СписокПользователей.Ref + + + + СписокПользователейСсылкаРасширеннаяПодсказка + 169 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейСсылкаКонтекстноеМеню + 168 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокПользователейКоманднаяПанель + 86 + true + true + + true + + Left + true + + + Selection + Подключаемый_СписокСправочникаВыбор + + + OnActivateRow + Подключаемый_СписокКонтактыПриАктивизацииСтроки + + + true + true + + true + + СписокПользователейСтрокаПоиска + 155 + + СписокПользователейСтрокаПоискаРасширеннаяПодсказка + 157 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейСтрокаПоискаКонтекстноеМеню + 156 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокПользователейСостояниеПросмотра + 158 + + СписокПользователейСостояниеПросмотраРасширеннаяПодсказка + 160 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейСостояниеПросмотраКонтекстноеМеню + 159 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокПользователейУправлениеПоиском + 161 + + СписокПользователейУправлениеПоискомРасширеннаяПодсказка + 163 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейУправлениеПоискомКонтекстноеМеню + 162 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокПользователейExtendedTooltip + 126 + true + true + + true + + Label + true + true + + Left + + + + СписокПользователейКонтекстноеМеню + 85 + true + true + + true + + true + + HierarchicalList + true + true + true + 6 + true +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + + СписокПользователей.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + +
        + true + true + + true + + + <key>ru</key> + <value>Пользователи</value> + + + СтраницаПользователейExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + true + true + + true + + + СтраницыСпискиExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + +
        + + ФормаКоманднаяПанель + -1 + + ФормаКомандаВыбрать + 99 + + <key>ru</key> + <value>Выбрать</value> + + true + true + + true + + + ФормаКомандаВыбратьExtendedTooltip + 105 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КомандаВыбрать + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + CustomizeForm + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + СтрокаПоиска + + <key>ru</key> + <value>Строка поиска</value> + + 6 + + String + + + + true + + + true + + + + НайденныеКонтакты + + <key>ru</key> + <value>Найденные контакты</value> + + 7 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Найдено в</value> + + 1 + + String + + + + true + + + true + + + + НаименованиеКонтакта + + <key>ru</key> + <value>Наименование контакта</value> + + 2 + + String + + + + true + + + true + + + + Ссылка + 3 + + DefinedType.КонтактВзаимодействия + + + true + + + true + + + + ИмяСправочника + 5 + + String + + + + true + + + true + + + + ПредставлениеЗаполнено + 4 + + Boolean + + + true + + + true + + + + + ИнформацияОбАктуальностиИндексаППД + 8 + + String + + + + true + + + true + + + + КонтактыПоПредмету + + <key>ru</key> + <value>Контакты по предмету</value> + + 14 + + ValueTable + + + true + + + true + + + Ссылка + 1 + + DefinedType.КонтактВзаимодействия + + + true + + + true + + + + Наименование + 2 + + String + + + + true + + + true + + + + ИмяСправочника + 4 + + String + + + + true + + + true + + + + ПредставлениеНаименования + + <key>ru</key> + <value>Контакт</value> + + 5 + + String + + + + true + + + true + + + + + ВариантыПоиска + + <key>ru</key> + <value>Варианты поиска</value> + + 1 + + String + + + + true + + + true + + + + ППДВключен + 2 + + Boolean + + + true + + + true + + + + СписокПользователей + + <key>ru</key> + <value>Список пользователей</value> + + 3 + + DynamicList + + + true + + + true + + + СписокПользователей.Ref + + + ВЫБРАТЬ + Пользователи.Ссылка, + Пользователи.ПометкаУдаления, + Пользователи.Предопределенный, + Пользователи.Наименование, + ВЫБОР + КОГДА Пользователи.ПометкаУдаления + ТОГДА 0 + ИНАЧЕ 1 + КОНЕЦ КАК НомерКартинки +ИЗ + Справочник.Пользователи КАК Пользователи +ГДЕ + Пользователи.Служебный = ЛОЖЬ + И Пользователи.ПометкаУдаления = ЛОЖЬ + И Пользователи.Недействителен = ЛОЖЬ + И ИСТИНА В + (ВЫБРАТЬ + ИСТИНА + ИЗ + РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + ГДЕ + СоставыГруппПользователей.Пользователь = Пользователи.Ссылка + И СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей) + + Catalog.Пользователи + true + true + true + true + true + + + + ВсеСпискиПоиска + 4 + + + true + + + true + + + + ИндексАктуален + 5 + + Boolean + + + true + + + true + + + + ПоследнийАктивизированныйКонтакт + 10 + + AnyRef + + + true + + + true + + + + ГруппыПользователей + + <key>ru</key> + <value>Группы пользователей</value> + + 11 + + DynamicList + + + true + + + true + + FunctionalOption.ИспользоватьГруппыПользователей + + ГруппыПользователей.Parent + + + ГруппыПользователей.Ref + + + ВЫБРАТЬ + СправочникГруппыПользователей.Ссылка, + СправочникГруппыПользователей.ПометкаУдаления, + СправочникГруппыПользователей.Предопределенный, + СправочникГруппыПользователей.Родитель, + СправочникГруппыПользователей.Наименование, + ВЫБОР + КОГДА СправочникГруппыПользователей.ПометкаУдаления + ТОГДА 2 + ИНАЧЕ 3 + КОНЕЦ КАК НомерКартинки +ИЗ + Справочник.ГруппыПользователей КАК СправочникГруппыПользователей + Catalog.ГруппыПользователей + true + true + true + true + true + + + + ИспользоватьГруппыПользователей + 12 + + Boolean + + + true + + + true + + + + ПараметрыФормы + 9 + + ValueList + + + true + + + true + + + + + + + ИменаДобавленныхТаблиц + 13 + + ValueList + + + true + + + true + + + + + + + КомандаНайти + + <key>ru</key> + <value>Найти</value> + + 2 + + ru + Найти контакты + + + true + + + StdPicture.Find + + + + КомандаНайтиВыполнить + + + TextPicture + DontUse + + + НайтиВСпискеИзСпискаПредметов + + <key>ru</key> + <value>Найти в списке</value> + + 5 + + ru + Найти в списке + + + true + + + StdPicture.FindInList + + + + НайтиВСпискеИзСпискаПредметовВыполнить + + + DontUse + + + НайтиВСпискеИзСпискаНайденных + + <key>ru</key> + <value>Найти в списке</value> + + 6 + + ru + Найти в списке + + + true + + + StdPicture.FindInList + + + + НайтиВСпискеИзСпискаНайденныхВыполнить + + + DontUse + + + КомандаВыбрать + + <key>ru</key> + <value>Команда выбрать</value> + + 1 + + ru + Команда выбрать + + + true + + + StdPicture.ChooseValue + + + + КомандаВыбрать + + + TextPicture + DontUse + + + Просмотр + + <key>ru</key> + <value>Просмотр</value> + + 3 + + ru + Просмотреть выбранный элемент + + + true + + + + Просмотр + + + Auto + + + Предмет + + AnyRef + + + + Адрес + + String + + + + + Представление + + String + + + + + Контакт + + CatalogRef + + + + ТолькоEmail + + Boolean + + + + ТолькоТелефон + + Boolean + + + + ЗаменятьПустыеАдресИПредставление + + Boolean + + + + ДляФормыУточненияКонтактов + + Boolean + + + + ИдентификаторФормы + + UUID + + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..ded5a677 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Help/ru.html" @@ -0,0 +1,30 @@ + +

        Предназначена для поиска и подбора контакта в документы взаимодействий.

        +

        Поле Контакт всегда присутствует во всех документах взаимодействий, однако представление контактов в документах различается:

        +
        • В документах Встреча и Запланированное взаимодействие присутствует список участников, в который необходимо добавить все контакты, которые будут участвовать в запланированном мероприятии или встрече. +
        • +
        • В документе Сообщение SMS присутствует список адресатов, в который необходимо добавить контакты для рассылки сообщения. +
        • +
        • В документе Телефонный звонок присутствует поле Контакт абонента. 

        Окно Выбор контактов открывается при заполнении поля Контакт документа взаимодействий.

        +

        Содержит вкладки:

        +
        • Поиск контактов- поиск контактов в программе по нескольким признакам: +
            • По адресу электронной почты (По e-mail); +
            • +
            • По доменному имени почтового сервера; +
            • +
            • По телефону; +
            • +
            • По строке, входящей в наименование контакта. +
              • Для поиска контактов по строке используется полнотекстовый поиск программы, в этом случае поиск осуществляется по всем реквизитам контактов. +
              • +
              • В нижней части окна поиска выводится информация об актуальности индекса полнотекстового поиска и кнопка Обновить, которая становится активной, если индекс неактуален.
            • +
            • по начальным символам наименования контакта (Начинается с).
          • Выберите способ поиска, напишите выражение для поиска и нажмите кнопку Найти. Будут подобраны контакты, удовлетворяющие условию.
        • +
        • Пользователи - подбор контакта из списка пользователей программы. +
          • Вкладки могут включать и другие списки, например, список партнеров. +
          • +
          • Если в списке много элементов, используйте команду Найти. Можно работать со списком и использовать его возможности, вводить элементы.
        • +
        • Контакты по предмету - вкладка становится доступной, если в документе взаимодействий заполнено поле Предмет. Программа автоматически подбирает контакты, связанные с предметом. Данная вкладка содержит список контактов, которые фигурируют в самом предмете, а также во всех документах взаимодействий, где этот предмет указан.

        Добавление контактов в документы взаимодействий

        +
        • Двойной щелчок по контакту добавляет его в документ взаимодействия. Также можно использовать кнопку Выбрать. +
        • +
        • Для одновременного добавления нескольких контактов из списка выделите их и нажмите кнопку Выбрать.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..48c21178 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/Module.bsl" @@ -0,0 +1,518 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + СохранитьПараметрыОткрытия(Параметры); + Взаимодействия.ОбработатьНеобходимостьОтображенияГруппПользователей(ЭтотОбъект); + Взаимодействия.ДобавитьСтраницыФормыПодбораКонтактов(ЭтотОбъект); + + // Заполним контакты по предмету. + Взаимодействия.ЗаполнитьКонтактыПоПредмету(Элементы, Параметры.Предмет, КонтактыПоПредмету, Ложь); + + // Заполним список вариантов поиска и осуществим первый поиск. + ВсеСпискиПоиска = Взаимодействия.СписокДоступныхПоисков(ППДВключен, Параметры, Элементы, Ложь); + ВыполнитьПервыйПоиск(); + + // Если заполнен контакт, установим нужной текущую страницу и спозиционируемся на нем. + Если ЗначениеЗаполнено(Параметры.Контакт) Тогда + УстановитьТекущимКонтакт(Параметры.Контакт) + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ЗаполнитьСписокВыбораВСтрокеПоиска(Ложь); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НайденныеКонтактыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Оповестить("ВыбранКонтакт", ПараметрыОповещения(Элемент.ТекущиеДанные.Ссылка)); + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_СписокСправочникаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ТекущиеДанные = Элемент.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ОписаниеКонтакта = Новый Структура; + + МассивОписанийКонтакта = ВзаимодействияКлиентСервер.ОписанияКонтактов(); + Для Каждого ЭлементМассива Из МассивОписанийКонтакта Цикл + Если ТипЗнч(ТекущиеДанные.Ссылка) = ЭлементМассива.Тип Тогда + ОписаниеКонтакта = ЭлементМассива; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ОписаниеКонтакта.Свойство("Иерархический")И ОписаниеКонтакта.Иерархический Тогда + ЭтоГруппа = ЭтоГруппа(ТекущиеДанные.Ссылка); + Иначе + ЭтоГруппа = Ложь; + КонецЕсли; + + Если Не ЭтоГруппа Тогда + Оповестить("ВыбранКонтакт", ПараметрыОповещения(ТекущиеДанные.Ссылка)); + Закрыть(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура КонтактыПоПредметуВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Если Элемент.ТекущиеДанные <> Неопределено Тогда + Оповестить("ВыбранКонтакт", ПараметрыОповещения(Элемент.ТекущиеДанные.Ссылка)); + Закрыть(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВариантыПоискаПриИзменении(Элемент) + + ЗаполнитьСписокВыбораВСтрокеПоиска(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_СписокКонтактыПриАктивизацииСтроки(Элемент) + + ОпределитьАктивизированныйКонтакт(Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_СписокВладелецПриАктивизацииСтроки(Элемент) + + ОпределитьАктивизированныйКонтакт(Элемент); + + ВзаимодействияКлиент.КонтактВладелецПриАктивизацииСтроки(Элемент, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПользователейПриАктивизацииСтроки(Элемент) + + СписокПользователей.Параметры.УстановитьЗначениеПараметра("ГруппаПользователей", Элементы.ГруппыПользователей.ТекущаяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ВариантыПоискаОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КомандаНайтиВыполнить() + + Если ПустаяСтрока(СтрокаПоиска) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не задана строка поиска.'")); + Возврат; + КонецЕсли; + + Результат = ""; + НайденныеКонтакты.Очистить(); + + Если ВариантыПоиска = "ПоEmail" Тогда + НайтиПоEmail(Ложь); + ИначеЕсли ВариантыПоиска = "ПоДомену" Тогда + НайтиПоEmail(Истина); + ИначеЕсли ВариантыПоиска = "ПоТелефону" Тогда + НайтиПоТелефону(); + ИначеЕсли ВариантыПоиска = "ПоСтроке" Тогда + Результат = НайтиПоСтроке(); + ИначеЕсли ВариантыПоиска = "НачинаетсяС" Тогда + НайтиПоНачалуНаименования(); + КонецЕсли; + + Если Не ПустаяСтрока(Результат) Тогда + ПоказатьПредупреждение(, Результат); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НайтиВСпискеИзСпискаНайденныхВыполнить() + + Если Элементы.НайденныеКонтакты.ТекущиеДанные <> Неопределено Тогда + УстановитьТекущимКонтакт(Элементы.НайденныеКонтакты.ТекущиеДанные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НайтиВСпискеИзСпискаПредметовВыполнить() + + Если Элементы.КонтактыПоПредмету.ТекущиеДанные <> Неопределено Тогда + УстановитьТекущимКонтакт(Элементы.КонтактыПоПредмету.ТекущиеДанные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +// Возвращает данные строки таблицы Контакты по предмету. +// +// Параметры: +// ВыделеннаяСтрока - ДанныеФормыЭлементКоллекции - строка, данные которой получаются. +// +// Возвращаемое значение: +// Структура: +// * Ссылка - ОпределяемыйТип.КонтактВзаимодействия +// * Наименование - Строка +// * ИмяСправочника - Строка +// * ПредставлениеНаименования - Строка +// +&НаКлиенте +Функция ДанныеКонтактыПоПредмету(ВыделеннаяСтрока); + + Возврат ВыделеннаяСтрока; + +КонецФункции + +&НаКлиенте +Процедура КомандаВыбрать(Команда) + + Если Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов Тогда + + ТекущиеДанные = ДанныеКонтактыПоПредмету(Элементы.НайденныеКонтакты.ТекущиеДанные); + Если ТекущиеДанные <> Неопределено Тогда + Оповестить("ВыбранКонтакт", ПараметрыОповещения(ТекущиеДанные.Ссылка)); + Закрыть(); + КонецЕсли; + + Возврат; + + ИначеЕсли Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаВсеКонтактыПоПредмету Тогда + + ТекущиеДанные = ДанныеКонтактыПоПредмету(Элементы.КонтактыПоПредмету.ТекущиеДанные); + Если ТекущиеДанные <> Неопределено Тогда + Оповестить("ВыбранКонтакт", ПараметрыОповещения(ТекущиеДанные.Ссылка)); + Закрыть(); + КонецЕсли; + + Возврат; + + КонецЕсли; + + КонтактДляВыбора = Неопределено; + + Для инд = 0 По Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы.Количество() -1 Цикл + + ТекущиеДанные = ДанныеКонтактыПоПредмету(Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы[инд].ТекущиеДанные); + Если ТекущиеДанные = Неопределено Тогда + Продолжить; + Иначе + Если ТекущиеДанные.Свойство("Ссылка") И ТекущиеДанные.Ссылка = ПоследнийАктивизированныйКонтакт Тогда + КонтактДляВыбора = ПоследнийАктивизированныйКонтакт; + Прервать; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Если КонтактДляВыбора = Неопределено Тогда + Возврат; + КонецЕсли; + + ОписаниеКонтакта = Новый Структура; + + МассивОписанийКонтакта = ВзаимодействияКлиентСервер.ОписанияКонтактов(); + Для Каждого ЭлементМассива Из МассивОписанийКонтакта Цикл + Если ТипЗнч(КонтактДляВыбора) = ЭлементМассива.Тип Тогда + ОписаниеКонтакта = ЭлементМассива; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ОписаниеКонтакта.Свойство("Иерархический")И ОписаниеКонтакта.Иерархический Тогда + ЭтоГруппа = ЭтоГруппа(КонтактДляВыбора); + Иначе + ЭтоГруппа = Ложь; + КонецЕсли; + + Если Не ЭтоГруппа Тогда + Оповестить("ВыбранКонтакт", ПараметрыОповещения(ТекущиеДанные.Ссылка)); + Закрыть(КонтактДляВыбора); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Просмотр(Команда) + Если Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПользователей Тогда + ТекущиеДанные = Элементы.СписокПользователей.ТекущиеДанные; + ИначеЕсли ТипЗнч(ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда + ТекущиеДанные = ТекущийЭлемент.ТекущиеДанные; + Иначе + Возврат; + КонецЕсли; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ПоказатьЗначение(, ТекущиеДанные.Ссылка); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// ПРОЦЕДУРЫ И ФУНКЦИИ ОСУЩЕСТВЛЕНИЯ ПОИСКА + +// Формирует список значений строк, по которым будет осуществляться поиск по текущему варианту поиска. +// +// Возвращаемое значение: +// СписокЗначений - список строк, по которым будет осуществляться поиск. +// +&НаСервере +Функция СписокСтрокПоискаПоВарианту() + + СписокСтрок = Новый СписокЗначений; + + Значения = Неопределено; + ВсеСпискиПоиска.Свойство(ВариантыПоиска, Значения); + + Если ТипЗнч(Значения) = Тип("Строка") Тогда + СписокСтрок.Добавить(Значения); + ИначеЕсли ТипЗнч(Значения) = Тип("СписокЗначений") Тогда + Для Каждого Элемент Из Значения Цикл + СписокСтрок.Добавить(Элемент.Значение); + КонецЦикла; + КонецЕсли; + + Возврат СписокСтрок; + +КонецФункции + +// Выполняет первый поиск по всем возможным вариантам поиска согласно переданным параметрам. +// +&НаСервере +Процедура ВыполнитьПервыйПоиск() + + ВариантыПоиска = "ПоСтроке"; + Если ПустаяСтрока(Параметры.Адрес) И ПустаяСтрока(Параметры.Представление) Тогда + Возврат; + КонецЕсли; + + // Попробуем поискать по email. + ВариантыПоиска = "ПоEmail"; + Для Каждого Вариант Из СписокСтрокПоискаПоВарианту() Цикл + СтрокаПоиска = Вариант.Значение; + Если ПустаяСтрока(СтрокаПоиска) Тогда + Продолжить; + КонецЕсли; + Если НайтиПоEmail(Ложь) Тогда + Возврат; + КонецЕсли; + КонецЦикла; + + // Попробуем поискать по телефону. + ВариантыПоиска = "ПоТелефону"; + Для Каждого Вариант Из СписокСтрокПоискаПоВарианту() Цикл + СтрокаПоиска = Вариант.Значение; + Если ПустаяСтрока(СтрокаПоиска) Тогда + Продолжить; + КонецЕсли; + Если НайтиПоТелефону() Тогда + Возврат; + КонецЕсли; + КонецЦикла; + + // Если индекс ППД не включен то дальше не ищем. + Если НЕ ППДВключен Тогда + ВариантыПоиска = "ПоEmail"; + Возврат; + КонецЕсли; + + // Попробуем поискать по адресу и представлению. + ВариантыПоиска = "ПоСтроке"; + Для Каждого Вариант Из СписокСтрокПоискаПоВарианту() Цикл + СтрокаПоиска = Вариант.Значение; + Если ПустаяСтрока(СтрокаПоиска) Тогда + Продолжить; + КонецЕсли; + НайтиПоСтроке(); + Если НайденныеКонтакты.Количество() > 0 Тогда + Возврат; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Осуществляет поиск контактов по доменному имени или по адресу электронной почты. +// +&НаСервере +Функция НайтиПоEmail(ПоДомену) + + Возврат Взаимодействия.НайтиПоEmail(СтрокаПоиска, ПоДомену, НайденныеКонтакты); + +КонецФункции + +// Осуществляет поиск контактов по телефону. +// +&НаСервере +Функция НайтиПоТелефону() + + Возврат Взаимодействия.НайтиКонтактыПоТелефону(СтрокаПоиска, НайденныеКонтакты); + +КонецФункции + +// Осуществляет поиск контактов по строке. +// +&НаСервере +Функция НайтиПоСтроке() + + Возврат Взаимодействия.ПолнотекстовыйПоискКонтактовПоСтроке(СтрокаПоиска, НайденныеКонтакты); + +КонецФункции + +// Осуществляет поиск контактов по началу наименования. +// +&НаСервере +Функция НайтиПоНачалуНаименования() + + ТаблицаКонтактов = Взаимодействия.НайтиКонтактыПоНачалуНаименования(СтрокаПоиска); + + Если ТаблицаКонтактов = Неопределено ИЛИ ТаблицаКонтактов.Количество() = 0 Тогда + Возврат Ложь; + КонецЕсли; + + Взаимодействия.ЗаполнитьНайденныеКонтакты(ТаблицаКонтактов, НайденныеКонтакты); + Возврат Истина; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ + +// Устанавливает текущим контакт в соответствующем динамическом списке. +// +// Параметры: +// Контакт - СправочникСсылка - контакт, на котором необходимо спозиционироваться. +// +&НаСервере +Процедура УстановитьТекущимКонтакт(Контакт) + + Взаимодействия.УстановитьТекущимКонтакт(Контакт, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура СохранитьПараметрыОткрытия(ПереданныеПараметры) + + Представление = ""; + Если Не ПустаяСтрока(ПереданныеПараметры.Представление) Тогда + Представление = СтрПолучитьСтроку(ПереданныеПараметры.Представление, 1); + КонецЕсли; + + ПараметрыФормы.Добавить( ПереданныеПараметры.Адрес, "Адрес"); + ПараметрыФормы.Добавить( ПереданныеПараметры.Контакт, "Контакт"); + ПараметрыФормы.Добавить( ПереданныеПараметры.Предмет, "Предмет"); + ПараметрыФормы.Добавить( Представление, "Представление"); + ПараметрыФормы.Добавить( ПереданныеПараметры.ТолькоEmail, "ТолькоEmail"); + ПараметрыФормы.Добавить( ПереданныеПараметры.ТолькоТелефон, "ТолькоТелефон"); + ПараметрыФормы.Добавить( ПереданныеПараметры.ДляФормыУточненияКонтактов, "ДляФормыУточненияКонтактов"); + ПараметрыФормы.Добавить( ПереданныеПараметры.ЗаменятьПустыеАдресИПредставление, "ЗаменятьПустыеАдресИПредставление"); + ПараметрыФормы.Добавить( ПереданныеПараметры.ИдентификаторФормы, "ИдентификаторФормы"); + +КонецПроцедуры + +&НаКлиенте +Функция ПараметрыОповещения(ВыбранныйКонтакт) + + ПараметрыОповещения = Новый Структура; + + Для каждого ЭлементСписка Из ПараметрыФормы Цикл + + ПараметрыОповещения.Вставить(ЭлементСписка.Представление, ЭлементСписка.Значение); + + КонецЦикла; + + ПараметрыОповещения.Вставить("ВыбранныйКонтакт", ВыбранныйКонтакт); + + Возврат ПараметрыОповещения; + +КонецФункции + +&НаКлиенте +Процедура ОпределитьАктивизированныйКонтакт(Элемент) + + ТекущиеДанные = Элемент.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда + ПоследнийАктивизированныйКонтакт = ТекущиеДанные.Ссылка; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьСписокВыбораВСтрокеПоиска(ИзменятьСтрокуПоиска) + + СписокВариантовПоиска = Неопределено; + ВсеСпискиПоиска.Свойство(ВариантыПоиска, СписокВариантовПоиска); + + ЭтоСписок = Ложь; + Если ТипЗнч(СписокВариантовПоиска) = Тип("СписокЗначений") Тогда + Количество = СписокВариантовПоиска.Количество(); + Если Количество = 0 Тогда + СписокВариантовПоиска = ""; + ИначеЕсли Количество = 1 Тогда + СписокВариантовПоиска = СписокВариантовПоиска.Получить(0).Значение; + Иначе + ЭтоСписок = Истина; + КонецЕсли; + КонецЕсли; + + Элементы.СтрокаПоиска.КнопкаВыпадающегоСписка = ЭтоСписок; + + Если ЭтоСписок Тогда + Элементы.СтрокаПоиска.СписокВыбора.Очистить(); + Для Каждого ЭлементВарианта Из СписокВариантовПоиска Цикл + Элементы.СтрокаПоиска.СписокВыбора.Добавить(ЭлементВарианта.Значение); + КонецЦикла; + Если ИзменятьСтрокуПоиска Тогда + СтрокаПоиска = СписокВариантовПоиска.Получить(0).Значение; + КонецЕсли; + ИначеЕсли ИзменятьСтрокуПоиска Тогда + СтрокаПоиска = СписокВариантовПоиска; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ЭтоГруппа(СсылкаНаОбъект) + Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "ЭтоГруппа"); +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260.mdo" new file mode 100644 index 00000000..89e75f3b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260/\320\222\321\213\320\261\320\276\321\200\320\232\320\276\320\275\321\202\320\260\320\272\321\202\320\260.mdo" @@ -0,0 +1,16 @@ + + + ВыборКонтакта + + ru + Выбор контакта + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/Form.form" new file mode 100644 index 00000000..fd59d5d2 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/Form.form" @@ -0,0 +1,584 @@ + + + + Список + 1 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + + СписокПредставление + 4 + true + true + + true + + + + Список.Представление + + + + СписокПредставлениеExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + СписокПредставлениеКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + Top + + СписокКоманднаяПанель + 3 + + СписокВыбратьЗначение + 15 + true + true + + true + + + СписокВыбратьЗначениеExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыбратьЗначение + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + Selection + СписокВыбор + + + true + true + + true + + СписокSearchString + 24 + + СписокSearchStringExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchStringContextMenu + 25 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокViewStatus + 27 + + СписокViewStatusExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + + СписокViewStatusContextMenu + 28 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокSearchControl + 30 + + СписокSearchControlExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + СписокSearchControlContextMenu + 31 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 2 + + СписокКонтекстноеМенюГруппа1 + 14 + + СписокКонтекстноеМенюВыбратьЗначение + 8 + true + true + + true + + + СписокКонтекстноеМенюВыбратьЗначениеExtendedTooltip + 17 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыбратьЗначение + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Контекстное меню группа 1</value> + + + СписокКонтекстноеМенюГруппа1ExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + + + СписокКонтекстноеМенюКопироватьВБуферОбмена + 9 + true + true + + true + + + СписокКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюВыделитьВсе + 10 + true + true + + true + + + СписокКонтекстноеМенюВыделитьВсеExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.SelectAll + Auto + true + true + UserCmds + Auto + + + СписокКонтекстноеМенюВывестиСписок + 11 + true + true + + true + + + СписокКонтекстноеМенюВывестиСписокExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Tree + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + + Список.ИндексКартинки + + + CommonPicture.ПиктограммыЭлементов + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Список + + <key>ru</key> + <value>Список</value> + + 2 + + ValueTree + + + true + + + true + + + Представление + + <key>ru</key> + <value>Представление</value> + + 1 + + String + + + + true + + + true + + + + Идентификатор + 2 + + String + + + + true + + + true + + + + ИндексКартинки + 3 + + Number + + 1 + + + + true + + + true + + + + + РежимПодбора + 1 + + Boolean + + + true + + + true + + + + ИмяРеквизита + 3 + + String + + + + true + + + true + + + + ВыборГруппИЭлементов + 4 + + + true + + + true + + + + ВыбратьЗначение + + <key>ru</key> + <value>Выбрать</value> + + 1 + + true + + + StdPicture.ChooseValue + + + + ВыбратьЗначение + + + TextPicture + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..9e734916 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/Module.bsl" @@ -0,0 +1,192 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Параметры.Свойство("ВыборГруппИЭлементов", ВыборГруппИЭлементов); + + РежимПодбора = (Параметры.ЗакрыватьПриВыборе = Ложь); + ИмяРеквизита = Параметры.ИмяРеквизита; + + Если Параметры.ПараметрыВнешнегоСоединения.ТипСоединения = "ВнешнееСоединение" Тогда + + Подключение = ОбменДаннымиСервер.ВнешнееСоединениеСБазой(Параметры.ПараметрыВнешнегоСоединения); + СтрокаСообщенияОбОшибке = Подключение.ПодробноеОписаниеОшибки; + ВнешнееСоединение = Подключение.Соединение; + + Если ВнешнееСоединение = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю(СтрокаСообщенияОбОшибке,,,, Отказ); + Возврат; + КонецЕсли; + + СвойстваОбъектаМетаданных = ВнешнееСоединение.ОбменДаннымиВнешнееСоединение.СвойстваОбъектаМетаданных(Параметры.ПолноеИмяТаблицыБазыКорреспондента); + + Если Параметры.ПараметрыВнешнегоСоединения.ВерсияКорреспондента_2_1_1_7 + ИЛИ Параметры.ПараметрыВнешнегоСоединения.ВерсияКорреспондента_2_0_1_6 Тогда + + ТаблицаБазыКорреспондента = ОбщегоНазначения.ЗначениеИзСтрокиXML(ВнешнееСоединение.ОбменДаннымиВнешнееСоединение.ПолучитьОбъектыТаблицы_2_0_1_6(Параметры.ПолноеИмяТаблицыБазыКорреспондента)); + + Иначе + + ТаблицаБазыКорреспондента = ЗначениеИзСтрокиВнутр(ВнешнееСоединение.ОбменДаннымиВнешнееСоединение.ПолучитьОбъектыТаблицы(Параметры.ПолноеИмяТаблицыБазыКорреспондента)); + + КонецЕсли; + + ИначеЕсли Параметры.ПараметрыВнешнегоСоединения.ТипСоединения = "ВебСервис" Тогда + + СтрокаСообщенияОбОшибке = ""; + + Если Параметры.ПараметрыВнешнегоСоединения.ВерсияКорреспондента_2_1_1_7 Тогда + + WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси_2_1_1_7(Параметры.ПараметрыВнешнегоСоединения, СтрокаСообщенияОбОшибке); + + ИначеЕсли Параметры.ПараметрыВнешнегоСоединения.ВерсияКорреспондента_2_0_1_6 Тогда + + WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси_2_0_1_6(Параметры.ПараметрыВнешнегоСоединения, СтрокаСообщенияОбОшибке); + + Иначе + + WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси(Параметры.ПараметрыВнешнегоСоединения, СтрокаСообщенияОбОшибке); + + КонецЕсли; + + Если WSПрокси = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю(СтрокаСообщенияОбОшибке,,,, Отказ); + Возврат; + КонецЕсли; + + Если Параметры.ПараметрыВнешнегоСоединения.ВерсияКорреспондента_2_1_1_7 + ИЛИ Параметры.ПараметрыВнешнегоСоединения.ВерсияКорреспондента_2_0_1_6 Тогда + + ДанныеБазыКорреспондента = СериализаторXDTO.ПрочитатьXDTO(WSПрокси.GetIBData(Параметры.ПолноеИмяТаблицыБазыКорреспондента)); + + СвойстваОбъектаМетаданных = ДанныеБазыКорреспондента.СвойстваОбъектаМетаданных; + ТаблицаБазыКорреспондента = ОбщегоНазначения.ЗначениеИзСтрокиXML(ДанныеБазыКорреспондента.ТаблицаБазыКорреспондента); + + Иначе + + ДанныеБазыКорреспондента = ЗначениеИзСтрокиВнутр(WSПрокси.GetIBData(Параметры.ПолноеИмяТаблицыБазыКорреспондента)); + + СвойстваОбъектаМетаданных = ЗначениеИзСтрокиВнутр(ДанныеБазыКорреспондента.СвойстваОбъектаМетаданных); + ТаблицаБазыКорреспондента = ЗначениеИзСтрокиВнутр(ДанныеБазыКорреспондента.ТаблицаБазыКорреспондента); + + КонецЕсли; + + ИначеЕсли Параметры.ПараметрыВнешнегоСоединения.ТипСоединения = "ВременноеХранилище" Тогда + ДанныеВременногоХранилища = ПолучитьИзВременногоХранилища(Параметры.ПараметрыВнешнегоСоединения.АдресВременногоХранилища); + ДанныеБазыКорреспондента = ДанныеВременногоХранилища.Получить().Получить(Параметры.ПолноеИмяТаблицыБазыКорреспондента); + + СвойстваОбъектаМетаданных = ДанныеБазыКорреспондента.СвойстваОбъектаМетаданных; + ТаблицаБазыКорреспондента = ОбщегоНазначения.ЗначениеИзСтрокиXML(ДанныеБазыКорреспондента.ТаблицаБазыКорреспондента); + + КонецЕсли; + + ОбновитьИндексыПиктограммЭлементов(ТаблицаБазыКорреспондента); + + Заголовок = СвойстваОбъектаМетаданных.Синоним; + + Элементы.Список.Отображение = ?(СвойстваОбъектаМетаданных.Иерархический = Истина, ОтображениеТаблицы.ИерархическийСписок, ОтображениеТаблицы.Список); + + КоллекцияЭлементовДерева = Список.ПолучитьЭлементы(); + КоллекцияЭлементовДерева.Очистить(); + ОбщегоНазначения.ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(КоллекцияЭлементовДерева, ТаблицаБазыКорреспондента); + + // Позиционирование курсора в дереве значений. + Если Не ПустаяСтрока(Параметры.НачальноеЗначениеВыбора) Тогда + + ИдентификаторСтроки = 0; + + ОбщегоНазначенияКлиентСервер.ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля("Идентификатор", ИдентификаторСтроки, КоллекцияЭлементовДерева, Параметры.НачальноеЗначениеВыбора, Ложь); + + Элементы.Список.ТекущаяСтрока = ИдентификаторСтроки; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ОбработкаВыбораЗначения(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыбратьЗначение(Команда) + + ОбработкаВыбораЗначения(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбработкаВыбораЗначения() + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если ТекущиеДанные=Неопределено Тогда + Возврат + КонецЕсли; + + // Признак группы вычисляем косвенно: + // 0 - Не помеченная на удаление группа. + // 1 - Помеченная на удаление группа. + + ЭтоГруппа = ТекущиеДанные.ИндексКартинки=0 Или ТекущиеДанные.ИндексКартинки=1; + Если (ЭтоГруппа И ВыборГруппИЭлементов=ГруппыИЭлементы.Элементы) + Или (Не ЭтоГруппа И ВыборГруппИЭлементов=ГруппыИЭлементы.Группы) Тогда + Возврат; + КонецЕсли; + + Данные = Новый Структура("Представление, Идентификатор"); + ЗаполнитьЗначенияСвойств(Данные, ТекущиеДанные); + + Данные.Вставить("РежимПодбора", РежимПодбора); + Данные.Вставить("ИмяРеквизита", ИмяРеквизита); + + ОповеститьОВыборе(Данные); +КонецПроцедуры + +// Для обеспечения обратной совместимости. +// +&НаСервере +Процедура ОбновитьИндексыПиктограммЭлементов(ТаблицаБазыКорреспондента) + + Для Индекс = -3 По -2 Цикл + + Отбор = Новый Структура; + Отбор.Вставить("ИндексКартинки", - Индекс); + + НайденныеИндексы = ТаблицаБазыКорреспондента.Строки.НайтиСтроки(Отбор, Истина); + + Для Каждого НайденныйИндекс Из НайденныеИндексы Цикл + + НайденныйИндекс.ИндексКартинки = НайденныйИндекс.ИндексКартинки + 1; + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260.mdo" new file mode 100644 index 00000000..91739aae --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\232\320\276\321\200\321\200\320\265\321\201\320\277\320\276\320\275\320\264\320\265\320\275\321\202\320\260.mdo" @@ -0,0 +1,10 @@ + + + ВыборОбъектовИнформационнойБазыКорреспондента + + ru + Выбор объектов информационной базы корреспондента + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Form.form" new file mode 100644 index 00000000..c686ccd9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Form.form" @@ -0,0 +1,952 @@ + + + + КоманднаяПанель + 36 + + Выбрать + 13 + true + true + + true + + false + + ВыбратьExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + + СпособГруппировкиОбъектов + 33 + true + true + + true + + + + СпособГруппировкиОбъектов + + + None + + OnChange + РежимВыбораПриИзменении + + + СпособГруппировкиОбъектовРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + + СпособГруппировкиОбъектовКонтекстноеМеню + 34 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + + + ru + По разделам интерфейса + + + ПоРазделам + + + + + ru + По видам объектов + + + ПоВидам + + + + + true + true + + true + + + КоманднаяПанельРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ДеревоОбъектовМетаданных + 1 + true + true + + true + + + ДеревоОбъектовМетаданных + + false + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SelectAll + SortListAsc + SortListDesc + Tree + + Группа + 12 + + Пометка + 8 + + <key>ru</key> + <value>Пометка</value> + + true + true + + true + + + + ДеревоОбъектовМетаданных.Пометка + + + None + + OnChange + ПометкаПриИзменении + + + ПометкаExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + ПометкаКонтекстноеМеню + 9 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + true + + + + Картинка + 10 + true + true + + true + + + + ДеревоОбъектовМетаданных.Картинка + + + None + + КартинкаExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + КартинкаКонтекстноеМеню + 11 + true + true + + true + + true + + PictureField + Enter + true + Left + true + + 2 + true + 1 + true + + 1 + + + + + Представление + 6 + + <key>ru</key> + <value>Объект метаданных</value> + + true + true + + true + + + + ДеревоОбъектовМетаданных.Представление + + + + ПредставлениеExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + ГруппаExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + None + + ДеревоОбъектовМетаданныхКоманднаяПанель + 3 + true + true + + true + + Left + true + + + Selection + ДеревоОбъектовМетаданныхВыбор + + + true + true + + true + + ДеревоОбъектовМетаданныхСтрокаПоиска + 24 + + ДеревоОбъектовМетаданныхСтрокаПоискаРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + ДеревоОбъектовМетаданныхСтрокаПоискаКонтекстноеМеню + 25 + true + true + + true + + true + + + true + + + + true + true + + true + + ДеревоОбъектовМетаданныхСостояниеПросмотра + 27 + + ДеревоОбъектовМетаданныхСостояниеПросмотраРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + + ДеревоОбъектовМетаданныхСостояниеПросмотраКонтекстноеМеню + 28 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДеревоОбъектовМетаданныхУправлениеПоиском + 30 + + ДеревоОбъектовМетаданныхУправлениеПоискомРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + + ДеревоОбъектовМетаданныхУправлениеПоискомКонтекстноеМеню + 31 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДеревоОбъектовМетаданныхExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + + ДеревоОбъектовМетаданныхКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + ExpandTopLevel + true + true + + Top + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + CustomizeForm + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + ДеревоОбъектовМетаданных + + <key>ru</key> + <value>Дерево объектов метаданных</value> + + 1 + + ValueTree + + + true + + + true + + + Имя + 1 + + String + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 3 + + Number + + 1 + true + + + + true + + + true + + + + Картинка + + <key>ru</key> + <value>Картинка</value> + + 4 + + Picture + + + true + + + true + + + + ПолноеИмя + 5 + + String + + + + true + + + true + + + + ЭтоОбъектМетаданных + 6 + + Boolean + + + true + + + true + + + + ЭтоПодраздел + 7 + + Boolean + + + true + + + true + + + + Адрес + 8 + + String + + + + true + + + true + + + + + ВыбранныеОбъектыМетаданных + 2 + + ValueList + + + true + + + true + + + + + + + ЭлементыПодсистемСКоманднымИнтерфейсом + 3 + + ValueList + + + true + + + true + + + + + + + ВыборЕдинственного + 4 + + Boolean + + + true + + + true + + + + ИдентификаторТекущейСтрокиПриОткрытии + 5 + + Number + + 10 + + + + true + + + true + + + + НачальноеЗначениеВыбора + 6 + + String + + + + true + + + true + + + + Объект + 7 + + String + + + + true + + + true + + + + ТолькоПодсистемыСКИ + 8 + + Boolean + + + true + + + true + + + + ВыбиратьСсылки + 9 + + Boolean + + + true + + + true + + + + СпособГруппировкиОбъектов + + <key>ru</key> + <value>Способ группировки объектов</value> + + 10 + + String + + + + true + + + true + + + + АдресаВыбранныхОбъектов + 11 + + ValueList + + + true + + + true + + + + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать + + + true + + + + ВыбратьВыполнить + + + DontUse + + + Закрыть + + <key>ru</key> + <value>Закрыть</value> + + 2 + + ru + Закрыть + + + true + + + + ЗакрытьВыполнить + + + DontUse + + + ВыбранныеОбъектыМетаданных + + ValueList + + + + УникальныйИдентификаторИсточник + + UUID + + true + + + КоллекцииВыбираемыхОбъектовМетаданных + + ValueList + + true + + + ФильтрПоОбъектамМетаданных + + ValueList + + true + + + РодительскиеПодсистемы + + ValueList + + true + + + Заголовок + + String + + + + + СпособГруппировкиОбъектов + + String + + + + + ЗапоминатьРазделыВыбранныхОбъектов + + Boolean + + true + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Help/ru.html" new file mode 100644 index 00000000..563070c2 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Help/ru.html" @@ -0,0 +1,10 @@ + +

        Предназначен для выбора объектов программы.

        +

        Вызывается из других объектов программы по команде Выбрать или по соответствующей ссылке.

        +

        Список объектов программы представляет собой дерево, сгруппирован по типам объектов программы.

        +

        Выбор объектов программы

        +

        Для выбора нужных объектов включите соответствующие флажки.

        +
        • Для того чтобы выбрать все объекты одного типа, включите флажок, относящийся к группе объектов, например, для того чтобы выбрать все справочники, включите флажок Справочники. +
        • Для того чтобы выбрать все перечисленные в списке объекты программы, включите флажок, соответствующий корню.

        Нажмите кнопку Выбрать.

        +

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Module.bsl" new file mode 100644 index 00000000..e6f870b9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/Module.bsl" @@ -0,0 +1,1202 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ИСПОЛЬЗОВАНИЕ ФОРМЫ // +// +// Форма предназначена для выбора объектов метаданных конфигурации и передачи +// выбранных их списка в вызывающую среду. +// +// Параметры вызова: +// КоллекцииВыбираемыхОбъектовМетаданных - СписокЗначений - фактически фильтр +// по типам объектов метаданных, которые могут быть выбраны. +// Например: +// ФильтрПоСсылочнымМетаданным = Новый СписокЗначений; +// ФильтрПоСсылочнымМетаданным.Добавить("Справочники"); +// ФильтрПоСсылочнымМетаданным.Добавить("Документы"); +// Позволяет выбирать только объекты метаданных справочники и документы. +// ВыбранныеОбъектыМетаданных - СписокЗначений - уже выбранные объекты метаданных. +// В дереве метаданных такие объекты будут отмечены флажком выбора. +// Может быть полезным для установки объектов метаданных выбора по умолчанию +// или переустановки уже установленного списка. +// РодительскиеПодсистемы - СписокЗначений - подсистемы, только подчиненные подсистемы которых +// будут отображаться в форме (спец. для помощника внедрения БСП). +// ТолькоПодсистемыСКИ - булево - признак того, что в списке выбора будут только те подсистемы, +// которые включены в командный интерфейс (спец. для помощника внедрения БСП). +// ВыборЕдинственного - булево - признак того, что выбирается единственный объект метаданных. +// При этом пометка нескольких будет невозможна, кроме того двойной клик по строке +// с объектом метаданных осуществит выбор. +// НачальноеЗначениеВыбора - Строка - полное имя метаданных, на котором будет спозиционирован +// список при открытии формы. +// + +#Область ОписаниеПеременных + +&НаСервере +Перем ПодчиненныеСправочники; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + ЗаполнитьВыбранныеОбъектыМетаданных(); + + Если Параметры.ФильтрПоОбъектамМетаданных.Количество() > 0 Тогда + Параметры.КоллекцииВыбираемыхОбъектовМетаданных.Очистить(); + Для Каждого ОбъектМетаданныхПолноеИмя Из Параметры.ФильтрПоОбъектамМетаданных Цикл + ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(Метаданные.НайтиПоПолномуИмени(ОбъектМетаданныхПолноеИмя.Значение)); + Если Параметры.КоллекцииВыбираемыхОбъектовМетаданных.НайтиПоЗначению(ИмяБазовогоТипа) = Неопределено Тогда + Параметры.КоллекцииВыбираемыхОбъектовМетаданных.Добавить(ИмяБазовогоТипа); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если Параметры.Свойство("ТолькоПодсистемыСКИ") И Параметры.ТолькоПодсистемыСКИ Тогда + СписокПодсистем = Метаданные.Подсистемы; + ЗаполнитьСписокПодсистем(СписокПодсистем); + ТолькоПодсистемыСКИ = Истина; + КонецЕсли; + + Если Параметры.Свойство("ВыборЕдинственного", ВыборЕдинственного) И ВыборЕдинственного Тогда + Элементы.Пометка.Видимость = Ложь; + КонецЕсли; + + Если Параметры.Свойство("Заголовок") Тогда + АвтоЗаголовок = Ложь; + Заголовок = Параметры.Заголовок; + КонецЕсли; + + Параметры.Свойство("НачальноеЗначениеВыбора", НачальноеЗначениеВыбора); + Если Не ЗначениеЗаполнено(НачальноеЗначениеВыбора) + И ВыборЕдинственного + И Параметры.ВыбранныеОбъектыМетаданных.Количество() = 1 Тогда + НачальноеЗначениеВыбора = Параметры.ВыбранныеОбъектыМетаданных[0].Значение; + КонецЕсли; + + СпособГруппировкиОбъектов = Параметры.СпособГруппировкиОбъектов; + Если Не ЗначениеЗаполнено(СпособГруппировкиОбъектов) Тогда + СпособГруппировкиОбъектов = "ПоРазделам"; + Иначе + Элементы.СпособГруппировкиОбъектов.Видимость = Ложь; + КонецЕсли; + + ЗаполнитьДеревоОбъектов(); + + Если Параметры.РодительскиеПодсистемы.Количество()> 0 Тогда + Элементы.ДеревоОбъектовМетаданных.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + // Устанавливаем начальное значение выбора. + Если ИдентификаторТекущейСтрокиПриОткрытии > 0 Тогда + + Элементы.ДеревоОбъектовМетаданных.ТекущаяСтрока = ИдентификаторТекущейСтрокиПриОткрытии; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +// Процедура обработчик события нажатия на поле "Пометка" дерева формы. +&НаКлиенте +Процедура ПометкаПриИзменении(Элемент) + + ПриПометкеЭлементаДерева(ТекущийЭлемент.ТекущиеДанные); + +КонецПроцедуры + +&НаКлиенте +Процедура РежимВыбораПриИзменении(Элемент) + + АдресаВыбранныхОбъектов.Очистить(); + ОбновитьКоллекциюВыбранныеОбъектыМетаданных(); + + ЗаполнитьДеревоОбъектов(); + Если ДеревоОбъектовМетаданных.ПолучитьЭлементы().Количество() = 1 Тогда + ИдентификаторСтроки = ДеревоОбъектовМетаданных.ПолучитьЭлементы()[0].ПолучитьИдентификатор(); + Элементы.ДеревоОбъектовМетаданных.Развернуть(ИдентификаторСтроки); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоОбъектовМетаданных + +&НаКлиенте +Процедура ДеревоОбъектовМетаданныхВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Если ВыборЕдинственного Тогда + + ВыбратьВыполнить(); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыбратьВыполнить() + + Если ВыборЕдинственного Тогда + + ТекДанные = Элементы.ДеревоОбъектовМетаданных.ТекущиеДанные; + Если ТекДанные <> Неопределено + И ТекДанные.ЭтоОбъектМетаданных Тогда + + ВыбранныеОбъектыМетаданных.Очистить(); + ВыбранныеОбъектыМетаданных.Добавить(ТекДанные.ПолноеИмя, ТекДанные.Представление); + + Иначе + Возврат; + КонецЕсли; + Иначе + + ВыбранныеОбъектыМетаданных.Очистить(); + ОбновитьКоллекциюВыбранныеОбъектыМетаданных(); + + КонецЕсли; + + Если ВыбиратьСсылки Тогда + ВыбратьСсылки(ВыбранныеОбъектыМетаданных); + КонецЕсли; + + Если ЭтотОбъект.ОписаниеОповещенияОЗакрытии = Неопределено Тогда + Оповестить("ВыборОбъектовМетаданных", ВыбранныеОбъектыМетаданных, Параметры.УникальныйИдентификаторИсточник); + КонецЕсли; + + Закрыть(ВыбранныеОбъектыМетаданных); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьВыполнить() + + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьВыбранныеОбъектыМетаданных() + + ОбъектыМетаданных = Параметры.ВыбранныеОбъектыМетаданных.ВыгрузитьЗначения(); + ВыбранныеОбъектыМетаданных = ОбщегоНазначения.СкопироватьРекурсивно(Параметры.ВыбранныеОбъектыМетаданных); + + Если Параметры.ЗапоминатьРазделыВыбранныхОбъектов + И ВыбранныеОбъектыМетаданных.Количество() > 0 И СтрНачинаетсяС(ВыбранныеОбъектыМетаданных[0].Представление, "./") Тогда + Для Каждого Элемент Из ВыбранныеОбъектыМетаданных Цикл + АдресаВыбранныхОбъектов.Добавить(Элемент.Представление, Элемент.Значение); + КонецЦикла; + КонецЕсли; + + ВыбиратьСсылки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыбиратьСсылки", Ложь); + Если Не ВыбиратьСсылки Тогда + Возврат; + КонецЕсли; + + Ссылки = Новый Массив; + + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если ТипЗнч(ОбъектМетаданных) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") + Или ТипЗнч(ОбъектМетаданных) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений") Тогда + + Ссылки.Добавить(ОбъектМетаданных); + КонецЕсли; + + КонецЦикла; + + Если Ссылки.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ИменаОбъектовМетаданных = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Ссылки, "ПолноеИмя"); + + Для Каждого ЭлементСписка Из ВыбранныеОбъектыМетаданных Цикл + + ИмяОбъектаМетаданных = ИменаОбъектовМетаданных[ЭлементСписка.Значение]; + Если ИмяОбъектаМетаданных <> Неопределено Тогда + ЭлементСписка.Значение = ИмяОбъектаМетаданных; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокПодсистем(СписокПодсистем) + Для Каждого Подсистема Из СписокПодсистем Цикл + Если Подсистема.ВключатьВКомандныйИнтерфейс Тогда + ЭлементыПодсистемСКоманднымИнтерфейсом.Добавить(Подсистема.ПолноеИмя()); + КонецЕсли; + + Если Подсистема.Подсистемы.Количество() > 0 Тогда + ЗаполнитьСписокПодсистем(Подсистема.Подсистемы); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +// Процедура заполняет дерево значений объектов конфигурации. +// Если список значений "Параметры.КоллекцииВыбираемыхОбъектовМетаданных" не пуст, тогда +// дерево будет ограничено переданным списком коллекций объектов метаданных. +// Если объекты метаданных в сформированном дереве будут найдены в списке значений +// "Параметры.ВыбранныеОбъектыМетаданных", тогда они будут помечены, как выбранные. +// +&НаСервере +Процедура ДеревоОбъектовМетаданныхЗаполнить() + + ДеревоОбъектовМетаданных.ПолучитьЭлементы().Очистить(); + + КоллекцииОбъектовМетаданных = Новый ТаблицаЗначений; + КоллекцииОбъектовМетаданных.Колонки.Добавить("Имя"); + КоллекцииОбъектовМетаданных.Колонки.Добавить("Синоним"); + КоллекцииОбъектовМетаданных.Колонки.Добавить("Картинка"); + КоллекцииОбъектовМетаданных.Колонки.Добавить("КартинкаОбъекта"); + КоллекцииОбъектовМетаданных.Колонки.Добавить("ЭтоКоллекцияОбщие"); + КоллекцииОбъектовМетаданных.Колонки.Добавить("ПолноеИмя"); + КоллекцииОбъектовМетаданных.Колонки.Добавить("Родитель"); + + КоллекцииОбъектовМетаданных_НоваяСтрока("Подсистемы", НСтр("ru = 'Подсистемы'"), 35, 36, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеМодули", НСтр("ru = 'Общие модули'"), 37, 38, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПараметрыСеанса", НСтр("ru = 'Параметры сеанса'"), 39, 40, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Роли", НСтр("ru = 'Роли'"), 41, 42, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыОбмена", НСтр("ru = 'Планы обмена'"), 43, 44, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("КритерииОтбора", НСтр("ru = 'Критерии отбора'"), 45, 46, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПодпискиНаСобытия", НСтр("ru = 'Подписки на события'"), 47, 48, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегламентныеЗадания", НСтр("ru = 'Регламентные задания'"), 49, 50, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ФункциональныеОпции", НСтр("ru = 'Функциональные опции'"), 51, 52, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПараметрыФункциональныхОпций", НСтр("ru = 'Параметры функциональных опций'"), 53, 54, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ХранилищаНастроек", НСтр("ru = 'Хранилища настроек'"), 55, 56, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеФормы", НСтр("ru = 'Общие формы'"), 57, 58, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеКоманды", НСтр("ru = 'Общие команды'"), 59, 60, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ГруппыКоманд", НСтр("ru = 'Группы команд'"), 61, 62, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Интерфейсы", НСтр("ru = 'Интерфейсы'"), 63, 64, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеМакеты", НСтр("ru = 'Общие макеты'"), 65, 66, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеКартинки", НСтр("ru = 'Общие картинки'"), 67, 68, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПакетыXDTO", НСтр("ru = 'XDTO-пакеты'"), 69, 70, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("WebСервисы", НСтр("ru = 'Web-сервисы'"), 71, 72, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("WSСсылки", НСтр("ru = 'WS-ссылки'"), 73, 74, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Стили", НСтр("ru = 'Стили'"), 75, 76, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Языки", НСтр("ru = 'Языки'"), 77, 78, Истина, КоллекцииОбъектовМетаданных); + + КоллекцииОбъектовМетаданных_НоваяСтрока("Константы", НСтр("ru = 'Константы'"), БиблиотекаКартинок.Константа, БиблиотекаКартинок.Константа, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Справочники", НСтр("ru = 'Справочники'"), БиблиотекаКартинок.Справочник, БиблиотекаКартинок.Справочник, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Документы", НСтр("ru = 'Документы'"), БиблиотекаКартинок.Документ, БиблиотекаКартинок.ДокументОбъект, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ЖурналыДокументов", НСтр("ru = 'Журналы документов'"), БиблиотекаКартинок.ЖурналДокументов, БиблиотекаКартинок.ЖурналДокументов, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Перечисления", НСтр("ru = 'Перечисления'"), БиблиотекаКартинок.Перечисление, БиблиотекаКартинок.Перечисление, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Отчеты", НСтр("ru = 'Отчеты'"), БиблиотекаКартинок.Отчет, БиблиотекаКартинок.Отчет, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Обработки", НСтр("ru = 'Обработки'"), БиблиотекаКартинок.Обработка, БиблиотекаКартинок.Обработка, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыВидовХарактеристик", НСтр("ru = 'Планы видов характеристик'"), БиблиотекаКартинок.ПланВидовХарактеристик, БиблиотекаКартинок.ПланВидовХарактеристикОбъект, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыСчетов", НСтр("ru = 'Планы счетов'"), БиблиотекаКартинок.ПланСчетов, БиблиотекаКартинок.ПланСчетовОбъект, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыВидовРасчета", НСтр("ru = 'Планы видов расчета'"), БиблиотекаКартинок.ПланВидовРасчета, БиблиотекаКартинок.ПланВидовРасчетаОбъект, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыСведений", НСтр("ru = 'Регистры сведений'"), БиблиотекаКартинок.РегистрСведений, БиблиотекаКартинок.РегистрСведений, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыНакопления", НСтр("ru = 'Регистры накопления'"), БиблиотекаКартинок.РегистрНакопления, БиблиотекаКартинок.РегистрНакопления, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыБухгалтерии", НСтр("ru = 'Регистры бухгалтерии'"), БиблиотекаКартинок.РегистрБухгалтерии, БиблиотекаКартинок.РегистрБухгалтерии, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыРасчета", НСтр("ru = 'Регистры расчета'"), БиблиотекаКартинок.РегистрРасчета, БиблиотекаКартинок.РегистрРасчета, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("БизнесПроцессы", НСтр("ru = 'Бизнес-процессы'"), БиблиотекаКартинок.БизнесПроцесс, БиблиотекаКартинок.БизнесПроцессОбъект, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Задачи", НСтр("ru = 'Задачи'"), БиблиотекаКартинок.Задача, БиблиотекаКартинок.ЗадачаОбъект, Ложь, КоллекцииОбъектовМетаданных); + + // Создание предопределенных элементов. + ПараметрыЭлемента = ПараметрыЭлементаДереваОбъектовМетаданных(); + ПараметрыЭлемента.Имя = Метаданные.Имя; + ПараметрыЭлемента.Синоним = Метаданные.Синоним; + ПараметрыЭлемента.Картинка = 79; + ПараметрыЭлемента.Родитель = ДеревоОбъектовМетаданных; + ЭлементКонфигурация = НоваяСтрокаДерева(ПараметрыЭлемента); + + ПараметрыЭлемента = ПараметрыЭлементаДереваОбъектовМетаданных(); + ПараметрыЭлемента.Имя = "Общие"; + ПараметрыЭлемента.Синоним = НСтр("ru = 'Общие'"); + ПараметрыЭлемента.Картинка = 0; + ПараметрыЭлемента.Родитель = ЭлементКонфигурация; + ЭлементОбщие = НоваяСтрокаДерева(ПараметрыЭлемента); + + // Заполнение дерева объектов метаданных. + Для Каждого Строка Из КоллекцииОбъектовМетаданных Цикл + Если Параметры.КоллекцииВыбираемыхОбъектовМетаданных.Количество() = 0 + Или Параметры.КоллекцииВыбираемыхОбъектовМетаданных.НайтиПоЗначению(Строка.Имя) <> Неопределено Тогда + Строка.Родитель = ?(Строка.ЭтоКоллекцияОбщие, ЭлементОбщие, ЭлементКонфигурация); + ДобавитьЭлементДереваОбъектовМетаданных(Строка, ?(Строка.Имя = "Подсистемы", Метаданные.Подсистемы, Неопределено)); + КонецЕсли; + КонецЦикла; + + Если ЭлементОбщие.ПолучитьЭлементы().Количество() = 0 Тогда + ЭлементКонфигурация.ПолучитьЭлементы().Удалить(ЭлементОбщие); + КонецЕсли; + +КонецПроцедуры + +// Возвращает новую структуру параметров элемента дерева объектов метаданных. +// +// Возвращаемое значение: +// Структура: +// Имя - Строка - имя родительского элемента. +// Синоним - Строка - синоним родительского элемента. +// Пометка - Булево - начальная пометка коллекции или объекта метаданных. +// Картинка - Число - код картинки родительского элемента. +// КартинкаОбъекта - Число - код картинки подэлемента. +// Родитель - ссылка на элемента дерева значений, который является корнем +// для добавляемого элемента. +// +&НаСервере +Функция ПараметрыЭлементаДереваОбъектовМетаданных() + + СтруктураПараметров = Новый Структура; + СтруктураПараметров.Вставить("Имя", ""); + СтруктураПараметров.Вставить("ПолноеИмя", ""); + СтруктураПараметров.Вставить("Синоним", ""); + СтруктураПараметров.Вставить("Пометка", 0); + СтруктураПараметров.Вставить("Картинка", 0); + СтруктураПараметров.Вставить("КартинкаОбъекта", Неопределено); + СтруктураПараметров.Вставить("Родитель", Неопределено); + + Возврат СтруктураПараметров; + +КонецФункции + +// Добавляет новую строку в дерево значений формы (дерево), +// а также заполняет полный набор строк из метаданных по переданному параметру. +// +// Если параметр Подсистемы заполнен, то вызывается рекурсивно для всех дочерних подсистем. +// +// Параметры: +// ПараметрыЭлемента - Структура: +// Имя - Строка - имя родительского элемента. +// Синоним - Строка - синоним родительского элемента. +// Пометка - Булево - начальная пометка коллекции или объекта метаданных. +// Картинка - Число - код картинки родительского элемента. +// КартинкаОбъекта - Число - код картинки подэлемента. +// Родитель - ссылка на элемента дерева значений, который является корнем +// для добавляемого элемента. +// Подсистемы - КоллекцияОбъектовМетаданных - если заполнен, то содержит значение Метаданные.Подсистемы (коллекцию элементов). +// Проверять - Булево - признак проверки на принадлежность родительским подсистемам. +// +// Возвращаемое значение: +// ДанныеФормыЭлементДерева +// +&НаСервере +Функция ДобавитьЭлементДереваОбъектовМетаданных(ПараметрыЭлемента, Подсистемы = Неопределено, Проверять = Истина) + + // Проверка на наличие командного интерфейса только в листьях дерева. + Если Подсистемы <> Неопределено И Параметры.Свойство("ТолькоПодсистемыСКИ") + И Не ПустаяСтрока(ПараметрыЭлемента.ПолноеИмя) + И ЭлементыПодсистемСКоманднымИнтерфейсом.НайтиПоЗначению(ПараметрыЭлемента.ПолноеИмя) = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Если Подсистемы = Неопределено Тогда + + Если Метаданные[ПараметрыЭлемента.Имя].Количество() = 0 Тогда + + // Если нет ни одного объекта метаданных из нужной ветки. + // Например, нет ни одного регистра бухгалтерии, + // то корень "Регистры бухгалтерии" добавлять не нужно. + Возврат Неопределено; + + КонецЕсли; + + НоваяСтрока = НоваяСтрокаДерева(ПараметрыЭлемента, Подсистемы <> Неопределено И Подсистемы <> Метаданные.Подсистемы); + + Для Каждого ЭлементКоллекцииМетаданных Из Метаданные[ПараметрыЭлемента.Имя] Цикл + + Если Параметры.ФильтрПоОбъектамМетаданных.Количество() > 0 + И Параметры.ФильтрПоОбъектамМетаданных.НайтиПоЗначению(ЭлементКоллекцииМетаданных.ПолноеИмя()) = Неопределено Тогда + Продолжить; + КонецЕсли; + + ПараметрыЭлемента = ПараметрыЭлементаДереваОбъектовМетаданных(); + ПараметрыЭлемента.Имя = ЭлементКоллекцииМетаданных.Имя; + ПараметрыЭлемента.ПолноеИмя = ЭлементКоллекцииМетаданных.ПолноеИмя(); + ПараметрыЭлемента.Синоним = ЭлементКоллекцииМетаданных.Синоним; + ПараметрыЭлемента.Родитель = НоваяСтрока; + ПараметрыЭлемента.Картинка = КартинкаВКонфигураторе(ЭлементКоллекцииМетаданных); + НоваяСтрокаДерева(ПараметрыЭлемента, Истина); + КонецЦикла; + + Возврат НоваяСтрока; + + КонецЕсли; + + Если Подсистемы.Количество() = 0 И ПараметрыЭлемента.Имя = "Подсистемы" Тогда + // Если нет ни одной подсистемы, то корень "Подсистемы" добавлять не нужно. + Возврат Неопределено; + КонецЕсли; + + НоваяСтрока = НоваяСтрокаДерева(ПараметрыЭлемента, Подсистемы <> Неопределено И Подсистемы <> Метаданные.Подсистемы); + + Для Каждого ЭлементКоллекцииМетаданных Из Подсистемы Цикл + + Если Не Проверять + Или Параметры.РодительскиеПодсистемы.Количество() = 0 + Или Параметры.РодительскиеПодсистемы.НайтиПоЗначению(ЭлементКоллекцииМетаданных.Имя) <> Неопределено Тогда + + ПараметрыЭлемента = ПараметрыЭлементаДереваОбъектовМетаданных(); + ПараметрыЭлемента.Имя = ЭлементКоллекцииМетаданных.Имя; + ПараметрыЭлемента.ПолноеИмя = ЭлементКоллекцииМетаданных.ПолноеИмя(); + ПараметрыЭлемента.Синоним = ЭлементКоллекцииМетаданных.Синоним; + ПараметрыЭлемента.Родитель = НоваяСтрока; + ПараметрыЭлемента.Картинка = КартинкаВКонфигураторе(ЭлементКоллекцииМетаданных); + ДобавитьЭлементДереваОбъектовМетаданных(ПараметрыЭлемента, ЭлементКоллекцииМетаданных.Подсистемы, Ложь); + КонецЕсли; + КонецЦикла; + + Возврат НоваяСтрока; + +КонецФункции + +&НаСервере +Функция НоваяСтрокаДерева(ПараметрыСтроки, ЭтоОбъектМетаданных = Ложь) + + Коллекция = ПараметрыСтроки.Родитель.ПолучитьЭлементы(); // КоллекцияСтрокДереваЗначений + НоваяСтрока = Коллекция.Добавить(); + НоваяСтрока.Имя = ПараметрыСтроки.Имя; + НоваяСтрока.Представление = ?(ЗначениеЗаполнено(ПараметрыСтроки.Синоним), ПараметрыСтроки.Синоним, ПараметрыСтроки.Имя); + НоваяСтрока.Пометка = ?(ВыбранныеОбъектыМетаданных.НайтиПоЗначению(ПараметрыСтроки.ПолноеИмя) = Неопределено, 0, 1); + НоваяСтрока.Картинка = ПараметрыСтроки.Картинка; + НоваяСтрока.ПолноеИмя = ПараметрыСтроки.ПолноеИмя; + НоваяСтрока.ЭтоОбъектМетаданных = ЭтоОбъектМетаданных; + + Если НоваяСтрока.ЭтоОбъектМетаданных + И НоваяСтрока.ПолноеИмя = НачальноеЗначениеВыбора Тогда + ИдентификаторТекущейСтрокиПриОткрытии = НоваяСтрока.ПолучитьИдентификатор(); + КонецЕсли; + + Возврат НоваяСтрока; + +КонецФункции + +// Добавляет новую строку в таблицу значений видов объектов метаданных +// конфигурации. +// +// Параметры: +// Имя - Строка - имя объекта метаданных или вида объекта метаданных. +// Синоним - Строка - синоним объекта метаданных. +// Картинка - Число - картинка поставленная в соответствие объекту метаданных +// или виду объекта метаданных. +// КартинкаОбъекта - Число +// ЭтоКоллекцияОбщие - Булево - признак того, что текущий элемент содержит подэлементы. +// Таб - ТаблицаЗначений +// +&НаСервере +Процедура КоллекцииОбъектовМетаданных_НоваяСтрока(Имя, Синоним, Картинка, КартинкаОбъекта, ЭтоКоллекцияОбщие, Таб) + + НоваяСтрока = Таб.Добавить(); + НоваяСтрока.Имя = Имя; + НоваяСтрока.Синоним = Синоним; + НоваяСтрока.Картинка = Картинка; + НоваяСтрока.КартинкаОбъекта = КартинкаОбъекта; + НоваяСтрока.ЭтоКоллекцияОбщие = ЭтоКоллекцияОбщие; + +КонецПроцедуры + +&НаКлиенте +Функция ЗначениеПометкиЭлементов(ЭлементыРодителя) + + ЕстьПомеченные = Ложь; + ЕстьНепомеченные = Ложь; + + Для каждого ЭлементРодителя Из ЭлементыРодителя Цикл + + Если ЭлементРодителя.Пометка = 2 ИЛИ (ЕстьПомеченные И ЕстьНепомеченные) Тогда + ЕстьПомеченные = Истина; + ЕстьНепомеченные = Истина; + Прервать; + ИначеЕсли ЭлементРодителя.ЭтоОбъектМетаданных Тогда + ЕстьПомеченные = ЕстьПомеченные ИЛИ ЭлементРодителя.Пометка; + ЕстьНепомеченные = ЕстьНепомеченные ИЛИ НЕ ЭлементРодителя.Пометка; + Иначе + ВложенныеЭлементы = ЭлементРодителя.ПолучитьЭлементы(); + Если ВложенныеЭлементы.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + ЗначениеПометкиВложенныхЭлементов = ЗначениеПометкиЭлементов(ВложенныеЭлементы); + ЕстьПомеченные = ЕстьПомеченные ИЛИ ЭлементРодителя.Пометка ИЛИ ЗначениеПометкиВложенныхЭлементов; + ЕстьНепомеченные = ЕстьНепомеченные ИЛИ НЕ ЭлементРодителя.Пометка ИЛИ НЕ ЗначениеПометкиВложенныхЭлементов; + КонецЕсли; + КонецЦикла; + + Если ЕстьПомеченные Тогда + Если ЕстьНепомеченные Тогда + Возврат 2; + Иначе + Если ТолькоПодсистемыСКИ Тогда + Возврат 2; + Иначе + Возврат 1; + КонецЕсли; + КонецЕсли; + Иначе + Возврат 0; + КонецЕсли; + +КонецФункции + +&НаСервере +Процедура ПометитьЭлементыРодителейНаСервере(Элемент) + + Родитель = Элемент.ПолучитьРодителя(); + + Если Родитель = Неопределено Тогда + Возврат; + КонецЕсли; + + ЭлементыРодителя = Родитель.ПолучитьЭлементы(); + Если ЭлементыРодителя.Количество() = 0 Тогда + Родитель.Пометка = 0; + ИначеЕсли Элемент.Пометка = 2 Тогда + Родитель.Пометка = 2; + Иначе + Родитель.Пометка = ЗначениеПометкиЭлементовНаСервере(ЭлементыРодителя); + КонецЕсли; + + ПометитьЭлементыРодителейНаСервере(Родитель); + +КонецПроцедуры + +&НаСервере +Функция ЗначениеПометкиЭлементовНаСервере(ЭлементыРодителя) + + ЕстьПомеченные = Ложь; + ЕстьНепомеченные = Ложь; + + Для каждого ЭлементРодителя Из ЭлементыРодителя Цикл + + Если ЭлементРодителя.Пометка = 2 ИЛИ (ЕстьПомеченные И ЕстьНепомеченные) Тогда + ЕстьПомеченные = Истина; + ЕстьНепомеченные = Истина; + Прервать; + ИначеЕсли ЭлементРодителя.ЭтоОбъектМетаданных Тогда + ЕстьПомеченные = ЕстьПомеченные ИЛИ ЭлементРодителя.Пометка; + ЕстьНепомеченные = ЕстьНепомеченные ИЛИ НЕ ЭлементРодителя.Пометка; + Иначе + ВложенныеЭлементы = ЭлементРодителя.ПолучитьЭлементы(); + Если ВложенныеЭлементы.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + ЗначениеПометкиВложенныхЭлементов = ЗначениеПометкиЭлементовНаСервере(ВложенныеЭлементы); + ЕстьПомеченные = ЕстьПомеченные ИЛИ ЭлементРодителя.Пометка ИЛИ ЗначениеПометкиВложенныхЭлементов; + ЕстьНепомеченные = ЕстьНепомеченные ИЛИ НЕ ЭлементРодителя.Пометка ИЛИ НЕ ЗначениеПометкиВложенныхЭлементов; + КонецЕсли; + КонецЦикла; + + Возврат ?(ЕстьПомеченные И ЕстьНепомеченные, 2, ?(ЕстьПомеченные, 1, 0)); + +КонецФункции + +// Процедура НачальнаяПометкаКоллекций устанавливает пометку для коллекций +// объектов метаданных, которые не имеют объектов метаданных (истина) и +// которые имеют объекты метаданных с заданной пометкой. +// +// Параметры: +// Элемент - ДанныеФормыКоллекцияЭлементовДерева. +// +&НаСервере +Процедура НачальнаяПометкаКоллекций(Родитель) + + ВложенныеЭлементы = Родитель.ПолучитьЭлементы(); + + Для Каждого ВложенныйЭлемент Из ВложенныеЭлементы Цикл + Если ВложенныйЭлемент.Пометка Тогда + ПометитьЭлементыРодителейНаСервере(ВложенныйЭлемент); + КонецЕсли; + НачальнаяПометкаКоллекций(ВложенныйЭлемент); + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ВыбратьСсылки(ВыбранныеОбъектыМетаданных) + + Если ВыбранныеОбъектыМетаданных.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ОписаниеОбъектовМетаданных = ВыбранныеОбъектыМетаданных.ВыгрузитьЗначения(); + Ссылки = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ОписаниеОбъектовМетаданных, Ложь); + + Для Каждого ЭлементСписка Из ВыбранныеОбъектыМетаданных Цикл + + Ссылка = Ссылки[ЭлементСписка.Значение]; + Если Ссылка <> Неопределено Тогда + ЭлементСписка.Значение = Ссылка; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ДеревоОбъектовМетаданныхЗаполнитьПоРазделам() + + ДеревоОбъектовМетаданных.ПолучитьЭлементы().Очистить(); + + Ветка = ДеревоОбъектовМетаданных.ПолучитьЭлементы().Добавить(); + Ветка.Имя = Метаданные.Имя; + Ветка.Представление = Метаданные.Синоним; + Ветка.Адрес = "."; + + ВывестиКоллекцию(Ветка, Метаданные.Подсистемы); + +КонецПроцедуры + +&НаСервере +Процедура ВывестиКоллекцию(Знач Ветка, Знач КоллекцияОбъектовМетаданных) + + Для Каждого ОбъектМетаданных Из КоллекцияОбъектовМетаданных Цикл + Если ТипЗнч(Ветка) = Тип("ДанныеФормыЭлементДерева") И ОбъектМетаданных.ПолноеИмя() = Ветка.ПолноеИмя Тогда + Продолжить; + КонецЕсли; + Если Не ОбъектМетаданныхДоступен(ОбъектМетаданных) Тогда + Продолжить; + КонецЕсли; + + НоваяВетка = Ветка.ПолучитьЭлементы().Добавить(); + НоваяВетка.Имя = ОбъектМетаданных.Имя; + НоваяВетка.ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); + НоваяВетка.Представление = ОбъектМетаданных.Представление(); + НоваяВетка.Картинка = КартинкаВИнтерфейсе(ОбъектМетаданных); + НоваяВетка.Адрес = ?(ТипЗнч(Ветка) = Тип("ДанныеФормыЭлементДерева"), Ветка.Адрес + "/", "") + НоваяВетка.Представление; + Если ЗначениеЗаполнено(АдресаВыбранныхОбъектов) Тогда + НоваяВетка.Пометка = ?(АдресаВыбранныхОбъектов.НайтиПоЗначению(НоваяВетка.Адрес) = Неопределено, 0, 1); + Иначе + НоваяВетка.Пометка = ?(ВыбранныеОбъектыМетаданных.НайтиПоЗначению(НоваяВетка.ПолноеИмя) = Неопределено, 0, 1); + КонецЕсли; + + Если ЭтоПодсистема(ОбъектМетаданных) Тогда + ВывестиКоллекцию(НоваяВетка, ОбъектМетаданных.Состав); + ВывестиКоллекцию(НоваяВетка, ОбъектМетаданных.Подсистемы); + НоваяВетка.ЭтоПодраздел = КоллекцияОбъектовМетаданных <> Метаданные.Подсистемы; + Иначе + НоваяВетка.ЭтоОбъектМетаданных = Истина; + + Если ОбщегоНазначения.ЭтоЖурналДокументов(ОбъектМетаданных) Тогда + ВывестиКоллекцию(НоваяВетка, ОбъектМетаданных.РегистрируемыеДокументы); + ИначеЕсли ОбщегоНазначения.ЭтоСправочник(ОбъектМетаданных) Тогда + ВывестиКоллекцию(НоваяВетка, ПодчиненныеСправочники(ОбъектМетаданных)); + КонецЕсли; + КонецЕсли; + + Если ЭтоПодсистема(ОбъектМетаданных) И НоваяВетка.ПолучитьЭлементы().Количество() = 0 Тогда + Индекс = Ветка.ПолучитьЭлементы().Индекс(НоваяВетка); + Ветка.ПолучитьЭлементы().Удалить(Индекс); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция КартинкаВИнтерфейсе(ОбъектМетаданных) + + СвойстваОбъекта = Новый Структура("Картинка"); + ЗаполнитьЗначенияСвойств(СвойстваОбъекта, ОбъектМетаданных); + Если ЗначениеЗаполнено(СвойстваОбъекта.Картинка) Тогда + Возврат СвойстваОбъекта.Картинка; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +&НаСервере +Функция КартинкаВКонфигураторе(ОбъектМетаданных) + + ВидОбъекта = СтрРазделить(ОбъектМетаданных.ПолноеИмя(), ".")[0]; + Картинки = Новый Структура(ВидОбъекта); + ЗаполнитьЗначенияСвойств(Картинки, БиблиотекаКартинок); + + Возврат Картинки[ВидОбъекта]; + +КонецФункции + +&НаСервереБезКонтекста +Функция ЭтоПодсистема(ОбъектМетаданных) + Возврат СтрНачинаетсяС(ОбъектМетаданных.ПолноеИмя(), "Подсистема"); +КонецФункции + +&НаСервере +Функция ОбъектМетаданныхДоступен(ОбъектМетаданных) + + Если Не ЭтоПодсистема(ОбъектМетаданных) Тогда + ЭтоВыбираемыйОбъект = Не ЗначениеЗаполнено(Параметры.КоллекцииВыбираемыхОбъектовМетаданных); + Для Каждого ВидОбъекта Из Параметры.КоллекцииВыбираемыхОбъектовМетаданных.ВыгрузитьЗначения() Цикл + Если Метаданные[ВидОбъекта].Содержит(ОбъектМетаданных) Тогда + ЭтоВыбираемыйОбъект = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Если Не ЭтоВыбираемыйОбъект Тогда + Возврат Ложь; + КонецЕсли; + КонецЕсли; + + Если Не ОбщегоНазначения.ЭтоСправочник(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоДокумент(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоЖурналДокументов(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоПланВидовХарактеристик(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоРегистрСведений(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоРегистрБухгалтерии(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоРегистрНакопления(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоРегистрРасчета(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоПланВидовХарактеристик(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоПланСчетов(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоПланВидовРасчета(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоБизнесПроцесс(ОбъектМетаданных) + И Не ОбщегоНазначения.ЭтоЗадача(ОбъектМетаданных) + И Не ЭтоПодсистема(ОбъектМетаданных) Тогда + Возврат Ложь; + КонецЕсли; + + ДоступенПоПравам = ПравоДоступа("Просмотр", ОбъектМетаданных); + ДоступенПоФункциональнымОпциям = ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(ОбъектМетаданных); + + СвойстваМетаданного = Новый Структура("ПолнотекстовыйПоиск, ВключатьВКомандныйИнтерфейс"); + ЗаполнитьЗначенияСвойств(СвойстваМетаданного, ОбъектМетаданных); + + Если СвойстваМетаданного.ПолнотекстовыйПоиск = Неопределено Тогда + ИспользованиеПолнотекстовогоПоиска = Истина; // Если свойства нет - игнорируем. + Иначе + ИспользованиеПолнотекстовогоПоиска = (СвойстваМетаданного.ПолнотекстовыйПоиск = + Метаданные.СвойстваОбъектов.ИспользованиеПолнотекстовогоПоиска.Использовать); + КонецЕсли; + + Если СвойстваМетаданного.ВключатьВКомандныйИнтерфейс = Неопределено Тогда + ВключатьВКомандныйИнтерфейс = Истина; // Если свойства нет - игнорируем. + Иначе + ВключатьВКомандныйИнтерфейс = СвойстваМетаданного.ВключатьВКомандныйИнтерфейс; + КонецЕсли; + + Возврат ДоступенПоПравам И ДоступенПоФункциональнымОпциям + И ИспользованиеПолнотекстовогоПоиска И ВключатьВКомандныйИнтерфейс; + +КонецФункции + +&НаСервере +Функция ПодчиненныеСправочники(ОбъектМетаданных) + + Если ПодчиненныеСправочники = Неопределено Тогда + ПодчиненныеСправочники = Новый Соответствие; + + Для Каждого Справочник Из Метаданные.Справочники Цикл + Если ПодчиненныеСправочники[Справочник] = Неопределено Тогда + ПодчиненныеСправочники[Справочник] = Новый Массив; + КонецЕсли; + Для Каждого ВладелецСправочника Из Справочник.Владельцы Цикл + Если ПодчиненныеСправочники[ВладелецСправочника] = Неопределено Тогда + ПодчиненныеСправочники[ВладелецСправочника] = Новый Массив; + КонецЕсли; + СписокСправочников = ПодчиненныеСправочники[ВладелецСправочника]; // Массив + СписокСправочников.Добавить(Справочник); + КонецЦикла; + КонецЦикла; + КонецЕсли; + + Возврат ПодчиненныеСправочники[ОбъектМетаданных]; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьДеревоОбъектов() + + Если СпособГруппировкиОбъектов = "ПоРазделам" Тогда + ДеревоОбъектовМетаданныхЗаполнитьПоРазделам(); + Иначе + ДеревоОбъектовМетаданныхЗаполнить(); + КонецЕсли; + + НачальнаяПометкаКоллекций(ДеревоОбъектовМетаданных); + +КонецПроцедуры + +#Область ПометкаЭлементов + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ПриПометкеЭлементаДерева(ЭлементДерева) + + ЭлементДерева.Пометка = СледующееЗначениеПометкиЭлемента(ЭлементДерева); + + Если ТребуетсяПометитьВложенныеЭлементы(ЭлементДерева) Тогда + ПометитьВложенныеЭлементыРекурсивно(ЭлементДерева); + КонецЕсли; + + Если ЭлементДерева.Пометка = ПометкаФлажокНеУстановлен() Тогда + ЭлементДерева.Пометка = ЗначениеПометкиОтносительноВложенныхЭлементов(ЭлементДерева); + КонецЕсли; + + ПометитьЭлементыРодителейРекурсивно(ЭлементДерева); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПометкаФлажокНеУстановлен() + + Возврат 0; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПометкаФлажокУстановлен() + + Возврат 1; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПометкаКвадрат() + + Возврат 2; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Функция СледующееЗначениеПометкиЭлемента(ЭлементДерева) + + // 0 - Флажок не установлен. + // 1 - Флажок установлен. + // 2 - Установлен квадрат. + // + // Переопределение графа конечного автомата (или машины состояний, как ее еще можно назвать). + // + // Платформа делает постоянный цикл при изменении пометки, + // т.е. имеет компоненту сильной связности орграфа: + // 0-1-2-0-1-2-0-1... + // + // 0 + // / \ + // 2 - 1 + // + // т.е. совершает цикл: не помеченный - помеченный - квадрат - не помеченный. + // + // Нам требуется поведение недетерминированного конечного автомата с компонентой сильной связности: + // 0-1-0-1-0... + // + // т.е. помеченный должен переходить в не помеченный, а тот - опять в помеченный. + // + // При этом: + // + // Для разделов циклы: + // 1) 1-0-1-0-1... + // 2) 2-0-1-0-1-0-... + // + // /\ + // 2 - 0 -1 + // + // т.е. с квадрата должен быть переход к неустановленному флажку. + // + // Для метаданных циклы: + // 1) 1-0-1-0-1-0... + // 2) 2-1-0-1-0-1-0... + // + // /\ + // 2 - 1 -0 + // + // т.е. с квадрата должен быть переход к установленному флажку. + + // На момент проверки платформа уже изменила значение пометки. + + Если ЭлементДерева.ЭтоОбъектМетаданных Тогда + // Предыдущее значение пометки = 2 : Установлен квадрат. + Если ЭлементДерева.Пометка = 0 Тогда + Возврат ПометкаФлажокУстановлен(); + КонецЕсли; + КонецЕсли; + + // Предыдущее значение пометки = 1 : Флажок установлен. + Если ЭлементДерева.Пометка = 2 Тогда + Возврат ПометкаФлажокНеУстановлен(); + КонецЕсли; + + // Во всех остальных случаях - значение установленное платформой. + Возврат ЭлементДерева.Пометка; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ПометитьЭлементыРодителейРекурсивно(ЭлементДерева) + + Родитель = ЭлементДерева.ПолучитьРодителя(); + + Если Родитель = Неопределено Тогда + Возврат; + КонецЕсли; + + ЭлементыРодителя = Родитель.ПолучитьЭлементы(); + Если ЭлементыРодителя.Количество() = 0 Тогда + Родитель.Пометка = ПометкаФлажокУстановлен(); + ИначеЕсли ЭлементДерева.Пометка = ПометкаКвадрат() Тогда + Родитель.Пометка = ПометкаКвадрат(); + Иначе + Родитель.Пометка = ЗначениеПометкиОтносительноВложенныхЭлементов(Родитель); + КонецЕсли; + + ПометитьЭлементыРодителейРекурсивно(Родитель); + +КонецПроцедуры + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Функция ЗначениеПометкиОтносительноВложенныхЭлементов(ЭлементДерева) + + СостояниеВложенныхЭлементов = СостояниеВложенныхЭлементов(ЭлементДерева); + + ЕстьПомеченные = СостояниеВложенныхЭлементов.ЕстьПомеченные; + ЕстьНепомеченные = СостояниеВложенныхЭлементов.ЕстьНепомеченные; + + Если ЭлементДерева.ЭтоОбъектМетаданных Тогда + + // Для объекта метаданных важно какое у него состояние сейчас, + // ведь этот объект метаданных надо возвращать. + // Нельзя сбрасывать установленный флажок. + + Если ЭлементДерева.Пометка = ПометкаФлажокУстановлен() Тогда + // Оставляем флажок взведенным независимо от вложенных. + Возврат ПометкаФлажокУстановлен(); + КонецЕсли; + + Если ЭлементДерева.Пометка = ПометкаФлажокНеУстановлен() + Или ЭлементДерева.Пометка = ПометкаКвадрат() Тогда + + Если ЕстьПомеченные Тогда + Возврат ПометкаКвадрат(); + Иначе + Возврат ПометкаФлажокНеУстановлен(); + КонецЕсли; + КонецЕсли; + + Иначе + + // Для разделов не важно какое состояние сейчас, + // они всегда зависят только от вложенных. + + Если ЕстьПомеченные Тогда + + Если ЕстьНепомеченные Тогда + Возврат ПометкаКвадрат(); + Иначе + Возврат ПометкаФлажокУстановлен(); + КонецЕсли; + + КонецЕсли; + + Возврат ПометкаФлажокНеУстановлен(); + + КонецЕсли; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Функция СостояниеВложенныхЭлементов(ЭлементДерева) + + ВложенныеЭлементы = ЭлементДерева.ПолучитьЭлементы(); + + ЕстьПомеченные = Ложь; + ЕстьНепомеченные = Ложь; + + Для каждого ВложенныйЭлемент Из ВложенныеЭлементы Цикл + + Если ВложенныйЭлемент.Пометка = ПометкаФлажокНеУстановлен() Тогда + ЕстьНепомеченные = Истина; + Продолжить; + КонецЕсли; + + Если ВложенныйЭлемент.Пометка = ПометкаФлажокУстановлен() Тогда + ЕстьПомеченные = Истина; + + Если ВложенныйЭлемент.ЭтоОбъектМетаданных Тогда + + // Для объекта метаданных допустимо иметь непомеченные в своем составе вложенных, + // при этом самостоятельно быть помеченным. Чтобы обыграть эту ситуацию надо поднять + // вложенные элементы на один уровень с самим объектом, к которому они относятся. + + Состояние = СостояниеВложенныхЭлементов(ВложенныйЭлемент); + ЕстьПомеченные = ЕстьПомеченные Или Состояние.ЕстьПомеченные; + ЕстьНепомеченные = ЕстьНепомеченные Или Состояние.ЕстьНепомеченные; + КонецЕсли; + + Продолжить; + КонецЕсли; + + Если ВложенныйЭлемент.Пометка = ПометкаКвадрат() Тогда + ЕстьПомеченные = Истина; + ЕстьНепомеченные = Истина; + Продолжить; + КонецЕсли; + + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("ЕстьПомеченные", ЕстьПомеченные); + Результат.Вставить("ЕстьНепомеченные", ЕстьНепомеченные); + + Возврат Результат; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Функция ТребуетсяПометитьВложенныеЭлементы(ЭлементДерева) + + Если ЭлементДерева.ЭтоОбъектМетаданных Тогда + + // Если для объекта метаданных есть не полностью выбранные вложенные элементы, + // значит эти элементы были выбраны пользователем и не следует портить его выбор. + + СостояниеВложенныхЭлементов = СостояниеВложенныхЭлементов(ЭлементДерева); + + ЕстьПомеченные = СостояниеВложенныхЭлементов.ЕстьПомеченные; + ЕстьНепомеченные = СостояниеВложенныхЭлементов.ЕстьНепомеченные; + + Если ЕстьПомеченные И ЕстьНепомеченные Тогда + Возврат Ложь; + КонецЕсли; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ПометитьВложенныеЭлементыРекурсивно(ЭлементДерева) + + ВложенныеЭлементы = ЭлементДерева.ПолучитьЭлементы(); + + Для каждого ВложенныйЭлемент Из ВложенныеЭлементы Цикл + + ВложенныйЭлемент.Пометка = ЭлементДерева.Пометка; + ПометитьВложенныеЭлементыРекурсивно(ВложенныйЭлемент); + + КонецЦикла; + +КонецПроцедуры + +// Параметры: +// КоллекцияЭлементовДерева - ДанныеФормыДерева +// - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// ЗначениеПометки - Число - устанавливаемое значение. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ПометитьВсеЭлементыДереваРекурсивно(ЭлементДеревоРазделовПоиска, ЗначениеПометки) + + КоллекцияЭлементовДерева = ЭлементДеревоРазделовПоиска.ПолучитьЭлементы(); + + Для каждого ЭлементДерева Из КоллекцияЭлементовДерева Цикл + ЭлементДерева.Пометка = ЗначениеПометки; + ПометитьВсеЭлементыДереваРекурсивно(ЭлементДерева, ЗначениеПометки); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДеревоОбъектовМетаданных"); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоОбъектовМетаданных.ЭтоПодраздел"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветРазделаПанелиФункций); + +КонецПроцедуры + +&НаКлиенте +Функция ВыбранныеЭлементы(Ветка) + + Результат = Новый Соответствие; + + Для Каждого Элемент Из Ветка.ПолучитьЭлементы() Цикл + Если Элемент.Пометка = 1 И Не ПустаяСтрока(Элемент.ПолноеИмя) И Элемент.ЭтоОбъектМетаданных Тогда + Результат.Вставить(Элемент.ПолноеИмя, ?(Параметры.ЗапоминатьРазделыВыбранныхОбъектов + И СпособГруппировкиОбъектов = "ПоРазделам", Элемент.Адрес, Элемент.Представление)); + КонецЕсли; + Для Каждого ВыбранныйЭлемент Из ВыбранныеЭлементы(Элемент) Цикл + Результат.Вставить(ВыбранныйЭлемент.Ключ, ВыбранныйЭлемент.Значение); + КонецЦикла; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ОбновитьКоллекциюВыбранныеОбъектыМетаданных() + + ВыбранныеОбъектыМетаданных.Очистить(); + Для Каждого ВыбранныйЭлемент Из ВыбранныеЭлементы(ДеревоОбъектовМетаданных) Цикл + ВыбранныеОбъектыМетаданных.Добавить(ВыбранныйЭлемент.Ключ, ВыбранныйЭлемент.Значение, Истина); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.mdo" new file mode 100644 index 00000000..52d7ba10 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205/\320\222\321\213\320\261\320\276\321\200\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.mdo" @@ -0,0 +1,15 @@ + + + ВыборОбъектовМетаданных + + ru + Выбор объектов метаданных + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Form.form" new file mode 100644 index 00000000..4dabe7c9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Form.form" @@ -0,0 +1,280 @@ + + + + <key>ru</key> + <value>Размещение файлов</value> + + + ГруппаПутьФайловойБазы + 1 + + ПутьКАрхивуWindows + 2 + + <key>ru</key> + <value>Для сервера 1С:Предприятия под управлением Microsoft Windows, (вида "\\servername\resource\files.zip")</value> + + true + true + + true + + + + ПутьКАрхивуWindows + + + Top + + ПутьКАрхивуWindowsExtendedTooltip + 9 + true + true + + true + + Label + true + true + + Left + + + + ПутьКАрхивуWindowsКонтекстноеМеню + 3 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + StartChoice + ПутьКАрхивуWindowsНачалоВыбора + + 65 + true + true + true + true + true + true + + + + ПутьКАрхивуLinux + 4 + + <key>ru</key> + <value>Для сервера 1С:Предприятия под управлением Linux</value> + + true + true + + true + + + + ПутьКАрхивуLinux + + + Top + + ПутьКАрхивуLinuxExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + ПутьКАрхивуLinuxКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 65 + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Путь к архиву с файлами начального образа</value> + + + ГруппаПутьФайловойБазыExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + Разместить + 6 + true + true + + true + + false + + РазместитьExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Разместить + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + + ПутьКАрхивуWindows + + <key>ru</key> + <value>Путь к архиву windows</value> + + 1 + + String + + + + true + + + true + + + + ПутьКАрхивуLinux + + <key>ru</key> + <value>Путь к архиву linux</value> + + 2 + + String + + + + true + + + true + + + + Разместить + + <key>ru</key> + <value>Разместить</value> + + 1 + + ru + Разместить + + + true + + + + Разместить + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..7ca63d79 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Help/ru.html" @@ -0,0 +1,9 @@ + +

        Предназначена для ввода пути к архиву с файлами начального образа (при хранении файлов в томах).

        +

        Если для хранения файлов используются тома на диске, то вместе с созданием начального образа автоматически будет создан архив с файлами, хранящимися в томах.

        +

        Затем в процессе создания информационной базы подчиненного узла из начального образа в программе-приемнике следует получить файлы из этого архива. Для этого необходимо воспользоваться командой Разместить файлы начального образа. В последующих итерациях синхронизации данных файлы в томах будут участвовать автоматически.

        +

        В одном из полей укажите Путь к архиву с файлами начального образа:

        +
        • Для сервера 1С:Предприятия под управлением Microsoft Windows - укажите путь к архиву с помощью кнопки ;

        или

        +
        • Для сервера 1С:Предприятия под управлением Linux - напишите путь к архиву.

        Нажмите Разместить.

        +

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..79fd0151 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/Module.bsl" @@ -0,0 +1,103 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Элементы.ПутьКАрхивуWindows.Заголовок = НСтр("ru = 'Для сервера 1С:Предприятия под управлением Microsoft Windows'"); + Иначе + Элементы.ПутьКАрхивуWindows.КнопкаВыбора = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПутьКАрхивуWindowsНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если Не РаботаСФайламиСлужебныйКлиент.РасширениеРаботыСФайламиПодключено() Тогда + РаботаСФайламиСлужебныйКлиент.ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами(Неопределено); + Возврат; + КонецЕсли; + + Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + + Диалог.Заголовок = НСтр("ru = 'Выберите файл'"); + Диалог.ПолноеИмяФайла = ?(ЭтотОбъект.ПутьКАрхивуWindows = "", "files.zip", ЭтотОбъект.ПутьКАрхивуWindows); + Диалог.МножественныйВыбор = Ложь; + Диалог.ПредварительныйПросмотр = Ложь; + Диалог.ПроверятьСуществованиеФайла = Истина; + Диалог.Фильтр = НСтр("ru = 'Архивы zip(*.zip)|*.zip'"); + + Если Диалог.Выбрать() Тогда + + ЭтотОбъект.ПутьКАрхивуWindows = Диалог.ПолноеИмяФайла; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Разместить(Команда) + + ОчиститьСообщения(); + + Если ПустаяСтрока(ПутьКАрхивуWindows) И ПустаяСтрока(ПутьКАрхивуLinux) Тогда + Текст = НСтр("ru = 'Укажите полное имя архива с + |файлами начального образа (файл *.zip)'"); + ОбщегоНазначенияКлиент.СообщитьПользователю(Текст, , "ПутьКАрхивуWindows"); + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() Тогда + + Если Не ПустаяСтрока(ПутьКАрхивуWindows) И (Лев(ПутьКАрхивуWindows, 2) <> "\\" ИЛИ СтрНайти(ПутьКАрхивуWindows, ":") <> 0) Тогда + ТекстОшибки = НСтр("ru = 'Путь к архиву с файлами начального образа + |должен быть в формате UNC (\\servername\resource).'"); + ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "ПутьКАрхивуWindows"); + Возврат; + КонецЕсли; + + КонецЕсли; + + ДобавитьФайлыВТома(); + + ТекстОповещения = НСтр("ru = 'Размещение файлов из архива с файлами + |начального образа успешно завершено.'"); + ПоказатьОповещениеПользователя(НСтр("ru = 'Размещение файлов'"),, ТекстОповещения); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ДобавитьФайлыВТома() + + РаботаСФайламиВТомахСлужебный.ДобавитьФайлыВТома(ПутьКАрхивуWindows, ПутьКАрхивуLinux); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262.mdo" new file mode 100644 index 00000000..c8d1ada1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262/\320\222\321\213\320\261\320\276\321\200\320\237\321\203\321\202\320\270\320\232\320\220\321\200\321\205\320\270\320\262\321\203\320\244\320\260\320\271\320\273\320\276\320\262\320\242\320\276\320\274\320\276\320\262.mdo" @@ -0,0 +1,15 @@ + + + ВыборПутиКАрхивуФайловТомов + + ru + Выбор пути к архиву файлов томов + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/Form.form" new file mode 100644 index 00000000..9ced10e3 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/Form.form" @@ -0,0 +1,514 @@ + + + + Роль + 3 + true + true + + true + + + + Роль + + + Button + + OnChange + ИсполнительПриИзменении + + + РольExtendedTooltip + 21 + + <key>ru</key> + <value>В ряде случаев, роли исполнителя бывает недостаточно, чтобы точно определить круг исполнителей задач. Для этого можно указать уточняющие основной и дополнительный объекты адресации.</value> + + true + true + + true + + Label + true + true + + Left + + + + РольКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + ShowInInputField + false + true + true + true + true + + + + ГруппаУточнение + 25 + + Отступ + 29 + true + true + + true + + + ОтступРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + ОтступКонтекстноеМеню + 30 + true + true + + true + + true + + Label + true + true + + Left + + + + ГруппаОтступ + 27 + + ОсновнойОбъектАдресации + 13 + true + true + + true + + + + ОсновнойОбъектАдресации + + + Button + + ОсновнойОбъектАдресацииExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + + ОсновнойОбъектАдресацииКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ДополнительныйОбъектАдресации + 15 + true + true + + true + + + + ДополнительныйОбъектАдресации + + + + ДополнительныйОбъектАдресацииExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + ДополнительныйОбъектАдресацииКонтекстноеМеню + 16 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + ГруппаОтступРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + ГруппаУточнениеРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + OK + 1 + true + true + + true + + false + + OKExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + Form.Command.OK + Auto + true + true + true + UserCmds + Auto + + + Отмена + 2 + true + true + + true + + false + + ОтменаExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + + ДополнительныйОбъектАдресации + + <key>ru</key> + <value>Доп. объект адресации</value> + + 1 + + Characteristic.ОбъектыАдресацииЗадач + + + true + + + true + + + + ИспользуетсяБезОбъектовАдресации + 2 + + Boolean + + + true + + + true + + + + ИспользуетсяСОбъектамиАдресации + 3 + + Boolean + + + true + + + true + + + + ОсновнойОбъектАдресации + + <key>ru</key> + <value>Основной объект адресации</value> + + 4 + + Characteristic.ОбъектыАдресацииЗадач + + + true + + + true + + + + Роль + + <key>ru</key> + <value>Роль исполнителя</value> + + 6 + + CatalogRef.РолиИсполнителей + + + true + + + true + + ShowError + + + ТипыДополнительногоОбъектаАдресации + 7 + + TypeDescription + + + true + + + true + + + + ТипыОсновногоОбъектаАдресации + 8 + + TypeDescription + + + true + + + true + + + + OK + + <key>ru</key> + <value>OK</value> + + 1 + + ru + OK + + + true + + + + OKВыполнить + + + DontUse + + + РольИсполнителя + + CatalogRef.РолиИсполнителей + + + + ОсновнойОбъектАдресации + + + + ДополнительныйОбъектАдресации + + + + ВыборОбъектаАдресации + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/Module.bsl" new file mode 100644 index 00000000..6c836bbf --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/Module.bsl" @@ -0,0 +1,140 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Роль = Параметры.РольИсполнителя; + ОсновнойОбъектАдресации = Параметры.ОсновнойОбъектАдресации; + ДополнительныйОбъектАдресации = Параметры.ДополнительныйОбъектАдресации; + УстановитьТипыОбъектовАдресации(); + УстановитьСостояниеЭлементов(); + + Если Параметры.ВыборОбъектаАдресации Тогда + ТекущийЭлемент = Элементы.ОсновнойОбъектАдресации; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + Если ИспользуетсяБезОбъектовАдресации Тогда + Возврат; + КонецЕсли; + + ЗаданыТипыОсновногоОбъектаАдресации = ИспользуетсяСОбъектамиАдресации И ЗначениеЗаполнено(ТипыОсновногоОбъектаАдресации); + ЗаданыТипыДополнительногоОбъектаАдресации = ИспользуетсяСОбъектамиАдресации И ЗначениеЗаполнено(ТипыДополнительногоОбъектаАдресации); + + Если ЗаданыТипыОсновногоОбъектаАдресации И ОсновнойОбъектАдресации = Неопределено Тогда + + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), Роль.ТипыОсновногоОбъектаАдресации.Наименование ),,, + "ОсновнойОбъектАдресации", Отказ); + + ИначеЕсли ЗаданыТипыДополнительногоОбъектаАдресации И ДополнительныйОбъектАдресации = Неопределено Тогда + + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), Роль.ТипыДополнительногоОбъектаАдресации.Наименование ),,, + "ДополнительныйОбъектАдресации", Отказ); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ИсполнительПриИзменении(Элемент) + + ОсновнойОбъектАдресации = Неопределено; + ДополнительныйОбъектАдресации = Неопределено; + УстановитьТипыОбъектовАдресации(); + УстановитьСостояниеЭлементов(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура OKВыполнить() + + ОчиститьСообщения(); + Если НЕ ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + РезультатВыбора = ПараметрыЗакрытия(); + + ОповеститьОВыборе(РезультатВыбора); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьТипыОбъектовАдресации() + + ТипыОсновногоОбъектаАдресации = Роль.ТипыОсновногоОбъектаАдресации.ТипЗначения; + ТипыДополнительногоОбъектаАдресации = Роль.ТипыДополнительногоОбъектаАдресации.ТипЗначения; + ИспользуетсяСОбъектамиАдресации = Роль.ИспользуетсяСОбъектамиАдресации; + ИспользуетсяБезОбъектовАдресации = Роль.ИспользуетсяБезОбъектовАдресации; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьСостояниеЭлементов() + + ЗаданыТипыОсновногоОбъектаАдресации = ИспользуетсяСОбъектамиАдресации + И ЗначениеЗаполнено(ТипыОсновногоОбъектаАдресации); + ЗаданыТипыДополнительногоОбъектаАдресации = ИспользуетсяСОбъектамиАдресации + И ЗначениеЗаполнено(ТипыДополнительногоОбъектаАдресации); + + Элементы.ОсновнойОбъектАдресации.Заголовок = Роль.ТипыОсновногоОбъектаАдресации.Наименование; + Элементы.ОсновнойОбъектАдресации.Доступность = ЗаданыТипыОсновногоОбъектаАдресации; + Элементы.ОсновнойОбъектАдресации.АвтоОтметкаНезаполненного = ЗаданыТипыОсновногоОбъектаАдресации + И НЕ ИспользуетсяБезОбъектовАдресации; + Элементы.ОсновнойОбъектАдресации.ОграничениеТипа = ТипыОсновногоОбъектаАдресации; + + Элементы.ДополнительныйОбъектАдресации.Заголовок = Роль.ТипыДополнительногоОбъектаАдресации.Наименование; + Элементы.ДополнительныйОбъектАдресации.Доступность = ЗаданыТипыДополнительногоОбъектаАдресации; + Элементы.ДополнительныйОбъектАдресации.АвтоОтметкаНезаполненного = ЗаданыТипыДополнительногоОбъектаАдресации + И НЕ ИспользуетсяБезОбъектовАдресации; + Элементы.ДополнительныйОбъектАдресации.ОграничениеТипа = ТипыДополнительногоОбъектаАдресации; + +КонецПроцедуры + +&НаСервере +Функция ПараметрыЗакрытия() + + Результат = Новый Структура; + Результат.Вставить("РольИсполнителя", Роль); + Результат.Вставить("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации); + Результат.Вставить("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации); + + Если Результат.ОсновнойОбъектАдресации <> Неопределено И Результат.ОсновнойОбъектАдресации.Пустая() Тогда + Результат.ОсновнойОбъектАдресации = Неопределено; + КонецЕсли; + + Если Результат.ДополнительныйОбъектАдресации <> Неопределено И Результат.ДополнительныйОбъектАдресации.Пустая() Тогда + Результат.ДополнительныйОбъектАдресации = Неопределено; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217.mdo" new file mode 100644 index 00000000..ec250116 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217/\320\222\321\213\320\261\320\276\321\200\320\240\320\276\320\273\320\270\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\217.mdo" @@ -0,0 +1,10 @@ + + + ВыборРолиИсполнителя + + ru + Выбор роли исполнителя + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" new file mode 100644 index 00000000..d19e736d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" @@ -0,0 +1,501 @@ + + + + Назначение + 47 + + <key>ru</key> + <value>Назначение</value> + + true + true + + true + + + Назначение + + None + + НазначениеГруппа + 66 + + НазначениеПометка + 63 + true + true + + true + + + + Назначение.Check + + + + НазначениеПометкаРасширеннаяПодсказка + 65 + true + true + + true + + Label + true + true + + Left + + + + НазначениеПометкаКонтекстноеМеню + 64 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + НазначениеЗначение + 60 + true + true + + true + + + + Назначение.Value + + + + НазначениеЗначениеРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + + НазначениеЗначениеКонтекстноеМеню + 61 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Назначение группа</value> + + + НазначениеГруппаРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + НазначениеКоманднаяПанель + 49 + true + true + + true + + Left + + + true + true + + true + + НазначениеСтрокаПоиска + 51 + + НазначениеСтрокаПоискаРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + НазначениеСтрокаПоискаКонтекстноеМеню + 52 + true + true + + true + + true + + + true + + + + true + true + + true + + НазначениеСостояниеПросмотра + 54 + + НазначениеСостояниеПросмотраРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + + НазначениеСостояниеПросмотраКонтекстноеМеню + 55 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НазначениеУправлениеПоиском + 57 + + НазначениеУправлениеПоискомРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + НазначениеУправлениеПоискомКонтекстноеМеню + 58 + true + true + + true + + true + + SearchControlAddition + + true + + + + НазначениеРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + + НазначениеКонтекстноеМеню + 48 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + + Назначение.Picture + + + + ФормаКоманднаяПанель + -1 + + ФормаВыбрать + 21 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + + НазначениеУстановитьФлажки + 68 + true + true + + true + + + НазначениеУстановитьФлажкиРасширеннаяПодсказка + 69 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Назначение.StandardCommand.CheckAll + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + НазначениеСнятьФлажки + 70 + true + true + + true + + + НазначениеСнятьФлажкиРасширеннаяПодсказка + 71 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Назначение.StandardCommand.UncheckAll + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + Назначение + + <key>ru</key> + <value>Назначение</value> + + 2 + + ValueList + + + true + + + true + + + + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать + + + true + + + + Выбрать + + + DontUse + + + Заголовок + + String + + + + + Назначение + + + + ВыбиратьПользователей + + Boolean + + + + ЭтоОтбор + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" new file mode 100644 index 00000000..38f4f0de --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" @@ -0,0 +1,5 @@ + +

        Предназначена для выбора типов пользователей.

        +

        Укажите с помощью флажков нужные типы пользователей, нажмите Выбрать.

        +

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" new file mode 100644 index 00000000..e87a0b27 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" @@ -0,0 +1,68 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Заголовок = Параметры.Заголовок; + + МассивПредставлений = ?(Параметры.ЭтоОтбор, + СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Параметры.Назначение, ", "), + Неопределено); + + Если Параметры.ВыбиратьПользователей Тогда + ДобавитьСтрокуТипа(Справочники.Пользователи.ПустаяСсылка(), Тип("СправочникСсылка.Пользователи"), МассивПредставлений); + КонецЕсли; + + Если ВнешниеПользователи.ИспользоватьВнешнихПользователей() Тогда + + ПустыеСсылки = ПользователиСлужебныйПовтИсп.ПустыеСсылкиТиповОбъектовАвторизации(); + Для Каждого ПустаяСсылка Из ПустыеСсылки Цикл + ДобавитьСтрокуТипа(ПустаяСсылка, ТипЗнч(ПустаяСсылка), МассивПредставлений); + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + + Закрыть(Назначение); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ДобавитьСтрокуТипа(Значение, Тип, МассивПредставлений) + + Представление = Метаданные.НайтиПоТипу(Тип).Синоним; + + Если Параметры.ЭтоОтбор Тогда + Пометка = МассивПредставлений.Найти(Представление) <> Неопределено; + Иначе + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("ТипПользователей", Значение); + НайденныеСтроки = Параметры.Назначение.НайтиСтроки(ПараметрыОтбора); + Пометка = НайденныеСтроки.Количество() = 1; + КонецЕсли; + + Назначение.Добавить(Значение, Представление, Пометка); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" new file mode 100644 index 00000000..1e78d244 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\222\321\213\320\261\320\276\321\200\320\242\320\270\320\277\320\276\320\262\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" @@ -0,0 +1,15 @@ + + + ВыборТиповПользователей + + ru + Выбор типов пользователей + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Form.form" new file mode 100644 index 00000000..3a9334e8 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Form.form" @@ -0,0 +1,551 @@ + + + + <key>ru</key> + <value>Выбор узла плана обмена</value> + + + УзлыПлановОбмена + 14 + + <key>ru</key> + <value>Узлы планов обмена</value> + + true + true + + true + + + УзлыПлановОбмена + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + УзлыПлановОбменаПланОбменаПредставление + 23 + true + true + + true + + + + УзлыПлановОбмена.ПланОбменаПредставление + + + + УзлыПлановОбменаПланОбменаПредставлениеExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + УзлыПлановОбменаПланОбменаПредставлениеКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + УзлыПлановОбменаУзелПредставление + 25 + true + true + + true + + + + УзлыПлановОбмена.УзелПредставление + + + + УзлыПлановОбменаУзелПредставлениеExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + УзлыПлановОбменаУзелПредставлениеКонтекстноеМеню + 26 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + None + + УзлыПлановОбменаКоманднаяПанель + 16 + true + true + + true + + Left + true + + + Selection + УзлыПлановОбменаВыбор + + + true + true + + true + + УзлыПлановОбменаSearchString + 33 + + УзлыПлановОбменаSearchStringExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + УзлыПлановОбменаSearchStringContextMenu + 34 + true + true + + true + + true + + + true + + + + true + true + + true + + УзлыПлановОбменаViewStatus + 36 + + УзлыПлановОбменаViewStatusExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + УзлыПлановОбменаViewStatusContextMenu + 37 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + УзлыПлановОбменаSearchControl + 39 + + УзлыПлановОбменаSearchControlExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + + УзлыПлановОбменаSearchControlContextMenu + 40 + true + true + + true + + true + + SearchControlAddition + + true + + + + УзлыПлановОбменаExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + + УзлыПлановОбменаКонтекстноеМеню + 15 + true + true + + true + + true + + true + true + true + true + true + true +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
        + + ФормаКоманднаяПанель + -1 + + ФормаВыбрать + 6 + true + true + + true + + + ФормаВыбратьExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + + КомандыСпискаУзлов + 27 + true + true + + true + + + <key>ru</key> + <value>Команды списка узлов</value> + + + КомандыСпискаУзловExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + + Item.УзлыПлановОбмена + + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + HorizontalIfPossible + true + true + true + true + true + + УзлыПлановОбмена + + <key>ru</key> + <value>Узлы планов обмена</value> + + 2 + + ValueTable + + + true + + + true + + + ПланОбмена + 1 + + ExchangePlanRef + + + true + + + true + + + + ПланОбменаПредставление + + <key>ru</key> + <value>Программа</value> + + 3 + + String + + + + true + + + true + + + + Узел + 5 + + ExchangePlanRef + + + true + + + true + + + + УзелПредставление + + <key>ru</key> + <value>Информационная база</value> + + 6 + + String + + + + true + + + true + + + + + РежимПодбора + 4 + + Boolean + + + true + + + true + + + + МножественныйВыбор + 1 + + Boolean + + + true + + + true + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать + + + true + + + StdPicture.ChooseValue + + + + Выбрать + + + TextPicture + DontUse + + + ВыбиратьВсеУзлы + + Boolean + + + + ПланыОбменаДляВыбора + + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Help/ru.html" new file mode 100644 index 00000000..00b6829c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Help/ru.html" @@ -0,0 +1,9 @@ + +

        Предназначен для выбора узлов плана обмена (информационных баз).

        +

        Вызывается по команде Подобрать или Добавить из других объектов программы, например, при установке Даты запрета загрузки данных.

        +

        В списке выводится:

        +
        • Программа - перечень программ, с которыми настроена синхронизация данных.  +
        • Информационная база - перечень информационных баз, с которыми настроена синхронизация данных

        Выбор узла плана обмена

        +
        • Выделите нужное значение, нажмите Выбрать.

        Подбор узлов плана обмена

        +
        • Выделите несколько значений, нажмите Выбрать.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Module.bsl" new file mode 100644 index 00000000..60589c28 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/Module.bsl" @@ -0,0 +1,164 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// Форма выбора для полей типа "узел плана обмена". +// +//////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Обработка стандартных параметров. + Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда + РежимПодбора = Истина; + Если Параметры.Свойство("МножественныйВыбор") И Параметры.МножественныйВыбор = Истина Тогда + МножественныйВыбор = Истина; + КонецЕсли; + КонецЕсли; + + // Подготовка списка используемых планов обмена. + Если ТипЗнч(Параметры.ПланыОбменаДляВыбора) = Тип("Массив") Тогда + Для каждого Элемент Из Параметры.ПланыОбменаДляВыбора Цикл + Если ТипЗнч(Элемент) = Тип("Строка") Тогда + // Поиск плана обмена по имени. + ДобавитьИспользуемыйПланОбмена(Метаданные.НайтиПоПолномуИмени(Элемент)); + ДобавитьИспользуемыйПланОбмена(Метаданные.НайтиПоПолномуИмени("ПланОбмена." + Элемент)); + // + ИначеЕсли ТипЗнч(Элемент) = Тип("Тип") Тогда + // Поиск плана обмена по заданному типу. + ДобавитьИспользуемыйПланОбмена(Метаданные.НайтиПоТипу(Элемент)); + Иначе + // Поиск плана обмена по типу заданного узла. + ДобавитьИспользуемыйПланОбмена(Метаданные.НайтиПоТипу(ТипЗнч(Элемент))); + КонецЕсли; + КонецЦикла; + Иначе + // Все планы обмена участвуют в выборе. + Для каждого ОбъектМетаданных Из Метаданные.ПланыОбмена Цикл + ДобавитьИспользуемыйПланОбмена(ОбъектМетаданных); + КонецЦикла; + КонецЕсли; + + УзлыПлановОбмена.Сортировать("ПланОбменаПредставление Возр"); + + Если РежимПодбора Тогда + Заголовок = НСтр("ru = 'Подбор узлов планов обмена'"); + КонецЕсли; + Если МножественныйВыбор Тогда + Элементы.УзлыПлановОбмена.РежимВыделения = РежимВыделенияТаблицы.Множественный; + КонецЕсли; + + ТекущаяСтрока = Неопределено; + Параметры.Свойство("ТекущаяСтрока", ТекущаяСтрока); + + НайденныеСтроки = УзлыПлановОбмена.НайтиСтроки(Новый Структура("Узел", ТекущаяСтрока)); + + Если НайденныеСтроки.Количество() > 0 Тогда + Элементы.УзлыПлановОбмена.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыУзлыПлановОбмена + +&НаКлиенте +Процедура УзлыПлановОбменаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Если МножественныйВыбор Тогда + ЗначениеВыбора = Новый Массив; + ЗначениеВыбора.Добавить(УзлыПлановОбмена.НайтиПоИдентификатору(ВыбраннаяСтрока).Узел); + ОповеститьОВыборе(ЗначениеВыбора); + Иначе + ОповеститьОВыборе(УзлыПлановОбмена.НайтиПоИдентификатору(ВыбраннаяСтрока).Узел); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + + Если МножественныйВыбор Тогда + ЗначениеВыбора = Новый Массив; + Для Каждого ВыделеннаяСтрока Из Элементы.УзлыПлановОбмена.ВыделенныеСтроки Цикл + ЗначениеВыбора.Добавить(УзлыПлановОбмена.НайтиПоИдентификатору(ВыделеннаяСтрока).Узел) + КонецЦикла; + ОповеститьОВыборе(ЗначениеВыбора); + Иначе + ТекущиеДанные = Элементы.УзлыПлановОбмена.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Узел не выбран.'")); + Иначе + ОповеститьОВыборе(ТекущиеДанные.Узел); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ДобавитьИспользуемыйПланОбмена(ОбъектМетаданных) + + Если ОбъектМетаданных = Неопределено + ИЛИ НЕ Метаданные.ПланыОбмена.Содержит(ОбъектМетаданных) Тогда + Возврат; + КонецЕсли; + + Если Не ПравоДоступа("Чтение", ОбъектМетаданных) Тогда + Возврат; + КонецЕсли; + + ПланОбмена = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя()).ПустаяСсылка(); + + // Заполнение узлов используемых планов обмена. + Если Параметры.ВыбиратьВсеУзлы Тогда + НоваяСтрока = УзлыПлановОбмена.Добавить(); + НоваяСтрока.ПланОбмена = ПланОбмена; + НоваяСтрока.ПланОбменаПредставление = ОбъектМетаданных.Синоним; + НоваяСтрока.Узел = ПланОбмена; + НоваяСтрока.УзелПредставление = НСтр("ru = '<Все информационные базы>'"); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ТаблицаПланаОбмена.Ссылка, + | ТаблицаПланаОбмена.Представление КАК Представление + |ИЗ + | &ТаблицаПланаОбмена КАК ТаблицаПланаОбмена + |ГДЕ + | НЕ ТаблицаПланаОбмена.ЭтотУзел + | + |УПОРЯДОЧИТЬ ПО + | Представление"; + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаПланаОбмена", ОбъектМетаданных.ПолноеИмя()); + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + НоваяСтрока = УзлыПлановОбмена.Добавить(); + НоваяСтрока.ПланОбмена = ПланОбмена; + НоваяСтрока.ПланОбменаПредставление = ОбъектМетаданных.Синоним; + НоваяСтрока.Узел = Выборка.Ссылка; + НоваяСтрока.УзелПредставление = Выборка.Представление; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260.mdo" new file mode 100644 index 00000000..13fc4dc3 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260/\320\222\321\213\320\261\320\276\321\200\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\276\320\262\320\236\320\261\320\274\320\265\320\275\320\260.mdo" @@ -0,0 +1,15 @@ + + + ВыборУзловПлановОбмена + + ru + Выбор узлов планов обмена + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Form.form" new file mode 100644 index 00000000..f82b3535 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Form.form" @@ -0,0 +1,657 @@ + + + + ГруппаВыборФорматов + 31 + + ВыбранныеФорматы + 32 + true + true + + true + + + ВыбранныеФорматыСохранения + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + Pickup + SelectAll + SortListAsc + SortListDesc + + ВыбранныеФорматыСохраненияПометка + 37 + true + true + + true + + + + ВыбранныеФорматыСохранения.Check + + + + ВыбранныеФорматыСохраненияПометкаExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + + ВыбранныеФорматыСохраненияПометкаКонтекстноеМеню + 38 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ВыбранныеФорматыСохраненияЗначение + 35 + true + true + + true + + + + ВыбранныеФорматыСохранения.Value + + + + ВыбранныеФорматыСохраненияЗначениеExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + + ВыбранныеФорматыСохраненияЗначениеКонтекстноеМеню + 36 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ВыбранныеФорматыКоманднаяПанель + 34 + true + true + + true + + Left + + + true + true + + true + + ВыбранныеФорматыSearchString + 50 + + ВыбранныеФорматыSearchStringExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + + ВыбранныеФорматыSearchStringContextMenu + 51 + true + true + + true + + true + + + true + + + + true + true + + true + + ВыбранныеФорматыViewStatus + 53 + + ВыбранныеФорматыViewStatusExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + ВыбранныеФорматыViewStatusContextMenu + 54 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВыбранныеФорматыSearchControl + 56 + + ВыбранныеФорматыSearchControlExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + + ВыбранныеФорматыSearchControlContextMenu + 57 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВыбранныеФорматыExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + + ВыбранныеФорматыКонтекстноеМеню + 33 + true + true + + true + + true + + true + 10 + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + true + true + + ВыбранныеФорматыСохранения.Picture + + + true + true + + true + + + ГруппаВыборФорматовExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + ГруппаДополнительныеПараметры + 39 + + УпаковатьВАрхив + 40 + + <key>ru</key> + <value>Дополнительно упаковать в архив (.zip)</value> + + true + true + + true + + + + УпаковатьВАрхив + + + Right + + УпаковатьВАрхивExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + + УпаковатьВАрхивКонтекстноеМеню + 41 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПереводитьИменаФайловВТранслит + 59 + true + true + + true + + + + ПереводитьИменаФайловВТранслит + + + Right + + ru + Сохраненные файлы будут иметь имена, содержащие только латинские буквы и цифры, для возможности переноса между различными операционными системами. Например, файл "Документ.txt" будет сохранен с именем "Document.txt". + + Button + + ПереводитьИменаФайловВТранслитРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + ПереводитьИменаФайловВТранслитКонтекстноеМеню + 60 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + ГруппаДополнительныеПараметрыExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + КнопкаПрикрепить + 29 + true + true + + true + + false + + КнопкаПрикрепитьExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + + КнопкаОтмена + 30 + true + true + + true + + + КнопкаОтменаExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПередЗагрузкойДанныхИзНастроекНаСервере + + Abort + Close + CustomizeForm + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + Use + UseList + true + true + Vertical + true + true + true + true + true + + ВыбранныеФорматыСохранения + + <key>ru</key> + <value>Выбранные форматы сохранения</value> + + 3 + + ValueList + + + true + + + true + + + ВыбранныеФорматыСохранения + + + + + + + УпаковатьВАрхив + + <key>ru</key> + <value>Упаковать в архив (.zip)</value> + + 5 + + Boolean + + + true + + + true + + + УпаковатьВАрхив + + + + ПереводитьИменаФайловВТранслит + + <key>ru</key> + <value>Транслитерировать имена файлов</value> + + 1 + + Boolean + + + true + + + true + + + ПереводитьИменаФайловВТранслит + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать + + + true + + + + Выбрать + + + DontUse + + + НастройкиФормата + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Help/ru.html" new file mode 100644 index 00000000..405b45e5 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Help/ru.html" @@ -0,0 +1,7 @@ + +

        Предназначена для выбора формата вложений при отправке печатных форм по электронной почте.

        +

        Вызывается по кнопке  Отправить по почте.

        +
        • Укажите с помощью флажков, в каком формате (или нескольких форматах) нужно отправить документ. +
        • Для уменьшения размера вложений печатную форму перед отправкой рекомендуется упаковать в архив (формат .zip). +
        • При необходимости включите флажок Транслитерировать имена файлов. В этом случае сохраненные файлы будут иметь имена, содержащие только латинские буквы и цифры, для возможности переноса между различными операционными системами. Например, файл Отчет.mxl будет сохранен с именем Otchet.mxl. +
        • Нажмите кнопку Выбрать. Настройки будут сохранены.
        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Module.bsl" new file mode 100644 index 00000000..d0e2c982 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/Module.bsl" @@ -0,0 +1,120 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Загрузка переданных параметров. + ПереданныйМассивФорматов = Новый Массив; + Если Параметры.НастройкиФормата <> Неопределено Тогда + ПереданныйМассивФорматов = Параметры.НастройкиФормата.ФорматыСохранения; + УпаковатьВАрхив = Параметры.НастройкиФормата.УпаковатьВАрхив; + ПереводитьИменаФайловВТранслит = Параметры.НастройкиФормата.ПереводитьИменаФайловВТранслит; + КонецЕсли; + + // заполнение списка форматов + Для Каждого ФорматСохранения Из СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента() Цикл + Пометка = Ложь; + Если Параметры.НастройкиФормата <> Неопределено Тогда + ПереданныйФормат = ПереданныйМассивФорматов.Найти(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента)); + Если ПереданныйФормат <> Неопределено Тогда + Пометка = Истина; + КонецЕсли; + КонецЕсли; + ВыбранныеФорматыСохранения.Добавить(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента), ФорматСохранения.Представление, Пометка, ФорматСохранения.Картинка); + КонецЦикла; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки) + Если Параметры.НастройкиФормата <> Неопределено Тогда + Если Параметры.НастройкиФормата.ФорматыСохранения.Количество() > 0 Тогда + Настройки.Удалить("ВыбранныеФорматыСохранения"); + КонецЕсли; + Если Параметры.НастройкиФормата.Свойство("УпаковатьВАрхив") Тогда + Настройки.Удалить("УпаковатьВАрхив"); + КонецЕсли; + Если Параметры.НастройкиФормата.Свойство("ПереводитьИменаФайловВТранслит") Тогда + Настройки.Удалить("ПереводитьИменаФайловВТранслит"); + КонецЕсли; + Возврат; + КонецЕсли; + + ФорматыСохраненияИзНастроек = Настройки["ВыбранныеФорматыСохранения"]; + Если ФорматыСохраненияИзНастроек <> Неопределено Тогда + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + ФорматИзНастроек = ФорматыСохраненияИзНастроек.НайтиПоЗначению(ВыбранныйФормат.Значение); + ВыбранныйФормат.Пометка = ФорматИзНастроек <> Неопределено И ФорматИзНастроек.Пометка; + КонецЦикла; + Настройки.Удалить("ВыбранныеФорматыСохранения"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + УстановитьВыборФормата(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + РезультатВыбора = ВыбранныеНастройкиФормата(); + ОповеститьОВыборе(РезультатВыбора); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьВыборФормата() + + ЕстьВыбранныйФормат = Ложь; + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + Если ВыбранныйФормат.Пометка Тогда + ЕстьВыбранныйФормат = Истина; + КонецЕсли; + КонецЦикла; + + Если Не ЕстьВыбранныйФормат Тогда + ВыбранныеФорматыСохранения[0].Пометка = Истина; // Выбор по умолчанию - первый в списке. + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ВыбранныеНастройкиФормата() + + ФорматыСохранения = Новый Массив; + + Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл + Если ВыбранныйФормат.Пометка Тогда + ФорматыСохранения.Добавить(ВыбранныйФормат.Значение); + КонецЕсли; + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("УпаковатьВАрхив", УпаковатьВАрхив); + Результат.Вставить("ФорматыСохранения", ФорматыСохранения); + Результат.Вставить("ПереводитьИменаФайловВТранслит", ПереводитьИменаФайловВТранслит); + + Возврат Результат; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271.mdo" new file mode 100644 index 00000000..9eeacf66 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271/\320\222\321\213\320\261\320\276\321\200\320\244\320\276\321\200\320\274\320\260\321\202\320\260\320\222\320\273\320\276\320\266\320\265\320\275\320\270\320\271.mdo" @@ -0,0 +1,16 @@ + + + ВыборФорматаВложений + + ru + Выбор формата вложений + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" new file mode 100644 index 00000000..6da633b0 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" @@ -0,0 +1,925 @@ + + + + <key>ru</key> + <value>Группы пользователя</value> + + + ГруппыИлиПредупреждение + 14 + + Группа + 15 + + КоманднаяПанель + 17 + + ФормаЗаписатьИЗакрыть + 9 + true + true + + true + + + ФормаЗаписатьИЗакрытьExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаИсключитьИзВсехГрупп + 11 + true + true + + true + + + ФормаИсключитьИзВсехГруппExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИсключитьИзВсехГрупп + Auto + true + true + UserCmds + Auto + + + ВывестиСписок + 20 + true + true + + true + + + ВывестиСписокExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ДеревоГрупп.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + ДеревоГрупп + 1 + + <key>ru</key> + <value>Дерево групп</value> + + true + true + + true + + + ДеревоГрупп + + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + ГруппаПометкаКартинка + 8 + + ДеревоГруппПометка + 6 + true + true + + true + + + + ДеревоГрупп.Пометка + + + + OnChange + ДеревоГруппПометкаПриИзменении + + + ДеревоГруппПометкаExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + + ДеревоГруппПометкаКонтекстноеМеню + 7 + true + true + + true + + true + + CheckBoxField + Left + EnterOnInput + true + Left + true + + + + ДеревоГруппКартинка + 12 + true + true + + true + + + + ДеревоГрупп.Картинка + + + + ДеревоГруппКартинкаExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + ДеревоГруппКартинкаКонтекстноеМеню + 13 + true + true + + true + + true + + PictureField + Left + EnterOnInput + true + Left + true + + true + true + true + true + + CommonPicture.СостоянияПользователей + + + + + ДеревоГруппГруппа + 4 + true + true + + true + + + + ДеревоГрупп.Группа + + + + ДеревоГруппГруппаExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + ДеревоГруппГруппаКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + true + Left + EnterOnInput + true + Left + true + + true + true + true + false + true + true + + + true + true + + true + + + <key>ru</key> + <value>Пометка картинка</value> + + + ГруппаПометкаКартинкаExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ДеревоГруппКоманднаяПанель + 3 + true + true + + true + + Left + + + Selection + ДеревоГруппВыбор + + + true + true + + true + + ДеревоГруппСтрокаПоиска + 43 + + ДеревоГруппСтрокаПоискаРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + + ДеревоГруппСтрокаПоискаКонтекстноеМеню + 44 + true + true + + true + + true + + + true + + + + true + true + + true + + ДеревоГруппСостояниеПросмотра + 46 + + ДеревоГруппСостояниеПросмотраРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + + ДеревоГруппСостояниеПросмотраКонтекстноеМеню + 47 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДеревоГруппУправлениеПоиском + 49 + + ДеревоГруппУправлениеПоискомРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + + ДеревоГруппУправлениеПоискомКонтекстноеМеню + 50 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДеревоГруппExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + ДеревоГруппКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + Auto + Auto + ExpandAllLevels + true + true + true + true + + true + true + + true + + + <key>ru</key> + <value>Группа</value> + + + ГруппаExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Предупреждение + 16 + + КартинкаПредупреждения + 21 + + <key>ru</key> + <value>Картинка предупреждения</value> + + true + true + + true + + + КартинкаПредупрежденияExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + + КартинкаПредупрежденияКонтекстноеМеню + 22 + true + true + + true + + true + + true + true + + + CommonPicture.Информация32 + + + + + ТекстПредупреждения + 23 + + <key>ru</key> + <value>Не заведено ни одной группы пользователей.</value> + + true + true + + true + + + ТекстПредупрежденияExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + ТекстПредупрежденияКонтекстноеМеню + 24 + true + true + + true + + true + + Label + 2 + true + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Предупреждение</value> + + + ПредупреждениеExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + true + true + + true + + + <key>ru</key> + <value>Группы или предупреждение</value> + + + ГруппыИлиПредупреждениеExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + ДеревоГрупп + + <key>ru</key> + <value>Дерево групп</value> + + 1 + + ValueTree + + + true + + + true + + + Группа + + <key>ru</key> + <value>Группа</value> + + 1 + + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + + + true + + + true + + + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 2 + + Number + + 10 + + + + true + + + true + + + + Картинка + + <key>ru</key> + <value>Картинка</value> + + 3 + + Number + + 10 + + + + true + + + true + + + + ГруппаНеИзменяется + 4 + + Boolean + + + true + + + true + + + + + СписокПользователей + 3 + + + true + + + true + + + + РежимОткрытияИзКарточкиПользователя + 4 + + Boolean + + + true + + + true + + + + ВнешниеПользователи + 2 + + Boolean + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + true + + + StdPicture.WriteAndClose + + + + ЗаписатьИЗакрыть + + + Text + DontUse + + + ИсключитьИзВсехГрупп + + <key>ru</key> + <value>Исключить из всех групп</value> + + 2 + + ru + Исключить из всех групп + + + true + + + + СнятьФлажки + + + DontUse + + + Пользователь + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + + Пользователи + + + + ВнешниеПользователи + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" new file mode 100644 index 00000000..da5d21b4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" @@ -0,0 +1,11 @@ + +

        Предназначен для назначения групп пользователю (внешнему пользователю).

        +

        Список групп пользователя можно открыть по команде Группы панели навигации пользователя (внешнего пользователя).

        +

        Назначение групп пользователю

        +
        • Включите флажок, соответствующий нужной группе. +
        • Нажмите Записать и закрыть.

        Удаление из всех групп

        +

        Эту возможность можно использовать, если группы были назначены ошибочно. Быстро удалите пользователя (внешнего пользователя) из всех групп, затем заново назначьте группы.

        +
        • Нажмите Исключить из всех групп.

        См. также

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" new file mode 100644 index 00000000..4050a35e --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" @@ -0,0 +1,607 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Параметры.Пользователь <> Неопределено Тогда + МассивПользователей = Новый Массив; + МассивПользователей.Добавить(Параметры.Пользователь); + + ВнешниеПользователи = ?( + ТипЗнч(Параметры.Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи"), Истина, Ложь); + + Элементы.ФормаЗаписатьИЗакрыть.Заголовок = НСтр("ru = 'Записать'"); + + РежимОткрытияИзКарточкиПользователя = Истина; + Иначе + МассивПользователей = Параметры.Пользователи; + ВнешниеПользователи = Параметры.ВнешниеПользователи; + РежимОткрытияИзКарточкиПользователя = Ложь; + КонецЕсли; + + КоличествоПользователей = МассивПользователей.Количество(); + Если КоличествоПользователей = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не выбрано ни одного пользователя.'"); + КонецЕсли; + + ТипПользователей = Неопределено; + Для Каждого ПользовательИзМассива Из МассивПользователей Цикл + Если ТипПользователей = Неопределено Тогда + ТипПользователей = ТипЗнч(ПользовательИзМассива); + КонецЕсли; + ТипПользователяИзМассива = ТипЗнч(ПользовательИзМассива); + + Если ТипПользователяИзМассива <> Тип("СправочникСсылка.Пользователи") + И ТипПользователяИзМассива <> Тип("СправочникСсылка.ВнешниеПользователи") Тогда + + ВызватьИсключение НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'"); + КонецЕсли; + + Если ТипПользователей <> ТипПользователяИзМассива Тогда + ВызватьИсключение НСтр("ru = 'Команда не может быть выполнена сразу для двух разных видов пользователей.'"); + КонецЕсли; + КонецЦикла; + + Если КоличествоПользователей > 1 + И Параметры.Пользователь = Неопределено Тогда + + Заголовок = НСтр("ru = 'Группы пользователей'"); + Элементы.ДеревоГруппПометка.ТриСостояния = Истина; + КонецЕсли; + + СписокПользователей = Новый Структура; + СписокПользователей.Вставить("МассивПользователей", МассивПользователей); + СписокПользователей.Вставить("КоличествоПользователей", КоличествоПользователей); + ЗаполнитьДеревоГрупп(); + + Если ДеревоГрупп.ПолучитьЭлементы().Количество() = 0 Тогда + Элементы.ГруппыИлиПредупреждение.ТекущаяСтраница = Элементы.Предупреждение; + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.КоманднаяПанель.Видимость = Ложь; + КонецЕсли; + Возврат; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + Элементы.ФормаЗаписатьИЗакрыть.Доступность = Ложь; + Элементы.ФормаИсключитьИзВсехГрупп.Доступность = Ложь; + Элементы.ДеревоГрупп.ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если РежимОткрытияИзКарточкиПользователя Тогда + Возврат; + КонецЕсли; + + Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьНачало", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоГрупп + +&НаКлиенте +Процедура ДеревоГруппВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПоказатьЗначение(,Элемент.ТекущиеДанные.Группа); + +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоГруппПометкаПриИзменении(Элемент) + Модифицированность = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + ЗаписатьИЗакрытьНачало(); +КонецПроцедуры + +&НаКлиенте +Процедура СнятьФлажки(Команда) + + ЗаполнитьДеревоГрупп(Истина); + РазвернутьДеревоЗначений(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоГруппПометка.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоГрупп.ГруппаНеИзменяется"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрытьНачало(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт + + УведомлениеПользователя = Новый Структура; + УведомлениеПользователя.Вставить("Сообщение"); + УведомлениеПользователя.Вставить("ЕстьОшибки"); + УведомлениеПользователя.Вставить("ПолныйТекстСообщения"); + + ЗаписатьИзменения(УведомлениеПользователя); + + Если УведомлениеПользователя.ЕстьОшибки = Ложь Тогда + Если УведомлениеПользователя.Сообщение <> Неопределено Тогда + ПоказатьОповещениеПользователя( + НСтр("ru = 'Перемещение пользователей'"), , УведомлениеПользователя.Сообщение, БиблиотекаКартинок.Информация32); + КонецЕсли; + Иначе + + Если УведомлениеПользователя.ПолныйТекстСообщения <> Неопределено Тогда + ТекстВопроса = УведомлениеПользователя.Сообщение; + КнопкиВопроса = Новый СписокЗначений; + КнопкиВопроса.Добавить("Ок", НСтр("ru = 'ОК'")); + КнопкиВопроса.Добавить("ПоказатьОтчет", НСтр("ru = 'Показать отчет'")); + Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьОбработкаВопроса", + ЭтотОбъект, УведомлениеПользователя.ПолныйТекстСообщения); + ПоказатьВопрос(Оповещение, ТекстВопроса, КнопкиВопроса,, КнопкиВопроса[0].Значение); + Иначе + Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьОбработкаПредупреждения", ЭтотОбъект); + ПоказатьПредупреждение(Оповещение, УведомлениеПользователя.Сообщение); + КонецЕсли; + + Возврат; + КонецЕсли; + + Модифицированность = Ложь; + ЗаписатьИЗакрытьЗавершение(); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьДеревоГрупп(ТолькоСнятьФлажки = Ложь) + + ДеревоГруппПриемник = РеквизитФормыВЗначение("ДеревоГрупп"); + Если Не ТолькоСнятьФлажки Тогда + ДеревоГруппПриемник.Строки.Очистить(); + КонецЕсли; + + Если ТолькоСнятьФлажки Тогда + + БылиИзменения = Ложь; + Найденные = ДеревоГруппПриемник.Строки.НайтиСтроки(Новый Структура("Пометка", 1), Истина); + Для Каждого СтрокаДерева Из Найденные Цикл + Если Не СтрокаДерева.ГруппаНеИзменяется Тогда + СтрокаДерева.Пометка = 0; + БылиИзменения = Истина; + КонецЕсли; + КонецЦикла; + + Найденные = ДеревоГруппПриемник.Строки.НайтиСтроки(Новый Структура("Пометка", 2), Истина); + Для Каждого СтрокаДерева Из Найденные Цикл + СтрокаДерева.Пометка = 0; + БылиИзменения = Истина; + КонецЦикла; + + Если БылиИзменения Тогда + Модифицированность = Истина; + КонецЕсли; + + ЗначениеВРеквизитФормы(ДеревоГруппПриемник, "ДеревоГрупп"); + Возврат; + КонецЕсли; + + ГруппыПользователей = Неопределено; + ПодчиненныеГруппы = Новый Массив; + МассивРодителей = Новый Массив; + + Если ВнешниеПользователи Тогда + ПустаяГруппа = Справочники.ГруппыВнешнихПользователей.ПустаяСсылка(); + ПолучитьГруппыВнешнихПользователей(ГруппыПользователей); + Иначе + ПустаяГруппа = Справочники.ГруппыПользователей.ПустаяСсылка(); + ПолучитьГруппыПользователей(ГруппыПользователей); + КонецЕсли; + + Если ГруппыПользователей.Количество() <= 1 Тогда + Элементы.ГруппыИлиПредупреждение.ТекущаяСтраница = Элементы.Предупреждение; + Возврат; + КонецЕсли; + + ПолучитьПодчиненныеГруппы(ГруппыПользователей, ПодчиненныеГруппы, ПустаяГруппа); + + Если ТипЗнч(СписокПользователей.МассивПользователей[0]) = Тип("СправочникСсылка.Пользователи") Тогда + ТипПользователя = "Пользователь"; + Иначе + ТипПользователя = "ВнешнийПользователь"; + КонецЕсли; + + Пока ПодчиненныеГруппы.Количество() > 0 Цикл + МассивРодителей.Очистить(); + + Для Каждого Группа Из ПодчиненныеГруппы Цикл + + Если Группа.Родитель = ПустаяГруппа Тогда + НоваяСтрокаГрупп = ДеревоГруппПриемник.Строки.Добавить(); + НоваяСтрокаГрупп.Группа = Группа.Ссылка; + НоваяСтрокаГрупп.Картинка = ?(ТипПользователя = "Пользователь", 3, 9); + + Если СписокПользователей.КоличествоПользователей = 1 Тогда + ПользовательКосвенноВключенВГруппу = Ложь; + ПользовательСсылка = СписокПользователей.МассивПользователей[0]; + + Если ТипПользователя = "ВнешнийПользователь" Тогда + + Тип = ТипЗнч(ПользовательСсылка.ОбъектАвторизации); + ОписаниеТипаСсылки = Новый ОписаниеТипов(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Тип)); + Значение = ОписаниеТипаСсылки.ПривестиЗначение(Неопределено); + Назначение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Группа.Ссылка, "Назначение").Выгрузить(); + + Отбор = Новый Структура; + Отбор.Вставить("ТипПользователей", Значение); + + ПользовательКосвенноВключенВГруппу = Группа.ВсеОбъектыАвторизации + И Назначение.НайтиСтроки(Отбор).Количество() <> 0; + НоваяСтрокаГрупп.ГруппаНеИзменяется = ПользовательКосвенноВключенВГруппу; + КонецЕсли; + + НайденныйПользователь = Группа.Ссылка.Состав.Найти(ПользовательСсылка, ТипПользователя); + НоваяСтрокаГрупп.Пометка = ?(НайденныйПользователь <> Неопределено Или ПользовательКосвенноВключенВГруппу, 1, 0); + Иначе + НоваяСтрокаГрупп.Пометка = 2; + КонецЕсли; + + Иначе + ГруппаРодитель = + ДеревоГруппПриемник.Строки.НайтиСтроки(Новый Структура("Группа", Группа.Родитель), Истина); + НоваяСтрокаПодчиненныхГрупп = ГруппаРодитель[0].Строки.Добавить(); + НоваяСтрокаПодчиненныхГрупп.Группа = Группа.Ссылка; + НоваяСтрокаПодчиненныхГрупп.Картинка = ?(ТипПользователя = "Пользователь", 3, 9); + + Если СписокПользователей.КоличествоПользователей = 1 Тогда + НоваяСтрокаПодчиненныхГрупп.Пометка = ?(Группа.Ссылка.Состав.Найти( + СписокПользователей.МассивПользователей[0], ТипПользователя) = Неопределено, 0, 1); + Иначе + НоваяСтрокаПодчиненныхГрупп.Пометка = 2; + КонецЕсли; + + КонецЕсли; + + МассивРодителей.Добавить(Группа.Ссылка); + КонецЦикла; + ПодчиненныеГруппы.Очистить(); + + Для Каждого Элемент Из МассивРодителей Цикл + ПолучитьПодчиненныеГруппы(ГруппыПользователей, ПодчиненныеГруппы, Элемент); + КонецЦикла; + + КонецЦикла; + + ДеревоГруппПриемник.Строки.Сортировать("Группа Возр", Истина); + ЗначениеВРеквизитФормы(ДеревоГруппПриемник, "ДеревоГрупп"); + +КонецПроцедуры + +// Получает группы пользователей. +// +// Параметры: +// ГруппыПользователей - ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ГруппыПользователей +// * Родитель - СправочникСсылка.ГруппыПользователей +// +&НаСервере +Процедура ПолучитьГруппыПользователей(ГруппыПользователей) + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | ГруппыПользователей.Ссылка, + | ГруппыПользователей.Родитель + |ИЗ + | Справочник.ГруппыПользователей КАК ГруппыПользователей + |ГДЕ + | ГруппыПользователей.ПометкаУдаления <> ИСТИНА"; + + ГруппыПользователей = Запрос.Выполнить().Выгрузить(); + +КонецПроцедуры + +// Получает группы внешних пользователей. +// +// Параметры: +// ГруппыПользователей - ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ГруппыВнешнихПользователей +// * Родитель - СправочникСсылка.ГруппыВнешнихПользователей +// * ВсеОбъектыАвторизации - Булево +// +&НаСервере +Процедура ПолучитьГруппыВнешнихПользователей(ГруппыПользователей) + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | ГруппыВнешнихПользователей.Ссылка, + | ГруппыВнешнихПользователей.Родитель, + | ГруппыВнешнихПользователей.ВсеОбъектыАвторизации + |ИЗ + | Справочник.ГруппыВнешнихПользователей КАК ГруппыВнешнихПользователей + |ГДЕ + | ГруппыВнешнихПользователей.ПометкаУдаления <> ИСТИНА"; + + ГруппыПользователей = Запрос.Выполнить().Выгрузить(); + +КонецПроцедуры + +// Получает дочерние группы пользователей. +// +// Параметры: +// ГруппыПользователей - см. ПолучитьГруппыВнешнихПользователей.ГруппыПользователей +// ПодчиненныеГруппы - Массив +// ГруппаРодитель - СправочникСсылка.ГруппыПользователей +// - СправочникСсылка.ГруппыВнешнихПользователей +// +&НаСервере +Процедура ПолучитьПодчиненныеГруппы(ГруппыПользователей, ПодчиненныеГруппы, ГруппаРодитель) + + ПараметрыОтбора = Новый Структура("Родитель", ГруппаРодитель); + ОтобранныеСтроки = ГруппыПользователей.НайтиСтроки(ПараметрыОтбора); + + Для Каждого Элемент Из ОтобранныеСтроки Цикл + + Если Элемент.Ссылка = Справочники.ГруппыПользователей.ВсеПользователи + Или Элемент.Ссылка = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + Продолжить; + КонецЕсли; + + ПодчиненныеГруппы.Добавить(Элемент); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьИзменения(УведомлениеПользователя) + + МассивПользователей = Неопределено; + НеПеремещенныеПользователи = Новый Соответствие; + ДеревоГруппИсточник = ДеревоГрупп.ПолучитьЭлементы(); + ПерезаполнитьСоставГрупп(ДеревоГруппИсточник, МассивПользователей, НеПеремещенныеПользователи); + СформироватьТекстСообщения(МассивПользователей, УведомлениеПользователя, НеПеремещенныеПользователи) + +КонецПроцедуры + +// Описание +// +// Параметры: +// ДеревоГруппИсточник - ДанныеФормыКоллекцияЭлементовДерева +// МассивПеремещенныхПользователей - Массив из СправочникСсылка.Пользователи +// НеПеремещенныеПользователи - Соответствие из КлючИЗначение: +// * Ключ - СправочникСсылка.Пользователи +// * Значение - Массив из СправочникСсылка.ГруппыПользователей +// - СправочникСсылка.ГруппыВнешнихПользователей +// +&НаСервере +Процедура ПерезаполнитьСоставГрупп(ДеревоГруппИсточник, МассивПеремещенныхПользователей, НеПеремещенныеПользователи) + + МассивПользователей = СписокПользователей.МассивПользователей; // Массив из СправочникСсылка.Пользователи + Если МассивПеремещенныхПользователей = Неопределено Тогда + МассивПеремещенныхПользователей = Новый Массив; + КонецЕсли; + + Для Каждого СтрокаДерева Из ДеревоГруппИсточник Цикл + + Если СтрокаДерева.Пометка = 1 + И Не СтрокаДерева.ГруппаНеИзменяется Тогда + + Для Каждого ПользовательСсылка Из МассивПользователей Цикл + + Если ТипЗнч(ПользовательСсылка) = Тип("СправочникСсылка.Пользователи") Тогда + ТипПользователя = "Пользователь"; + Иначе + ТипПользователя = "ВнешнийПользователь"; + ПеремещениеВозможно = ПользователиСлужебный.ВозможноПеремещениеПользователя(СтрокаДерева.Группа, ПользовательСсылка); + + Если Не ПеремещениеВозможно Тогда + + Если НеПеремещенныеПользователи.Получить(ПользовательСсылка) = Неопределено Тогда + НеПеремещенныеПользователи.Вставить(ПользовательСсылка, Новый Массив); + НеПеремещенныеПользователи[ПользовательСсылка].Добавить(СтрокаДерева.Группа); + Иначе + НеПеремещенныеПользователи[ПользовательСсылка].Добавить(СтрокаДерева.Группа); + КонецЕсли; + + Продолжить; + КонецЕсли; + + КонецЕсли; + + Добавлять = ?(СтрокаДерева.Группа.Состав.Найти( + ПользовательСсылка, ТипПользователя) = Неопределено, Истина, Ложь); + Если Добавлять Тогда + ПользователиСлужебный.ДобавитьПользователяВГруппу(СтрокаДерева.Группа, ПользовательСсылка, ТипПользователя); + + Если МассивПеремещенныхПользователей.Найти(ПользовательСсылка) = Неопределено Тогда + МассивПеремещенныхПользователей.Добавить(ПользовательСсылка); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + ИначеЕсли СтрокаДерева.Пометка = 0 + И Не СтрокаДерева.ГруппаНеИзменяется Тогда + + Для Каждого ПользовательСсылка Из МассивПользователей Цикл + + Если ТипЗнч(ПользовательСсылка) = Тип("СправочникСсылка.Пользователи") Тогда + ТипПользователя = "Пользователь"; + Иначе + ТипПользователя = "ВнешнийПользователь"; + КонецЕсли; + + Удалять = ?(СтрокаДерева.Группа.Состав.Найти( + ПользовательСсылка, ТипПользователя) <> Неопределено, Истина, Ложь); + Если Удалять Тогда + ПользователиСлужебный.УдалитьПользователяИзГруппы(СтрокаДерева.Группа, ПользовательСсылка, ТипПользователя); + + Если МассивПеремещенныхПользователей.Найти(ПользовательСсылка) = Неопределено Тогда + МассивПеремещенныхПользователей.Добавить(ПользовательСсылка); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + ЭлементыСтрокиДерева = СтрокаДерева.ПолучитьЭлементы(); + // Рекурсия + ПерезаполнитьСоставГрупп(ЭлементыСтрокиДерева, МассивПеремещенныхПользователей, НеПеремещенныеПользователи); + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура СформироватьТекстСообщения(МассивПеремещенныхПользователей, УведомлениеПользователя, НеПеремещенныеПользователи) + + КоличествоПользователей = МассивПеремещенныхПользователей.Количество(); + КоличествоНеПеремещенныхПользователей = НеПеремещенныеПользователи.Количество(); + СтрокаПользователей = ""; + + Если КоличествоНеПеремещенныхПользователей > 0 Тогда + + Если КоличествоНеПеремещенныхПользователей = 1 Тогда + Для Каждого НеПеремещенныйПользователь Из НеПеремещенныеПользователи Цикл + Предмет = Строка(НеПеремещенныйПользователь.Ключ); + КонецЦикла; + СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Пользователя ""%1"" не удалось включить в выбранные группы, + |т.к. у них различается тип или у групп установлен признак ""Все пользователи заданного типа"".'"), + Предмет); + Иначе + Предмет = Формат(КоличествоНеПеремещенныхПользователей, "ЧДЦ=0") + " " + + ПользователиСлужебныйКлиентСервер.ПредметЦелогоЧисла(КоличествоНеПеремещенныхПользователей, + "", НСтр("ru = 'пользователю,пользователям,пользователям,,,,,,0'")); + СообщениеПользователю = + НСтр("ru = 'Не всех пользователей удалось включить в выбранные группы, + |т.к. у них различается тип или у групп установлен признак ""Все пользователи заданного типа"".'"); + Для Каждого НеПеремещенныйПользователь Из НеПеремещенныеПользователи Цикл + СтрокаПользователей = СтрокаПользователей + Строка(НеПеремещенныйПользователь.Ключ) + + " : " + СтрСоединить(НеПеремещенныйПользователь.Значение, ",") + Символы.ПС; + КонецЦикла; + УведомлениеПользователя.ПолныйТекстСообщения = + НСтр("ru = 'Следующие пользователи не были включены в группы:'") + + Символы.ПС + Символы.ПС + СтрокаПользователей; + КонецЕсли; + + УведомлениеПользователя.Сообщение = СообщениеПользователю; + УведомлениеПользователя.ЕстьОшибки = Истина; + Возврат; + + ИначеЕсли КоличествоПользователей = 1 Тогда + НаименованиеПользователя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + МассивПеремещенныхПользователей[0], "Наименование"); + + УведомлениеПользователя.Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Изменен состав групп у пользователя ""%1""'"), + НаименованиеПользователя); + + ИначеЕсли КоличествоПользователей > 1 Тогда + СтрокаОбъект = Формат(КоличествоПользователей, "ЧДЦ=0") + " " + + ПользователиСлужебныйКлиентСервер.ПредметЦелогоЧисла(КоличествоПользователей, + "", НСтр("ru = 'пользователя,пользователей,пользователей,,,,,,0'")); + + УведомлениеПользователя.Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Изменен состав групп у %1'"), СтрокаОбъект); + КонецЕсли; + + УведомлениеПользователя.ЕстьОшибки = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура РазвернутьДеревоЗначений() + + Строки = ДеревоГрупп.ПолучитьЭлементы(); + Для Каждого Строка Из Строки Цикл + Элементы.ДеревоГрупп.Развернуть(Строка.ПолучитьИдентификатор(), Истина); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрытьОбработкаВопроса(Ответ, ПолныйТекстСообщения) Экспорт + + Если Ответ = "Ок" Тогда + Модифицированность = Ложь; + ЗаписатьИЗакрытьЗавершение(); + Иначе + ЗаголовокСообщения = НСтр("ru = 'Пользователи, не включенные в группы'"); + #Если МобильныйКлиент Тогда + ПоказатьПредупреждение(, ЗаголовокСообщения + Символы.ПС + ПолныйТекстСообщения); + #Иначе + Отчет = Новый ТекстовыйДокумент; + Отчет.ДобавитьСтроку(ПолныйТекстСообщения); + Отчет.Показать(ЗаголовокСообщения); + #КонецЕсли + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрытьОбработкаПредупреждения(ДополнительныеПараметры) Экспорт + + Модифицированность = Ложь; + ЗаписатьИЗакрытьЗавершение(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрытьЗавершение() + + Оповестить("РазмещениеПользователейВГруппах"); + Если ВнешниеПользователи Тогда + Оповестить("Запись_ГруппыВнешнихПользователей"); + Иначе + Оповестить("Запись_ГруппыПользователей"); + КонецЕсли; + + Если Не РежимОткрытияИзКарточкиПользователя Тогда + Закрыть(); + Иначе + ЗаполнитьДеревоГрупп(); + РазвернутьДеревоЗначений(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" new file mode 100644 index 00000000..2685fd93 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\223\321\200\321\203\320\277\320\277\321\213\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" @@ -0,0 +1,16 @@ + + + ГруппыПользователей + + ru + Группы пользователей + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/Form.form" new file mode 100644 index 00000000..2d71e730 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/Form.form" @@ -0,0 +1,330 @@ + + + + КартинкаИНадпись + 14 + + ДекорацияДлительнаяОперация + 3 + + <key>ru</key> + <value>Длительная операция</value> + + true + true + + true + + + ДекорацияДлительнаяОперацияExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияДлительнаяОперацияКонтекстноеМеню + 4 + true + true + + true + + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + + + + + ДекорацияПоясняющийТекстДлительнойОперации + 1 + + <key>ru</key> + <value>Пожалуйста, подождите...</value> + + true + true + + true + + + ДекорацияПоясняющийТекстДлительнойОперацииExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПоясняющийТекстДлительнойОперацииКонтекстноеМеню + 2 + true + true + + true + + true + + Label + 30 + true + true + + Left + Center + + + true + true + + true + + + КартинкаИНадписьРасширеннаяПодсказка + 15 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Center + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаЗакрыть + 16 + + <key>ru</key> + <value>Отмена</value> + + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + Abort + Cancel + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + HorizontalIfPossible + true + true + true + + ТекстСообщения + 7 + + String + + + + true + + + true + + + + Статус + 1 + + String + + + + true + + + true + + + + ИдентификаторЗадания + 8 + + UUID + + + true + + + true + + + + ОжидатьЗавершение + + Number + + 10 + + + true + + + ТекстСообщения + + String + + + + + ВыводитьПрогрессВыполнения + + Boolean + + true + + + ОповещениеПользователя + + true + + + АдресРезультата + + String + + + true + + + АдресДополнительногоРезультата + + String + + + true + + + ИдентификаторЗадания + + UUID + + true + + + ВыводитьОкноОжидания + + Boolean + + true + + + Интервал + + Number + + 10 + + + true + + + ВыводитьСообщения + + Boolean + + true + + + ПолучатьРезультат + + Boolean + + true + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..732c198a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/Module.bsl" @@ -0,0 +1,257 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ИнтервалОжидания; +&НаКлиенте +Перем ФормаЗакрывается; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТекстСообщения = НСтр("ru = 'Пожалуйста, подождите...'"); + Если Не ПустаяСтрока(Параметры.ТекстСообщения) Тогда + ТекстСообщения = Параметры.ТекстСообщения + Символы.ПС + ТекстСообщения; + Элементы.ДекорацияПоясняющийТекстДлительнойОперации.Заголовок = ТекстСообщения; + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.ИдентификаторЗадания) Тогда + ИдентификаторЗадания = Параметры.ИдентификаторЗадания; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Параметры.ВыводитьОкноОжидания Тогда + ИнтервалОжидания = ?(Параметры.Интервал <> 0, Параметры.Интервал, 1); + ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", ИнтервалОжидания, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если Статус <> "Выполняется" Тогда + Возврат; + КонецЕсли; + + Отказ = Истина; + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + ПодключитьОбработчикОжидания("Подключаемый_ОтменитьЗадание", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + Если Статус <> "Выполняется" Тогда + Возврат; + КонецЕсли; + + ОтменитьВыполнениеЗадания(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура Подключаемый_ПроверитьВыполнениеЗадания() + + Задание = ПроверитьЗаданиеВыполнено(ФормаЗакрывается); + Статус = Задание.Статус; + + Если Задание.Прогресс <> Неопределено Тогда + ПрогрессСтрокой = ПрогрессСтрокой(Задание.Прогресс); + Если Не ПустаяСтрока(ПрогрессСтрокой) Тогда + Элементы.ДекорацияПоясняющийТекстДлительнойОперации.Заголовок = ТекстСообщения + Символы.ПС + ПрогрессСтрокой; + КонецЕсли; + КонецЕсли; + Если Задание.Сообщения <> Неопределено И ВладелецФормы <> Неопределено Тогда + ИдентификаторНазначения = ВладелецФормы.УникальныйИдентификатор; + Для каждого СообщениеПользователю Из Задание.Сообщения Цикл + СообщениеПользователю.ИдентификаторНазначения = ИдентификаторНазначения; + СообщениеПользователю.Сообщить(); + КонецЦикла; + Задание.Сообщения = Новый ФиксированныйМассив(Новый Массив); + КонецЕсли; + + Если Статус = "Выполнено" Тогда + + ПоказатьОповещение(); + Если ВозвращатьРезультатВОбработкуВыбора() Тогда + ОповеститьОВыборе(Задание.Результат); + Возврат; + КонецЕсли; + Закрыть(РезультатВыполнения(Задание)); + Возврат; + + ИначеЕсли Статус = "Ошибка" Тогда + + Закрыть(РезультатВыполнения(Задание)); + Если ВозвращатьРезультатВОбработкуВыбора() Тогда + ВызватьИсключение Задание.КраткоеПредставлениеОшибки; + КонецЕсли; + Возврат; + + КонецЕсли; + + Если Параметры.ВыводитьОкноОжидания Тогда + Если Параметры.Интервал = 0 Тогда + ИнтервалОжидания = ИнтервалОжидания * 1.4; + Если ИнтервалОжидания > 15 Тогда + ИнтервалОжидания = 15; + КонецЕсли; + КонецЕсли; + ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", ИнтервалОжидания, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОтменитьЗадание() + + ФормаЗакрывается = Истина; + Подключаемый_ПроверитьВыполнениеЗадания(); // а вдруг задание уже выполнилось. + Если Статус = "Отменено" Тогда + Статус = Неопределено; + Закрыть(РезультатВыполнения(Неопределено)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьОповещение() + + Если Параметры.ОповещениеПользователя = Неопределено Или Не Параметры.ОповещениеПользователя.Показать Тогда + Возврат; + КонецЕсли; + + Оповещение = Параметры.ОповещениеПользователя; + + НавигационнаяСсылкаОповещения = Оповещение.НавигационнаяСсылка; + Если НавигационнаяСсылкаОповещения = Неопределено И ВладелецФормы <> Неопределено И ВладелецФормы.Окно <> Неопределено Тогда + НавигационнаяСсылкаОповещения = ВладелецФормы.Окно.ПолучитьНавигационнуюСсылку(); + КонецЕсли; + ПояснениеОповещения = Оповещение.Пояснение; + Если ПояснениеОповещения = Неопределено И ВладелецФормы <> Неопределено И ВладелецФормы.Окно <> Неопределено Тогда + ПояснениеОповещения = ВладелецФормы.Окно.Заголовок; + КонецЕсли; + + ПоказатьОповещениеПользователя(?(Оповещение.Текст <> Неопределено, Оповещение.Текст, НСтр("ru = 'Действие выполнено'")), + НавигационнаяСсылкаОповещения, ПояснениеОповещения); + +КонецПроцедуры + +&НаСервере +Функция ПроверитьЗаданиеВыполнено(ФормаЗакрывается) + + Задание = ДлительныеОперации.ОперацияВыполнена(ИдентификаторЗадания, Ложь, Параметры.ВыводитьПрогрессВыполнения, + Параметры.ВыводитьСообщения); + + Если Параметры.ПолучатьРезультат Тогда + Если Задание.Статус = "Выполнено" Тогда + Задание.Вставить("Результат", ПолучитьИзВременногоХранилища(Параметры.АдресРезультата)); + Иначе + Задание.Вставить("Результат", Неопределено); + КонецЕсли; + КонецЕсли; + + Если ФормаЗакрывается = Истина Тогда + ОтменитьВыполнениеЗадания(); + Задание.Статус = "Отменено"; + КонецЕсли; + + Возврат Задание; + +КонецФункции + +&НаКлиенте +Функция ПрогрессСтрокой(Прогресс) + + Результат = ""; + Если Прогресс = Неопределено Тогда + Возврат Результат; + КонецЕсли; + + Процент = 0; + Если Прогресс.Свойство("Процент", Процент) Тогда + Результат = Строка(Процент) + "%"; + КонецЕсли; + Текст = 0; + Если Прогресс.Свойство("Текст", Текст) Тогда + Если Не ПустаяСтрока(Результат) Тогда + Результат = Результат + " (" + Текст + ")"; + Иначе + Результат = Текст; + КонецЕсли; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция РезультатВыполнения(Задание) + + Если Задание = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("Статус", Задание.Статус); + Результат.Вставить("АдресРезультата", Параметры.АдресРезультата); + Результат.Вставить("АдресДополнительногоРезультата", Параметры.АдресДополнительногоРезультата); + Результат.Вставить("КраткоеПредставлениеОшибки", Задание.КраткоеПредставлениеОшибки); + Результат.Вставить("ПодробноеПредставлениеОшибки", Задание.ПодробноеПредставлениеОшибки); + Результат.Вставить("Сообщения", Задание.Сообщения); + + Если Параметры.ПолучатьРезультат Тогда + Результат.Вставить("Результат", Задание.Результат); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ВозвращатьРезультатВОбработкуВыбора() + Возврат ОписаниеОповещенияОЗакрытии = Неопределено + И Параметры.ПолучатьРезультат + И ТипЗнч(ВладелецФормы) = Тип("ФормаКлиентскогоПриложения"); +КонецФункции + +&НаСервере +Процедура ОтменитьВыполнениеЗадания() + + ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217.mdo" new file mode 100644 index 00000000..c0e6fb05 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217/\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\260\321\217\320\236\320\277\320\265\321\200\320\260\321\206\320\270\321\217.mdo" @@ -0,0 +1,10 @@ + + + ДлительнаяОперация + + ru + Длительная операция + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Form.form" new file mode 100644 index 00000000..259cd783 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Form.form" @@ -0,0 +1,675 @@ + + + + ГруппаПредставлениеДанных + 31 + + ПредставлениеДанных + 33 + + <key>ru</key> + <value>Данные</value> + + true + true + + true + + + + ПредставлениеДанных + + + + ПредставлениеДанныхРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + + ПредставлениеДанныхКонтекстноеМеню + 34 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ПредставлениеДанныхНажатие + + true + true + + + true + true + + true + + + ГруппаПредставлениеДанныхРасширеннаяПодсказка + 32 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + Подписи + 1 + true + true + + true + + + Подписи + + None + CancelSearch + Change + Copy + CopyToClipboard + EndEdit + Find + MoveDown + MoveUp + OutputList + SortListAsc + SortListDesc + + ПодписиПутьКФайлу + 4 + true + true + + true + + + + Подписи.ПутьКФайлу + + + + ПодписиПутьКФайлуExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + ПодписиПутьКФайлуКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + true + Left + true + + + StartChoice + ПодписиПутьКФайлуНачалоВыбора + + 40 + true + true + true + true + true + true + true + + + + ПодписиКомментарий + 9 + true + true + + true + + + + Подписи.Комментарий + + + + ПодписиКомментарийExtendedTooltip + 16 + true + true + + true + + Label + true + true + + Left + + + + ПодписиКомментарийКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + EnterOnInput + true + true + Left + true + + 20 + true + true + true + true + true + true + + + + ПодписиКоманднаяПанель + 3 + + ПодписиДобавить + 17 + + <key>ru</key> + <value>Добавить ...</value> + + true + true + + true + + + ПодписиДобавитьРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Подписи.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + BeforeAddRow + ПодписиПередНачаломДобавления + + + true + true + + true + + ПодписиСтрокаПоиска + 22 + + ПодписиСтрокаПоискаРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + ПодписиСтрокаПоискаКонтекстноеМеню + 23 + true + true + + true + + true + + + true + + + + true + true + + true + + ПодписиСостояниеПросмотра + 25 + + ПодписиСостояниеПросмотраРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + ПодписиСостояниеПросмотраКонтекстноеМеню + 26 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПодписиУправлениеПоиском + 28 + + ПодписиУправлениеПоискомРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + + ПодписиУправлениеПоискомКонтекстноеМеню + 29 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПодписиExtendedTooltip + 14 + true + true + + true + + Label + true + true + + Left + + + + ПодписиКонтекстноеМеню + 2 + true + true + + true + + true + + true + true + 60 + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
        + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОК + 8 + true + true + + true + + + ФормаОКExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 11 + true + true + + true + + + ФормаОтменаExtendedTooltip + 13 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + + Подписи + + <key>ru</key> + <value>Подписи</value> + + 1 + + ValueTable + + + true + + + true + + ShowError + + ПутьКФайлу + + <key>ru</key> + <value>Файл электронной подписи</value> + + 1 + + String + + + + true + + + true + + + + Комментарий + + <key>ru</key> + <value>Комментарий</value> + + 3 + + String + + + + true + + + true + + + + АдресСвойствПодписи + 2 + + String + + + + true + + + true + + + + + МенеджерКриптографииНаСервереОписаниеОшибки + 4 + + + true + + + true + + + + ПредставлениеДанных + + <key>ru</key> + <value>Представление данных</value> + + 5 + + String + + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + ПоказатьКомментарий + + Boolean + + + + ЗаголовокДанных + + String + + + + + ПредставлениеДанных + + String + + + + + ПредставлениеДанныхОткрывается + + Boolean + + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Help/ru.html" new file mode 100644 index 00000000..e817c10b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Help/ru.html" @@ -0,0 +1,13 @@ + +

        Предназначена для добавления электронной подписи из файла к элементам некоторых списков информационной базы. Эту возможность можно использовать, например, если подпись в виде файла была получена позже, чем подписанные данные.

        +

        Открывается из списка файлов (списка присоединенных файлов объекта), списка Присоединенные файлыпо кнопке  Электронная подпись и шифрование - Добавить электронную подпись из файла. Также можно найти эту команду в меню Еще карточки файла (карточки присоединенного файла).

        +

        В списке выводится:

        +
        • Файл электронной подписи - путь к файлу, содержащему электронную подпись. +
        • Комментарий - сведения, которые поясняют добавляемую электронную подпись.

        Добавление электронной подписи из файла

        +
        • Выберите один или несколько файлов с электронными подписями. +
        • Нажмите Добавить,с помощью кнопки  укажите путь к файлу подписи на жестком или сетевом диске. +
        • Напишите Комментарий к подписи.

        Удаление электронной подписи

        +
        • Нажмите Еще - Удалить, для того чтобы Удалить файл электронной подписи из списка.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Module.bsl" new file mode 100644 index 00000000..3800f0f9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/Module.bsl" @@ -0,0 +1,504 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем КлиентскиеПараметры Экспорт; + +&НаКлиенте +Перем ОписаниеДанных, ФормаОбъекта, ТекущийСписокПредставлений; + +&НаКлиенте +Перем ОтображениеДанныхОбновлено; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если ЗначениеЗаполнено(Параметры.ЗаголовокДанных) Тогда + Элементы.ПредставлениеДанных.Заголовок = Параметры.ЗаголовокДанных; + Иначе + Элементы.ПредставлениеДанных.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + КонецЕсли; + + ПредставлениеДанных = Параметры.ПредставлениеДанных; + Элементы.ПредставлениеДанных.Гиперссылка = Параметры.ПредставлениеДанныхОткрывается; + + Если Не ЗначениеЗаполнено(ПредставлениеДанных) Тогда + Элементы.ПредставлениеДанных.Видимость = Ложь; + КонецЕсли; + + Если Не Параметры.ПоказатьКомментарий Тогда + Элементы.Подписи.Шапка = Ложь; + Элементы.ПодписиКомментарий.Видимость = Ложь; + КонецЕсли; + + МенеджерКриптографииНаСервереОписаниеОшибки = Новый Структура; + + Если ЭлектроннаяПодпись.ПроверятьЭлектронныеПодписиНаСервере() + Или ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда + + ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.ОписаниеОшибки = Новый Структура; + + ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("", ПараметрыСоздания); + МенеджерКриптографииНаСервереОписаниеОшибки = ПараметрыСоздания.ОписаниеОшибки; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если КлиентскиеПараметры = Неопределено Тогда + Отказ = Истина; + Иначе + ОписаниеДанных = КлиентскиеПараметры.ОписаниеДанных; + ФормаОбъекта = КлиентскиеПараметры.Форма; + ТекущийСписокПредставлений = КлиентскиеПараметры.ТекущийСписокПредставлений; + ПодключитьОбработчикОжидания("ПослеОткрытия", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПредставлениеДанныхНажатие(Элемент, СтандартнаяОбработка) + + ЭлектроннаяПодписьСлужебныйКлиент.ПредставлениеДанныхНажатие(ЭтотОбъект, + Элемент, СтандартнаяОбработка, ТекущийСписокПредставлений); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПодписи + +&НаКлиенте +Процедура ПодписиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + + Если ОтображениеДанныхОбновлено = Истина Тогда + ВыбратьФайл(Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПодписиПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ВыбратьФайл(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + Если Подписи.Количество() = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Не выбрано ни одного файла подписи'")); + Возврат; + КонецЕсли; + + Если Не ОписаниеДанных.Свойство("Объект") Тогда + ОписаниеДанных.Вставить("Подписи", МассивПодписей()); + Закрыть(Истина); + Возврат; + КонецЕсли; + + Если ТипЗнч(ОписаниеДанных.Объект) <> Тип("ОписаниеОповещения") Тогда + ВерсияОбъекта = Неопределено; + ОписаниеДанных.Свойство("ВерсияОбъекта", ВерсияОбъекта); + МассивПодписей = Неопределено; + Попытка + ДобавитьПодпись(ОписаниеДанных.Объект, ВерсияОбъекта, МассивПодписей); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОКЗавершение(Новый Структура("ОписаниеОшибки", КраткоеПредставлениеОшибки(ИнформацияОбОшибке))); + Возврат; + КонецПопытки; + ОписаниеДанных.Вставить("Подписи", МассивПодписей); + ОповеститьОбИзменении(ОписаниеДанных.Объект); + Иначе + ОписаниеДанных.Вставить("Подписи", МассивПодписей()); + + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("ОписаниеДанных", ОписаниеДанных); + ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения("ОКЗавершение", ЭтотОбъект)); + + Попытка + ВыполнитьОбработкуОповещения(ОписаниеДанных.Объект, ПараметрыВыполнения); + Возврат; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОКЗавершение(Новый Структура("ОписаниеОшибки", КраткоеПредставлениеОшибки(ИнформацияОбОшибке))); + Возврат; + КонецПопытки; + КонецЕсли; + + ОКЗавершение(Новый Структура); + +КонецПроцедуры + +// Продолжение процедуры ОК. +&НаКлиенте +Процедура ОКЗавершение(Результат, Контекст = Неопределено) Экспорт + + Если Результат.Свойство("ОписаниеОшибки") Тогда + ОписаниеДанных.Удалить("Подписи"); + + Ошибка = Новый Структура("ОписаниеОшибки", + НСтр("ru = 'При записи подписи возникла ошибка:'") + Символы.ПС + Результат.ОписаниеОшибки); + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Не удалось добавить электронную подпись из файла'"), "", Ошибка, Новый Структура); + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(ПредставлениеДанных) Тогда + ЭлектроннаяПодписьКлиент.ИнформироватьОПодписанииОбъекта( + ЭлектроннаяПодписьСлужебныйКлиент.ПолноеПредставлениеДанных(ЭтотОбъект),, Истина); + КонецЕсли; + + Закрыть(Истина); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПослеОткрытия() + + ОтображениеДанныхОбновлено = Истина; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПодписиПутьКФайлу.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подписи.ПутьКФайлу"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьФайл(ДобавитьНовуюСтроку = Ложь) + + Контекст = Новый Структура; + Контекст.Вставить("ДобавитьНовуюСтроку", ДобавитьНовуюСтроку); + + Оповещение = Новый ОписаниеОповещения("ВыбратьФайлПослеПомещенияФайла", ЭтотОбъект, Контекст); + + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл электронной подписи'"); + ПараметрыЗагрузки.Диалог.Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Файлы подписи (*.%1)|*.%1|Все файлы (*.*)|*.*'"), + ЭлектроннаяПодписьКлиент.ПерсональныеНастройки().РасширениеДляФайловПодписи); + + Если Не ДобавитьНовуюСтроку Тогда + ПараметрыЗагрузки.Диалог.ПолноеИмяФайла = Элементы.Подписи.ТекущиеДанные.ПутьКФайлу; + КонецЕсли; + + ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки); + +КонецПроцедуры + +// Продолжение процедуры ВыбратьФайл. +&НаКлиенте +Процедура ВыбратьФайлПослеПомещенияФайла(ПомещенныйФайл, Контекст) Экспорт + + Если ПомещенныйФайл = Неопределено Тогда + Возврат; + КонецЕсли; + + СоставИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПомещенныйФайл.Имя); + + Контекст.Вставить("Адрес", ПомещенныйФайл.Хранение); + Контекст.Вставить("ИмяФайла", СоставИмени.Имя); + Контекст.Вставить("ОшибкаНаСервере", Новый Структура); + Контекст.Вставить("ДанныеПодписи", Неопределено); + Контекст.Вставить("ДатаПодписи", Неопределено); + Контекст.Вставить("АдресСвойствПодписи", Неопределено); + + Успех = ДобавитьСтрокуНаСервере(Контекст.Адрес, Контекст.ИмяФайла, Контекст.ДобавитьНовуюСтроку, + Контекст.ОшибкаНаСервере, Контекст.ДанныеПодписи, Контекст.ДатаПодписи, Контекст.АдресСвойствПодписи); + + Если Успех Тогда + ВыбратьФайлПослеДобавленияСтроки(Контекст); + Возврат; + КонецЕсли; + + ПараметрыСоздания = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.ПоказатьОшибку = Неопределено; + + ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения( + "ВыбратьФайлПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст), + "", ПараметрыСоздания); + +КонецПроцедуры + +// Продолжение процедуры ВыбратьФайл. +&НаКлиенте +Процедура ВыбратьФайлПослеСозданияМенеджераКриптографии(МенеджерКриптографии, Контекст) Экспорт + + Если ТипЗнч(МенеджерКриптографии) <> Тип("МенеджерКриптографии") Тогда + ПоказатьОшибку(МенеджерКриптографии, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + МенеджерКриптографии.НачатьПолучениеСертификатовИзПодписи(Новый ОписаниеОповещения( + "ВыбратьФайлПослеПолученияСертификатовИзПодписи", ЭтотОбъект, Контекст, + "ВыбратьФайлПослеОшибкиПолученияСертификатовИзПодписи", ЭтотОбъект), Контекст.ДанныеПодписи); + +КонецПроцедуры + +// Продолжение процедуры ВыбратьФайл. +&НаКлиенте +Процедура ВыбратьФайлПослеОшибкиПолученияСертификатовИзПодписи(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + + ОшибкаНаКлиенте = Новый Структура("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При получении сертификатов из файла подписи произошла ошибка: + |%1'"), + КраткоеПредставлениеОшибки(ИнформацияОбОшибке))); + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ПоказатьИнструкцию", Истина); + ДополнительныеПараметры.Вставить("Подпись", Контекст.ДанныеПодписи); + + ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере, ДополнительныеПараметры); + +КонецПроцедуры + +// Продолжение процедуры ВыбратьФайл. +&НаКлиенте +Процедура ВыбратьФайлПослеПолученияСертификатовИзПодписи(Сертификаты, Контекст) Экспорт + + Если Сертификаты.Количество() = 0 Тогда + ОшибкаНаКлиенте = Новый Структура("ОписаниеОшибки", + НСтр("ru = 'В файле подписи нет ни одного сертификата.'")); + + ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере); + Возврат; + КонецЕсли; + + Контекст.Вставить("Сертификат", Сертификаты[0]); + + ТекущийСертификат = Контекст.Сертификат; // СертификатКриптографии + ТекущийСертификат.НачатьВыгрузку(Новый ОписаниеОповещения( + "ВыбратьФайлПослеВыгрузкиСертификата", ЭтотОбъект, Контекст)); + +КонецПроцедуры + +// Продолжение процедуры ВыбратьФайл. +&НаКлиенте +Процедура ВыбратьФайлПослеВыгрузкиСертификата(ДанныеСертификата, Контекст) Экспорт + + СвойстваСертификата = ЭлектроннаяПодписьКлиент.СвойстваСертификата(Контекст.Сертификат); + СвойстваСертификата.Вставить("ДвоичныеДанные", ДанныеСертификата); + + СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(Контекст.ДанныеПодписи, + СвойстваСертификата, "", ПользователиКлиент.АвторизованныйПользователь(), Контекст.ИмяФайла); + + ДобавитьСтроку(ЭтотОбъект, Контекст.ДобавитьНовуюСтроку, СвойстваПодписи, + Контекст.ИмяФайла, Контекст.АдресСвойствПодписи); + + ВыбратьФайлПослеДобавленияСтроки(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ВыбратьФайл. +&НаКлиенте +Процедура ВыбратьФайлПослеДобавленияСтроки(Контекст) + + Если Не ОписаниеДанных.Свойство("Данные") Тогда + Возврат; // Если данные не указаны, подпись проверить невозможно. + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьДанныеИзОписанияДанных(Новый ОписаниеОповещения( + "ВыбратьФайлПослеПолученияДанных", ЭтотОбъект, Контекст), + ЭтотОбъект, ОписаниеДанных, ОписаниеДанных.Данные, Истина); + +КонецПроцедуры + +// Продолжение процедуры ВыбратьФайл. +&НаКлиенте +Процедура ВыбратьФайлПослеПолученияДанных(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("Структура") Тогда + Возврат; // Не удалось получить данные, подпись проверить невозможно. + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ПроверитьПодпись(Новый ОписаниеОповещения( + "ВыбратьФайлПослеПроверкиПодписи", ЭтотОбъект, Контекст), + Результат, Контекст.ДанныеПодписи, , Контекст.ДатаПодписи, Ложь); + +КонецПроцедуры + +// Продолжение процедуры ВыбратьФайл. +&НаКлиенте +Процедура ВыбратьФайлПослеПроверкиПодписи(Результат, Контекст) Экспорт + + Если Результат = Неопределено Тогда + Возврат; // Не удалось проверить подпись. + КонецЕсли; + + ОбновитьРезультатПроверкиПодписи(Контекст.АдресСвойствПодписи, Результат = Истина); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьРезультатПроверкиПодписи(АдресСвойствПодписи, ПодписьВерна) + + ТекущаяДатаСеанса = ТекущаяДатаСеанса(); + СвойстваПодписи = ПолучитьИзВременногоХранилища(АдресСвойствПодписи); + + Если Не ЗначениеЗаполнено(СвойстваПодписи.ДатаПодписи) Тогда + СвойстваПодписи.ДатаПодписи = ТекущаяДатаСеанса; + КонецЕсли; + + СвойстваПодписи.ДатаПроверкиПодписи = ТекущаяДатаСеанса; + СвойстваПодписи.ПодписьВерна = ПодписьВерна; + + ПоместитьВоВременноеХранилище(СвойстваПодписи, АдресСвойствПодписи); + +КонецПроцедуры + +&НаСервере +Функция ДобавитьСтрокуНаСервере(Адрес, ИмяФайла, ДобавитьНовуюСтроку, ОшибкаНаСервере, + ДанныеПодписи, ДатаПодписи, АдресСвойствПодписи) + + ДанныеПодписи = ПолучитьИзВременногоХранилища(Адрес); + ДатаПодписи = ЭлектроннаяПодпись.ДатаПодписания(ДанныеПодписи); + + Если Не ЭлектроннаяПодпись.ПроверятьЭлектронныеПодписиНаСервере() + И Не ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда + + Возврат Ложь; + КонецЕсли; + + ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.ОписаниеОшибки = ОшибкаНаСервере; + ПараметрыСоздания.АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(ДанныеПодписи); + + МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("", ПараметрыСоздания); + + ОшибкаНаСервере = ПараметрыСоздания.ОписаниеОшибки; + Если МенеджерКриптографии = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + Попытка + Сертификаты = МенеджерКриптографии.ПолучитьСертификатыИзПодписи(ДанныеПодписи); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОшибкаНаСервере.Вставить("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При получении сертификатов из файла подписи произошла ошибка: + |%1'"), + КраткоеПредставлениеОшибки(ИнформацияОбОшибке))); + Возврат Ложь; + КонецПопытки; + + Если Сертификаты.Количество() = 0 Тогда + ОшибкаНаСервере.Вставить("ОписаниеОшибки", НСтр("ru = 'В файле подписи нет ни одного сертификата.'")); + Возврат Ложь; + КонецЕсли; + + СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(Сертификаты[0]); + СвойстваСертификата.Вставить("ДвоичныеДанные", Сертификаты[0].Выгрузить()); + + СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(ДанныеПодписи, + СвойстваСертификата, "", Пользователи.АвторизованныйПользователь(), ИмяФайла); + + ДобавитьСтроку(ЭтотОбъект, ДобавитьНовуюСтроку, СвойстваПодписи, ИмяФайла, АдресСвойствПодписи); + + Возврат Истина; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ДобавитьСтроку(Форма, ДобавитьНовуюСтроку, СвойстваПодписи, ИмяФайла, АдресСвойствПодписи) + + АдресСвойствПодписи = ПоместитьВоВременноеХранилище(СвойстваПодписи, Форма.УникальныйИдентификатор); + + Если ДобавитьНовуюСтроку Тогда + ТекущиеДанные = Форма.Подписи.Добавить(); + Иначе + ТекущиеДанные = Форма.Подписи.НайтиПоИдентификатору(Форма.Элементы.Подписи.ТекущаяСтрока); + КонецЕсли; + + ТекущиеДанные.ПутьКФайлу = ИмяФайла; + ТекущиеДанные.АдресСвойствПодписи = АдресСвойствПодписи; + +КонецПроцедуры + +&НаСервере +Функция МассивПодписей() + + МассивПодписей = Новый Массив; + + Для каждого Строка Из Подписи Цикл + + СвойстваПодписи = ПолучитьИзВременногоХранилища(Строка.АдресСвойствПодписи); + СвойстваПодписи.Вставить("Комментарий", Строка.Комментарий); + + МассивПодписей.Добавить(ПоместитьВоВременноеХранилище(СвойстваПодписи, УникальныйИдентификатор)); + КонецЦикла; + + Возврат МассивПодписей; + +КонецФункции + +&НаСервере +Процедура ДобавитьПодпись(СсылкаНаОбъект, ВерсияОбъекта, МассивПодписей) + + МассивПодписей = МассивПодписей(); + + ЭлектроннаяПодпись.ДобавитьПодпись(СсылкаНаОбъект, + МассивПодписей, УникальныйИдентификатор, ВерсияОбъекта); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьОшибку(ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры = Неопределено) + + ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме( + НСтр("ru = 'Не удалось получить подпись из файла'"), + "", ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260.mdo" new file mode 100644 index 00000000..8d522ea2 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\267\320\244\320\260\320\271\320\273\320\260.mdo" @@ -0,0 +1,15 @@ + + + ДобавлениеЭлектроннойПодписиИзФайла + + ru + Добавление электронной подписи из файла + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/Form.form" new file mode 100644 index 00000000..a6664950 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/Form.form" @@ -0,0 +1,141 @@ + + + + ПолеHTMLДокумента + 1 + true + true + + true + + + + ПолеHTMLДокумента + + + true + None + + ПолеHTMLДокументаExtendedTooltip + 5 + true + true + + true + + Label + true + true + + Left + + + + ПолеHTMLДокументаКонтекстноеМеню + 2 + true + true + + true + + true + + HTMLDocumentField + Enter + true + Left + true + + 50 + true + 10 + true + true + true + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаЗакрыть + 3 + true + true + + true + + + ФормаЗакрытьExtendedTooltip + 4 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + PictureAndText + true + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + true + Vertical + true + UseIfNecessary + true + true + + ПолеHTMLДокумента + + <key>ru</key> + <value>Поле HTMLДокумента</value> + + 2 + + String + + + + true + + + true + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/Module.bsl" new file mode 100644 index 00000000..99869cc0 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/Module.bsl" @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Макет = ПолучитьОбщийМакет(Параметры.ИмяМакета); + + ПолеHTMLДокумента = Макет.ПолучитьТекст(); + + Параметры.Свойство("Заголовок", Заголовок); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265.mdo" new file mode 100644 index 00000000..f876828d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\320\276\320\265\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265.mdo" @@ -0,0 +1,11 @@ + + + ДополнительноеОписание + + ru + Дополнительное описание + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Form.form" new file mode 100644 index 00000000..47395f22 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Form.form" @@ -0,0 +1,1009 @@ + + + + Страницы + 37 + + СтраницаОткрытьОбработку + 38 + + ТаблицаКоманд + 15 + true + true + + true + + + ТаблицаКоманд + + false + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + ОбработкиПредставление + 26 + true + true + + true + + + + ТаблицаКоманд.Представление + + + + ОбработкиПредставлениеExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + + ОбработкиПредставлениеКонтекстноеМеню + 27 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + None + + ТаблицаКомандКоманднаяПанель + 17 + true + true + + true + + Left + true + + + Selection + ТаблицаКомандВыбор + + + true + true + + true + + ТаблицаКомандСтрокаПоиска + 70 + + ТаблицаКомандСтрокаПоискаРасширеннаяПодсказка + 72 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаКомандСтрокаПоискаКонтекстноеМеню + 71 + true + true + + true + + true + + + true + + + + true + true + + true + + ТаблицаКомандСостояниеПросмотра + 73 + + ТаблицаКомандСостояниеПросмотраРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаКомандСостояниеПросмотраКонтекстноеМеню + 74 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ТаблицаКомандУправлениеПоиском + 76 + + ТаблицаКомандУправлениеПоискомРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаКомандУправлениеПоискомКонтекстноеМеню + 77 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТаблицаКомандExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаКомандКонтекстноеМеню + 16 + true + true + + true + + true + + true + true + true + true + true + true + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница открыть обработку</value> + + + СтраницаОткрытьОбработкуExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаВыполненияОбработки + 39 + + ДекорацияДлительнаяОперация + 44 + + <key>ru</key> + <value>Длительная операция</value> + + true + true + + true + + + ДекорацияДлительнаяОперацияExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияДлительнаяОперацияКонтекстноеМеню + 45 + true + true + + true + + true + + true + true + true + Center + + + CommonPicture.ДлительнаяОперация48 + + + + + ПоясняющаяДекорация + 46 + + <key>ru</key> + <value>Поясняющая декорация</value> + + true + true + + true + + + ПоясняющаяДекорацияExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + + ПоясняющаяДекорацияКонтекстноеМеню + 47 + true + true + + true + + true + + Label + true + true + Center + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Страница выполнения обработки</value> + + true + + СтраницаВыполненияОбработкиExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + Center + true + + + true + true + + true + + + СтраницыExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + Подвал + 79 + + НастроитьСписок + 35 + true + true + + true + + false + + НастроитьСписокExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.НастроитьСписок + Auto + true + true + UserCmds + Auto + + + КоманднаяПанельСтраницыОткрытьОбработку + 36 + + ВыполнитьОбработку + 28 + true + true + + true + + true + false + + ВыполнитьОбработкуExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьОбработку + Auto + true + true + true + UserCmds + Auto + + + ЗакрытьФорму + 29 + true + true + + true + + false + + ЗакрытьФормуРасширеннаяПодсказка + 66 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + + КоманднаяПанельСтраницыОткрытьОбработкуExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + ПодвалРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Right + + + ChoiceProcessing + ОбработкаВыбора + + + OnCreateAtServer + ПриСозданииНаСервере + + CustomizeForm + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ТаблицаКоманд + + <key>ru</key> + <value>Команды</value> + + 1 + + ValueTable + + + true + + + true + + + Ссылка + 1 + + CatalogRef.ДополнительныеОтчетыИОбработки + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 3 + + String + + + + true + + + true + + + + Идентификатор + 4 + + String + + + + true + + + true + + + + ВариантЗапуска + 5 + + EnumRef.СпособыВызоваДополнительныхОбработок + + + true + + + true + + + + ПоказыватьОповещение + 6 + + Boolean + + + true + + + true + + + + Модификатор + 7 + + String + + + + true + + + true + + + + + ОбъектыНазначения + 2 + + ValueList + + + true + + + true + + + + + + + ВидОбработок + 3 + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + + true + + + true + + + + ЭтоГлобальныеОбработки + 4 + + Boolean + + + true + + + true + + + + ЭтоНазначаемыеОбработки + 6 + + Boolean + + + true + + + true + + + + СсылкаРодителя + 8 + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + ЭтоФормаОбъекта + 5 + + Boolean + + + true + + + true + + + + ФоновоеЗаданиеИдентификатор + 9 + + UUID + + + true + + + true + + + + ФоновоеЗаданиеАдресХранилища + 11 + + String + + + + true + + + true + + + + ПоясняющаяДекорация + 14 + + String + + + + true + + + true + + + + ЭтоОтчеты + 12 + + Boolean + + + true + + + true + + + + СсылкаРаздела + 7 + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + ИмяФормыВладельца + 10 + + String + + + + true + + + true + + + + ФоновоеЗаданиеПроверитьВыполнениеПриЗакрытии + 13 + + Boolean + + + true + + + true + + + + ВыполнитьОбработку + + <key>ru</key> + <value>Выполнить</value> + + 4 + + true + + + StdPicture.GenerateReport + + + + ВыполнитьОбработку + + + TextPicture + DontUse + + + НастроитьСписок + + <key>ru</key> + <value>Настроить список</value> + + 1 + + ru + Настроить список моих отчетов или обработок + + + true + + + StdPicture.ListSettings + + + + НастроитьСписок + + + DontUse + + + ОтменитьВыполнениеОбработки + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Отменить выполнение обработки + + + true + + + + ОтменитьВыполнениеОбработки + + + DontUse + + + ОбъектыНазначения + + ValueList + + + + Вид + + String + + + + + ИмяРаздела + + String + + + + + ИмяФормы + + String + + + + + Заголовок + + String + + + + + РежимОткрытияОкна + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Module.bsl" new file mode 100644 index 00000000..638303ef --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Module.bsl" @@ -0,0 +1,268 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ВыполняемаяКоманда; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Параметры.ИмяРаздела) + И Параметры.ИмяРаздела <> ДополнительныеОтчетыИОбработкиКлиентСервер.ИмяНачальнойСтраницы() Тогда + СсылкаРаздела = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Подсистемы.Найти(Параметры.ИмяРаздела)); + КонецЕсли; + + ВидОбработок = ДополнительныеОтчетыИОбработки.ПолучитьВидОбработкиПоСтроковомуПредставлениюВида(Параметры.Вид); + Если ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта Тогда + ЭтоНазначаемыеОбработки = Истина; + Заголовок = НСтр("ru = 'Команды заполнения объектов'"); + ИначеЕсли ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет Тогда + ЭтоНазначаемыеОбработки = Истина; + ЭтоОтчеты = Истина; + Заголовок = НСтр("ru = 'Отчеты'"); + ИначеЕсли ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма Тогда + ЭтоНазначаемыеОбработки = Истина; + Заголовок = НСтр("ru = 'Дополнительные печатные формы'"); + ИначеЕсли ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.СозданиеСвязанныхОбъектов Тогда + ЭтоНазначаемыеОбработки = Истина; + Заголовок = НСтр("ru = 'Команды создания связанных объектов'"); + ИначеЕсли ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка Тогда + ЭтоГлобальныеОбработки = Истина; + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Дополнительные обработки (%1)'"), + ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(СсылкаРаздела)); + ИначеЕсли ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда + ЭтоГлобальныеОбработки = Истина; + ЭтоОтчеты = Истина; + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Дополнительные отчеты (%1)'"), + ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(СсылкаРаздела)); + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.РежимОткрытияОкна) Тогда + РежимОткрытияОкна = Параметры.РежимОткрытияОкна; + КонецЕсли; + Если Не ПустаяСтрока(Параметры.Заголовок) Тогда + Заголовок = Параметры.Заголовок; + КонецЕсли; + + Если ЭтоНазначаемыеОбработки Тогда + Элементы.НастроитьСписок.Видимость = Ложь; + + ОбъектыНазначения.ЗагрузитьЗначения(Параметры.ОбъектыНазначения.ВыгрузитьЗначения()); + Если ОбъектыНазначения.Количество() = 0 Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + ИнформацияОВладельце = ДополнительныеОтчетыИОбработкиПовтИсп.ПараметрыФормыНазначаемогоОбъекта(Параметры.ИмяФормы); + МетаданныеРодителя = Метаданные.НайтиПоТипу(ТипЗнч(ОбъектыНазначения[0].Значение)); + Если МетаданныеРодителя = Неопределено Тогда + СсылкаРодителя = ИнформацияОВладельце.СсылкаРодителя; + Иначе + СсылкаРодителя = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(МетаданныеРодителя); + КонецЕсли; + Если ТипЗнч(ИнформацияОВладельце) = Тип("ФиксированнаяСтруктура") Тогда + ЭтоФормаОбъекта = ИнформацияОВладельце.ЭтоФормаОбъекта; + Иначе + ЭтоФормаОбъекта = Ложь; + КонецЕсли; + КонецЕсли; + + ЗаполнитьТаблицуОбработок(); +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + Если ВыбранноеЗначение = "ВыполненаНастройкаМоихОтчетовИОбработок" Тогда + ЗаполнитьТаблицуОбработок(); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаКоманд + +&НаКлиенте +Процедура ТаблицаКомандВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ВыполнитьОбработкуПоПараметрам(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьОбработку(Команда) + + ВыполнитьОбработкуПоПараметрам() + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьСписок(Команда) + ПараметрыФормы = Новый Структура("ВидОбработок, СсылкаРаздела"); + ЗаполнитьЗначенияСвойств(ПараметрыФормы, ЭтотОбъект); + ОткрытьФорму("ОбщаяФорма.НастройкаМоихОтчетовИОбработок", ПараметрыФормы, ЭтотОбъект, Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьВыполнениеОбработки(Команда) + Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьТаблицуОбработок() + ТипыКоманд = Новый Массив; + ТипыКоманд.Добавить(Перечисления.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода); + ТипыКоманд.Добавить(Перечисления.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода); + ТипыКоманд.Добавить(Перечисления.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы); + ТипыКоманд.Добавить(Перечисления.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме); + + Запрос = ДополнительныеОтчетыИОбработки.НовыйЗапросПоДоступнымКомандам(ВидОбработок, ?(ЭтоГлобальныеОбработки, СсылкаРаздела, СсылкаРодителя), ЭтоФормаОбъекта, ТипыКоманд); + ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); + ТаблицаКоманд.Загрузить(ТаблицаРезультат); +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработкуПоПараметрам() + ДанныеОбработки = Элементы.ТаблицаКоманд.ТекущиеДанные; + Если ДанныеОбработки = Неопределено Тогда + Возврат; + КонецЕсли; + + ВыполняемаяКоманда = Новый Структура( + "Ссылка, Представление, + |Идентификатор, ВариантЗапуска, ПоказыватьОповещение, + |Модификатор, ОбъектыНазначения, ЭтоОтчет, Вид"); + ЗаполнитьЗначенияСвойств(ВыполняемаяКоманда, ДанныеОбработки); + Если НЕ ЭтоГлобальныеОбработки Тогда + ВыполняемаяКоманда.ОбъектыНазначения = ОбъектыНазначения.ВыгрузитьЗначения(); + КонецЕсли; + ВыполняемаяКоманда.ЭтоОтчет = ЭтоОтчеты; + ВыполняемаяКоманда.Вид = ВидОбработок; + + Если ДанныеОбработки.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") Тогда + + ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, ВладелецФормы, ВыполняемаяКоманда.ОбъектыНазначения); + + ИначеЕсли ДанныеОбработки.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") Тогда + + ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, ВладелецФормы, ВыполняемаяКоманда.ОбъектыНазначения); + + ИначеЕсли ВидОбработок = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма") + И ДанныеОбработки.Модификатор = "ПечатьMXL" Тогда + + ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, ВладелецФормы, ВыполняемаяКоманда.ОбъектыНазначения); + + ИначеЕсли ДанныеОбработки.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода") + Или ДанныеОбработки.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда + + // Изменение элементов формы + Элементы.ПоясняющаяДекорация.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполняется команда ""%1""...'"), + ДанныеОбработки.Представление); + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыполненияОбработки; + Элементы.НастроитьСписок.Видимость = Ложь; + Элементы.ВыполнитьОбработку.Видимость = Ложь; + + // Вызов сервера только после перехода формы в консистентное состояние. + ПодключитьОбработчикОжидания("ВыполнитьСерверныйМетодОбработки", 0.1, Истина); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьСерверныйМетодОбработки() + + Задание = ЗапуститьФоновоеЗадание(ВыполняемаяКоманда, УникальныйИдентификатор); + + НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + НастройкиОжидания.ВыводитьОкноОжидания = Ложь; + + Обработчик = Новый ОписаниеОповещения("ВыполнитьСерверныйМетодОбработкиЗавершение", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(Задание, Обработчик, НастройкиОжидания); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ЗапуститьФоновоеЗадание(Знач ВыполняемаяКоманда, Знач УникальныйИдентификатор) + ИмяМетода = "ДополнительныеОтчетыИОбработки.ВыполнитьКоманду"; + + НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + НастройкиЗапуска.НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Доп. отчеты и обработки: Выполнение команды ""%1""'"), + ВыполняемаяКоманда.Представление); + + ПараметрыМетода = Новый Структура("ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, ОбъектыНазначения"); + ПараметрыМетода.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка; + ПараметрыМетода.ИдентификаторКоманды = ВыполняемаяКоманда.Идентификатор; + ПараметрыМетода.ОбъектыНазначения = ВыполняемаяКоманда.ОбъектыНазначения; + + Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяМетода, ПараметрыМетода, НастройкиЗапуска); +КонецФункции + +&НаКлиенте +Процедура ВыполнитьСерверныйМетодОбработкиЗавершение(Задание, ДополнительныеПараметры) Экспорт + + Если Задание = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Задание.Статус <> "Выполнено" Тогда + Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Команда ""%1"" не выполнена:'"), + ВыполняемаяКоманда.Представление); + Если Открыта() Тогда + Закрыть(); + КонецЕсли; + ВызватьИсключение Текст + Символы.ПС + Задание.КраткоеПредставлениеОшибки; + КонецЕсли; + + // Показ всплывающего оповещения и закрытие этой формы. + Если ВыполняемаяКоманда.ПоказыватьОповещение Тогда + ПоказатьОповещениеПользователя(НСтр("ru = 'Команда выполнена'"),, ВыполняемаяКоманда.Представление); + КонецЕсли; + Если Открыта() Тогда + Закрыть(); + КонецЕсли; + + // Обновление формы владельца. + Если ЭтоФормаОбъекта Тогда + Попытка + ВладелецФормы.Прочитать(); + Исключение + // Действие не требуется. + КонецПопытки; + КонецЕсли; + + // Оповещение других форм. + РезультатВыполнения = ПолучитьИзВременногоХранилища(Задание.АдресРезультата); + ОповеститьФормы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(РезультатВыполнения, "ОповеститьФормы"); + Если ОповеститьФормы <> Неопределено Тогда + СтандартныеПодсистемыКлиент.ОповеститьФормыОбИзменении(ОповеститьФормы); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" new file mode 100644 index 00000000..d528fd25 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\236\321\202\321\207\320\265\321\202\321\213\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" @@ -0,0 +1,10 @@ + + + ДополнительныеОтчетыИОбработки + + ru + Дополнительные отчеты и обработки + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Form.form" new file mode 100644 index 00000000..be69e6b4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Form.form" @@ -0,0 +1,1286 @@ + + + + <key>ru</key> + <value>Дополнительные параметры прокси-сервера</value> + + + ГруппаПроксиСерверы + 16 + + ГруппаHTTP + 1 + + СерверHTTP + 4 + true + true + + true + + + + СерверHTTP + + + + OnChange + СерверHTTPПриИзменении + + + СерверHTTPExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + СерверHTTPКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ПортHTTP + 6 + true + true + + true + + + + ПортHTTP + + + + ПортHTTPExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + ПортHTTPКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + + ru + ЧН=; ЧГ= + + true + true + true + + 0 + + + 65535 + + + + true + true + + true + + + <key>ru</key> + <value>HTTP</value> + + + ГруппаHTTPExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаHTTPS + 2 + + СерверHTTPS + 8 + true + true + + true + + + + СерверHTTPS + + + + OnChange + СерверHTTPПриИзменении + + + СерверHTTPSExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + СерверHTTPSКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ПортHTTPS + 10 + true + true + + true + + + + ПортHTTPS + + + + ПортHTTPSExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + ПортHTTPSКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + + ru + ЧН=; ЧГ= + + true + true + true + + 0 + + + 65535 + + + + true + true + + true + + + <key>ru</key> + <value>HTTP</value> + + + ГруппаHTTPSExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаFTP + 3 + + СерверFTP + 12 + true + true + + true + + + + СерверFTP + + + + OnChange + СерверHTTPПриИзменении + + + СерверFTPExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + + СерверFTPКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ПортFTP + 14 + true + true + + true + + + + ПортFTP + + + + ПортFTPExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + ПортFTPКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + + ru + ЧН=; ЧГ= + + true + true + true + + 0 + + + 65535 + + + + true + true + + true + + + <key>ru</key> + <value>FTP</value> + + + ru + Группа HTTP + + + ГруппаFTPExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Прокси серверы</value> + + + ГруппаПроксиСерверыExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + LeftWide + true + Auto + Auto + + + + ОдинПроксиДляВсехПротоколов + 17 + + <key>ru</key> + <value>Один прокси-сервер для всех протоколов</value> + + true + true + + true + + + + ОдинПроксиДляВсехПротоколов + + + Right + + OnChange + ОдинПроксиДляВсехПротоколовПриИзменении + + + ОдинПроксиДляВсехПротоколовExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + ОдинПроксиДляВсехПротоколовКонтекстноеМеню + 18 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаАдресовИсключений + 19 + + АдресаИсключений + 20 + + <key>ru</key> + <value>Адреса исключений</value> + + true + true + + true + + + АдресаИсключений + + None + + АдресаИсключенийАдресСервера + 23 + true + true + + true + + + + АдресаИсключений.АдресСервера + + + + АдресаИсключенийАдресСервераExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + + АдресаИсключенийАдресСервераКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + АдресаИсключенийКоманднаяПанель + 22 + true + true + + true + + Left + true + + + true + true + + true + + АдресаИсключенийСтрокаПоиска + 47 + + АдресаИсключенийСтрокаПоискаРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + + АдресаИсключенийСтрокаПоискаКонтекстноеМеню + 48 + true + true + + true + + true + + + true + + + + true + true + + true + + АдресаИсключенийСостояниеПросмотра + 50 + + АдресаИсключенийСостояниеПросмотраРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + + АдресаИсключенийСостояниеПросмотраКонтекстноеМеню + 51 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + АдресаИсключенийУправлениеПоиском + 53 + + АдресаИсключенийУправлениеПоискомРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + + АдресаИсключенийУправлениеПоискомКонтекстноеМеню + 54 + true + true + + true + + true + + SearchControlAddition + + true + + + + АдресаИсключенийExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + + АдресаИсключенийКонтекстноеМеню + 21 + true + true + + true + + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + + + ДекорацияПредупреждениеДляСервера + 27 + + <key>ru</key> + <value>Адрес сервера может включать символы "*" - произвольные символы, и "?" - любой одиночный символ.</value> + + true + true + + true + + + ДекорацияПредупреждениеДляСервераExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПредупреждениеДляСервераКонтекстноеМеню + 28 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Не использовать прокси-сервер для адресов</value> + + + ГруппаАдресовИсключенийExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаКнопкаОК + 25 + true + true + + true + + + ФормаКнопкаОКExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КнопкаОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 29 + true + true + + true + + + ФормаОтменаExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + СерверHTTP + + <key>ru</key> + <value>HTTP</value> + + 1 + + String + + + + true + + + true + + true + + + ПортHTTP + + <key>ru</key> + <value>Порт</value> + + 2 + + Number + + 5 + true + + + + true + + + true + + true + + + СерверHTTPS + + <key>ru</key> + <value>HTTPS</value> + + 3 + + String + + + + true + + + true + + true + + + ПортHTTPS + + <key>ru</key> + <value>Порт</value> + + 4 + + Number + + 5 + true + + + + true + + + true + + true + + + СерверFTP + + <key>ru</key> + <value>FTP</value> + + 5 + + String + + + + true + + + true + + true + + + ПортFTP + + <key>ru</key> + <value>Порт</value> + + 6 + + Number + + 5 + true + + + + true + + + true + + true + + + ОдинПроксиДляВсехПротоколов + + <key>ru</key> + <value>Использовать прокси-сервер по умолчанию для всех протоколов</value> + + 7 + + Boolean + + + true + + + true + + true + + + АдресаИсключений + + <key>ru</key> + <value>Адреса исключений</value> + + 8 + + ValueTable + + + true + + + true + + true + + АдресСервера + + <key>ru</key> + <value>Адрес сервера</value> + + 1 + + String + + + + true + + + true + + + + + Сервер + 9 + + String + + + + true + + + true + + + + Порт + 10 + + Number + + true + + + + true + + + true + + + + КнопкаОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + Кнопка ОК + + + true + + + + КнопкаОК + + + true + DontUse + + + ОдинПроксиДляВсехПротоколов + + Boolean + + + + НеИспользоватьПроксиДляАдресов + + ValueList + + + + Сервер + + String + + + + + СерверFTP + + String + + + + + СерверHTTP + + String + + + + + СерверHTTPS + + String + + + + + Порт + + Number + + 10 + true + + + + + ПортHTTP + + Number + + 10 + true + + + + + ПортHTTPS + + Number + + 10 + true + + + + + ПортFTP + + Number + + 10 + true + + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..bc911e91 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Help/ru.html" @@ -0,0 +1,12 @@ + +

        Настраиваются для механизмов, которые работают с веб-сервисами.

        +

        При необходимости укажите адреса прокси-серверов для отдельных протоколов и адреса интернет-серверов, к которым должен использоваться прямой доступ.

        +

        По умолчанию включен флажок Использовать прокси-сервер по умолчанию для всех протоколов.

        +

        Основные параметры настройки (Адрес сервера и Порт) по умолчанию будут также использованы в качестве дополнительных параметров.

        +

        Настройка дополнительных параметров

        +
        • Для того чтобы указать адреса прокси-серверов для отдельных протоколов, выключите флажок Один прокси-сервер для всех протоколов; +
        • В соответствующем поле - HTTP, HTTPS, FTP - откорректируйте имя прокси-сервера, который будет использоваться для каждого протокола; +
        • При необходимости укажите Порт. +
        • В списке Не использовать прокси-сервер для адресов с помощью кнопки Добавить укажите адреса, к которым будет осуществляться прямой доступ. +
        • Для подтверждения введенных параметров нажмите ОК.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..056f084b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -0,0 +1,205 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Заполнение данных формы + Сервер = Параметры.Сервер; + Порт = Параметры.Порт; + + СерверHTTP = Параметры.СерверHTTP; + ПортHTTP = Параметры.ПортHTTP; + + СерверHTTPS = Параметры.СерверHTTPS; + ПортHTTPS = Параметры.ПортHTTPS; + + СерверFTP = Параметры.СерверFTP; + ПортFTP = Параметры.ПортFTP; + + ОдинПроксиДляВсехПротоколов = Параметры.ОдинПроксиДляВсехПротоколов; + + ИнициализироватьЭлементыФормы(ЭтотОбъект); + + Для каждого ЭлементСпискаИсключений Из Параметры.НеИспользоватьПроксиДляАдресов Цикл + СтрИсключения = АдресаИсключений.Добавить(); + СтрИсключения.АдресСервера = ЭлементСпискаИсключений.Значение; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ОдинПроксиДляВсехПротоколовПриИзменении(Элемент) + + ИнициализироватьЭлементыФормы(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура СерверHTTPПриИзменении(Элемент) + + // Если сервер не указан, то обнулить соответствующий порт. + Если ПустаяСтрока(ЭтотОбъект[Элемент.Имя]) Тогда + ЭтотОбъект[СтрЗаменить(Элемент.Имя, "Сервер", "Порт")] = 0; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КнопкаОК(Команда) + + Если Не Модифицированность Тогда + // Если данные формы не были изменены, + // то их не требуется возвращать. + ОповеститьОВыборе(Неопределено); + Возврат; + КонецЕсли; + + Если Не ПроверитьАдресаСерверовИсключений() Тогда + Возврат; + КонецЕсли; + + // Если проверка данных формы выполнена успешно, то возвратить дополнительные + // настройки прокси-сервера в структуре. + СтруктураВозвращаемыхЗначений = Новый Структура; + + СтруктураВозвращаемыхЗначений.Вставить("ОдинПроксиДляВсехПротоколов", ОдинПроксиДляВсехПротоколов); + + СтруктураВозвращаемыхЗначений.Вставить("СерверHTTP" , СерверHTTP); + СтруктураВозвращаемыхЗначений.Вставить("ПортHTTP" , ПортHTTP); + СтруктураВозвращаемыхЗначений.Вставить("СерверHTTPS", СерверHTTPS); + СтруктураВозвращаемыхЗначений.Вставить("ПортHTTPS" , ПортHTTPS); + СтруктураВозвращаемыхЗначений.Вставить("СерверFTP" , СерверFTP); + СтруктураВозвращаемыхЗначений.Вставить("ПортFTP" , ПортFTP); + + СписокИсключений = Новый СписокЗначений; + + Для каждого СтрАдреса Из АдресаИсключений Цикл + Если НЕ ПустаяСтрока(СтрАдреса.АдресСервера) Тогда + СписокИсключений.Добавить(СтрАдреса.АдресСервера); + КонецЕсли; + КонецЦикла; + + СтруктураВозвращаемыхЗначений.Вставить("НеИспользоватьПроксиДляАдресов", СписокИсключений); + + ОповеститьОВыборе(СтруктураВозвращаемыхЗначений); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Выполняет инициализацию элементов формы в зависимости от +// настроек прокси-сервера. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ИнициализироватьЭлементыФормы(Форма) + + Форма.Элементы.ГруппаПроксиСерверы.Доступность = НЕ Форма.ОдинПроксиДляВсехПротоколов; + Если Форма.ОдинПроксиДляВсехПротоколов Тогда + + Форма.СерверHTTP = Форма.Сервер; + Форма.ПортHTTP = Форма.Порт; + + Форма.СерверHTTPS = Форма.Сервер; + Форма.ПортHTTPS = Форма.Порт; + + Форма.СерверFTP = Форма.Сервер; + Форма.ПортFTP = Форма.Порт; + + КонецЕсли; + +КонецПроцедуры + +// Выполняет проверку корректности адресов серверов-исключений. +// Также сообщает пользователю о некорректно заполненных адресах. +// +// Возвращаемое значение: +// Булево - Истина, если адреса корректны, +// Ложь в противном случае. +// +&НаКлиенте +Функция ПроверитьАдресаСерверовИсключений() + + АдресаКорректны = Истина; + Для каждого СтрАдрес Из АдресаИсключений Цикл + Если ПустаяСтрока(СтрАдрес.АдресСервера) Тогда + Продолжить; + КонецЕсли; + + НедопустимыеСимволы = НедопустимыеСимволыВСтроке(СтрАдрес.АдресСервера, + "0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ_-.:*?"); + Если ПустаяСтрока(НедопустимыеСимволы) Тогда + Продолжить; + КонецЕсли; + ТекстСообщения = СтрЗаменить(НСтр("ru = 'В адресе найдены недопустимые символы: %1'"), + "%1", НедопустимыеСимволы); + ИндексСтрокой = СтрЗаменить(Строка(АдресаИсключений.Индекс(СтрАдрес)), Символ(160), ""); + ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, , + "АдресаИсключений[" + Формат(ИндексСтрокой, "ЧГ=0") + "].АдресСервера"); + АдресаКорректны = Ложь; + КонецЦикла; + + Возврат АдресаКорректны; + +КонецФункции + +// Находит и возвращает недопустимые символы в строке, перечисленные через запятую. +// +// Параметры: +// ПроверяемаяСтрока - Строка - проверяемая на предмет наличия недопустимых символов. +// ДопустимыеСимволы - Строка - допустимые символы. +// +// Возвращаемое значение: +// Строка +// +&НаКлиенте +Функция НедопустимыеСимволыВСтроке(ПроверяемаяСтрока, ДопустимыеСимволы) + + СписокНедопустимыхСимволов = Новый СписокЗначений; + + ДлинаСтроки = СтрДлина(ПроверяемаяСтрока); + Для Итератор = 1 По ДлинаСтроки Цикл + ТекущийСимвол = Сред(ПроверяемаяСтрока, Итератор, 1); + Если СтрНайти(ДопустимыеСимволы, ТекущийСимвол) = 0 Тогда + Если СписокНедопустимыхСимволов.НайтиПоЗначению(ТекущийСимвол) = Неопределено Тогда + СписокНедопустимыхСимволов.Добавить(ТекущийСимвол); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + НедопустимыеСимволыСтрокой = ""; + Запятая = Ложь; + + Для каждого ЭлементНедопустимыйСимвол Из СписокНедопустимыхСимволов Цикл + + НедопустимыеСимволыСтрокой = НедопустимыеСимволыСтрокой + + ?(Запятая, ",", "") + + """" + + ЭлементНедопустимыйСимвол.Значение + + """"; + Запятая = Истина; + + КонецЦикла; + + Возврат НедопустимыеСимволыСтрокой; + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" new file mode 100644 index 00000000..d37d15ea --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -0,0 +1,15 @@ + + + ДополнительныеПараметрыПроксиСервера + + ru + Дополнительные параметры прокси-сервера + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/Form.form" new file mode 100644 index 00000000..6fdd2203 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/Form.form" @@ -0,0 +1,120 @@ + + + + <key>ru</key> + <value>Служебный пользователь</value> + + + НеразделенныйПользователь + 1 + + <key>ru</key> + <value>Неразделенный пользователь</value> + + true + true + + true + + + НеразделенныйПользовательExtendedTooltip + 3 + true + true + + true + + Label + true + true + + Left + + + + НеразделенныйПользовательКонтекстноеМеню + 2 + true + true + + true + + true + + Label + true + + Left + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + UseIfNecessary + true + true + + + + 0 + + + + 0 + + + + 0:08efd7c8-3ac1-46c5-862c-2b4816b8081f + + + + 0 + + + + + + 2 + + + + 2 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/Module.bsl" new file mode 100644 index 00000000..d2985825 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/Module.bsl" @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Элементы.НеразделенныйПользователь.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Просмотр сведений о пользователе %1 не доступен, т.к. это + |служебная учетная запись, предусмотренная для администраторов сервиса.'"), + Параметры.Ключ.Наименование); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217.mdo" new file mode 100644 index 00000000..c03a4f2c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217/\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217\320\235\320\265\321\200\320\260\320\267\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217.mdo" @@ -0,0 +1,11 @@ + + + ИнформацияНеразделенногоПользователя + + ru + Информация неразделенного пользователя + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/Form.form" new file mode 100644 index 00000000..22788072 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/Form.form" @@ -0,0 +1,587 @@ + + + + <key>ru</key> + <value>Установлено обновление программы</value> + + + Содержимое + 13 + + Картинка + 10 + + <key>ru</key> + <value>Картинка</value> + + true + true + + true + + + КартинкаРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + КартинкаКонтекстноеМеню + 11 + true + true + + true + + true + + 4 + true + 2 + true + + + CommonPicture.Информация32 + + Proportionally + AsFileRef + + + + ГруппаТекстИРасписание + 22 + + ГруппаТекст + 18 + + Текст + 1 + + <key>ru</key> + <value>Версия программы обновлена (внесены изменения в конфигурацию информационной базы). +Для дальнейшей работы рекомендуется перезапустить программу</value> + + true + true + + true + + + ТекстРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ТекстКонтекстноеМеню + 2 + true + true + + true + + true + + true + Label + true + true + Center + + + URLProcessing + ТекстОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Текст</value> + + + ГруппаТекстРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ГруппаРасписание + 20 + + Расписание + 15 + + <key>ru</key> + <value>Напоминать о новых исправлениях</value> + + true + true + + true + + + + ПредставлениеРасписания + + + + РасписаниеРасширеннаяПодсказка + 17 + true + true + + true + + Label + true + true + + Left + + + + РасписаниеКонтекстноеМеню + 16 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + РасписаниеНажатие + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Расписание</value> + + + ГруппаРасписаниеРасширеннаяПодсказка + 21 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Текст и расписание</value> + + + ГруппаТекстИРасписаниеРасширеннаяПодсказка + 23 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Содержимое</value> + + + СодержимоеРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаПерезапустить + 4 + true + true + + true + + + ФормаПерезапуститьРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Перезапустить + Auto + true + true + true + UserCmds + Auto + + + ФормаНапомнитьПозже + 6 + true + true + + true + + true + + ФормаНапомнитьПозжеРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НапомнитьПозже + Auto + true + true + UserCmds + Auto + + + ФормаБольшеНеПоказывать + 8 + true + true + + true + + + ФормаБольшеНеПоказыватьРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + Form.Command.БольшеНеНапоминать + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + НажатиеНаКнопку + 1 + + Boolean + + + true + + + true + + + + ПараметрыПроверки + 2 + + + true + + + true + + + + ОписаниеНовыхПатчей + 3 + + String + + + + true + + + true + + + + ПредставлениеРасписания + + <key>ru</key> + <value>Представление расписания</value> + + 4 + + String + + + + true + + + true + + + + СтандартноеРасписание + 5 + + + true + + + true + + + + РасписаниеИзменено + 6 + + Boolean + + + true + + + true + + + + ТекущееРасписание + 7 + + + true + + + true + + + + Перезапустить + + <key>ru</key> + <value>Перезапустить</value> + + 1 + + ru + Перезапустить + + + true + + + + Перезапустить + + + Auto + + + НапомнитьПозже + + <key>ru</key> + <value>Напомнить завтра</value> + + 2 + + ru + Отложить напоминание до завтра + + + true + + + + НапомнитьПозже + + + Auto + + + БольшеНеНапоминать + + <key>ru</key> + <value>Больше не напоминать</value> + + 3 + + ru + Больше не напоминать + + + true + + + + БольшеНеНапоминать + + + Auto + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..428695c5 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,217 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ПараметрыПроверки = Справочники.ВерсииРасширений.ДинамическиИзмененныеРасширения(); + ПараметрыПроверки.Вставить("КонфигурацияБазыДанныхИзмененаДинамически", КонфигурацияБазыДанныхИзмененаДинамически()); + + Сообщение = СтандартныеПодсистемыСервер.ТекстСообщенияПриДинамическомОбновлении(ПараметрыПроверки); + + Если ПараметрыПроверки.Исправления <> Неопределено И ПараметрыПроверки.Исправления.СписокНовых.Количество() > 0 Тогда + АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); + ПараметрыМетода = Новый Массив; + ПараметрыМетода.Добавить(АдресХранилища); + ПараметрыМетода.Добавить(ПараметрыПроверки.Исправления.СписокНовых); + ФоновоеЗадание = РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных( + "ОбновлениеКонфигурации.ОписанияНовыхПатчей", + ПараметрыМетода); + ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Неопределено); + + ОписаниеНовыхПатчей = ПолучитьИзВременногоХранилища(АдресХранилища); + Сообщение = СтрЗаменить(Сообщение, "Ссылка", " " + НСтр("ru = 'Подробно'")); + КонецЕсли; + + Элементы.Текст.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(Сообщение); + + СРасписанием = Истина; + Если ПараметрыПроверки.Исправления = Неопределено + Или ПараметрыПроверки.Исправления.Добавлено = 0 Тогда + Элементы.ГруппаРасписание.Видимость = Ложь; + СРасписанием = Ложь; + Иначе + ЗаполнитьРасписаниеОтображенияФормы(); + КонецЕсли; + + Ключ = ""; + Если ПараметрыПроверки.КонфигурацияБазыДанныхИзмененаДинамически Тогда + Ключ = "Конфигурация"; + КонецЕсли; + Если ПараметрыПроверки.Исправления <> Неопределено Тогда + Ключ = Ключ + "Исправления"; + КонецЕсли; + Если ПараметрыПроверки.Расширения <> Неопределено Тогда + Ключ = Ключ + "Расширения"; + КонецЕсли; + Если СРасписанием Тогда + Ключ = Ключ + "Расписание"; + КонецЕсли; + + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, Ключ); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + Если Не ЗавершениеРаботы Тогда + СохранитьРасписание(); + Если Не НажатиеНаКнопку Тогда + НапомнитьЗавтра(); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ТекстОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Документ = Новый ТекстовыйДокумент; + Документ.УстановитьТекст(ОписаниеНовыхПатчей); + Документ.Показать(НСтр("ru = 'Новые исправления ошибок'")); +КонецПроцедуры + +&НаКлиенте +Процедура РасписаниеНажатие(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОбработчикЗавершения = Новый ОписаниеОповещения("РасписаниеНажатиеЗавершение", ЭтотОбъект); + Список = Новый СписокЗначений; + Список.Добавить("ОдинРаз", НСтр("ru = 'один раз в день'")); + Список.Добавить("ДваРаза", НСтр("ru = 'два раза в день'")); + Список.Добавить("ДругойИнтервал", НСтр("ru = 'другой интервал...'")); + + ПоказатьВыборИзМеню(ОбработчикЗавершения, Список, Элементы.Расписание); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Перезапустить(Команда) + СохранитьРасписание(); + НажатиеНаКнопку = Истина; + СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы(); + ЗавершитьРаботуСистемы(Истина, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура НапомнитьПозже(Команда) + НажатиеНаКнопку = Истина; + НапомнитьЗавтра(); + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура БольшеНеНапоминать(Команда) + НажатиеНаКнопку = Истина; + БольшеНеНапоминатьНаСервере(); + Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура БольшеНеНапоминатьНаСервере() + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОбщиеНастройкиПользователя", + "ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы", + Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура НапомнитьЗавтра() + ИмяПараметра = "СтандартныеПодсистемы.ПриВыполненииСтандартныхПериодическихПроверок"; + ПараметрыПриложения.Вставить(ИмяПараметра, ОбщегоНазначенияКлиент.ДатаСеанса()); +КонецПроцедуры + +&НаКлиенте +Процедура РасписаниеНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Результат.Значение = "ОдинРаз" Или Результат.Значение = "ДваРаза" Тогда + ПредставлениеРасписания = Результат; + РасписаниеИзменено = Истина; + ТекущееРасписание.Идентификатор = Результат.Значение; + ТекущееРасписание.Представление = Результат.Представление; + ТекущееРасписание.Расписание = СтандартноеРасписание[Результат.Значение]; + Возврат; + КонецЕсли; + + ОбработчикЗавершений = Новый ОписаниеОповещения("РасписаниеНажатиеПослеВыбораПроизвольногоРасписания", ЭтотОбъект); + ДиалогРасписания = Новый ДиалогРасписанияРегламентногоЗадания(Новый РасписаниеРегламентногоЗадания); + ДиалогРасписания.Показать(ОбработчикЗавершений); +КонецПроцедуры + +&НаКлиенте +Процедура РасписаниеНажатиеПослеВыбораПроизвольногоРасписания(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + РасписаниеИзменено = Истина; + ПредставлениеРасписания = Результат; + ТекущееРасписание.Идентификатор = "ДругойИнтервал"; + ТекущееРасписание.Представление = Строка(Результат); + ТекущееРасписание.Расписание = Результат; + +КонецПроцедуры + +&НаСервере +Процедура СохранитьРасписание() + Если Не РасписаниеИзменено Тогда + Возврат; + КонецЕсли; + + ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить("КонтрольДинамическогоОбновления", "РасписаниеПроверкиПатчей", ТекущееРасписание); +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьРасписаниеОтображенияФормы() + + ТекущееРасписание = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить("КонтрольДинамическогоОбновления", "РасписаниеПроверкиПатчей"); + Если ТекущееРасписание = Неопределено Тогда + ТекущееРасписание = Новый Структура; + ТекущееРасписание.Вставить("Идентификатор"); + ТекущееРасписание.Вставить("Представление"); + ТекущееРасписание.Вставить("Расписание"); + ТекущееРасписание.Вставить("ПоследнееОповещение"); + ПредставлениеРасписания = НСтр("ru = 'по умолчанию'"); + Иначе + ПредставлениеРасписания = ТекущееРасписание.Представление; + КонецЕсли; + + ОдинРазВДень = Новый РасписаниеРегламентногоЗадания; + ОдинРазВДень.ПериодПовтораДней = 1; + ДваРазаВДень = Новый РасписаниеРегламентногоЗадания; + ДваРазаВДень.ПериодПовтораДней = 1; + + ПервыйЗапуск = Новый РасписаниеРегламентногоЗадания; + ПервыйЗапуск.ВремяНачала = Дата(01,01,01,09,00,00); + ДваРазаВДень.ДетальныеРасписанияДня.Добавить(ПервыйЗапуск); + + ВторойЗапуск = Новый РасписаниеРегламентногоЗадания; + ВторойЗапуск.ВремяНачала = Дата(01,01,01,15,00,00); + ДваРазаВДень.ДетальныеРасписанияДня.Добавить(ВторойЗапуск); + + СтандартноеРасписание = Новый Структура; + СтандартноеРасписание.Вставить("ОдинРаз", ОдинРазВДень); + СтандартноеРасписание.Вставить("ДваРаза", ДваРазаВДень); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..18cdfa00 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\321\214\320\224\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,10 @@ + + + КонтрольДинамическогоОбновления + + ru + Контроль динамического обновления + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/Form.form" new file mode 100644 index 00000000..ee14353d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/Form.form" @@ -0,0 +1,2284 @@ + + + + ГруппаШапка + 135 + + ГруппаШапкаЛево + 141 + + Закрыть + 77 + + <key>ru</key> + <value>Закрыть</value> + + true + true + + true + + false + + ЗакрытьExtendedTooltip + 96 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + Left + UserCmds + Auto + + + СкрытьПоказатьДеревоРазделов + 68 + + <key>ru</key> + <value>Скрыть разделы</value> + + true + true + + true + + false + + СкрытьПоказатьДеревоРазделовExtendedTooltip + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СкрытьПоказатьДеревоРазделов + Auto + true + true + Left + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Шапка лево</value> + + + ГруппаШапкаЛевоРасширеннаяПодсказка + 142 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ГруппаШапкаПраво + 133 + + ПредыдущийРаздел + 72 + + <key>ru</key> + <value>< Назад</value> + + true + true + + true + + false + + ПредыдущийРазделExtendedTooltip + 101 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредыдущийРаздел + Auto + 10 + true + true + Right + UserCmds + Auto + + + СледующийРаздел + 73 + + <key>ru</key> + <value>Далее ></value> + + true + true + + true + + false + + СледующийРазделExtendedTooltip + 102 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СледующийРаздел + Auto + 10 + true + Right + UserCmds + Auto + + + ФормаСправка + 95 + true + true + + true + + + ФормаСправкаExtendedTooltip + 97 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Picture + 3 + true + true + Right + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Шапка право</value> + + + ГруппаШапкаПравоРасширеннаяПодсказка + 134 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + true + + ГруппаШапкаРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + Auto + Auto + + + + ГруппаКнопкиШапка + 69 + true + true + + true + + + <key>ru</key> + <value>Кнопки шапка</value> + + + ГруппаКнопкиШапкаExtendedTooltip + 98 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ДеревоФормаЗаполнения + 48 + + ГруппаДеревоРазделов + 50 + + ДеревоРазделов + 53 + + <key>ru</key> + <value>Дерево разделов</value> + + true + true + + true + + + ДеревоРазделов + + false + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + OutputList + SortListAsc + SortListDesc + Tree + + ГруппаПолныйКодНаименование + 62 + + ДеревоРазделовНаименование + 56 + + <key>ru</key> + <value>Раздел</value> + + true + true + + true + + + + ДеревоРазделов.Формулировка + + + Top + + ДеревоРазделовНаименованиеExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + + ДеревоРазделовНаименованиеКонтекстноеМеню + 57 + true + true + + true + + true + + LabelField + EnterOnInput + true + true + Left + true + + 30 + true + true + false + + + true + true + + true + + + <key>ru</key> + <value>Раздел</value> + + + ГруппаПолныйКодНаименованиеExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ДеревоРазделовКоманднаяПанель + 55 + true + true + + true + + Left + + + Selection + ДеревоРазделовВыбор + + + true + true + + true + + ДеревоРазделовСтрокаПоиска + 124 + + ДеревоРазделовСтрокаПоискаРасширеннаяПодсказка + 126 + true + true + + true + + Label + true + true + + Left + + + + ДеревоРазделовСтрокаПоискаКонтекстноеМеню + 125 + true + true + + true + + true + + + true + + + + true + true + + true + + ДеревоРазделовСостояниеПросмотра + 127 + + ДеревоРазделовСостояниеПросмотраРасширеннаяПодсказка + 129 + true + true + + true + + Label + true + true + + Left + + + + ДеревоРазделовСостояниеПросмотраКонтекстноеМеню + 128 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ДеревоРазделовУправлениеПоиском + 130 + + ДеревоРазделовУправлениеПоискомРасширеннаяПодсказка + 132 + true + true + + true + + Label + true + true + + Left + + + + ДеревоРазделовУправлениеПоискомКонтекстноеМеню + 131 + true + true + + true + + true + + SearchControlAddition + + true + + + + ДеревоРазделовExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + + ДеревоРазделовКонтекстноеМеню + 54 + + КонтекстноеМенюДеревоРазделовВыборРаздела + 75 + + <key>ru</key> + <value>Перейти</value> + + true + true + + true + + false + + КонтекстноеМенюДеревоРазделовВыборРазделаExtendedTooltip + 105 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыборРаздела + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюДеревоРазделовКопировать + 76 + true + true + + true + + false + + КонтекстноеМенюДеревоРазделовКопироватьExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ДеревоРазделов.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Tree + true + 30 + true + true + Row + 1 + 1 + AutoUse + true + true + Auto + Auto + ExpandAllLevels + true + + ДеревоРазделов.КодКартинки + + + CommonPicture.КоллекцияДеревоАнкеты + + + true + true + + true + + + <key>ru</key> + <value>Дерево разделов</value> + + + ГруппаДеревоРазделовExtendedTooltip + 104 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаОжидание + 79 + + ГруппаОжиданиеЭлементы + 87 + + КартинкаДлительныйПроцесс + 82 + true + true + + true + + + КартинкаДлительныйПроцессExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + + КартинкаДлительныйПроцессКонтекстноеМеню + 83 + true + true + + true + + true + + true + true + false + + + CommonPicture.Информация32 + + + + + НадписьПодождите + 84 + + <key>ru</key> + <value>Подождите пожалуйста…. +Открывается раздел анкеты</value> + + true + true + + true + + + НадписьПодождитеExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + + НадписьПодождитеКонтекстноеМеню + 85 + true + true + + true + + true + + Label + 2 + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Ожидание элементы</value> + + Center + Center + + ГруппаОжиданиеЭлементыExtendedTooltip + 114 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Ожидание</value> + + true + true + + ГруппаОжиданиеРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + Center + WeakSeparation + true + Auto + Auto + + + + ГруппаТелоАнкеты + 64 + + НадписьВступление + 66 + true + true + + true + + + НадписьВступлениеExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + + НадписьВступлениеКонтекстноеМеню + 67 + true + true + + true + + true + + Label + true + true + true + false + + Left + + + true + + true + + + <key>ru</key> + <value>Тело анкеты</value> + + true + + ГруппаТелоАнкетыExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Дерево форма заполнения</value> + + + ДеревоФормаЗаполненияExtendedTooltip + 103 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + LeftNarrowest + Auto + Auto + + + + ГруппаКнопкиПодвал + 139 + + ПредыдущийРазделПодвал + 93 + + <key>ru</key> + <value>< Назад</value> + + true + true + + true + + false + + ПредыдущийРазделПодвалExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПредыдущийРаздел + Auto + 10 + true + true + UserCmds + Auto + + + СледующийРазделПодвал + 94 + + <key>ru</key> + <value>Далее ></value> + + true + true + + true + + false + + СледующийРазделПодвалExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СледующийРаздел + Auto + 10 + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопки подвал</value> + + + ГруппаКнопкиПодвалРасширеннаяПодсказка + 140 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + Top + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + Vertical + true + true + true + true + true + + ШаблонАнкеты + 1 + + CatalogRef.ШаблоныАнкет + + + true + + + true + + + + ТаблицаВопросовРаздела + 3 + + ValueTable + + + true + + + true + + + Наименование + 2 + + String + + 150 + + + + true + + + true + + + + ЭлементарныйВопрос + 5 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + Обязательный + 6 + + Boolean + + + true + + + true + + + + ТипВопроса + 7 + + EnumRef.ТипыВопросовШаблонаАнкеты + + + true + + + true + + + + ТипОтвета + 8 + + EnumRef.ТипыОтветовНаВопрос + + + true + + + true + + + + ТипТабличногоВопроса + 4 + + EnumRef.ТипыТабличныхВопросов + + + true + + + true + + + + СоставТабличногоВопроса + 9 + + ValueTable + + + true + + + true + + + + ПредопределенныеОтветы + 10 + + ValueTable + + + true + + + true + + + + КлючСтроки + 11 + + UUID + + + true + + + true + + + + Длина + 12 + + Number + + 10 + true + + + + true + + + true + + + + МаксимальноеЗначение + 13 + + Number + + 15 + + + + true + + + true + + + + МинимальноеЗначение + 14 + + Number + + 15 + + + + true + + + true + + + + ТипЗначения + 15 + + TypeDescription + + + true + + + true + + + + ТребуетсяКомментарий + 16 + + Boolean + + + true + + + true + + + + ПояснениеКомментария + 17 + + String + + 150 + + + + true + + + true + + + + ВопросШаблона + 18 + + CatalogRef.ВопросыШаблонаАнкеты + + + true + + + true + + + + ПолныйКод + 19 + + String + + 100 + + + + true + + + true + + + + Формулировка + 20 + + String + + + + true + + + true + + + + Точность + 21 + + Number + + 1 + + + + true + + + true + + + + ВысотаЭлементаФормулировкиВопроса + 22 + + Number + + 2 + true + + + + true + + + true + + + + ТипСтроки + 1 + + String + + 10 + + + + true + + + true + + + + РодительВопрос + 3 + + CatalogRef.ВопросыШаблонаАнкеты + + + true + + + true + + + + СоставКомплексногоВопроса + 23 + + ValueTable + + + true + + + true + + + + Подсказка + 24 + + String + + + + true + + + true + + + + СпособОтображенияПодсказки + 25 + + EnumRef.СпособыОтображенияПодсказок + + + true + + + true + + + + ВидПереключателя + 26 + + EnumRef.ВидыПереключателяВАнкетах + + + true + + + true + + + + ВидФлажка + 27 + + EnumRef.ВидыФлажкаВАнкетах + + + true + + + true + + + + + ТаблицаВопросовРаздела.СоставТабличногоВопроса + + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + НомерСтроки + + <key>ru</key> + <value>Номер строки</value> + + 2 + + Number + + 10 + + + + true + + + true + + + + + + ТаблицаВопросовРаздела.ПредопределенныеОтветы + + + Ответ + + <key>ru</key> + <value>Ответ</value> + + 1 + + Characteristic.ВопросыДляАнкетирования + + + true + + + true + + + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 2 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + НомерСтроки + + <key>ru</key> + <value>Номер строки</value> + + 3 + + Number + + 10 + + + + true + + + true + + + + + + ТаблицаВопросовРаздела.СоставКомплексногоВопроса + + + ЭлементарныйВопрос + + <key>ru</key> + <value>Элементарный вопрос</value> + + 2 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + НомерСтроки + + <key>ru</key> + <value>Номер строки</value> + + 1 + + Number + + 10 + + + + true + + + true + + + + ТребуетсяКомментарий + + <key>ru</key> + <value>Требуется комментарий</value> + + 3 + + Boolean + + + true + + + true + + + + ПояснениеКомментария + + <key>ru</key> + <value>Пояснение комментария</value> + + 4 + + String + + 150 + + + + true + + + true + + + + + + ПодчиненныеВопросы + 2 + + ValueTable + + + true + + + true + + + Вопрос + 1 + + String + + 36 + + + + true + + + true + + + + Подчиненные + 2 + + ValueTable + + + true + + + true + + + + + ПодчиненныеВопросы.Подчиненные + + + ИмяЭлементаПодчиненногоВопроса + + <key>ru</key> + <value>Имя элемента подчиненного вопроса</value> + + 1 + + String + + + + true + + + true + + + + Обязательный + + <key>ru</key> + <value>Обязательный</value> + + 2 + + Boolean + + + true + + + true + + + + + + ВариантыОтветовНаВопросы + 4 + + ValueTable + + + true + + + true + + + Вопрос + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + Ответ + 2 + + CatalogRef.ВариантыОтветовАнкет + + + true + + + true + + + + Представление + 3 + + String + + 150 + + + + true + + + true + + + + ТребуетОткрытогоОтвета + 4 + + Boolean + + + true + + + true + + + + + ДобавленныеДинамическиРеквизиты + 5 + + ValueList + + + true + + + true + + + + String + + + + + + ВопросыПредставлениеТипы + 6 + + ValueTable + + + true + + + true + + + Вопрос + 1 + + ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования + + + true + + + true + + + + Формулировка + 2 + + String + + 500 + + + + true + + + true + + + + Тип + 3 + + TypeDescription + + + true + + + true + + + + ТипОтвета + 4 + + EnumRef.ТипыОтветовНаВопрос + + + true + + + true + + + + МинимальноеЗначение + 5 + + Number + + 15 + + + + true + + + true + + + + МаксимальноеЗначение + 6 + + Number + + 15 + + + + true + + + true + + + + ВидПереключателя + 7 + + EnumRef.ВидыПереключателяВАнкетах + + + true + + + true + + + + ВидФлажка + 8 + + EnumRef.ВидыФлажкаВАнкетах + + + true + + + true + + + + + ДеревоРазделов + + <key>ru</key> + <value>Дерево разделов</value> + + 7 + + ValueTree + + + true + + + true + + + Формулировка + + <key>ru</key> + <value>Формулировка</value> + + 1 + + String + + 150 + + + + true + + + true + + + + ПолныйКод + 3 + + String + + 100 + + + + true + + + true + + + + КодКартинки + 4 + + Number + + 1 + + + + true + + + true + + + + ТипСтроки + 5 + + String + + 20 + + + + true + + + true + + + + Ссылка + 6 + + CatalogRef.ВопросыШаблонаАнкеты + + + true + + + true + + + + КоличествоВопросов + 2 + + Number + + 10 + + + + true + + + true + + + + + Вступление + 8 + + String + + + + true + + + true + + + + Заключение + 9 + + String + + + + true + + + true + + + + Подождите + 10 + + String + + + + true + + + true + + + + ИмяЭлементаДляПозиционирования + 11 + + String + + 200 + + + + true + + + true + + + + НомерТекущегоРаздела + 12 + + Number + + 10 + true + + + + true + + + true + + + + СкрытьПоказатьДеревоРазделов + + <key>ru</key> + <value>Скрыть показать дерево разделов</value> + + 1 + + ru + Скрыть показать дерево разделов + + + true + + + + СкрытьПоказатьДеревоРазделов + + + DontUse + + + ПредыдущийРаздел + + <key>ru</key> + <value>Предыдущий раздел</value> + + 2 + + ru + Перейти к предыдущему разделу анкеты + + + true + + + + ПредыдущийРаздел + + + DontUse + + + СледующийРаздел + + <key>ru</key> + <value>Далее>></value> + + 3 + + ru + Перейти к следующему разделу анкеты + + + true + + + + СледующийРаздел + + + DontUse + + + ВыборРаздела + + <key>ru</key> + <value>Выбор раздела</value> + + 4 + + ru + Выбор раздела + + + true + + + + ВыборРаздела + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/Module.bsl" new file mode 100644 index 00000000..04f2721c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/Module.bsl" @@ -0,0 +1,218 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если НЕ Параметры.Свойство("ШаблонАнкеты") Тогда + Отказ = Истина; + Возврат; + Иначе + ШаблонАнкеты = Параметры.ШаблонАнкеты; + КонецЕсли; + + УстановитьЗначенияРеквизитовФормыСогласноШаблонаАнкеты(); + Анкетирование.УстановитьЭлементДереваРазделовАнкетыВступлениеЗаключение(ДеревоРазделов, НСтр("ru = 'Вступление'"), "Вступление"); + Анкетирование.ЗаполнитьДеревоРазделов(ЭтотОбъект,ДеревоРазделов); + Анкетирование.УстановитьЭлементДереваРазделовАнкетыВступлениеЗаключение(ДеревоРазделов, НСтр("ru = 'Заключение'"), "Заключение"); + АнкетированиеКлиентСервер.СформироватьНумерациюДерева(ДеревоРазделов,Истина); + + Элементы.ДеревоРазделов.ТекущаяСтрока = 0; + ПостроениеФормыСогласноРаздела(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + УправлениеДоступностьюКнопкиНавигацияРазделов(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ДеревоРазделовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + ТекущиеДанные = Элементы.ДеревоРазделов.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ВыполнитьПостроениеФормыЗаполнения(); + УправлениеДоступностьюКнопкиНавигацияРазделов(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПриИзмененииВопросовСУсловием(Элемент) + + УправлениеДоступностьюПодчиненныеВопросы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СкрытьПоказатьДеревоРазделов(Команда) + + ИзменитьВидимостьДеревоРазделов(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредыдущийРаздел(Команда) + + ИзменитьРаздел("Назад"); + +КонецПроцедуры + +&НаКлиенте +Процедура СледующийРаздел(Команда) + + ИзменитьРаздел("Вперед"); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыборРаздела(Команда) + + ВыполнитьПостроениеФормыЗаполнения(); + УправлениеДоступностьюКнопкиНавигацияРазделов(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + +КонецПроцедуры + +// Отвечает за построение формы заполнения. +&НаСервере +Процедура ПостроениеФормыСогласноРаздела() + + // Определение выбранного раздела. + ТекущиеДанныеДеревоРазделов = ДеревоРазделов.НайтиПоИдентификатору(Элементы.ДеревоРазделов.ТекущаяСтрока); + Если ТекущиеДанныеДеревоРазделов = Неопределено Тогда + Возврат; + КонецЕсли; + + НомерТекущегоРаздела = Элементы.ДеревоРазделов.ТекущаяСтрока; + Анкетирование.ПостроениеФормыЗаполненияПоРазделу(ЭтотОбъект,ТекущиеДанныеДеревоРазделов); + Анкетирование.СформироватьТаблицуПодчиненияВопросов(ЭтотОбъект); + + Элементы.ПредыдущийРазделПодвал.Видимость = (ТаблицаВопросовРаздела.Количество() > 0); + Элементы.СледующийРазделПодвал.Видимость = (ТаблицаВопросовРаздела.Количество() > 0); + + АнкетированиеКлиентСервер.ПереключитьВидимостьГруппТелаАнкеты(ЭтотОбъект, Истина); + +КонецПроцедуры + +// Начинает процесс построения формы заполнения согласно разделам. +&НаКлиенте +Процедура ВыполнитьПостроениеФормыЗаполнения() + + АнкетированиеКлиентСервер.ПереключитьВидимостьГруппТелаАнкеты(ЭтотОбъект, Ложь); + ПодключитьОбработчикОжидания("ОкончаниеПостроенияФормыЗаполнения",0.1,Истина); + +КонецПроцедуры + +// Заканчивает формирование формы заполнения анкеты. +&НаКлиенте +Процедура ОкончаниеПостроенияФормыЗаполнения() + + ПостроениеФормыСогласноРаздела(); + УправлениеДоступностьюПодчиненныеВопросы(); + УправлениеДоступностьюКнопкиНавигацияРазделов(); + +КонецПроцедуры + +// Отвечает за доступность кнопок навигации по разделам. +&НаКлиенте +Процедура УправлениеДоступностьюКнопкиНавигацияРазделов() + + Элементы.ПредыдущийРаздел.Видимость = (Элементы.ДеревоРазделов.ТекущаяСтрока <> 0); + Элементы.ПредыдущийРазделПодвал.Видимость = (Элементы.ДеревоРазделов.ТекущаяСтрока > 0); + Элементы.СледующийРаздел.Видимость = (ДеревоРазделов.НайтиПоИдентификатору(Элементы.ДеревоРазделов.ТекущаяСтрока + 1) <> Неопределено); + Элементы.СледующийРазделПодвал.Видимость = (ДеревоРазделов.НайтиПоИдентификатору(Элементы.ДеревоРазделов.ТекущаяСтрока + 1) <> Неопределено); + +КонецПроцедуры + +// Изменяет текущий раздел +&НаКлиенте +Процедура ИзменитьРаздел(Направление) + + Элементы.ДеревоРазделов.ТекущаяСтрока = НомерТекущегоРаздела + ?(Направление = "Вперед",1,-1); + НомерТекущегоРаздела = НомерТекущегоРаздела + ?(Направление = "Вперед",1,-1); + ТекущиеДанныеДеревоРазделов = ДеревоРазделов.НайтиПоИдентификатору(Элементы.ДеревоРазделов.ТекущаяСтрока); + Если ТекущиеДанныеДеревоРазделов.КоличествоВопросов = 0 И ТекущиеДанныеДеревоРазделов.ТипСтроки = "Раздел" Тогда + ИзменитьРаздел(Направление); + КонецЕсли; + ВыполнитьПостроениеФормыЗаполнения(); + +КонецПроцедуры + +// Изменяет видимость дерева разделов. +&НаКлиенте +Процедура ИзменитьВидимостьДеревоРазделов() + + Элементы.ГруппаДеревоРазделов.Видимость = НЕ Элементы.ГруппаДеревоРазделов.Видимость; + Элементы.СкрытьПоказатьДеревоРазделов.Заголовок = ?(Элементы.ГруппаДеревоРазделов.Видимость,НСтр("ru = 'Скрыть разделы'"), НСтр("ru = 'Показать разделы'")); + +КонецПроцедуры + +// Управляет доступностью элементов формы. +&НаКлиенте +Процедура УправлениеДоступностьюПодчиненныеВопросы() + + Для каждого ЭлементКоллекции Из ПодчиненныеВопросы Цикл + + ИмяВопроса = АнкетированиеКлиентСервер.ПолучитьИмяВопроса(ЭлементКоллекции.Вопрос); + + Для каждого ПодчиненныйВопрос Из ЭлементКоллекции.Подчиненные Цикл + + Элементы[ПодчиненныйВопрос.ИмяЭлементаПодчиненногоВопроса].ТолькоПросмотр = (НЕ ЭтотОбъект[ИмяВопроса]); + Если СтрЧислоВхождений(ПодчиненныйВопрос.ИмяЭлементаПодчиненногоВопроса,"Реквизит") = 0 Тогда + + Попытка + Элементы[ПодчиненныйВопрос.ИмяЭлементаПодчиненногоВопроса].АвтоОтметкаНезаполненного = (ЭтотОбъект[ИмяВопроса] И ПодчиненныйВопрос.Обязательный); + Исключение + // У флажка и переключателя нет свойства АвтоОтметкаНезаполненного. + КонецПопытки; + + КонецЕсли; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +// Устанавливает значения реквизитов формы, определенных в шаблоне анкеты. +// +&НаСервере +Процедура УстановитьЗначенияРеквизитовФормыСогласноШаблонаАнкеты() + + РеквизитыШаблонАнкеты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ШаблонАнкеты,"Заголовок,Вступление,Заключение"); + ЗаполнитьЗначенияСвойств(ЭтотОбъект,РеквизитыШаблонАнкеты); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274.mdo" new file mode 100644 index 00000000..84ae237c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274/\320\234\320\260\321\201\321\202\320\265\321\200\320\220\320\275\320\272\320\265\321\202\321\213\320\237\320\276\320\240\320\260\320\267\320\264\320\265\320\273\320\260\320\274.mdo" @@ -0,0 +1,10 @@ + + + МастерАнкетыПоРазделам + + ru + Мастер анкеты по разделам + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Form.form" new file mode 100644 index 00000000..70f2306e --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Form.form" @@ -0,0 +1,1703 @@ + + + + СписокСостоянияУзлов + 1 + + <key>ru</key> + <value>Состояния узлов</value> + + true + true + + true + + + СписокСостоянияУзлов + + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + СписокСостоянияУзловОбластьДанных + 51 + true + true + + true + + + + СписокСостоянияУзлов.ОбластьДанных + + + + СписокСостоянияУзловОбластьДанныхExtendedTooltip + 73 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловОбластьДанныхКонтекстноеМеню + 52 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СписокСостоянияУзловИмяПланаОбмена + 45 + true + true + + true + + + + СписокСостоянияУзлов.ИмяПланаОбмена + + + + СписокСостоянияУзловИмяПланаОбменаExtendedTooltip + 74 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловИмяПланаОбменаКонтекстноеМеню + 46 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + СписокСостоянияУзловУзелИнформационнойБазы + 10 + true + true + + true + + + + СписокСостоянияУзлов.УзелИнформационнойБазы + + + + СписокСостоянияУзловУзелИнформационнойБазыExtendedTooltip + 75 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловУзелИнформационнойБазыКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + ГруппаВыгрузки + 47 + + ГруппаСостоянияВыгрузки + 19 + + СписокСостоянияУзловРезультатПоследнейВыгрузкиДанных + 6 + true + true + + true + + + + СписокСостоянияУзлов.РезультатПоследнейВыгрузкиДанных + + + None + + СписокСостоянияУзловРезультатПоследнейВыгрузкиДанныхExtendedTooltip + 78 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловРезультатПоследнейВыгрузкиДанныхКонтекстноеМеню + 7 + true + true + + true + + true + + PictureField + EnterOnInput + true + Left + true + + true + true + true + true + + CommonPicture.СостояниеОбменаДанными + + + + + СписокСостоянияУзловДатаПоследнейВыгрузки + 16 + true + true + + true + + + + СписокСостоянияУзлов.ПредставлениеДатыПоследнейВыгрузки + + + + СписокСостоянияУзловДатаПоследнейВыгрузкиExtendedTooltip + 79 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловДатаПоследнейВыгрузкиКонтекстноеМеню + 17 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + + ru + ДЛФ=DDT; ДП=Никогда + + + ru + ДЛФ=DDT; ДП=Никогда + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Состояния выгрузки</value> + + + ГруппаСостоянияВыгрузкиExtendedTooltip + 77 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + СписокСостоянияУзловДатаПоследнейУспешнойВыгрузки + 4 + true + + true + + + + СписокСостоянияУзлов.ПредставлениеДатыПоследнейУспешнойВыгрузки + + + + СписокСостоянияУзловДатаПоследнейУспешнойВыгрузкиExtendedTooltip + 80 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловДатаПоследнейУспешнойВыгрузкиКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + + ru + ДЛФ=DDT; ДП=Никогда + + + ru + ДЛФ=DDT; ДП=Никогда + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Выгрузки</value> + + true + + ГруппаВыгрузкиExtendedTooltip + 76 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + ГруппаЗагрузки + 48 + + ГруппаСостоянияЗагрузки + 18 + + СписокСостоянияУзловРезультатПоследнейЗагрузкиДанных + 8 + true + true + + true + + + + СписокСостоянияУзлов.РезультатПоследнейЗагрузкиДанных + + + None + + СписокСостоянияУзловРезультатПоследнейЗагрузкиДанныхExtendedTooltip + 83 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловРезультатПоследнейЗагрузкиДанныхКонтекстноеМеню + 9 + true + true + + true + + true + + PictureField + EnterOnInput + true + Left + true + + true + true + true + true + + CommonPicture.СостояниеОбменаДанными + + + + + СписокСостоянияУзловДатаПоследнейЗагрузки + 14 + true + true + + true + + + + СписокСостоянияУзлов.ПредставлениеДатыПоследнейЗагрузки + + + + СписокСостоянияУзловДатаПоследнейЗагрузкиExtendedTooltip + 84 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловДатаПоследнейЗагрузкиКонтекстноеМеню + 15 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + + ru + ДЛФ=DDT; ДП=Никогда + + + ru + ДЛФ=DDT; ДП=Никогда + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Состояния загрузки</value> + + + ГруппаСостоянияЗагрузкиExtendedTooltip + 82 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + СписокСостоянияУзловДатаПоследнейУспешнойЗагрузки + 12 + true + + true + + + + СписокСостоянияУзлов.ПредставлениеДатыПоследнейУспешнойЗагрузки + + + + СписокСостоянияУзловДатаПоследнейУспешнойЗагрузкиExtendedTooltip + 85 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловДатаПоследнейУспешнойЗагрузкиКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + + ru + ДЛФ=DDT; ДП=Никогда + + + ru + ДЛФ=DDT; ДП=Никогда + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Загрузки</value> + + true + + ГруппаЗагрузкиExtendedTooltip + 81 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + Vertical + true + + + + СписокСостоянияУзловКоманднаяПанель + 3 + + СписокСостоянияУзловГруппаНайти + 27 + + СписокСостоянияУзловНайти + 23 + true + true + + true + + + СписокСостоянияУзловНайтиExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.Find + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + СписокСостоянияУзловОтменитьПоиск + 24 + true + true + + true + + + СписокСостоянияУзловОтменитьПоискExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.CancelSearch + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Состояния узлов группа найти</value> + + + СписокСостоянияУзловГруппаНайтиExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + + + + СписокСостоянияУзловГруппаОбновитьМонитор + 28 + + СписокСостоянияУзловОбновитьМонитор + 20 + true + true + + true + + + СписокСостоянияУзловОбновитьМониторExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьМонитор + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Состояния узлов группа обновить монитор</value> + + + СписокСостоянияУзловГруппаОбновитьМониторExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + + + + СписокСостоянияУзловПодробно + 49 + true + true + + true + + + СписокСостоянияУзловПодробноExtendedTooltip + 66 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Подробно + Auto + true + true + UserCmds + Auto + + + СписокСостоянияУзловГруппаВывестиСписок + 50 + + СписокСостоянияУзловКопироватьВБуферОбмена + 26 + true + true + + true + + + СписокСостоянияУзловКопироватьВБуферОбменаExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокСостоянияУзловВывестиСписок + 25 + true + true + + true + + + СписокСостоянияУзловВывестиСписокExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Состояния узлов группа вывести список</value> + + + СписокСостоянияУзловГруппаВывестиСписокExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + + + + СписокСостоянияУзловИзменитьФорму + 53 + true + true + + true + + + СписокСостоянияУзловИзменитьФормуExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + СписокСостоянияУзловСправка + 54 + true + true + + true + + + СписокСостоянияУзловСправкаExtendedTooltip + 71 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + true + true + + true + + СписокСостоянияУзловСтрокаПоиска + 86 + + СписокСостоянияУзловСтрокаПоискаРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловСтрокаПоискаКонтекстноеМеню + 87 + true + true + + true + + true + + + true + + + + true + true + + true + + СписокСостоянияУзловСостояниеПросмотра + 89 + + СписокСостоянияУзловСостояниеПросмотраРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловСостояниеПросмотраКонтекстноеМеню + 90 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СписокСостоянияУзловУправлениеПоиском + 92 + + СписокСостоянияУзловУправлениеПоискомРасширеннаяПодсказка + 94 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловУправлениеПоискомКонтекстноеМеню + 93 + true + true + + true + + true + + SearchControlAddition + + true + + + + СписокСостоянияУзловExtendedTooltip + 72 + true + true + + true + + Label + true + true + + Left + + + + СписокСостоянияУзловКонтекстноеМеню + 2 + + СписокСостоянияУзловКонтекстноеМенюГруппа2 + 38 + + СписокСостоянияУзловКонтекстноеМенюПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных + 39 + true + true + + true + + + СписокСостоянияУзловКонтекстноеМенюПерейтиВЖурналРегистрацииСобытийВыгрузкиДанныхExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных + Auto + true + true + UserCmds + Auto + + + СписокСостоянияУзловКонтекстноеМенюПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных + 40 + true + true + + true + + + СписокСостоянияУзловКонтекстноеМенюПерейтиВЖурналРегистрацииСобытийЗагрузкиДанныхExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Состояния узлов контекстное меню группа 2</value> + + + СписокСостоянияУзловКонтекстноеМенюГруппа2ExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + + + СписокСостоянияУзловКонтекстноеМенюГруппа1 + 37 + + СписокСостоянияУзловКонтекстноеМенюВывестиСписок + 36 + true + true + + true + + + СписокСостоянияУзловКонтекстноеМенюВывестиСписокExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + + СписокСостоянияУзловКонтекстноеМенюКопироватьВБуферОбмена + 33 + true + true + + true + + + СписокСостоянияУзловКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Состояния узлов контекстное меню группа 1</value> + + + СписокСостоянияУзловКонтекстноеМенюГруппа1ExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + true + true + true + Row +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + None + None + None + +
        + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + СписокСостоянияУзлов + + <key>ru</key> + <value>Список состояния узлов</value> + + 2 + + ValueTable + + + true + + + true + + + ДатаПоследнейУспешнойВыгрузки + 1 + + String + + + + true + + + true + + + + РезультатПоследнейВыгрузкиДанных + 2 + + Number + + 1 + true + + + + true + + + true + + + + РезультатПоследнейЗагрузкиДанных + 3 + + Number + + 1 + true + + + + true + + + true + + + + УзелИнформационнойБазы + + <key>ru</key> + <value>Приложение</value> + + 4 + + ExchangePlanRef + + + true + + + true + + + + ДатаПоследнейУспешнойЗагрузки + 5 + + String + + + + true + + + true + + + + ДатаПоследнейЗагрузки + 6 + + String + + + + true + + + true + + + + ДатаПоследнейВыгрузки + 7 + + String + + + + true + + + true + + + + ИмяПланаОбмена + + <key>ru</key> + <value>План обмена</value> + + 8 + + String + + + + true + + + true + + + + ОбластьДанных + + <key>ru</key> + <value>Область данных</value> + + 9 + + Number + + 7 + true + + + + true + + + true + + + + ПредставлениеДатыПоследнейЗагрузки + + <key>ru</key> + <value>Последняя попытка получения</value> + + 10 + + String + + + + true + + + true + + + + ПредставлениеДатыПоследнейВыгрузки + + <key>ru</key> + <value>Последняя попытка отправки</value> + + 11 + + String + + + + true + + + true + + + + ПредставлениеДатыПоследнейУспешнойЗагрузки + + <key>ru</key> + <value>Данные получены</value> + + 12 + + String + + + + true + + + true + + + + ПредставлениеДатыПоследнейУспешнойВыгрузки + + <key>ru</key> + <value>Данные отправлены</value> + + 13 + + String + + + + true + + + true + + + + + ОбновитьМонитор + + <key>ru</key> + <value>Обновить</value> + + 3 + + ru + Обновить монитор + + + true + + F5 + + StdPicture.Refresh + + + + ОбновитьМонитор + + + DontUse + + + ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных + + <key>ru</key> + <value>События отправки данных...</value> + + 4 + + ru + Перейти в журнал регистрации событий выгрузки данных + + + true + + + StdPicture.EventLog + + + + ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных + + + DontUse + + + ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных + + <key>ru</key> + <value>События получения данных...</value> + + 6 + + ru + Перейти в журнал регистрации событий загрузки данных + + + true + + + StdPicture.EventLog + + + + ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных + + + DontUse + + + Подробно + + <key>ru</key> + <value>Подробно</value> + + 1 + + ru + Показать подробную информацию + + + true + + + + Подробно + + + DontUse + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Module.bsl" new file mode 100644 index 00000000..6c7c50ca --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/Module.bsl" @@ -0,0 +1,155 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Не Пользователи.ЭтоПолноправныйПользователь(Неопределено, Истина, Ложь) Тогда + ВызватьИсключение НСтр("ru = 'Нет прав на администрирование обменов данными.'"); + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + + ОбновитьСписокСостоянияУзлов(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных(Команда) + + ТекущиеДанные = Элементы.СписокСостоянияУзлов.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.УзелИнформационнойБазы = Неопределено Тогда + Возврат; + КонецЕсли; + + ОбменДаннымиКлиент.ПерейтиВЖурналРегистрацииСобытийДанныхМодально(ТекущиеДанные.УзелИнформационнойБазы, ЭтотОбъект, "ВыгрузкаДанных"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных(Команда) + + ТекущиеДанные = Элементы.СписокСостоянияУзлов.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.УзелИнформационнойБазы = Неопределено Тогда + Возврат; + КонецЕсли; + + ОбменДаннымиКлиент.ПерейтиВЖурналРегистрацииСобытийДанныхМодально(ТекущиеДанные.УзелИнформационнойБазы, ЭтотОбъект, "ЗагрузкаДанных"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьМонитор(Команда) + + ОбновитьДанныеМонитора(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подробно(Команда) + + ПодробноНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбновитьСписокСостоянияУзлов() + + СписокСостоянияУзлов.Очистить(); + + СписокСостоянияУзлов.Загрузить( + ОбменДаннымиВМоделиСервиса.ТаблицаМонитораОбменаДанными(ОбменДаннымиПовтИсп.РазделенныеПланыОбменаБСП())); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьДанныеМонитора() + + ИндексСтрокиСписокСостоянияУзлов = ПолучитьТекущийИндексСтроки(); + + // выполняем обновление таблиц монитора на сервере + ОбновитьСписокСостоянияУзлов(); + + // выполняем позиционирование курсора + ВыполнитьПозиционированиеКурсора(ИндексСтрокиСписокСостоянияУзлов); + +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьТекущийИндексСтроки() + + // возвращаемое значение функции + ИндексСтроки = Неопределено; + + // при обновлении монитора выполняем позиционирование курсора + ТекущиеДанные = Элементы.СписокСостоянияУзлов.ТекущиеДанные; + + Если ТекущиеДанные <> Неопределено Тогда + + ИндексСтроки = СписокСостоянияУзлов.Индекс(ТекущиеДанные); + + КонецЕсли; + + Возврат ИндексСтроки; +КонецФункции + +&НаКлиенте +Процедура ВыполнитьПозиционированиеКурсора(ИндексСтроки) + + Если ИндексСтроки <> Неопределено Тогда + + // выполняем проверки позиционирования курсора после получения новых данных + Если СписокСостоянияУзлов.Количество() <> 0 Тогда + + Если ИндексСтроки > СписокСостоянияУзлов.Количество() - 1 Тогда + + ИндексСтроки = СписокСостоянияУзлов.Количество() - 1; + + КонецЕсли; + + // позиционируем курсор + Элементы.СписокСостоянияУзлов.ТекущаяСтрока = СписокСостоянияУзлов[ИндексСтроки].ПолучитьИдентификатор(); + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПодробноНаСервере() + + Элементы.СписокСостоянияУзловПодробно.Пометка = Не Элементы.СписокСостоянияУзловПодробно.Пометка; + + Элементы.СписокСостоянияУзловДатаПоследнейУспешнойВыгрузки.Видимость = Элементы.СписокСостоянияУзловПодробно.Пометка; + Элементы.СписокСостоянияУзловДатаПоследнейУспешнойЗагрузки.Видимость = Элементы.СписокСостоянияУзловПодробно.Пометка; + Элементы.СписокСостоянияУзловИмяПланаОбмена.Видимость = Элементы.СписокСостоянияУзловПодробно.Пометка; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" new file mode 100644 index 00000000..067b9864 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260/\320\234\320\276\320\275\320\270\321\202\320\276\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270\320\224\320\260\320\275\320\275\321\213\321\205\320\222\320\234\320\276\320\264\320\265\320\273\320\270\320\241\320\265\321\200\320\262\320\270\321\201\320\260.mdo" @@ -0,0 +1,11 @@ + + + МониторСинхронизацииДанныхВМоделиСервиса + + ru + Монитор синхронизации данных в модели сервиса + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/Form.form" new file mode 100644 index 00000000..f068d272 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/Form.form" @@ -0,0 +1,466 @@ + + + + <key>ru</key> + <value>Получение файла для просмотра или редактирования</value> + + + ТекстНапоминания + 9 + + <key>ru</key> + <value>Сейчас будет предложено открыть или сохранить файл. + +1. Нажмите кнопку "Сохранить" ("Save"). + +2. Выберите каталог для сохранения файла и запомните его + (каталог понадобится для редактирования и помещения файла обратно в хранилище). + +3. Для редактирования файла перейдите в выбранный ранее каталог, + найдите там сохраненный файл и откройте его.</value> + + true + true + + true + + + ТекстНапоминанияExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + + ТекстНапоминанияКонтекстноеМеню + 10 + true + true + + true + + true + + Label + true + + Left + + + + Дополнения + 12 + + MozillaFireFox + 13 + + ДополнениеMozillaFireFox + 14 + + <key>ru</key> + <value>(По умолчанию браузер Mozilla Firefox автоматически сохраняет файлы в каталоге ""Мои документы"")</value> + + true + true + + true + + + ДополнениеMozillaFireFoxExtendedTooltip + 25 + true + true + + true + + Label + true + true + + Left + + + + ДополнениеMozillaFireFoxКонтекстноеМеню + 15 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Mozilla fire fox</value> + + + MozillaFireFoxExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Пустая + 16 + + ПустаяНадпись + 17 + true + true + + true + + + ПустаяНадписьExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + + ПустаяНадписьКонтекстноеМеню + 18 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Пустая</value> + + + ПустаяExtendedTooltip + 22 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Дополнения</value> + + + ДополненияExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + Отступ + 11 + + ПоказыватьНапоминаниеПриРедактировании + 2 + true + true + + true + + + + БольшеНеПоказывать + + + Right + 1 + + ПоказыватьНапоминаниеПриРедактированииExtendedTooltip + 27 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьНапоминаниеПриРедактированииКонтекстноеМеню + 3 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Отступ</value> + + + ОтступExtendedTooltip + 26 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаПродолжить + 8 + true + true + + true + + + ФормаПродолжитьРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Продолжить + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 28 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 29 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + БольшеНеПоказывать + + <key>ru</key> + <value>Больше не показывать это сообщение</value> + + 1 + + Boolean + + + true + + + true + + + + ТекстНапоминания + 2 + + String + + + + true + + + true + + + + Продолжить + + <key>ru</key> + <value>Продолжить</value> + + 1 + + ru + Продолжить + + + true + + + + ПродолжитьВыполнить + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/Module.bsl" new file mode 100644 index 00000000..e226e821 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/Module.bsl" @@ -0,0 +1,47 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + БольшеНеПоказывать = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + СистемнаяИнформация = Новый СистемнаяИнформация; + + Если СтрНайти(СистемнаяИнформация.ИнформацияПрограммыПросмотра, "Firefox") <> 0 Тогда + Элементы.Дополнения.ТекущаяСтраница = Элементы.MozillaFireFox; + Иначе + Элементы.Дополнения.ТекущаяСтраница = Элементы.Пустая; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПродолжитьВыполнить(Команда) + + Если БольшеНеПоказывать = Истина Тогда + ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить( + "НастройкиПрограммы", "ПоказыватьПодсказкиПриРедактированииФайлов", Ложь,,, Истина); + КонецЕсли; + + Закрыть(Истина); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.mdo" new file mode 100644 index 00000000..6e12dc71 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270/\320\235\320\260\320\277\320\276\320\274\320\270\320\275\320\260\320\275\320\270\320\265\320\237\321\200\320\270\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.mdo" @@ -0,0 +1,10 @@ + + + НапоминаниеПриРедактировании + + ru + Напоминание при редактировании + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Form.form" new file mode 100644 index 00000000..eafc910b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Form.form" @@ -0,0 +1,346 @@ + + + + ВидДоступаКСервисуMorher + 1 + + <key>ru</key> + <value>Использовать для доступа к сервису</value> + + true + true + + true + + + + ВидДоступаКСервисуMorher + + + + OnChange + ВидДоступаКСервисуMorherПриИзменении + + + ВидДоступаКСервисуMorherРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + ВидДоступаКСервисуMorherКонтекстноеМеню + 2 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Анонимный вход + + + 0 + + + + + ru + Вход для зарегистрированных пользователей + + + 1 + + + + + + Токен + 17 + true + true + + true + + + + Токен + + + + OnChange + ТокенПриИзменении + + + ТокенРасширеннаяПодсказка + 19 + true + true + + true + + Label + true + true + + Left + + + + ТокенКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ИнфоНадписьДоступКСервису + 14 + + <key>ru</key> + <value>Анонимное использование сервиса имеет <link http://www.morpher.ru/ws3/#limitations>ограничения</>. +Получить токен можно в <link http://www.morpher.ru/My/Token.aspx>личном кабинете</> после регистрации. +</value> + + true + true + + true + + + ИнфоНадписьДоступКСервисуРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + + ИнфоНадписьДоступКСервисуКонтекстноеМеню + 15 + true + true + + true + + true + + true + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОК + 10 + true + true + + true + + + ФормаОКРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаКнопкаОтмена + 12 + true + true + + true + + + ФормаКнопкаОтменаРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + ВидДоступаКСервисуMorher + + <key>ru</key> + <value>Вид доступа к сервису morher</value> + + 2 + + Number + + 1 + + + + true + + + true + + + + Токен + + <key>ru</key> + <value>Токен</value> + + 1 + + String + + 40 + + + + true + + + true + + + + ТокенИзменен + 5 + + Boolean + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Help/ru.html" new file mode 100644 index 00000000..9b4c2393 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Help/ru.html" @@ -0,0 +1,10 @@ + +

        Предназначена для ввода данных регистрации на сервисе склонений http://morpher.ru/.

        +

        Открывается по команде Настройка доступа к сервису "Морфер" в разделе Администрирование - Интернет-Поддержка и Сервисы.

        +

        Анонимный вход

        +
        • По умолчанию используется Анонимный вход, который обеспечивает базовые возможности использования сервиса. Анонимное использование сервиса склонений имеет ограничения. +
        • Для того чтобы узнать об условиях доступа к сервису склонений и регистрации на сайте, перейдите по ссылке ограничения.

        Вход для зарегистрированных пользователей

        +
        • Для использования возможностей сервиса без ограничений переключатель установите в положение Вход для зарегистрированных пользователей. +
        • Введите Токен. Получить токен можно в личном кабинете, перейдя по соответствующей ссылке.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Module.bsl" new file mode 100644 index 00000000..7a7022f6 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/Module.bsl" @@ -0,0 +1,128 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьПривилегированныйРежим(Истина); + ВладелецТокена = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.СклоненияПредставленийОбъектов"); + Токен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ВладелецТокена, "ТокенДоступаКСервисуMorpher", Истина); + УстановитьПривилегированныйРежим(Ложь); + + ВидДоступаКСервисуMorher = 0; + Если ЗначениеЗаполнено(Токен) Тогда + ВидДоступаКСервисуMorher = 1; + Токен = ЭтотОбъект.УникальныйИдентификатор; + КонецЕсли; + УстановитьДоступностьЭлементов(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВидДоступаКСервисуMorherПриИзменении(Элемент) + + УстановитьДоступностьЭлементов(); + + Если ВидДоступаКСервисуMorher = 0 Тогда + Токен = Неопределено; + ТокенИзменен = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ТокенПриИзменении(Элемент) + ТокенИзменен = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + Отказ = Ложь; + ПроверитьТокен(Отказ); + + Если Отказ Тогда + Возврат; + КонецЕсли; + + СохранитьИзмененияНаСервере(); + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура СохранитьИзмененияНаСервере() + + Если Не ТокенИзменен Тогда + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + ВладелецТокена = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.СклоненияПредставленийОбъектов"); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ВладелецТокена, Токен, "ТокенДоступаКСервисуMorpher"); + УстановитьПривилегированныйРежим(Ложь); + + Если ЗначениеЗаполнено(Токен) Тогда + Токен = ЭтотОбъект.УникальныйИдентификатор; + КонецЕсли; + + ТокенИзменен = Ложь; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьДоступностьЭлементов() + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Элементы, + "Токен", + "Доступность", + ВидДоступаКСервисуMorher = 1); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Элементы, + "Токен", + "АвтоОтметкаНезаполненного", + ВидДоступаКСервисуMorher = 1); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Элементы, + "Токен", + "ОтметкаНезаполненного", + Не ЗначениеЗаполнено(Токен)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьТокен(Отказ) + + Если ВидДоступаКСервисуMorher = 1 И Не ЗначениеЗаполнено(Токен) Тогда + ТекстСообщения = НСтр("ru = 'Токен доступа не заполнен.'"); + ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, , , "Токен", Отказ); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher.mdo" new file mode 100644 index 00000000..c01b0d48 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\241\320\265\321\200\320\262\320\270\321\201\321\203Morpher.mdo" @@ -0,0 +1,16 @@ + + + НастройкаДоступаКСервисуMorpher + + ru + Настройка доступа к сервису «Морфер» + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/Form.form" new file mode 100644 index 00000000..bd24a42f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/Form.form" @@ -0,0 +1,2249 @@ + + + + ГруппаКомандыВерхнегоКолонтитула + 139 + + ШаблоныВерхнегоКолонтитула + 141 + + ВремяВерхнегоКолонтитула + 58 + true + true + + true + + + ВремяВерхнегоКолонтитулаРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Время + Auto + true + true + UserCmds + Auto + + + ДатаВерхнегоКолонтитула + 59 + true + true + + true + + + ДатаВерхнегоКолонтитулаРасширеннаяПодсказка + 98 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Дата + Auto + true + true + UserCmds + Auto + + + НазваниеОтчетаВерхнегоКолонтитула + 60 + true + true + + true + + + НазваниеОтчетаВерхнегоКолонтитулаРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НазваниеОтчета + Auto + true + true + UserCmds + Auto + + + ПользовательВерхнегоКолонтитула + 62 + true + true + + true + + + ПользовательВерхнегоКолонтитулаРасширеннаяПодсказка + 100 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Пользователь + Auto + true + true + UserCmds + Auto + + + НомерСтраницыВерхнегоКолонтитула + 61 + true + true + + true + + + НомерСтраницыВерхнегоКолонтитулаРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НомерСтраницы + Auto + true + true + UserCmds + Auto + + + СтраницВсегоВерхнегоКолонтитула + 63 + true + true + + true + + + СтраницВсегоВерхнегоКолонтитулаРасширеннаяПодсказка + 102 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СтраницВсего + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Шаблоны верхнего колонтитула</value> + + Left + + ШаблоныВерхнегоКолонтитулаРасширеннаяПодсказка + 142 + true + true + + true + + Label + true + true + + Left + + + + + + ШрифтВерхнегоКолонтитула + 21 + true + true + + true + + + ШрифтВерхнегоКолонтитулаExtendedTooltip + 104 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НастроитьШрифтВерхнегоКолонтитула + Auto + true + true + Right + UserCmds + Auto + + + ВертикальноеВыравниваниеВерхнегоКолонтитула + 78 + + ВертикальноеПоложениеВерхнегоКолонтитулаВерх + 79 + true + true + + true + + + ВертикальноеПоложениеВерхнегоКолонтитулаВерхExtendedTooltip + 106 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВертикальноеПоложениеВерхнегоКолонтитулаВерх + Auto + true + true + UserCmds + Auto + + + ВертикальноеПоложениеВерхнегоКолонтитулаЦентр + 80 + true + true + + true + + + ВертикальноеПоложениеВерхнегоКолонтитулаЦентрExtendedTooltip + 107 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВертикальноеПоложениеВерхнегоКолонтитулаЦентр + Auto + true + true + UserCmds + Auto + + + ВертикальноеПоложениеВерхнегоКолонтитулаНиз + 81 + true + true + + true + + + ВертикальноеПоложениеВерхнегоКолонтитулаНизExtendedTooltip + 108 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВертикальноеПоложениеВерхнегоКолонтитулаНиз + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вертикальное положение верхнего колонтитула</value> + + Right + + ВертикальноеВыравниваниеВерхнегоКолонтитулаРасширеннаяПодсказка + 105 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + true + true + + true + + + <key>ru</key> + <value>Команды верхнего колонтитула</value> + + + ГруппаКомандыВерхнегоКолонтитулаРасширеннаяПодсказка + 140 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ГруппаТекстВерхнегоКолонтитула + 8 + + ТекстСлеваСверху + 1 + true + true + + true + + + + ТекстСлеваСверху + + + None + + OnChange + ТекстПриИзменении + + + ТекстСлеваСверхуExtendedTooltip + 110 + true + true + + true + + Label + true + true + + Left + + + + ТекстСлеваСверхуКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 3 + true + true + false + true + true + true + true + true + + + + ТекстВЦентреСверху + 4 + true + true + + true + + + + ТекстВЦентреСверху + + + None + + OnChange + ТекстПриИзменении + + + ТекстВЦентреСверхуExtendedTooltip + 111 + true + true + + true + + Label + true + true + + Left + + + + ТекстВЦентреСверхуКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 3 + true + true + false + true + true + true + true + true + + + + ТекстСправаСверху + 6 + true + true + + true + + + + ТекстСправаСверху + + + None + + OnChange + ТекстПриИзменении + + + ТекстСправаСверхуExtendedTooltip + 112 + true + true + + true + + Label + true + true + + Left + + + + ТекстСправаСверхуКонтекстноеМеню + 7 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 3 + true + true + false + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Текст верхнего колонтитула</value> + + + ГруппаТекстВерхнегоКолонтитулаExtendedTooltip + 109 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + ВыводитьВерхнийКолонтитулСоСтраницы + 17 + true + true + + true + + + + НачальнаяСтраницаСверху + + + + OnChange + ВыводитьВерхнийКолонтитулСоСтраницыПриИзменении + + + ВыводитьВерхнийКолонтитулСоСтраницыExtendedTooltip + 113 + true + true + + true + + Label + true + true + + Left + + + + ВыводитьВерхнийКолонтитулСоСтраницыКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + Образец + 15 + true + true + + true + + + + Образец + + + None + + ОбразецExtendedTooltip + 114 + true + true + + true + + Label + true + true + + Left + + + + ОбразецКонтекстноеМеню + 16 + true + true + + true + + true + + SpreadsheetDocumentField + true + Enter + true + Left + true + + 70 + true + 9 + true + true + true + Special + Always + Auto + true + true + true + + + + ГруппаСнизу + 39 + + ПримерСтраницы + 35 + true + true + + true + + + + ПримерСтраницы + + + + OnChange + ПримерСтраницыПриИзменении + + + ПримерСтраницыExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + + ПримерСтраницыКонтекстноеМеню + 36 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 4 + true + true + true + true + true + true + true + + 1 + + + + true + true + + true + + + <key>ru</key> + <value>Снизу</value> + + Right + + ГруппаСнизуExtendedTooltip + 115 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + ГруппаКомандыНижнегоКолонтитула + 143 + + ШаблоныНижнегоКолонтитула + 145 + + ВремяНижнегоКолонтитула + 44 + true + true + + true + + + ВремяНижнегоКолонтитулаРасширеннаяПодсказка + 120 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Время + Auto + true + true + UserCmds + Auto + + + ДатаНижнегоКолонтитула + 45 + true + true + + true + + + ДатаНижнегоКолонтитулаРасширеннаяПодсказка + 121 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Дата + Auto + true + true + UserCmds + Auto + + + НазваниеОтчетаНижнегоКолонтитула + 46 + true + true + + true + + + НазваниеОтчетаНижнегоКолонтитулаРасширеннаяПодсказка + 122 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НазваниеОтчета + Auto + true + true + UserCmds + Auto + + + ПользовательНижнегоКолонтитула + 49 + true + true + + true + + + ПользовательНижнегоКолонтитулаРасширеннаяПодсказка + 123 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Пользователь + Auto + true + true + UserCmds + Auto + + + НомерСтраницыНижнегоКолонтитула + 47 + true + true + + true + + + НомерСтраницыНижнегоКолонтитулаРасширеннаяПодсказка + 124 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НомерСтраницы + Auto + true + true + UserCmds + Auto + + + СтраницВсегоНижнегоКолонтитула + 50 + true + true + + true + + + СтраницВсегоНижнегоКолонтитулаРасширеннаяПодсказка + 125 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СтраницВсего + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Шаблоны нижнего колонтитула</value> + + + ШаблоныНижнегоКолонтитулаРасширеннаяПодсказка + 146 + true + true + + true + + Label + true + true + + Left + + + + + + ШрифтНижнегоКолонтитула + 34 + true + true + + true + + + ШрифтНижнегоКолонтитулаExtendedTooltip + 127 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НастроитьШрифтНижнегоКолонтитула + Auto + true + true + UserCmds + Auto + + + ВертикальноеВыравниваниеНижнегоКолонтитула + 86 + + ВертикальноеПоложениеНижнегоКолонтитулаВерх + 87 + true + true + + true + + + ВертикальноеПоложениеНижнегоКолонтитулаВерхExtendedTooltip + 129 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВертикальноеПоложениеНижнегоКолонтитулаВерх + Auto + true + true + UserCmds + Auto + + + ВертикальноеПоложениеНижнегоКолонтитулаЦентр + 88 + true + true + + true + + + ВертикальноеПоложениеНижнегоКолонтитулаЦентрExtendedTooltip + 130 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВертикальноеПоложениеНижнегоКолонтитулаЦентр + Auto + true + true + UserCmds + Auto + + + ВертикальноеПоложениеНижнегоКолонтитулаНиз + 89 + true + true + + true + + + ВертикальноеПоложениеНижнегоКолонтитулаНизExtendedTooltip + 131 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВертикальноеПоложениеНижнегоКолонтитулаНиз + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вертикальное положение нижнего колонтитула</value> + + + ВертикальноеВыравниваниеНижнегоКолонтитулаРасширеннаяПодсказка + 128 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + true + true + + true + + + <key>ru</key> + <value>Команды нижнего колонтитула</value> + + + ГруппаКомандыНижнегоКолонтитулаРасширеннаяПодсказка + 144 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ГруппаТекстНижнегоКолонтитула + 3 + + ТекстСлеваСнизу + 9 + true + true + + true + + + + ТекстСлеваСнизу + + + None + + OnChange + ТекстПриИзменении + + + ТекстСлеваСнизуExtendedTooltip + 133 + true + true + + true + + Label + true + true + + Left + + + + ТекстСлеваСнизуКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 3 + true + true + false + true + true + true + true + true + + + + ТекстВЦентреСнизу + 11 + true + true + + true + + + + ТекстВЦентреСнизу + + + None + + OnChange + ТекстПриИзменении + + + ТекстВЦентреСнизуExtendedTooltip + 134 + true + true + + true + + Label + true + true + + Left + + + + ТекстВЦентреСнизуКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 3 + true + true + false + true + true + true + true + true + + + + ТекстСправаСнизу + 13 + true + true + + true + + + + ТекстСправаСнизу + + + None + + OnChange + ТекстПриИзменении + + + ТекстСправаСнизуExtendedTooltip + 135 + true + true + + true + + Label + true + true + + Left + + + + ТекстСправаСнизуКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 3 + true + true + false + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Текст нижнего колонтитула</value> + + + ГруппаТекстНижнегоКолонтитулаExtendedTooltip + 132 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + Auto + + + + ВыводитьНижнийКолонтитулСоСтраницы + 19 + true + true + + true + + + + НачальнаяСтраницаСнизу + + + + OnChange + ВыводитьНижнийКолонтитулСоСтраницыПриИзменении + + + ВыводитьНижнийКолонтитулСоСтраницыExtendedTooltip + 136 + true + true + + true + + Label + true + true + + Left + + + + ВыводитьНижнийКолонтитулСоСтраницыКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаОК + 67 + true + true + + true + + + ФормаОКРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 68 + true + + true + + + ФормаОтменаExtendedTooltip + 93 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьСтандартныеНастройки + 137 + true + true + + true + + + ФормаУстановитьСтандартныеНастройкиРасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьСтандартныеНастройки + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + ТекстСлеваСверху + + <key>ru</key> + <value>Текст слева сверху</value> + + 1 + + String + + + + true + + + true + + + + ТекстВЦентреСверху + + <key>ru</key> + <value>Текст в центре сверху</value> + + 2 + + String + + + + true + + + true + + + + ТекстСправаСверху + + <key>ru</key> + <value>Текст справа сверху</value> + + 3 + + String + + + + true + + + true + + + + ТекстВЦентреСнизу + + <key>ru</key> + <value>Текст в центре снизу</value> + + 4 + + String + + + + true + + + true + + + + ТекстСлеваСнизу + + <key>ru</key> + <value>Текст слева снизу</value> + + 5 + + String + + + + true + + + true + + + + ТекстСправаСнизу + + <key>ru</key> + <value>Текст справа снизу</value> + + 6 + + String + + + + true + + + true + + + + Образец + + <key>ru</key> + <value>Образец</value> + + 7 + + SpreadsheetDocument + + + true + + + true + + + + + НачальнаяСтраницаСверху + + <key>ru</key> + <value>Выводить верхний колонтитул со страницы</value> + + 8 + + Number + + 2 + true + + + + true + + + true + + + + НачальнаяСтраницаСнизу + + <key>ru</key> + <value>Выводить нижний колонтитул со страницы</value> + + 9 + + Number + + 2 + true + + + + true + + + true + + + + ПримерСтраницы + + <key>ru</key> + <value>Пример страницы</value> + + 10 + + Number + + 1 + true + + + + true + + + true + + + + ШрифтСверху + 11 + + Font + + + true + + + true + + + + ШрифтСнизу + 12 + + Font + + + true + + + true + + + + ВертикальноеПоложениеСверху + 13 + + VerticalAlign + + + true + + + true + + + + ВертикальноеПоложениеСнизу + 14 + + VerticalAlign + + + true + + + true + + + + ТекущийПользователь + 15 + + CatalogRef.Пользователи + + + true + + + true + + + + ЭтоИндивидуальныеНастройки + 16 + + Boolean + + + true + + + true + + + + Настройки + 17 + + + true + + + true + + + + СтатусНастроек + 18 + + + true + + + true + + + + НастроитьШрифтВерхнегоКолонтитула + + <key>ru</key> + <value>Шрифт...</value> + + 1 + + ru + Настроить шрифт верхнего колонтитула + + + true + + + CommonPicture.Шрифт + + + + НастроитьШрифтВерхнегоКолонтитула + + + Picture + true + DontUse + + + НастроитьШрифтНижнегоКолонтитула + + <key>ru</key> + <value>Шрифт...</value> + + 2 + + ru + Настроить шрифт нижнего колонтитула + + + true + + + CommonPicture.Шрифт + + + + НастроитьШрифтНижнегоКолонтитула + + + Picture + true + DontUse + + + Время + + <key>ru</key> + <value>Время</value> + + 3 + + ru + Вставить время + + + true + + + + ВставитьШаблон + + + DontUse + + + Дата + + <key>ru</key> + <value>Дата</value> + + 4 + + ru + Дата + + + true + + + + ВставитьШаблон + + + DontUse + + + НазваниеОтчета + + <key>ru</key> + <value>Название отчета</value> + + 5 + + ru + Название отчета + + + true + + + + ВставитьШаблон + + + DontUse + + + НомерСтраницы + + <key>ru</key> + <value>Номер страницы</value> + + 6 + + ru + Номер страницы + + + true + + + + ВставитьШаблон + + + DontUse + + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 8 + + ru + Пользователь + + + true + + + + ВставитьШаблон + + + DontUse + + + СтраницВсего + + <key>ru</key> + <value>Страниц всего</value> + + 9 + + ru + Страниц всего + + + true + + + + ВставитьШаблон + + + DontUse + + + ОК + + <key>ru</key> + <value>Записать и закрыть</value> + + 7 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + ВертикальноеПоложениеВерхнегоКолонтитулаНиз + + <key>ru</key> + <value>Низ</value> + + 13 + + true + + + CommonPicture.ВертикальноеПоложениеНиз + + + + ВертикальноеПоложениеВерхнегоКолонтитулаНиз + + + true + DontUse + + + ВертикальноеПоложениеВерхнегоКолонтитулаЦентр + + <key>ru</key> + <value>Центр</value> + + 14 + + true + + + CommonPicture.ВертикальноеПоложениеЦентр + + + + ВертикальноеПоложениеВерхнегоКолонтитулаЦентр + + + true + DontUse + + + ВертикальноеПоложениеВерхнегоКолонтитулаВерх + + <key>ru</key> + <value>Верх</value> + + 15 + + true + + + CommonPicture.ВертикальноеПоложениеВерх + + + + ВертикальноеПоложениеВерхнегоКолонтитулаВерх + + + true + DontUse + + + ВертикальноеПоложениеНижнегоКолонтитулаВерх + + <key>ru</key> + <value>Верх</value> + + 16 + + true + + + CommonPicture.ВертикальноеПоложениеВерх + + + + ВертикальноеПоложениеНижнегоКолонтитулаВерх + + + true + DontUse + + + ВертикальноеПоложениеНижнегоКолонтитулаНиз + + <key>ru</key> + <value>Низ</value> + + 17 + + true + + + CommonPicture.ВертикальноеПоложениеНиз + + + + ВертикальноеПоложениеНижнегоКолонтитулаНиз + + + true + DontUse + + + ВертикальноеПоложениеНижнегоКолонтитулаЦентр + + <key>ru</key> + <value>Центр</value> + + 18 + + true + + + CommonPicture.ВертикальноеПоложениеЦентр + + + + ВертикальноеПоложениеНижнегоКолонтитулаЦентр + + + true + DontUse + + + УстановитьСтандартныеНастройки + + <key>ru</key> + <value>Установить стандартные настройки</value> + + 10 + + ru + Установить стандартные настройки + + + true + + + + УстановитьСтандартныеНастройки + + + Auto + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..c78d19f4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/Module.bsl" @@ -0,0 +1,435 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ШаблоныТекста; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ОпределитьПоведениеВМобильномКлиенте(); + + ЭтоИндивидуальныеНастройки = Параметры.Свойство("Настройки", Настройки); + Если Не ЭтоИндивидуальныеНастройки Тогда + Элементы.ФормаОК.Заголовок = НСтр("ru = 'Сохранить'"); + КонецЕсли; + Элементы.ФормаОтмена.Видимость = Не ЭтоИндивидуальныеНастройки; + Элементы.ФормаУстановитьСтандартныеНастройки.Видимость = ЭтоИндивидуальныеНастройки; + + УстановитьСтандартныеНастройкиСервер(); + + ТекущийПользователь = Пользователи.ТекущийПользователь(); + + ПримерСтраницы = 1; +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + ШаблоныТекста = Новый Структура; + + ШаблоныТекста.Вставить("Дата" , "[&Дата]"); + ШаблоныТекста.Вставить("Время" , "[&Время]"); + ШаблоныТекста.Вставить("НомерСтраницы" , "[&НомерСтраницы]"); + ШаблоныТекста.Вставить("СтраницВсего" , "[&СтраницВсего]"); + ШаблоныТекста.Вставить("Пользователь" , "[&Пользователь]"); + ШаблоныТекста.Вставить("НазваниеОтчета", "[&НазваниеОтчета]"); + + ОбновитьОбразец(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ТекстПриИзменении(Элемент) + ОбновитьОбразец(); +КонецПроцедуры + +&НаКлиенте +Процедура ВыводитьВерхнийКолонтитулСоСтраницыПриИзменении(Элемент) + + ОбновитьОбразец(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыводитьНижнийКолонтитулСоСтраницыПриИзменении(Элемент) + + ОбновитьОбразец(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПримерСтраницыПриИзменении(Элемент) + + ОбновитьОбразец(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВставитьШаблон(Команда) + + Если ТипЗнч(ТекущийЭлемент) = Тип("ПолеФормы") + И ТекущийЭлемент.Вид = ВидПоляФормы.ПолеВвода + И СтрНайти(ТекущийЭлемент.Имя, "Текст") = 1 Тогда + ВставитьТекст(ТекущийЭлемент, ШаблоныТекста[Команда.Имя]); + + ОбновитьОбразец(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьШрифтВерхнегоКолонтитула(Команда) + + ДиалогВыбораШрифта = Новый ДиалогВыбораШрифта; + #Если Не ВебКлиент Тогда + ДиалогВыбораШрифта.Шрифт = ШрифтСверху; + #КонецЕсли + + ОписаниеОповещения = Новый ОписаниеОповещения("НастройкаШрифтаВерхнегоКолонтитулаЗавершение", ЭтотОбъект); + + ДиалогВыбораШрифта.Показать(ОписаниеОповещения); + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьШрифтНижнегоКолонтитула(Команда) + + ДиалогВыбораШрифта = Новый ДиалогВыбораШрифта; + #Если Не ВебКлиент Тогда + ДиалогВыбораШрифта.Шрифт = ШрифтСнизу; + #КонецЕсли + + ОписаниеОповещения = Новый ОписаниеОповещения("НастройкаШрифтаНижнегоКолонтитулаЗавершение", ЭтотОбъект); + + ДиалогВыбораШрифта.Показать(ОписаниеОповещения); + +КонецПроцедуры + +&НаКлиенте +Процедура ВертикальноеПоложениеВерхнегоКолонтитулаВерх(Команда) + + ВертикальноеПоложениеСверху = ВертикальноеПоложение.Верх; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаВерх.Пометка = Истина; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаЦентр.Пометка = Ложь; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаНиз.Пометка = Ложь; + + ОбновитьОбразец(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВертикальноеПоложениеВерхнегоКолонтитулаЦентр(Команда) + + ВертикальноеПоложениеСверху = ВертикальноеПоложение.Центр; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаВерх.Пометка = Ложь; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаЦентр.Пометка = Истина; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаНиз.Пометка = Ложь; + + ОбновитьОбразец(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВертикальноеПоложениеВерхнегоКолонтитулаНиз(Команда) + + ВертикальноеПоложениеСверху = ВертикальноеПоложение.Низ; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаВерх.Пометка = Ложь; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаЦентр.Пометка = Ложь; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаНиз.Пометка = Истина; + + ОбновитьОбразец(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВертикальноеПоложениеНижнегоКолонтитулаВерх(Команда) + + ВертикальноеПоложениеСнизу = ВертикальноеПоложение.Верх; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаВерх.Пометка = Истина; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаЦентр.Пометка = Ложь; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаНиз.Пометка = Ложь; + + ОбновитьОбразец(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВертикальноеПоложениеНижнегоКолонтитулаЦентр(Команда) + + ВертикальноеПоложениеСнизу = ВертикальноеПоложение.Центр; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаВерх.Пометка = Ложь; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаЦентр.Пометка = Истина; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаНиз.Пометка = Ложь; + + ОбновитьОбразец(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВертикальноеПоложениеНижнегоКолонтитулаНиз(Команда) + + ВертикальноеПоложениеСнизу = ВертикальноеПоложение.Низ; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаВерх.Пометка = Ложь; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаЦентр.Пометка = Ложь; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаНиз.Пометка = Истина; + + ОбновитьОбразец(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОК(Команда) + ОбновитьНастройки(); + Закрыть(?(Не СтатусНастроек.Стандартные И Не СтатусНастроек.Пустые, Настройки, Неопределено)); +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСтандартныеНастройки(Команда) + + Настройки = Неопределено; + УстановитьСтандартныеНастройкиСервер(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОпределитьПоведениеВМобильномКлиенте() + ЭтоМобильныйКлиент = ОбщегоНазначения.ЭтоМобильныйКлиент(); + Если Не ЭтоМобильныйКлиент Тогда + Возврат; + КонецЕсли; + + Элементы.ГруппаТекстВерхнегоКолонтитула.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно; + Элементы.ГруппаТекстНижнегоКолонтитула.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно; + + Элементы.ТекстСлеваСверху.ПодсказкаВвода = НСтр("ru = 'Слева сверху'"); + Элементы.ТекстВЦентреСверху.ПодсказкаВвода = НСтр("ru = 'В центре сверху'"); + Элементы.ТекстСправаСверху.ПодсказкаВвода = НСтр("ru = 'Справа сверху'"); + + Элементы.ТекстСлеваСнизу.ПодсказкаВвода = НСтр("ru = 'Слева снизу'"); + Элементы.ТекстВЦентреСнизу.ПодсказкаВвода = НСтр("ru = 'В центре снизу'"); + Элементы.ТекстСправаСнизу.ПодсказкаВвода = НСтр("ru = 'Справа снизу'"); + + Элементы.ТекстСлеваСверху.Высота = 1; + Элементы.ТекстВЦентреСверху.Высота = 1; + Элементы.ТекстСправаСверху.Высота = 1; + + Элементы.ТекстСлеваСнизу.Высота = 1; + Элементы.ТекстВЦентреСнизу.Высота = 1; + Элементы.ТекстСправаСнизу.Высота = 1; +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ВысотаСтрокиТекстаКолонтитула() + Возврат 10; +КонецФункции + +&НаКлиенте +Процедура ВставитьТекст(ТекущийЭлемент, Текст) + ЭтотОбъект[ТекущийЭлемент.Имя] = ЭтотОбъект[ТекущийЭлемент.Имя] + Текст; +КонецПроцедуры + +&НаСервере +Процедура ОбновитьНастройки() + ВерхнийКолонтитул = Новый Структура(); + ВерхнийКолонтитул.Вставить("ТекстСлева", ТекстСлеваСверху); + ВерхнийКолонтитул.Вставить("ТекстВЦентре", ТекстВЦентреСверху); + ВерхнийКолонтитул.Вставить("ТекстСправа", ТекстСправаСверху); + ВерхнийКолонтитул.Вставить("Шрифт", ШрифтСверху); + ВерхнийКолонтитул.Вставить("ВертикальноеПоложение", ВертикальноеПоложениеСверху); + ВерхнийКолонтитул.Вставить("НачальнаяСтраница", НачальнаяСтраницаСверху); + + НижнийКолонтитул = Новый Структура(); + НижнийКолонтитул.Вставить("ТекстСлева", ТекстСлеваСнизу); + НижнийКолонтитул.Вставить("ТекстВЦентре", ТекстВЦентреСнизу); + НижнийКолонтитул.Вставить("ТекстСправа", ТекстСправаСнизу); + НижнийКолонтитул.Вставить("Шрифт", ШрифтСнизу); + НижнийКолонтитул.Вставить("ВертикальноеПоложение", ВертикальноеПоложениеСнизу); + НижнийКолонтитул.Вставить("НачальнаяСтраница", НачальнаяСтраницаСнизу); + + Настройки = Новый Структура("ВерхнийКолонтитул, НижнийКолонтитул", ВерхнийКолонтитул, НижнийКолонтитул); + СтатусНастроек = УправлениеКолонтитулами.СтатусНастроекКолонтитулов(Настройки); + + Если Не ЭтоИндивидуальныеНастройки Тогда + УправлениеКолонтитулами.СохранитьНастройкиКолонтитулов(Настройки); + КонецЕсли; +КонецПроцедуры + +// Устанавливает последние сохраненные общие настройки. +// +&НаСервере +Процедура УстановитьСтандартныеНастройкиСервер() + Если Настройки = Неопределено Тогда + Настройки = УправлениеКолонтитулами.НастройкиКолонтитулов(); + КонецЕсли; + + НачальнаяСтраницаСверху = Настройки.ВерхнийКолонтитул.НачальнаяСтраница; + ТекстСлеваСверху = Настройки.ВерхнийКолонтитул.ТекстСлева; + ТекстВЦентреСверху = Настройки.ВерхнийКолонтитул.ТекстВЦентре; + ТекстСправаСверху = Настройки.ВерхнийКолонтитул.ТекстСправа; + ШрифтСверху = Настройки.ВерхнийКолонтитул.Шрифт; + ВертикальноеПоложениеСверху = Настройки.ВерхнийКолонтитул.ВертикальноеПоложение; + + НачальнаяСтраницаСнизу = Настройки.НижнийКолонтитул.НачальнаяСтраница; + ТекстСлеваСнизу = Настройки.НижнийКолонтитул.ТекстСлева; + ТекстВЦентреСнизу = Настройки.НижнийКолонтитул.ТекстВЦентре; + ТекстСправаСнизу = Настройки.НижнийКолонтитул.ТекстСправа; + ШрифтСнизу = Настройки.НижнийКолонтитул.Шрифт; + ВертикальноеПоложениеСнизу = Настройки.НижнийКолонтитул.ВертикальноеПоложение; + + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаВерх.Пометка = + ВертикальноеПоложениеСверху = ВертикальноеПоложение.Верх; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаЦентр.Пометка = + ВертикальноеПоложениеСверху = ВертикальноеПоложение.Центр; + Элементы.ВертикальноеПоложениеВерхнегоКолонтитулаНиз.Пометка = + ВертикальноеПоложениеСверху = ВертикальноеПоложение.Низ; + + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаВерх.Пометка = + ВертикальноеПоложениеСнизу = ВертикальноеПоложение.Верх; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаЦентр.Пометка = + ВертикальноеПоложениеСнизу = ВертикальноеПоложение.Центр; + Элементы.ВертикальноеПоложениеНижнегоКолонтитулаНиз.Пометка = + ВертикальноеПоложениеСнизу = ВертикальноеПоложение.Низ; + + ПодготовитьОбразец(); +КонецПроцедуры + +&НаСервере +Процедура ПодготовитьОбразец() + Образец.Область(1, 1).ВысотаСтроки = 5; + Образец.Область(1, 1).ШиринаКолонки = 1; + + ЭлементыСтиля = Метаданные.ЭлементыСтиля; + ЦветОбразца = ЭлементыСтиля.ОбразецНастройкиКолонтитуловЦвет.Значение; + ШрифтОбразца = ЭлементыСтиля.ОбразецНастройкиКолонтитуловШрифт.Значение; + + Образец.Область(2, 2, 4, 4).ЦветРамки = ЦветОбразца; + Образец.Область(2, 2, 4, 4).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Забивать; + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + + Образец.Область(2, 2).Обвести(Линия, Линия,, Линия); + Образец.Область(2, 3).Обвести(, Линия,, Линия); + Образец.Область(2, 4).Обвести(, Линия, Линия, Линия); + + Образец.Область(4, 2).Обвести(Линия, Линия,, Линия); + Образец.Область(4, 3).Обвести(, Линия, , Линия); + Образец.Область(4, 4).Обвести(, Линия, Линия, Линия); + + Образец.Область(2, 2).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; + Образец.Область(2, 3).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр; + Образец.Область(2, 4).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; + + Образец.Область(4, 2).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; + Образец.Область(4, 3).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр; + Образец.Область(4, 4).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; + + Образец.Область(2, 2).ШиринаКолонки = 40; + Образец.Область(2, 3).ШиринаКолонки = 40; + Образец.Область(2, 4).ШиринаКолонки = 40; + + Образец.Область(3, 2).Текст = Символы.ПС + НСтр("ru = 'Образец отчета'") + Символы.ПС + " "; + Образец.Область(3, 2).Шрифт = ШрифтОбразца; + Образец.Область(3, 2).ЦветТекста = ЦветОбразца; + + Образец.Область(3, 2).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр; + + Образец.Область(3, 2, 3, 4).Объединить(); + Образец.Область(3, 2, 3, 4).Обвести(Линия, Линия, Линия, Линия); +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьОбразец() + Образец.Область(2, 2, 2, 4).Шрифт = ШрифтСверху; + Образец.Область(4, 2, 4, 4).Шрифт = ШрифтСнизу; + + Образец.Область(2, 2, 2, 4).ВертикальноеПоложение = ВертикальноеПоложениеСверху; + Образец.Область(4, 2, 4, 4).ВертикальноеПоложение = ВертикальноеПоложениеСнизу; + + КоличествоСтрокСверху = Макс( + 2, + КоличествоСтрокВТексте(ТекстСлеваСверху), + КоличествоСтрокВТексте(ТекстВЦентреСверху), + КоличествоСтрокВТексте(ТекстСправаСверху)); + + КоличествоСтрокСнизу = Макс( + 2, + КоличествоСтрокВТексте(ТекстСлеваСнизу), + КоличествоСтрокВТексте(ТекстВЦентреСнизу), + КоличествоСтрокВТексте(ТекстСправаСнизу)); + + Образец.Область(2, 2).ВысотаСтроки = КоличествоСтрокСверху * ВысотаСтрокиТекстаКолонтитула(); + Образец.Область(4, 2).ВысотаСтроки = КоличествоСтрокСнизу * ВысотаСтрокиТекстаКолонтитула(); + + Образец.Область(2, 2).Текст = ЗаполнитьШаблон(ТекстСлеваСверху, НачальнаяСтраницаСверху); + Образец.Область(2, 3).Текст = ЗаполнитьШаблон(ТекстВЦентреСверху, НачальнаяСтраницаСверху); + Образец.Область(2, 4).Текст = ЗаполнитьШаблон(ТекстСправаСверху, НачальнаяСтраницаСверху); + + Образец.Область(4, 2).Текст = ЗаполнитьШаблон(ТекстСлеваСнизу, НачальнаяСтраницаСнизу); + Образец.Область(4, 3).Текст = ЗаполнитьШаблон(ТекстВЦентреСнизу, НачальнаяСтраницаСнизу); + Образец.Область(4, 4).Текст = ЗаполнитьШаблон(ТекстСправаСнизу, НачальнаяСтраницаСнизу); +КонецПроцедуры + +&НаКлиенте +Функция КоличествоСтрокВТексте(Текст) + Возврат СтрРазделить(Текст, Символы.ПС).Количество(); +КонецФункции + +&НаКлиенте +Функция ЗаполнитьШаблон(Шаблон, НачальнаяСтраница) + Если НачальнаяСтраница > ПримерСтраницы Тогда + Результат = ""; + Иначе + ДатаСегодня = ОбщегоНазначенияКлиент.ДатаСеанса(); + Результат = СтрЗаменить(Шаблон , "[&Время]" , Формат(ДатаСегодня, "ДЛФ=T")); + Результат = СтрЗаменить(Результат, "[&Дата]" , Формат(ДатаСегодня, "ДЛФ=D")); + Результат = СтрЗаменить(Результат, "[&НазваниеОтчета]", НСтр("ru = 'Стандартный отчет'")); + Результат = СтрЗаменить(Результат, "[&Пользователь]" , Строка(ТекущийПользователь)); + Результат = СтрЗаменить(Результат, "[&НомерСтраницы]" , ПримерСтраницы); + Результат = СтрЗаменить(Результат, "[&СтраницВсего]" , "9"); + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура НастройкаШрифтаВерхнегоКолонтитулаЗавершение (ВыбранныйШрифт, Параметры) Экспорт + Если ВыбранныйШрифт = Неопределено Тогда + Возврат; + КонецЕсли; + + ШрифтСверху = ВыбранныйШрифт; + ОбновитьОбразец(); +КонецПроцедуры + +&НаКлиенте +Процедура НастройкаШрифтаНижнегоКолонтитулаЗавершение (ВыбранныйШрифт, Параметры) Экспорт + Если ВыбранныйШрифт = Неопределено Тогда + Возврат; + КонецЕсли; + + ШрифтСнизу = ВыбранныйШрифт; + ОбновитьОбразец(); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262.mdo" new file mode 100644 index 00000000..8868effa --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\273\320\276\320\275\321\202\320\270\321\202\321\203\320\273\320\276\320\262.mdo" @@ -0,0 +1,11 @@ + + + НастройкаКолонтитулов + + ru + Настройка колонтитулов + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Form.form" new file mode 100644 index 00000000..73f0db64 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Form.form" @@ -0,0 +1,949 @@ + + + + <key>ru</key> + <value>Настройка подменю "Печать"</value> + + + КомандыПечати + 1 + + <key>ru</key> + <value>Команды печати</value> + + true + true + + true + + + КомандыПечати + + None + + КомандыПечатиГруппа1 + 32 + + КомандыПечатиВидимость + 11 + + <key>ru</key> + <value>Использование</value> + + true + true + + true + + + + КомандыПечати.Видимость + + + + OnChange + КомандыПечатиВидимостьПриИзменении + + + КомандыПечатиВидимостьРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + КомандыПечатиВидимостьКонтекстноеМеню + 12 + true + true + + true + + true + + CheckBoxField + EnterOnInput + Left + true + + true + + + + КомандыПечатиПредставление + 8 + + <key>ru</key> + <value>Команда печати</value> + + true + true + + true + + + + КомандыПечати.Представление + + + + КомандыПечатиПредставлениеРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + КомандыПечатиПредставлениеКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Команда Печати</value> + + + КомандыПечатиГруппа1РасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + КомандыПечатиГруппа2 + 44 + + КомандыПечатиКомментарий + 34 + + <key>ru</key> + <value>Внешняя печатная форма</value> + + true + true + + true + + + + КомандыПечати.Комментарий + + + + КомандыПечатиКомментарийРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + КомандыПечатиКомментарийКонтекстноеМеню + 35 + true + true + + true + + true + + InputField + true + EnterOnInput + true + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Команды печати группа 2</value> + + + КомандыПечатиГруппа2РасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + КомандыПечатиКоманднаяПанель + 3 + true + true + + true + + Left + + + Selection + КомандыПечатиВыбор + + + true + true + + true + + КомандыПечатиСтрокаПоиска + 23 + + КомандыПечатиСтрокаПоискаРасширеннаяПодсказка + 25 + true + true + + true + + Label + true + true + + Left + + + + КомандыПечатиСтрокаПоискаКонтекстноеМеню + 24 + true + true + + true + + true + + + true + + + + true + true + + true + + КомандыПечатиСостояниеПросмотра + 26 + + КомандыПечатиСостояниеПросмотраРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + + КомандыПечатиСостояниеПросмотраКонтекстноеМеню + 27 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + КомандыПечатиУправлениеПоиском + 29 + + КомандыПечатиУправлениеПоискомРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + КомандыПечатиУправлениеПоискомКонтекстноеМеню + 30 + true + true + + true + + true + + SearchControlAddition + + true + + + + КомандыПечатиРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + + КомандыПечатиКонтекстноеМеню + 2 + true + true + + true + + true + + Tree + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + true + Auto + Auto + true + true + true + true +
        + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 46 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаПоказатьВСписке + 48 + true + true + + true + + + ФормаПоказатьВСпискеРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьВСписке + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьФлажки + 19 + true + true + + true + + + ФормаУстановитьФлажкиРасширеннаяПодсказка + 20 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьФлажки + Auto + true + true + UserCmds + Auto + + + ФормаСнятьФлажки + 21 + true + true + + true + + + ФормаСнятьФлажкиРасширеннаяПодсказка + 22 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Auto + true + true + UserCmds + Auto + + + ФормаГруппа1 + 39 + + ФормаУстановитьНастройкиПоУмолчанию + 37 + + <key>ru</key> + <value>Перечитать</value> + + true + true + + true + + + ФормаУстановитьНастройкиПоУмолчаниюРасширеннаяПодсказка + 38 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьНастройкиПоУмолчанию + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма группа 1</value> + + + ФормаГруппа1РасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + Left + true + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + true + Vertical + true + true + true + true + true + + КомандыПечати + + <key>ru</key> + <value>Команды печати</value> + + 1 + + ValueTree + + + true + + + true + + true + + Владелец + 1 + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + Видимость + + <key>ru</key> + <value>Видимость</value> + + 3 + + Number + + 1 + true + + + + true + + + true + + + + Картинка + 4 + + Picture + + + true + + + true + + + + УникальныйИдентификатор + 5 + + String + + + + true + + + true + + + + МенеджерПечати + 6 + + String + + + + true + + + true + + + + Комментарий + + <key>ru</key> + <value>Комментарий</value> + + 7 + + String + + + + true + + + true + + + + НавигационнаяСсылка + 8 + + String + + + + true + + + true + + + + ЭтоВнешняяКомандаПечати + 9 + + Boolean + + + true + + + true + + + + + Отбор + 4 + + ValueList + + + true + + + true + + + + + + + УстановитьФлажки + + <key>ru</key> + <value>Установить флажки</value> + + 1 + + ru + Установить флажки + + + true + + + StdPicture.CheckAll + + + + УстановитьФлажки + + + DontUse + + + СнятьФлажки + + <key>ru</key> + <value>Снять флажки</value> + + 2 + + ru + Снять флажки + + + true + + + StdPicture.UncheckAll + + + + СнятьФлажки + + + DontUse + + + УстановитьНастройкиПоУмолчанию + + <key>ru</key> + <value>Установить настройки по умолчанию</value> + + 3 + + ru + Перечитать настройки + + + true + + + StdPicture.Reread + + + + УстановитьНастройкиПоУмолчанию + + + DontUse + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 4 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + ПоказатьВСписке + + <key>ru</key> + <value>Перейти в список</value> + + 5 + + ru + Показать в списке + + + true + + + + ПоказатьВСписке + + + DontUse + + + Отбор + + ValueList + + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Help/ru.html" new file mode 100644 index 00000000..eb82d4ca --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Help/ru.html" @@ -0,0 +1,25 @@ + +

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

        +

        Открывается по команде Подменю "Печать" в разделе Администрирование - Печатные формы, отчеты и обработки.

        +

        Список состоит из двух частей:

        +
        • в правой части перечислены команды печати. Команды сгруппированы по спискам объектов программы; +
        • в левой части перечисляются внешние печатные формы, которые соответствуют командам печати.

        Изменение состава печатных форм

        +
        • Состав печатных форм документов и списков можно определить с помощью флажков: можно включать или отключать отдельные команды или подменю Печать для всего списка или документа. +
        • После настройки подменю Печать нажмите Записать и закрыть, для того чтобы подтвердить изменения.

        Переход в список

        +
        • +
          Нажмите кнопку Перейти в список для того чтобы открыть выделенный список, для которого настраиваются команды.

        Внешние печатные формы

        +

        Печатные формы из расширения

        +
        • +
          Разработчик может назначить печатные формы в расширении.
          +
        • +
          В подменю Печать команды выводятся с пометкой из расширения, ими можно управлять с помощью флажков.

        Работа с подменю Печать

        +
        • +
          Настроенный состав команд подменю Печать предусмотрен как в документах, так и в списках.
          +
        • +
          В списке можно выделить несколько документов и распечатать. При множественном выборе в форме списка или в журнале документов в составе подменю Печать остаются доступными только те печатные формы, которые подходят сразу ко всем выбранным документам.
          +
        • +
          Состав подменю Печать в ряде документов, списков и журналов автоматически подстраивается под выбранный документ: показываются только те печатные формы, которые могут быть для него сформированы при текущих значениях реквизитов.
          +
        • +
          Печатных форм у некоторых документов в списке может не быть (в зависимости от проведенных настроек).
        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Module.bsl" new file mode 100644 index 00000000..20f8a9f7 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/Module.bsl" @@ -0,0 +1,326 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Отбор = Параметры.Отбор; + + Если Отбор.Количество() > 0 Тогда + Элементы.КомандыПечати.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; + КонецЕсли; + + ЗаполнитьСписокКомандПечати(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПередЗакрытиемПодтверждениеПолучено", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(ОписаниеОповещения, Отказ, ЗавершениеРаботы,, ТекстПредупреждения); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыКомандыПечати + +&НаКлиенте +Процедура КомандыПечатиВидимостьПриИзменении(Элемент) + ПриИзмененииФлажка(Элементы.КомандыПечати, "Видимость"); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда = Неопределено) + Записать(); + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьВСписке(Команда) + + Если Модифицированность Тогда + Оповещение = Новый ОписаниеОповещения("ПоказатьВСпискеЗавершение", ЭтотОбъект, Параметры); + ТекстВопроса = НСтр("ru = 'Данные были изменены. Сохранить изменения?'"); + ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНетОтмена, , + КодВозвратаДиалога.Отмена); + Возврат; + КонецЕсли; + + ПерейтиКСписку(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьФлажки(Команда) + ЗаполнитьЗначениеРеквизитаКоллекции(КомандыПечати, "Видимость", Истина); + Модифицированность = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура СнятьФлажки(Команда) + ЗаполнитьЗначениеРеквизитаКоллекции(КомандыПечати, "Видимость", Ложь); + Модифицированность = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьНастройкиПоУмолчанию(Команда) + ЗаполнитьСписокКомандПечати(); + Модифицированность = Ложь; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбновитьФлажокВладельцаКоманд(ВладелецКоманд) + ЕстьВыбранныеЭлементы = Ложь; + ВыбраныВсеЭлементы = Истина; + Для Каждого КомандаПечати Из ВладелецКоманд.ПолучитьЭлементы() Цикл + ЕстьВыбранныеЭлементы = ЕстьВыбранныеЭлементы Или КомандаПечати.Видимость; + ВыбраныВсеЭлементы = ВыбраныВсеЭлементы И КомандаПечати.Видимость; + КонецЦикла; + ВладелецКоманд.Видимость = ЕстьВыбранныеЭлементы + ?(ЕстьВыбранныеЭлементы, (Не ВыбраныВсеЭлементы), ЕстьВыбранныеЭлементы); +КонецПроцедуры + +&НаКлиенте +Процедура КомандыПечатиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + Если Поле.Имя = Элементы.КомандыПечатиКомментарий.Имя + И Не ПустаяСтрока(Элементы.КомандыПечати.ТекущиеДанные.НавигационнаяСсылка) Тогда + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(Элементы.КомандыПечати.ТекущиеДанные.НавигационнаяСсылка); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНастройкиКоманд() + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить("РегистрСведений.НастройкиКомандПечати"); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + НаборЗаписей = РегистрыСведений.НастройкиКомандПечати.СоздатьНаборЗаписей(); + Для Каждого НаборКоманд Из КомандыПечати.ПолучитьЭлементы() Цикл + НаборЗаписей.Отбор.Владелец.Установить(НаборКоманд.Владелец); + НаборЗаписей.Прочитать(); + НаборЗаписей.Очистить(); + ЗаписываемыеНастройки = НаборЗаписей.Выгрузить(); + Для Каждого Настройка Из НаборКоманд.ПолучитьЭлементы() Цикл + ЗаполнитьЗначенияСвойств(ЗаписываемыеНастройки.Добавить(), Настройка); + КонецЦикла; + ЗаписываемыеНастройки.Свернуть("Владелец,УникальныйИдентификатор", "Видимость"); + НаборЗаписей.Загрузить(ЗаписываемыеНастройки); + НаборЗаписей.Записать(); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Модифицированность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииФлажка(ДеревоФормы, ИмяФлажка) + + ТекущиеДанные = ДеревоФормы.ТекущиеДанные; + + Если ТекущиеДанные[ИмяФлажка] = 2 Тогда + ТекущиеДанные[ИмяФлажка] = 0; + КонецЕсли; + + Пометка = ТекущиеДанные[ИмяФлажка]; + + // Обновление подчиненных флажков. + Для Каждого ПодчиненныйРеквизит Из ТекущиеДанные.ПолучитьЭлементы() Цикл + ПодчиненныйРеквизит[ИмяФлажка] = Пометка; + КонецЦикла; + + // Обновление родительского флажка. + Родитель = ТекущиеДанные.ПолучитьРодителя(); + Если Родитель <> Неопределено Тогда + ЕстьВыбранныеЭлементы = Ложь; + ВыбраныВсеЭлементы = Истина; + Для Каждого Элемент Из Родитель.ПолучитьЭлементы() Цикл + ЕстьВыбранныеЭлементы = ЕстьВыбранныеЭлементы Или Элемент[ИмяФлажка]; + ВыбраныВсеЭлементы = ВыбраныВсеЭлементы И Элемент[ИмяФлажка]; + КонецЦикла; + Родитель[ИмяФлажка] = ЕстьВыбранныеЭлементы + ?(ЕстьВыбранныеЭлементы, (Не ВыбраныВсеЭлементы), ЕстьВыбранныеЭлементы); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьЗначениеРеквизитаКоллекции(Коллекция, ИмяРеквизита, Значение) + Для Каждого Элемент Из Коллекция.ПолучитьЭлементы() Цикл + Элемент[ИмяРеквизита] = Значение; + ЗаполнитьЗначениеРеквизитаКоллекции(Элемент, ИмяРеквизита, Значение); + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокКомандПечати() + + УстановитьПривилегированныйРежим(Истина); + ИсточникиКомандПечати = УправлениеПечатью.ИсточникиКомандПечати(); + + КомандыПечати.ПолучитьЭлементы().Очистить(); + Для Каждого ИсточникКомандПечати Из ИсточникиКомандПечати Цикл + ИдентификаторИсточникаКомандПечати = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ИсточникКомандПечати); + Если Отбор.Количество() > 0 И Отбор.НайтиПоЗначению(ИдентификаторИсточникаКомандПечати) = Неопределено Тогда + Продолжить; + КонецЕсли; + + КомандыПечатиОбъекта = УправлениеПечатью.КомандыПечатиОбъекта(ИсточникКомандПечати); + + КомандыПечатиОбъекта.Колонки.Добавить("Владелец"); + КомандыПечатиОбъекта.ЗаполнитьЗначения(ИдентификаторИсточникаКомандПечати, "Владелец"); + + КомандыПечатиОбъекта.Колонки.Добавить("ЭтоВнешняяКомандаПечати"); + Для Каждого КомандаПечати Из КомандыПечатиОбъекта Цикл + КомандаПечати.ЭтоВнешняяКомандаПечати = КомандаПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки"; + КонецЦикла; + + Если КомандыПечатиОбъекта.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + ОписаниеИсточника = КомандыПечати.ПолучитьЭлементы().Добавить(); + ОписаниеИсточника.Владелец = ИдентификаторИсточникаКомандПечати; + ОписаниеИсточника.Представление = ИсточникКомандПечати.Представление(); + ОписаниеИсточника.Видимость = 2; + ОписаниеИсточника.НавигационнаяСсылка = "e1cib/list/" + ИдентификаторИсточникаКомандПечати.ПолноеИмя; + + Для Каждого КомандаПечати Из КомандыПечатиОбъекта Цикл + Если КомандаПечати.Картинка.Вид = ВидКартинки.Пустая Тогда + КомандаПечати.Картинка = БиблиотекаКартинок.Пустая; + КонецЕсли; + ОписаниеКомандыПечати = ОписаниеИсточника.ПолучитьЭлементы().Добавить(); + ЗаполнитьЗначенияСвойств(ОписаниеКомандыПечати, КомандаПечати); + ОписаниеКомандыПечати.Видимость = Не КомандаПечати.Отключена; + Если ОписаниеКомандыПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки" Тогда + ОписаниеКомандыПечати.Комментарий = Строка(КомандаПечати.ДополнительныеПараметры.Ссылка); + ОписаниеКомандыПечати.НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(КомандаПечати.ДополнительныеПараметры.Ссылка); + КонецЕсли; + КонецЦикла; + + ОбновитьФлажокВладельцаКоманд(ОписаниеИсточника); + КонецЦикла; + + ДеревоКоманд = РеквизитФормыВЗначение("КомандыПечати"); + ДеревоКоманд.Строки.Сортировать("Представление", Истина); + ЗначениеВРеквизитФормы(ДеревоКоманд, "КомандыПечати"); + +КонецПроцедуры + +&НаКлиенте +Процедура Записать() + ЗаписатьНастройкиКоманд(); + ОбновитьПовторноИспользуемыеЗначения(); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьВСпискеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт + + Если РезультатВопроса = Неопределено Или РезультатВопроса = КодВозвратаДиалога.Отмена Тогда + Возврат; + КонецЕсли; + + Если РезультатВопроса = КодВозвратаДиалога.Да Тогда + Записать(); + КонецЕсли; + + ПерейтиКСписку(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиКСписку() + + ВладелецКоманд = Элементы.КомандыПечати.ТекущиеДанные; + Если ВладелецКоманд = Неопределено Тогда + Возврат; + КонецЕсли; + + Родитель = ВладелецКоманд.ПолучитьРодителя(); + Если Родитель <> Неопределено Тогда + ВладелецКоманд = Родитель; + КонецЕсли; + + НавигационнаяСсылка = ВладелецКоманд.НавигационнаяСсылка; + + Для Каждого ОкноКлиентскогоПриложения Из ПолучитьОкна() Цикл + Если ОкноКлиентскогоПриложения.ПолучитьНавигационнуюСсылку() = НавигационнаяСсылка Тогда + Форма = ОкноКлиентскогоПриложения.Содержимое[0]; + ОписаниеОповещения = Новый ОписаниеОповещения("ПерейтиКСпискуЗавершение", ЭтотОбъект, + Новый Структура("Форма, НавигационнаяСсылка", Форма, НавигационнаяСсылка)); + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("Переоткрыть", НСтр("ru = 'Переоткрыть'")); + Кнопки.Добавить("Отмена", НСтр("ru = 'Не переоткрывать'")); + ТекстВопроса = + НСтр("ru = 'Список уже открыт. Переоткрыть список, + |чтобы увидеть изменения меню печать?'"); + ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , "Переоткрыть"); + Возврат; + КонецЕсли; + КонецЦикла; + + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылка); +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиКСпискуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт + Если РезультатВопроса = "Отмена" Тогда + Возврат; + КонецЕсли; + + ДополнительныеПараметры.Форма.Закрыть(); + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(ДополнительныеПараметры.НавигационнаяСсылка); +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытиемПодтверждениеПолучено(РезультатВопроса, ДополнительныеПараметры) Экспорт + ЗаписатьИЗакрыть(); +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КомандыПечати.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КомандыПечати.Видимость"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = 0; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270.mdo" new file mode 100644 index 00000000..885cef47 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\232\320\276\320\274\320\260\320\275\320\264\320\237\320\265\321\207\320\260\321\202\320\270.mdo" @@ -0,0 +1,16 @@ + + + НастройкаКомандПечати + + ru + Настройка команд печати + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Form.form" new file mode 100644 index 00000000..c819bbc1 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Form.form" @@ -0,0 +1,768 @@ + + + + ГруппаШапка + 50 + + ЗаголовокТаблицы + 52 + + <key>ru</key> + <value>Используемые команды:</value> + + true + + true + + + ЗаголовокТаблицыРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + + ЗаголовокТаблицыКонтекстноеМеню + 53 + true + true + + true + + true + + Label + true + true + + Left + + + + КнопкиТаблицы + 48 + + КоманднаяПанельТаблицы + 46 + + УстановитьФлажки + 42 + true + true + + true + + + УстановитьФлажкиРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьФлажки + Auto + true + true + UserCmds + Auto + + + СнятьФлажки + 44 + true + true + + true + + + СнятьФлажкиРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель таблицы</value> + + + КоманднаяПанельТаблицыРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + Compact + + + true + true + + true + + + <key>ru</key> + <value>Кнопки таблицы</value> + + + КнопкиТаблицыРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 51 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ИспользуемыеКоманды + 21 + + <key>ru</key> + <value>Используемые команды</value> + + true + true + + true + + + ИспользуемыеКоманды + + None + + ГруппаВЯчейке + 40 + + ИспользуемыеКомандыИспользование + 37 + true + true + + true + + + + ИспользуемыеКоманды.Использование + + + + ИспользуемыеКомандыИспользованиеРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + ИспользуемыеКомандыИспользованиеКонтекстноеМеню + 38 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + Left + true + + + + ИспользуемыеКомандыПредставление + 34 + true + true + + true + + + + ИспользуемыеКоманды.Представление + + + + ИспользуемыеКомандыПредставлениеРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + ИспользуемыеКомандыПредставлениеКонтекстноеМеню + 35 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>В ячейке</value> + + + ГруппаВЯчейкеРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + ColumnGroup + + InCell + true + + + + ИспользуемыеКомандыКоманднаяПанель + 23 + true + true + + true + + Left + + + true + true + + true + + ИспользуемыеКомандыСтрокаПоиска + 25 + + ИспользуемыеКомандыСтрокаПоискаРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + ИспользуемыеКомандыСтрокаПоискаКонтекстноеМеню + 26 + true + true + + true + + true + + + true + + + + true + true + + true + + ИспользуемыеКомандыСостояниеПросмотра + 28 + + ИспользуемыеКомандыСостояниеПросмотраРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + + ИспользуемыеКомандыСостояниеПросмотраКонтекстноеМеню + 29 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ИспользуемыеКомандыУправлениеПоиском + 31 + + ИспользуемыеКомандыУправлениеПоискомРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + + ИспользуемыеКомандыУправлениеПоискомКонтекстноеМеню + 32 + true + true + + true + + true + + SearchControlAddition + + true + + + + ИспользуемыеКомандыРасширеннаяПодсказка + 24 + true + true + + true + + Label + true + true + + Left + + + + ИспользуемыеКомандыКонтекстноеМеню + 22 + true + true + + true + + true + + 45 + true + true + true + 1 + 1 + AutoUse + AutoUse + Auto + Auto + true + true + true + true + + + Bottom + + ФормаКоманднаяПанель + -1 + + ОК + 17 + true + true + + true + + true + false + + ОКExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + Отмена + 18 + true + true + + true + + false + + ОтменаExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + Vertical + true + true + true + true + true + + ИспользуемыеКоманды + + <key>ru</key> + <value>Используемые команды</value> + + 6 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Представление</value> + + 1 + + String + + + + true + + + true + + + + Ссылка + 2 + + CatalogRef.ДополнительныеОтчетыИОбработки + + + true + + + true + + + + Идентификатор + 3 + + String + + + + true + + + true + + + + Использование + + <key>ru</key> + <value>Использование</value> + + 5 + + Boolean + + + true + + + true + + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 5 + + ru + ОК + + + true + + + + ОК + + + DontUse + + + УстановитьФлажки + + <key>ru</key> + <value>Установить флажки</value> + + 6 + + ru + Установить флажки + + + true + + + StdPicture.CheckAll + + + + УстановитьФлажки + + + DontUse + + + СнятьФлажки + + <key>ru</key> + <value>Снять флажки</value> + + 7 + + ru + Снять флажки + + + true + + + StdPicture.UncheckAll + + + + СнятьФлажки + + + DontUse + + + ВидОбработок + + EnumRef.ВидыДополнительныхОтчетовИОбработок + + true + + + СсылкаРаздела + + CatalogRef.ИдентификаторыОбъектовМетаданных + + true + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Module.bsl" new file mode 100644 index 00000000..0d900583 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/Module.bsl" @@ -0,0 +1,75 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Мои дополнительные обработки (%1)'"), + ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(Параметры.СсылкаРаздела)); + ИначеЕсли Параметры.ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Мои дополнительные отчеты (%1)'"), + ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(Параметры.СсылкаРаздела)); + КонецЕсли; + + ТипыКоманд = Новый Массив; + ТипыКоманд.Добавить(Перечисления.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода); + ТипыКоманд.Добавить(Перечисления.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода); + ТипыКоманд.Добавить(Перечисления.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы); + ТипыКоманд.Добавить(Перечисления.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме); + + Запрос = ДополнительныеОтчетыИОбработки.НовыйЗапросПоДоступнымКомандам(Параметры.ВидОбработок, Параметры.СсылкаРаздела, , ТипыКоманд, Ложь); + ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); + ИспользуемыеКоманды.Загрузить(ТаблицаРезультат); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СнятьФлажки(Команда) + Для Каждого СтрокаТаблицы Из ИспользуемыеКоманды Цикл + СтрокаТаблицы.Использование = Ложь; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьФлажки(Команда) + Для Каждого СтрокаТаблицы Из ИспользуемыеКоманды Цикл + СтрокаТаблицы.Использование = Истина; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура ОК(Команда) + ЗаписатьНаборОбработокПользователя(); + ОповеститьОВыборе("ВыполненаНастройкаМоихОтчетовИОбработок"); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаписатьНаборОбработокПользователя() + Таблица = ИспользуемыеКоманды.Выгрузить(); + Таблица.Колонки.Ссылка.Имя = "ДополнительныйОтчетИлиОбработка"; + Таблица.Колонки.Идентификатор.Имя = "ИдентификаторКоманды"; + Таблица.Колонки.Использование.Имя = "Доступно"; + ЗначенияИзмерений = Новый Структура("Пользователь", Пользователи.АвторизованныйПользователь()); + ЗначенияРесурсов = Новый Структура; + УстановитьПривилегированныйРежим(Истина); + РегистрыСведений.ПользовательскиеНастройкиДоступаКОбработкам.ЗаписатьПакетНастроек(Таблица, ЗначенияИзмерений, ЗначенияРесурсов, Ложь); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.mdo" new file mode 100644 index 00000000..4c72a1ad --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\234\320\276\320\270\321\205\320\236\321\202\321\207\320\265\321\202\320\276\320\262\320\230\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.mdo" @@ -0,0 +1,10 @@ + + + НастройкаМоихОтчетовИОбработок + + ru + Настройка моих отчетов и обработок + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Form.form" new file mode 100644 index 00000000..c58619e9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Form.form" @@ -0,0 +1,886 @@ + + + + ВидимостьКнопки + 88 + true + true + + true + + + + ВидимостьКнопки + + + Right + 2 + + OnChange + ВидимостьКнопкиПриИзменении + + + ВидимостьКнопкиExtendedTooltip + 192 + true + true + + true + + Label + true + true + + Left + + + + ВидимостьКнопкиКонтекстноеМеню + 89 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаПараметрыЗапуска + 213 + + ПутьКФайлу + 21 + true + true + + true + + + + ПутьКФайлу + + + Top + + ПутьКФайлуExtendedTooltip + 182 + true + true + + true + + Label + true + true + + Left + + + + ПутьКФайлуКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + Left + Enter + true + Left + true + + + StartChoice + ПутьКФайлуНачалоВыбора + + true + true + true + false + true + true + true + + + + ГруппаЛогинПароль + 68 + + СохранитьЛогинПароль + 36 + true + true + + true + + + + СохранитьЛогинПароль + + + Right + + OnChange + СохранитьЛогинПарольПриИзменении + + + СохранитьЛогинПарольExtendedTooltip + 193 + true + true + + true + + Label + true + true + + Left + + + + СохранитьЛогинПарольКонтекстноеМеню + 37 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ЛогинПароль + 155 + + ДекорацияОтступСлева + 226 + true + true + + true + + + ДекорацияОтступСлеваРасширеннаяПодсказка + 228 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияОтступСлеваКонтекстноеМеню + 227 + true + true + + true + + true + + Label + 1 + true + true + + Left + + + + Логин + 33 + + <key>ru</key> + <value> Логин</value> + + true + true + + true + + + + Логин + + + + ЛогинExtendedTooltip + 195 + true + true + + true + + Label + true + true + + Left + + + + ЛогинКонтекстноеМеню + 34 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Пароль + 38 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + + Пароль + + + + ПарольExtendedTooltip + 196 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 39 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + ЛогинПарольExtendedTooltip + 194 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + ГруппаЛогинПарольРасширеннаяПодсказка + 191 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + ГруппаПараметрыЗапускаРасширеннаяПодсказка + 214 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ГруппаИнформацияОЗагрузке + 215 + + ДекорацияИнформация + 217 + + <key>ru</key> + <value>Декорация информация</value> + + true + true + + true + + + ДекорацияИнформацияРасширеннаяПодсказка + 219 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияИнформацияКонтекстноеМеню + 218 + true + true + + true + + true + + true + true + + + CommonPicture.Информация32 + + + + + ГруппыГиперссылки + 43 + + СкачатьПриложение + 229 + true + true + + true + + + СкачатьПриложениеРасширеннаяПодсказка + 230 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.СкачатьПриложение + Auto + true + 1 + true + UserCmds + Auto + + + АккаунтОнлайнПоддержки + 40 + true + true + + true + + 2 + + АккаунтОнлайнПоддержкиРасширеннаяПодсказка + 204 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ПолучитьАккаунтОнлайнПоддержки + Auto + true + true + UserCmds + Auto + + + ТехническиеТребования + 42 + true + true + + true + + + ТехническиеТребованияExtendedTooltip + 206 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ТехническиеТребования + Auto + true + 1 + true + UserCmds + Auto + + true + true + + true + + + ГруппыГиперссылкиРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + ГруппаИнформацияОЗагрузкеРасширеннаяПодсказка + 216 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + Сохранить + 48 + true + true + + true + + true + true + + СохранитьExtendedTooltip + 210 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Сохранить + Auto + true + true + true + UserCmds + Auto + + + Отмена + 211 + true + true + + true + + + ОтменаРасширеннаяПодсказка + 212 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Close + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + ПутьКФайлу + + <key>ru</key> + <value>Путь к исполняемому файлу приложения</value> + + 1 + + String + + + + true + + + true + + true + + + СохранитьЛогинПароль + + <key>ru</key> + <value>Подставлять логин и пароль при запуске приложения</value> + + 2 + + Boolean + + + true + + + true + + + + Логин + + <key>ru</key> + <value>Логин</value> + + 3 + + String + + 10 + + + + true + + + true + + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 4 + + String + + 10 + + + + true + + + true + + + + ВидимостьКнопки + + <key>ru</key> + <value>Отображать кнопку запуска приложения для соединения со специалистом онлайн-поддержки на начальной странице</value> + + 5 + + Boolean + + + true + + + true + + + + ПолучитьАккаунтОнлайнПоддержки + + <key>ru</key> + <value>Зарегистрироваться в сервисе онлайн-поддержки (1С-Коннект)</value> + + 2 + + true + + + + ПолучитьАккаунтВызовОнлайнПоддержки + + + DontUse + + + ТехническиеТребования + + <key>ru</key> + <value>Технические требования</value> + + 3 + + true + + + + ТехническиеТребования + + + DontUse + + + Сохранить + + <key>ru</key> + <value>Сохранить</value> + + 5 + + true + + + + Сохранить + + + DontUse + + + СкачатьПриложение + + <key>ru</key> + <value>Скачать приложение</value> + + 7 + + true + + + + СкачатьПриложение + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Help/ru.html" new file mode 100644 index 00000000..17b59835 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Help/ru.html" @@ -0,0 +1,18 @@ + +

        Предназначена для настройки кнопки запуска приложения для связи со специалистом онлайн-поддержки (1С-Коннект) на начальной странице. Настройки хранятся для каждого пользователя с привязкой к рабочему месту.

        +

        Открывается по команде Настройка онлайн-поддержки в разделе Администрирование - Интернет-поддержка и сервисы - Онлайн-поддержка.

        +

        Запуск одной и той же базы под веб-клиентом и тонким клиентом потребует две процедуры настройки.

        +

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

        +

        Также необходимо получить регистрацию на сайте 1С-Коннект. Для этого воспользуйтесь ссылкой Зарегистрироваться в сервисе онлайн-поддержки (1С-Коннект). 

        +

        На втором шаге задайте настройки:

        +
        • Включите флажок Отображать кнопку запуска приложения для соединения со специалистом онлайн-поддержки на начальной странице - кнопка запуска будет выведена на начальную страницу. +
        • Укажите Путь к исполняемому файлу приложения. Если при запуске файл по указанному пути не будет найден, то программа предложит вам указать его повторно.

        На третьем шаге задайте настройки:

        +
        • Включите флажок Подставлять логин и пароль при запуске приложения - при запуске программы введенные логин и пароль будут подставлены автоматически. В этом случае показ окна авторизации будет пропущен. +
        • Введите Логин/пароль - данные авторизации пользователя на сайте 1С-Коннект. Если данные не заполнены или заполнены неверно, программа предложит ввести логин и пароль повторно. Логин и пароль можно ввести, только если разрешено подставлять их при запуске программы.

        Нажмите Сохранить, для того чтобы внесенные изменения вступили в силу.

        +

        Для вашего удобства выведены ссылки на сайт компании для получения помощи. Для того чтобы ознакомиться с требованиями к компьютеру и списком необходимых настроек, перейдите по ссылке Технические требования.

        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Module.bsl" new file mode 100644 index 00000000..7f247165 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/Module.bsl" @@ -0,0 +1,149 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Заполнение элементов формы согласно предыдущих настроек текущего пользователя. + Результат = ВызовОнлайнПоддержкиВызовСервера.НастройкиУчетнойЗаписиПользователя(); + ВидимостьКнопки = Результат.ВидимостьКнопкиВызовОнлайнПоддержки; + СохранитьЛогинПароль = Результат.ИспользоватьЛП; + Элементы.Логин.Доступность = Результат.ИспользоватьЛП; + Элементы.Пароль.Доступность = Результат.ИспользоватьЛП; + Логин = Результат.Логин; + Пароль = Результат.Пароль; + СистемнаяИнформация = Новый СистемнаяИнформация; + ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента; + ПутьКФайлу = ВызовОнлайнПоддержкиВызовСервера.РасположениеИсполняемогоФайла(ИдентификаторКлиента); + + ИнициализироватьЭлементыФормы(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если НЕ ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда + ПоказатьПредупреждение(,НСтр("ru = 'Для работы с приложением необходима операционная система Microsoft Windows.'")); + Отказ = Истина; + КонецЕсли; + Если ПутьКФайлу="" Тогда + ПутьКФайлу = ВызовОнлайнПоддержкиКлиент.ПутьКИсполняемомуФайлуИзРеестраWindows(); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СохранитьЛогинПарольПриИзменении(Элемент) + + Доступ = СохранитьЛогинПароль; + Элементы.Логин.Доступность = Доступ; + Элементы.Пароль.Доступность = Доступ; + +КонецПроцедуры + +&НаКлиенте +Процедура ВидимостьКнопкиПриИзменении(Элемент) + ИнициализироватьЭлементыФормы(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + Оповещение = Новый ОписаниеОповещения("ПутьКФайлуНачалоВыбораЗавершение", ЭтотОбъект); + ВызовОнлайнПоддержкиКлиент.ВыбратьФайлВызовОнлайнПоддержки(Оповещение, ПутьКФайлу); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Сохранить(Команда) + + ИдентификаторКлиента = ВызовОнлайнПоддержкиКлиент.ИдентификаторКлиента(); + СохранитьНастройкиПользователяВХранилище(Логин, Пароль, СохранитьЛогинПароль, ВидимостьКнопки); + НовыйПутьКИсполняемомуФайлу(ИдентификаторКлиента, ПутьКФайлу); + // Оповестим форму кнопки для управления видимостью кнопки. + Оповестить("СохранениеНастроекВызовОнлайнПоддержки"); + ПриИзмененииНастроек(); + ОбновитьИнтерфейс(); + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучитьАккаунтВызовОнлайнПоддержки(Команда) + + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://buhphone.com/clients/be-client/"); + +КонецПроцедуры + +&НаКлиенте +Процедура ТехническиеТребования(Команда) + + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://buhphone.com/require/#anchor_1"); + +КонецПроцедуры + +&НаКлиенте +Процедура СкачатьПриложение(Команда) + + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://distribs.buhphone.com/current"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервереБезКонтекста +Процедура НовыйПутьКИсполняемомуФайлу(ИдентификаторКлиента, ПутьКФайлу) + ВызовОнлайнПоддержки.СохранитьРасположениеИсполняемогоФайлаВызовОнлайнПоддержки(ИдентификаторКлиента, ПутьКФайлу); +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СохранитьНастройкиПользователяВХранилище(Логин, + Пароль, + СохранитьЛогинПароль, + ВидимостьКнопки) + + ВызовОнлайнПоддержки.СохранитьНастройкиПользователяВХранилище(Логин, Пароль, СохранитьЛогинПароль, ВидимостьКнопки); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ПриИзмененииНастроек() + ВызовОнлайнПоддержкиПереопределяемый.ПриИзмененииНастроек(); +КонецПроцедуры + +// Выполняет инициализацию элементов формы в зависимости от +// настроек приложения. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ИнициализироватьЭлементыФормы(Форма) + + Форма.Элементы.ГруппаПараметрыЗапуска.Доступность = Форма.ВидимостьКнопки; + +КонецПроцедуры + +&НаКлиенте +Процедура ПутьКФайлуНачалоВыбораЗавершение(НовыйПутьКФайлу, ДополнительныеПараметры) Экспорт + Если НовыйПутьКФайлу <> "" Тогда + ПутьКФайлу = НовыйПутьКФайлу; + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" new file mode 100644 index 00000000..dc6f9193 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\320\275\320\273\320\260\320\271\320\275\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.mdo" @@ -0,0 +1,16 @@ + + + НастройкаОнлайнПоддержки + + ru + Настройка онлайн-поддержки + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Form.form" new file mode 100644 index 00000000..d41eb835 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Form.form" @@ -0,0 +1,697 @@ + + + + ГруппаДополнительнаяИнформация + 32 + + КартинкаИнформации + 34 + + <key>ru</key> + <value>Картинка информации</value> + + true + true + + true + + + КартинкаИнформацииРасширеннаяПодсказка + 36 + true + true + + true + + Label + true + true + + Left + + + + КартинкаИнформацииКонтекстноеМеню + 35 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + ДополнительнаяИнформация + 37 + + <key>ru</key> + <value>Дополнительная информация по способу авторизации</value> + + true + true + + true + + + ДополнительнаяИнформацияРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + + ДополнительнаяИнформацияКонтекстноеМеню + 38 + true + true + + true + + true + + true + Label + 40 + true + true + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Дополнительная информация</value> + + + ГруппаДополнительнаяИнформацияРасширеннаяПодсказка + 33 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ПровайдерSMS + 5 + + <key>ru</key> + <value>Провайдер</value> + + true + true + + true + + + + НаборКонстант.ПровайдерSMS + + + Button + + OnChange + ПровайдерSMSПриИзменении + + + ПровайдерSMSExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + ПровайдерSMSКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 30 + true + true + false + true + false + true + true + true + + Style.ФонУправляющегоПоля + + + + + СпособАвторизации + 24 + true + true + + true + + + + СпособАвторизации + + + + OnChange + СпособАвторизацииПриИзменении + + + СпособАвторизацииРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + + СпособАвторизацииКонтекстноеМеню + 25 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + false + true + true + true + true + + + ru + По ключу (рекомендуется) + + + ПоКлючу + + + + + ru + По логину и паролю (устаревший способ) + + + ПоЛогинуИПаролю + + + + Style.ФонУправляющегоПоля + + + + + Логин + 1 + + <key>ru</key> + <value>Логин</value> + + true + true + + true + + + + ЛогинДляОтправкиSMS + + + + ЛогинРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + ЛогинКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 30 + true + true + false + true + true + true + true + true + + + + Пароль + 3 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + + ПарольДляОтправкиSMS + + + + ПарольРасширеннаяПодсказка + 13 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + 30 + true + true + false + true + true + true + true + true + true + + + + ИмяОтправителя + 16 + true + true + + true + + + + ИмяОтправителя + + + + ИмяОтправителяРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + ИмяОтправителяКонтекстноеМеню + 17 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 30 + true + true + false + true + true + true + true + + + + ГруппаНужнаПомощь + 27 + + ИнструкцияПоПодключениюУслуги + 29 + true + true + + true + + + ИнструкцияПоПодключениюУслугиРасширеннаяПодсказка + 31 + true + true + + true + + Label + true + true + + Left + + + + ИнструкцияПоПодключениюУслугиКонтекстноеМеню + 30 + true + true + + true + + true + + Label + 40 + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Нужна помощь?</value> + + Right + + ГруппаНужнаПомощьРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + PopUp + true + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + НаборКонстант + 1 + + ConstantsSet + + + true + + + true + +
        true
        + true +
        + + ЛогинДляОтправкиSMS + + <key>ru</key> + <value>Логин для отправки SMS</value> + + 2 + + String + + 100 + + + + true + + + true + + + + ПарольДляОтправкиSMS + + <key>ru</key> + <value>Пароль для отправки SMS</value> + + 3 + + String + + 100 + + + + true + + + true + + + + ИмяОтправителя + + <key>ru</key> + <value>Имя отправителя</value> + + 4 + + String + + + + true + + + true + + + + СпособАвторизации + + <key>ru</key> + <value>Способ авторизации</value> + + 6 + + String + + + + true + + + true + + + + СпособыАвторизации + 7 + + + true + + + true + + + + НастройкиПровайдера + 8 + + + true + + + true + + + + ДополнительнаяИнформация + 5 + + + true + + + true + + + + + + + + + AfterWrite + ПослеЗаписи + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Help/ru.html" new file mode 100644 index 00000000..4a67debe --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Help/ru.html" @@ -0,0 +1,19 @@ + +

        Предназначена для настройки параметров отправки SMS.

        +

        Открывается по команде Настройка отправки SMS раздела Администрирование - Органайзер - Отправка SMS.

        +

        С помощью SMS можно организовать:

        +
        • Информирование технических специалистов о неполадках баз данных 1С; +
        • +
        • Автоматическое подтверждение совершенных клиентом платежей и других операций; +
        • +
        • Информирование клиента о событиях: день рождения, дата очередного платежа и прочее; +
        • +
        • Массовое оповещение клиентов о товарах, услугах, акциях и специальных предложениях.

        Для возможности отправки SMS необходимо заключить договор с провайдером на оказание соответствующей услуги. Подробности об услуге можно узнать на сайтах провайдеров:

        +

        Настройка отправки SMS

        +
        • В поле Провайдер необходимо выбрать поставщика услуги, с которым заключен договор. +
        • +
        • Выберите Способ авторизации, указанный в договоре с провайдером;
        • +
        • При заключении договора получателю услуги предоставляются идентификационные данные, напишите их в соответствующие поля. Укажите Логин и Пароль или другие данные для авторизации, указанные в договоре.
        • +
        • В настройках отправки SMS можно указать Имя отправителя. Поддерживается только латиница. В этом случае SMS будут приходить с указанного имени, а не с номера телефона отправителя.
        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Module.bsl" new file mode 100644 index 00000000..75771f3b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/Module.bsl" @@ -0,0 +1,180 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьПривилегированныйРежим(Истина); + НастройкиОтправкиSMS = ОтправкаSMS.НастройкиОтправкиSMS(); + УстановитьПривилегированныйРежим(Ложь); + + НастройкиПровайдера = ОтправкаSMS.НастройкиПровайдера(НастройкиОтправкиSMS.Провайдер); + ЗаполнитьСпособыАвторизации(ЭтотОбъект); + + СпособАвторизации = "ПоЛогинуИПаролю"; + Если НастройкиОтправкиSMS.Свойство("СпособАвторизации") + И ЗначениеЗаполнено(НастройкиОтправкиSMS.СпособАвторизации) + И Элементы.СпособАвторизации.СписокВыбора.НайтиПоЗначению(НастройкиОтправкиSMS.СпособАвторизации) <> Неопределено Тогда + + СпособАвторизации = НастройкиОтправкиSMS.СпособАвторизации; + КонецЕсли; + + УстановитьПоляАвторизации(ЭтотОбъект); + ВывестиДополнительнуюИнформацию(ЭтотОбъект); + + ЛогинДляОтправкиSMS = НастройкиОтправкиSMS.Логин; + ИмяОтправителя = НастройкиОтправкиSMS.ИмяОтправителя; + ПарольДляОтправкиSMS = НастройкиОтправкиSMS.Пароль; + + Если Элементы.Пароль.РежимПароля Тогда + ПарольДляОтправкиSMS = ?(ЗначениеЗаполнено(НастройкиОтправкиSMS.Пароль), ЭтотОбъект.УникальныйИдентификатор, ""); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + УстановитьТекстИнструкцииПоПодключениюУслуги(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + ОбновитьПовторноИспользуемыеЗначения(); + Оповестить("Запись_НастройкиОтправкиSMS", ПараметрыЗаписи, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + УстановитьПривилегированныйРежим(Истина); + Владелец = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Константа.ПровайдерSMS"); + Если ПарольДляОтправкиSMS <> Строка(ЭтотОбъект.УникальныйИдентификатор) Тогда + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владелец, ПарольДляОтправкиSMS); + КонецЕсли; + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владелец, ЛогинДляОтправкиSMS, "Логин"); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владелец, ИмяОтправителя, "ИмяОтправителя"); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владелец, СпособАвторизации, "СпособАвторизации"); + УстановитьПривилегированныйРежим(Ложь); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПровайдерSMSПриИзменении(Элемент) + + НастройкиПровайдера = НастройкиПровайдера(НаборКонстант.ПровайдерSMS); + + ЗаполнитьСпособыАвторизации(ЭтотОбъект); + УстановитьПоляАвторизации(ЭтотОбъект); + ВывестиДополнительнуюИнформацию(ЭтотОбъект); + + ЛогинДляОтправкиSMS = ""; + ПарольДляОтправкиSMS = ""; + ИмяОтправителя = ""; + + УстановитьТекстИнструкцииПоПодключениюУслуги(); + +КонецПроцедуры + +&НаКлиенте +Процедура СпособАвторизацииПриИзменении(Элемент) + + ЛогинДляОтправкиSMS = ""; + ПарольДляОтправкиSMS = ""; + + УстановитьПоляАвторизации(ЭтотОбъект); + ВывестиДополнительнуюИнформацию(ЭтотОбъект); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция НастройкиПровайдера(Провайдер) + + Возврат ОтправкаSMS.НастройкиПровайдера(Провайдер); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьПоляАвторизации(Форма) + + ПоляАвторизации = Форма.НастройкиПровайдера.ПоляАвторизации[Форма.СпособАвторизации]; + + Для Каждого ИмяПоля Из СтрРазделить("Логин,Пароль", ",") Цикл + Поле = ПоляАвторизации.НайтиПоЗначению(ИмяПоля); + Если Поле <> Неопределено Тогда + Элемент = Форма.Элементы[ИмяПоля]; // ПолеФормы + Элемент.Заголовок = Поле.Представление; + КонецЕсли; + + Форма.Элементы[ИмяПоля].Видимость = Поле <> Неопределено; + + КонецЦикла; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьСпособыАвторизации(Форма) + + Форма.Элементы.СпособАвторизации.СписокВыбора.Очистить(); + + СпособыАвторизацииПоУмолчанию = Форма.НастройкиПровайдера.СпособыАвторизации; + + Для Каждого Элемент Из СпособыАвторизацииПоУмолчанию Цикл + Если Форма.НастройкиПровайдера.ПоляАвторизации.Свойство(Элемент.Значение) Тогда + Форма.Элементы.СпособАвторизации.СписокВыбора.Добавить(Элемент.Значение, Элемент.Представление); + КонецЕсли; + КонецЦикла; + + Форма.СпособАвторизации = Форма.Элементы.СпособАвторизации.СписокВыбора[0].Значение; + Форма.Элементы.СпособАвторизации.Видимость = Форма.Элементы.СпособАвторизации.СписокВыбора.Количество() > 1; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ВывестиДополнительнуюИнформацию(Форма) + + Форма.Элементы.ДополнительнаяИнформация.Заголовок = ""; + + ДополнительнаяИнформация = Форма.НастройкиПровайдера.ИнформацияПоСпособамАвторизации; + Если ДополнительнаяИнформация.Свойство(Форма.СпособАвторизации) Тогда + Форма.Элементы.ДополнительнаяИнформация.Заголовок = ДополнительнаяИнформация[Форма.СпособАвторизации]; + КонецЕсли; + + Форма.Элементы.ГруппаДополнительнаяИнформация.Видимость = ЗначениеЗаполнено(Форма.Элементы.ДополнительнаяИнформация.Заголовок); + +КонецПроцедуры + +&НаКлиенте +Функция АдресОписанияУслугиВИнтернете() + + АдресВИнтернете = НастройкиПровайдера.АдресОписанияУслугиВИнтернете; + ОтправкаSMSКлиентПереопределяемый.ПриПолученииАдресаПровайдераВИнтернете(НаборКонстант.ПровайдерSMS, АдресВИнтернете); + Возврат АдресВИнтернете; + +КонецФункции + +&НаКлиенте +Процедура УстановитьТекстИнструкцииПоПодключениюУслуги() + + ШаблонИнструкции = НСтр("ru = 'Для подключения услуги отправки SMS необходимо заключить договор с провайдером %2. + |Имя отправителя следует заполнять только в случае, если оно предусмотрено договором. + |По вопросам оплаты услуги и проблемам авторизации следует обращаться к провайдеру услуги.'"); + + Элементы.ИнструкцияПоПодключениюУслуги.Заголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонИнструкции, АдресОписанияУслугиВИнтернете(), НаборКонстант.ПровайдерSMS)); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS.mdo" new file mode 100644 index 00000000..9648a882 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\270SMS.mdo" @@ -0,0 +1,16 @@ + + + НастройкаОтправкиSMS + + ru + Настройка отправки SMS + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Form.form" new file mode 100644 index 00000000..27d29480 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Form.form" @@ -0,0 +1,354 @@ + + + + СервисПереводаТекста + 1 + true + true + + true + + + + НаборКонстант.СервисПереводаТекста + + + ShowBottom + + OnChange + СервисПереводаТекстаПриИзменении + + + СервисПереводаТекстаРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + СервисПереводаТекстаКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + Style.ФонУправляющегоПоля + + + + + Инструкция + 6 + true + true + + true + + + ИнструкцияРасширеннаяПодсказка + 8 + true + true + + true + + Label + true + true + + Left + + + + ИнструкцияКонтекстноеМеню + 7 + true + true + + true + + true + + Label + true + + Left + + + + ПараметрыАвторизации + 4 + true + true + + true + + + <key>ru</key> + <value>Параметры авторизации</value> + + + ПараметрыАвторизацииРасширеннаяПодсказка + 5 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ЗаписатьИЗакрыть + 9 + true + true + + true + + + ЗаписатьИЗакрытьРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + true + true + true + UserCmds + + StdPicture.WriteAndClose + + Auto + + + ФормаЗаписать + 15 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 16 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Write + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СтандартныеКоманды + 11 + true + true + + true + + + <key>ru</key> + <value>Стандартные команды</value> + + + СтандартныеКомандыРасширеннаяПодсказка + 12 + true + true + + true + + Label + true + true + + Left + + + + Form + + + + ФормаСправка + 13 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + WriteAndClose + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + НаборКонстант + 1 + + ConstantsSet + + + true + + + true + +
        true
        + true +
        + + ПараметрыАвторизации + 5 + + ValueList + + + true + + + true + + + + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + Auto + + + + + + + + OnReadAtServer + ПриЧтенииНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Help/ru.html" new file mode 100644 index 00000000..873fb96f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Help/ru.html" @@ -0,0 +1,7 @@ + +
        Для упрощения перевода макетов и ввода реквизитов на разных языках в программе предусмотрена возможность использования онлайн-сервисов перевода текста (например, Яндекс.Переводчик и Google Переводчик). Для того чтобы задействовать эту возможность, включите флажок Перевод текста с помощью внешнего сервиса в разделе Администрирование - Печатные формы, отчеты и обработки.
        +
        Выберите из списка нужный Сервис перевода текста, далее следуйте инструкции по настройке выбранного сервиса. За использование сервиса перевода текста может взиматься плата. Условия использования необходимо уточнить на сайте соответствующего сервиса.
        +
        После подключения сервиса становится возможным автоматический перевод текста.
        + + + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..f6f88a8a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/Module.bsl" @@ -0,0 +1,144 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ЗаписатьИЗакрыть.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Владелец = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Константа.СервисПереводаТекста"); + + УстановитьПривилегированныйРежим(Истина); + Для Каждого Параметр Из ПараметрыАвторизации Цикл + Если Параметр.Представление <> Строка(УникальныйИдентификатор) Тогда + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владелец, Параметр.Представление, Параметр.Значение); + КонецЕсли; + КонецЦикла; + УстановитьПривилегированныйРежим(Ложь); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Если Не ЗначениеЗаполнено(НаборКонстант.СервисПереводаТекста) Тогда + НаборКонстант.СервисПереводаТекста = Перечисления.СервисыПереводаТекста.ЯндексПереводчик; + КонецЕсли; + + ЗаполнитьНастройки(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СервисПереводаТекстаПриИзменении(Элемент) + + ЗаполнитьНастройки(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПараметрАвторизацииИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + Элемент.КнопкаВыбора = Истина; +КонецПроцедуры + +// Параметры: +// Элемент - ПолеФормы +// +&НаКлиенте +Процедура Подключаемый_ПараметрАвторизацииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + Индекс = ПараметрыАвторизации.Индекс(ПараметрыАвторизации.НайтиПоЗначению(Элемент.Имя)); + ПереключитьРежимПароля(Элемент, ПараметрыАвторизации[Индекс].Представление, СтандартнаяОбработка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + Записать(); + Закрыть(НаборКонстант.СервисПереводаТекста); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьНастройки() + + СервисПереводаТекста = НаборКонстант.СервисПереводаТекста; + + Для Каждого Параметр Из ПараметрыАвторизации Цикл + Элементы.Удалить(Элементы[Параметр.Значение]); + КонецЦикла; + ПараметрыАвторизации.Очистить(); + + Элементы.Инструкция.Заголовок = ""; + + УстановитьПривилегированныйРежим(Истина); + + НастройкиАвторизации = ПереводТекстаНаДругиеЯзыки.НастройкиАвторизации(СервисПереводаТекста); + Если НастройкиАвторизации = Неопределено Тогда + Возврат; + КонецЕсли; + + НастройкиСервисаПереводаТекста = ПереводТекстаНаДругиеЯзыки.НастройкиСервисаПереводаТекста(СервисПереводаТекста); + Элементы.Инструкция.Заголовок = НастройкиСервисаПереводаТекста.ИнструкцияПоПодключению; + + Для Индекс = 0 По НастройкиСервисаПереводаТекста.ПараметрыАвторизации.Количество() - 1 Цикл + ОписаниеПараметра = НастройкиСервисаПереводаТекста.ПараметрыАвторизации[Индекс]; + ЗначениеПараметра = НастройкиАвторизации[ОписаниеПараметра.Имя]; + ПараметрыАвторизации.Добавить(ОписаниеПараметра.Имя, ?(ЗначениеЗаполнено(ЗначениеПараметра), УникальныйИдентификатор, "")); + + ПолеВвода = Элементы.Добавить(ОписаниеПараметра.Имя, Тип("ПолеФормы"), Элементы.ПараметрыАвторизации); + ПолеВвода.Вид = ВидПоляФормы.ПолеВвода; + ПолеВвода.Заголовок = ОписаниеПараметра.Представление; + ПолеВвода.ПутьКДанным = "ПараметрыАвторизации[" + Индекс + "].Представление"; + ПолеВвода.ОтображениеПодсказки = ОписаниеПараметра.ОтображениеПодсказки; + ПолеВвода.РасширеннаяПодсказка.Заголовок = ОписаниеПараметра.Подсказка; + ПолеВвода.УстановитьДействие("НачалоВыбора", "Подключаемый_ПараметрАвторизацииНачалоВыбора"); + ПолеВвода.УстановитьДействие("ИзменениеТекстаРедактирования", "Подключаемый_ПараметрАвторизацииИзменениеТекстаРедактирования"); + ПолеВвода.РежимПароля = Истина; + ПолеВвода.КнопкаВыбора = Не ЗначениеЗаполнено(ЗначениеПараметра); + ПолеВвода.КартинкаКнопкиВыбора = БиблиотекаКартинок.ВводимыеСимволыСкрыты; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ПереключитьРежимПароля(Элемент, Реквизит, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Реквизит = Элемент.ТекстРедактирования; + Элемент.РежимПароля = Не Элемент.РежимПароля; + Если Элемент.РежимПароля Тогда + Элемент.КартинкаКнопкиВыбора = БиблиотекаКартинок.ВводимыеСимволыСкрыты; + Иначе + Элемент.КартинкаКнопкиВыбора = БиблиотекаКартинок.ВводимыеСимволыВидны; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260.mdo" new file mode 100644 index 00000000..ed889d98 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\237\320\265\321\200\320\265\320\262\320\276\320\264\320\260\320\242\320\265\320\272\321\201\321\202\320\260.mdo" @@ -0,0 +1,16 @@ + + + НастройкаПереводаТекста + + ru + Настройка перевода текста + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form.form" new file mode 100644 index 00000000..8f5538d0 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form.form" @@ -0,0 +1,655 @@ + + + + <key>ru</key> + <value>Настройка рабочего каталога</value> + + + ГруппаРасположение + 26 + + РабочийКаталогПользователя + 4 + + <key>ru</key> + <value>Расположение</value> + + true + true + + true + + + + РабочийКаталогПользователя + + + + РабочийКаталогПользователяExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + + РабочийКаталогПользователяКонтекстноеМеню + 5 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + + StartChoice + РабочийКаталогПользователяНачалоВыбора + + 48 + true + true + true + true + true + + Style.BorderColor + + + + + ПутьКРабочемуКаталогуПоУмолчанию + 27 + true + true + + true + + false + + ПутьКРабочемуКаталогуПоУмолчаниюExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПутьКРабочемуКаталогуПоУмолчанию + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ГруппаРасположениеExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + МаксимальныйРазмерЛокальногоКэшаФайлов + 2 + + <key>ru</key> + <value>Максимальный размер (Мб)</value> + + true + true + + true + + + + МаксимальныйРазмерЛокальногоКэшаФайлов + + + + OnChange + МаксимальныйРазмерЛокальногоКэшаФайловПриИзменении + + + МаксимальныйРазмерЛокальногоКэшаФайловExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + МаксимальныйРазмерЛокальногоКэшаФайловКонтекстноеМеню + 3 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования + 16 + true + true + + true + + + + УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования + + + Right + + OnChange + УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактированияПриИзменении + + + УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактированияExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактированияКонтекстноеМеню + 17 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаТекущееСостояние + 48 + + КоличествоСуммарное + 11 + + <key>ru</key> + <value>Файлов</value> + + true + true + + true + + + + КоличествоСуммарное + + + + КоличествоСуммарноеExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + + КоличествоСуммарноеКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + РазмерФайловВРабочемКаталоге + 9 + + <key>ru</key> + <value>Общий объем (Мб)</value> + + true + true + + true + + + + РазмерФайловВРабочемКаталоге + + + + РазмерФайловВРабочемКаталогеExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + РазмерФайловВРабочемКаталогеКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + Left + + true + true + true + true + true + + Style.BorderColor + + + + + ОчиститьРабочийКаталог + 13 + + <key>ru</key> + <value>Очистить</value> + + true + true + + true + + false + + ОчиститьРабочийКаталогExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьЛокальныйКэшФайлов + Auto + true + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + Auto + + true + true + + true + + + <key>ru</key> + <value>Текущее состояние:</value> + + + ГруппаТекущееСостояниеРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + NormalSeparation + true + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + Закрыть + 21 + true + true + + true + + false + + ЗакрытьРасширеннаяПодсказка + 28 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + + МаксимальныйРазмерЛокальногоКэшаФайлов + + <key>ru</key> + <value>Максимальный размер локального кэша файлов</value> + + 1 + + Number + + 10 + + + + true + + + true + + + + РабочийКаталогПользователя + + <key>ru</key> + <value>Рабочий каталог пользователя</value> + + 2 + + String + + + + true + + + true + + + + РазмерФайловВРабочемКаталоге + + <key>ru</key> + <value>Размер</value> + + 3 + + Number + + 10 + + + + true + + + true + + + + КоличествоСуммарное + + <key>ru</key> + <value>Количество суммарное</value> + + 4 + + Number + + 10 + + + + true + + + true + + + + УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования + + <key>ru</key> + <value>Удалять файлы при завершении редактирования</value> + + 5 + + Boolean + + + true + + + true + + + + ОчиститьЛокальныйКэшФайлов + + <key>ru</key> + <value>Очистить рабочий каталог</value> + + 3 + + ru + Очистить рабочий каталог + + + true + + + + ОчиститьЛокальныйКэшФайлов + + + Picture + DontUse + + + ПутьКРабочемуКаталогуПоУмолчанию + + <key>ru</key> + <value>Путь к рабочему каталогу по умолчанию</value> + + 2 + + ru + Восстановить значение по умолчанию + + + true + + + CommonPicture.РабочийКаталогПоУмолчанию + + + + ПутьКРабочемуКаталогуПоУмолчанию + + + Picture + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Help/ru.html" new file mode 100644 index 00000000..968ba0d5 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Help/ru.html" @@ -0,0 +1,14 @@ + +

        Предназначена для настройки параметров рабочего каталога.

        +

        Рабочий каталог - папка на Вашем персональном компьютере, в которой временно хранятся файлы, полученные из программы для просмотра или редактирования.

        +

        Открывается по ссылке Настройка рабочего каталога в персональных настройках программы (вкладка Работа с файлами).

        +

        Расположение рабочего каталога

        +
        • В поле Расположение указывается путь к основному рабочему каталогу на Вашем персональном компьютере. +
        • +
        • Устанавливается программой автоматически, но может быть изменен при необходимости. Для этого  Выберите другую папку на компьютере. При выборе другого пути к основному рабочему каталогу надо выбирать пустой каталог (не содержащий файлов или подкаталогов). +
        • +
        • Для того чтобы вернуться к первоначальным настройкам программы, нажмите кнопку  Восстановить значение по умолчанию.

        Максимальный размер

        +
        • В поле Максимальный размер (Мб) установите предел суммарного объема всех файлов в основном рабочем каталоге (по умолчанию 100 Мб). Если установлен равным 0, то объем файлов не ограничен. Размер указывается в мегабайтах (Мб).

        Удаление файлов после редактирования

        +
        • Если установлен флажок Удалять файлы при завершении редактирования, то после переноса в программу файл удаляется на Вашем персональном компьютере. Используйте эту настройку для экономии места на жестком диске или в целях повышения безопасности. По умолчанию флажок снят.

        Текущее состояние

        +
        • Программа показывает Текущее состояние основного рабочего каталога - количество Файлов, содержащихся в нем и их Общий объем (Мб).

        Очистка основного рабочего каталога

        +
        • Нажмите Очистить рабочий каталог, для того чтобы удалить все файлы в основном рабочем каталоге, кроме занятых Вами для редактирования. Для подтверждения очистки нажмите Да.
        \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Module.bsl" new file mode 100644 index 00000000..d2f38fa3 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Module.bsl" @@ -0,0 +1,237 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ЭтоВебКлиент() Тогда + Элементы.РазмерФайловВРабочемКаталоге.Видимость = Ложь; + Элементы.ОчиститьРабочийКаталог.Видимость = Ложь; + КонецЕсли; + + ЗаполнитьПараметрыНаСервере(); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + Элементы.ОчиститьРабочийКаталог.Заголовок = НСтр("ru = 'Очистить'"); + Элементы.РабочийКаталогПользователя.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если НЕ РаботаСФайламиСлужебныйКлиент.РасширениеРаботыСФайламиПодключено() Тогда + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Истина); + ПодключитьОбработчикОжидания("ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами", 0.1, Истина); + Отказ = Истина; + Возврат; + КонецЕсли; + + РабочийКаталогПользователя = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя(); + + ОбновитьТекущееСостояниеРабочегоКаталога(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура РабочийКаталогПользователяНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если НЕ РаботаСФайламиСлужебныйКлиент.РасширениеРаботыСФайламиПодключено() Тогда + Возврат; + КонецЕсли; + + // Выбираем другой путь к рабочему каталогу. + ИмяКаталога = РабочийКаталогПользователя; + Заголовок = НСтр("ru = 'Выберите рабочий каталог'"); + Если Не РаботаСФайламиСлужебныйКлиент.ВыбратьПутьКРабочемуКаталогу(ИмяКаталога, Заголовок, Ложь) Тогда + Возврат; + КонецЕсли; + + УстановитьНовыйРабочийКаталог(ИмяКаталога); + +КонецПроцедуры + +&НаКлиенте +Процедура МаксимальныйРазмерЛокальногоКэшаФайловПриИзменении(Элемент) + + СохранитьПараметры(); + +КонецПроцедуры + +&НаКлиенте +Процедура УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактированияПриИзменении(Элемент) + + СохранитьПараметры(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами() + + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Ложь); + РаботаСФайламиСлужебныйКлиент.ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами(Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьЛокальныйКэшФайлов(Команда) + + ТекстВопроса = + НСтр("ru = 'Из рабочего каталога будут удалены все файлы, + |кроме занятых для редактирования. + | + |Продолжить?'"); + Обработчик = Новый ОписаниеОповещения("ОчиститьЛокальныйКэшФайловПослеОтветаНаВопросПродолжить", ЭтотОбъект); + ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +&НаКлиенте +Процедура ПутьКРабочемуКаталогуПоУмолчанию(Команда) + + УстановитьНовыйРабочийКаталог(РаботаСФайламиСлужебныйКлиент.ВыбратьПутьККаталогуДанныхПользователя()); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура СохранитьПараметры() + + ПерсональныеНастройки = Новый Массив; + + Элемент = Новый Структура; + Элемент.Вставить("Объект", "ЛокальныйКэшФайлов"); + Элемент.Вставить("Настройка", "ПутьКЛокальномуКэшуФайлов"); + Элемент.Вставить("Значение", РабочийКаталогПользователя); + ПерсональныеНастройки.Добавить(Элемент); + + Элемент = Новый Структура; + Элемент.Вставить("Объект", "ЛокальныйКэшФайлов"); + Элемент.Вставить("Настройка", "МаксимальныйРазмерЛокальногоКэшаФайлов"); + Элемент.Вставить("Значение", МаксимальныйРазмерЛокальногоКэшаФайлов * 1048576); + ПерсональныеНастройки.Добавить(Элемент); + + Элемент = Новый Структура; + Элемент.Вставить("Объект", "ЛокальныйКэшФайлов"); + Элемент.Вставить("Настройка", "УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования"); + Элемент.Вставить("Значение", УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования); + ПерсональныеНастройки.Добавить(Элемент); + + ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранитьМассив(ПерсональныеНастройки, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьЛокальныйКэшФайловПослеОтветаНаВопросПродолжить(Ответ, ПараметрыВыполнения) Экспорт + + Если Ответ = КодВозвратаДиалога.Нет Тогда + Возврат; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ОчиститьЛокальныйКэшФайловЗавершение", ЭтотОбъект); + // ОчищатьВсе = Истина. + РаботаСФайламиСлужебныйКлиент.ОчиститьРабочийКаталог(Обработчик, РазмерФайловВРабочемКаталоге, 0, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьЛокальныйКэшФайловЗавершение(Результат, ПараметрыВыполнения) Экспорт + + ОбновитьТекущееСостояниеРабочегоКаталога(); + + ПоказатьОповещениеПользователя(НСтр("ru = 'Рабочий каталог'"),, НСтр("ru = 'Очистка рабочего каталога успешно завершена.'")); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПараметрыНаСервере() + + УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( + "ЛокальныйКэшФайлов", "УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования", Ложь); + МаксРазмер = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( + "ЛокальныйКэшФайлов", "МаксимальныйРазмерЛокальногоКэшаФайлов"); + Если МаксРазмер = Неопределено Тогда + МаксРазмер = 100*1024*1024; // 100 мб + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( + "ЛокальныйКэшФайлов", "МаксимальныйРазмерЛокальногоКэшаФайлов", МаксРазмер); + КонецЕсли; + МаксимальныйРазмерЛокальногоКэшаФайлов = МаксРазмер / 1048576; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьТекущееСостояниеРабочегоКаталога() + +#Если НЕ ВебКлиент Тогда + МассивФайлов = НайтиФайлы(РабочийКаталогПользователя, ПолучитьМаскуВсеФайлы()); + РазмерФайловВРабочемКаталоге = 0; + КоличествоСуммарное = 0; + + РаботаСФайламиСлужебныйКлиент.ОбходФайловРазмер( + РабочийКаталогПользователя, + МассивФайлов, + РазмерФайловВРабочемКаталоге, + КоличествоСуммарное); + + РазмерФайловВРабочемКаталоге = РазмерФайловВРабочемКаталоге / 1048576; +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьНовыйРабочийКаталог(НовыйКаталог) + + Если НовыйКаталог = РабочийКаталогПользователя Тогда + Возврат; + КонецЕсли; + +#Если Не ВебКлиент Тогда + Обработчик = Новый ОписаниеОповещения( + "УстановитьНовыйРабочийКаталогЗавершение", ЭтотОбъект, НовыйКаталог); + + РаботаСФайламиСлужебныйКлиент.ПеренестиСодержимоеРабочегоКаталога( + Обработчик, РабочийКаталогПользователя, НовыйКаталог); +#Иначе + УстановитьНовыйРабочийКаталогЗавершение(-1, НовыйКаталог); +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьНовыйРабочийКаталогЗавершение(Результат, НовыйКаталог) Экспорт + + Если Результат <> -1 Тогда + Если Результат <> Истина Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + РабочийКаталогПользователя = НовыйКаталог; + + СохранитьПараметры(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.mdo" new file mode 100644 index 00000000..fd61412d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.mdo" @@ -0,0 +1,17 @@ + + + НастройкаРабочегоКаталога + + ru + Настройка рабочего каталога + + true + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" new file mode 100644 index 00000000..297c4553 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Form.form" @@ -0,0 +1,1435 @@ + + + + ГруппаСложностьПароля + 33 + + ПарольДолженОтвечатьТребованиямСложности + 4 + true + true + + true + + + + ПарольДолженОтвечатьТребованиямСложности + + + Right + + ru + Проверять, чтобы новый пароль: +- имел не менее 7 символов; +- содержал любые 3 из 4-х типов символов: заглавные буквы, + строчные буквы, цифры, специальные символы; +- не совпадал с именем (для входа). + + Button + + OnChange + ПарольДолженОтвечатьТребованиямСложностиПриИзменении + + + ПарольДолженОтвечатьТребованиямСложностиРасширеннаяПодсказка + 6 + true + true + + true + + Label + true + true + + Left + + + + ПарольДолженОтвечатьТребованиямСложностиКонтекстноеМеню + 5 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаМинимальнаяДлинаПароля + 43 + + МинимальнаяДлинаПароляВключить + 86 + true + true + + true + + + + МинимальнаяДлинаПароляВключить + + + Right + + OnChange + НастройкаВключитьПриИзменении + + + МинимальнаяДлинаПароляВключитьРасширеннаяПодсказка + 88 + true + true + + true + + Label + true + true + + Left + + + + МинимальнаяДлинаПароляВключитьКонтекстноеМеню + 87 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + МинимальнаяДлинаПароля + 1 + true + true + + true + + + + МинимальнаяДлинаПароля + + + None + + OnChange + МинимальнаяДлинаПароляПриИзменении + + + МинимальнаяДлинаПароляРасширеннаяПодсказка + 3 + true + true + + true + + Label + true + true + + Left + + + + МинимальнаяДлинаПароляКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + 1 + + + + + ПояснениеМинимальнаяДлинаПароля + 45 + + <key>ru</key> + <value>знак.</value> + + true + true + + true + + + ПояснениеМинимальнаяДлинаПароляРасширеннаяПодсказка + 47 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеМинимальнаяДлинаПароляКонтекстноеМеню + 46 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Минимальная длина пароля</value> + + + ГруппаМинимальнаяДлинаПароляРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Сложность пароля</value> + + + ГруппаСложностьПароляРасширеннаяПодсказка + 34 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + + Style.FormBackColor + + Auto + Auto + + + + ГруппаСменаПароля + 108 + + ГруппаМаксимальныйСрокДействияПароля + 53 + + МаксимальныйСрокДействияПароляВключить + 92 + true + true + + true + + + + МаксимальныйСрокДействияПароляВключить + + + Right + + OnChange + НастройкаВключитьПриИзменении + + + МаксимальныйСрокДействияПароляВключитьРасширеннаяПодсказка + 94 + true + true + + true + + Label + true + true + + Left + + + + МаксимальныйСрокДействияПароляВключитьКонтекстноеМеню + 93 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + МаксимальныйСрокДействияПароля + 12 + true + true + + true + + + + МаксимальныйСрокДействияПароля + + + None + + ru + Срок после первого входа с новым паролем, +после которого пользователю потребуется сменить пароль. + + + МаксимальныйСрокДействияПароляРасширеннаяПодсказка + 14 + true + true + + true + + Label + true + true + + Left + + + + МаксимальныйСрокДействияПароляКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + 1 + + + + + ПояснениеМаксимальныйСрокДействияПароля + 55 + + <key>ru</key> + <value>дн.</value> + + true + true + + true + + + ПояснениеМаксимальныйСрокДействияПароляРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеМаксимальныйСрокДействияПароляКонтекстноеМеню + 56 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Максимальный срок действия пароля</value> + + + ГруппаМаксимальныйСрокДействияПароляРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + + ГруппаМинимальныйСрокДействияПароля + 48 + + МинимальныйСрокДействияПароляВключить + 89 + true + true + + true + + + + МинимальныйСрокДействияПароляВключить + + + Right + + OnChange + НастройкаВключитьПриИзменении + + + МинимальныйСрокДействияПароляВключитьРасширеннаяПодсказка + 91 + true + true + + true + + Label + true + true + + Left + + + + МинимальныйСрокДействияПароляВключитьКонтекстноеМеню + 90 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + МинимальныйСрокДействияПароля + 25 + true + true + + true + + + + МинимальныйСрокДействияПароля + + + None + + ru + Срок после первого входа с новым паролем, +в течение которого пользователь не сможет сменить пароль. + + + МинимальныйСрокДействияПароляРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + МинимальныйСрокДействияПароляКонтекстноеМеню + 26 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + 1 + + + + + ПояснениеМинимальныйСрокДействияПароля + 50 + + <key>ru</key> + <value>дн.</value> + + true + true + + true + + + ПояснениеМинимальныйСрокДействияПароляРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеМинимальныйСрокДействияПароляКонтекстноеМеню + 51 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Минимальный срок действия пароля</value> + + + ГруппаМинимальныйСрокДействияПароляРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + + ГруппаЗапретитьПовторениеПароляСредиПоследних + 38 + + ЗапретитьПовторениеПароляСредиПоследнихВключить + 83 + true + true + + true + + + + ЗапретитьПовторениеПароляСредиПоследнихВключить + + + Right + + OnChange + НастройкаВключитьПриИзменении + + + ЗапретитьПовторениеПароляСредиПоследнихВключитьРасширеннаяПодсказка + 85 + true + true + + true + + Label + true + true + + Left + + + + ЗапретитьПовторениеПароляСредиПоследнихВключитьКонтекстноеМеню + 84 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ЗапретитьПовторениеПароляСредиПоследних + 7 + true + true + + true + + + + ЗапретитьПовторениеПароляСредиПоследних + + + None + + ЗапретитьПовторениеПароляСредиПоследнихРасширеннаяПодсказка + 9 + true + true + + true + + Label + true + true + + Left + + + + ЗапретитьПовторениеПароляСредиПоследнихКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + 1 + + + + true + true + + true + + + <key>ru</key> + <value>Запретить повторение пароля среди последних</value> + + + ГруппаЗапретитьПовторениеПароляСредиПоследнихРасширеннаяПодсказка + 39 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Смена пароля</value> + + + ГруппаСменаПароляРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + + Style.FormBackColor + + Auto + Auto + + + + ГруппаПросрочкаРаботыВПрограммеДоЗапрещенияВхода + 75 + + ПросрочкаРаботыВПрограммеДоЗапрещенияВходаВключить + 95 + true + true + + true + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВходаВключить + + + Right + 2 + + OnChange + НастройкаВключитьПриИзменении + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВходаВключитьРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВходаВключитьКонтекстноеМеню + 96 + true + true + + true + + true + + CheckBoxField + Top + Enter + true + Left + true + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВхода + 77 + true + true + + true + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВхода + + + None + + ru + Срок относительно последней активности пользователя, +после которого вход в программу будет запрещен. + +Не влияет на администраторов. + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВходаРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВходаКонтекстноеМеню + 78 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + 1 + + + + + ПояснениеПросрочкаРаботыВПрограммеДоЗапрещенияВхода + 80 + + <key>ru</key> + <value>дн.</value> + + true + true + + true + + + ПояснениеПросрочкаРаботыВПрограммеДоЗапрещенияВходаРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеПросрочкаРаботыВПрограммеДоЗапрещенияВходаКонтекстноеМеню + 81 + true + true + + true + + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Просрочка работы в программе до запрещения входа</value> + + + ГруппаПросрочкаРаботыВПрограммеДоЗапрещенияВходаРасширеннаяПодсказка + 76 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 10 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 11 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаСправка + 110 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + МинимальнаяДлинаПароля + + <key>ru</key> + <value>Минимальная длина пароля</value> + + 1 + + Number + + 2 + true + + + + true + + + true + + + + ПарольДолженОтвечатьТребованиямСложности + + <key>ru</key> + <value>Пароль должен отвечать требованиям сложности</value> + + 2 + + Boolean + + + true + + + true + + + + ЗапретитьПовторениеПароляСредиПоследних + + <key>ru</key> + <value>Запретить повторение пароля среди последних</value> + + 4 + + Number + + 2 + true + + + + true + + + true + + + + МаксимальныйСрокДействияПароля + + <key>ru</key> + <value>Максимальный срок действия пароля</value> + + 5 + + Number + + 2 + true + + + + true + + + true + + + + МинимальныйСрокДействияПароля + + <key>ru</key> + <value>Минимальный срок действия пароля</value> + + 8 + + Number + + 2 + true + + + + true + + + true + + + + ПоказатьНастройкиВнешнихПользователей + 9 + + Boolean + + + true + + + true + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВхода + + <key>ru</key> + <value>Просрочка работы в программе до запрещения входа</value> + + 15 + + Number + + 2 + true + + + + true + + + true + + + + ЗапретитьПовторениеПароляСредиПоследнихВключить + + <key>ru</key> + <value>Запретить повторение пароля среди последних:</value> + + 16 + + Boolean + + + true + + + true + + + + МинимальнаяДлинаПароляВключить + + <key>ru</key> + <value>Минимальная длина пароля:</value> + + 17 + + Boolean + + + true + + + true + + + + МинимальныйСрокДействияПароляВключить + + <key>ru</key> + <value>Минимальный срок действия пароля:</value> + + 18 + + Boolean + + + true + + + true + + + + МаксимальныйСрокДействияПароляВключить + + <key>ru</key> + <value>Максимальный срок действия пароля:</value> + + 19 + + Boolean + + + true + + + true + + + + ПросрочкаРаботыВПрограммеДоЗапрещенияВходаВключить + + <key>ru</key> + <value>Запрещать вход в программу пользователям, которые не работали в программе более:</value> + + 20 + + Boolean + + + true + + + true + + + + ПредлагаемыеЗначенияНастроек + 21 + + + true + + + true + + + + ТекстВопросаОбОчисткеНастроекКонфигуратора + 22 + + String + + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + DontUse + + + ПроверитьОтправкуКодаПодтверждения + + <key>ru</key> + <value>Проверить</value> + + 2 + + ru + Проверить отправку кода подтверждения +(на почтовый ящик текущего пользователя) + + + true + + DontUse + + + ПроверитьОтправкуПриглашенияНаВход + + <key>ru</key> + <value>Проверить</value> + + 3 + + ru + Проверить отправку приглашения на вход +(на почтовый ящик текущего пользователя) + + + true + + DontUse + + + ПоказатьНастройкиВнешнихПользователей + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" new file mode 100644 index 00000000..efd1a28c --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Help/ru.html" @@ -0,0 +1,11 @@ + +

        Предназначена для настройки параметров входа в программу раздельно для внутренних и внешних пользователей.

        +

        Требования к паролю

        +

        Для защиты от несанкционированного доступа к программе укажите с помощью флажков:

        +
        • Пароль должен отвечать требованиям сложности - настройка и контроль сложности пароля. Включите флажок, для того чтобы проверять, чтобы новый пароль имел не менее 7 символов, содержал любые 3 из 4-х типов символов: заглавные буквы, строчные буквы, цифры, специальные символы, не совпадал с именем (для входа); +
        • Минимальная длина пароля - по умолчанию 8 знаков; +
        • Максимальный срок действия пароля - срок после первого входа с новым паролем, после которого пользователю потребуется сменить пароль, по умолчанию 30 дней. +
        • Минимальный срок действия пароля - срок после первого входа с новым паролем, в течение которого пользователь не может сменить пароль, по умолчанию 1 день. +
        • Запретить повторение пароля среди последних - по умолчанию 10 значений. Таким образом, обеспечивается контроль повторяемости паролей; +
        • Запрещать вход в программу пользователям, которые не работали в программе более - срок относительно последней активности пользователя, после которого вход в программу будет запрещен, по умолчанию 45 дней.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" new file mode 100644 index 00000000..2f8c228e --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Module.bsl" @@ -0,0 +1,151 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ПоказатьНастройкиВнешнихПользователей = Параметры.ПоказатьНастройкиВнешнихПользователей; + + ПредлагаемыеЗначенияНастроек = Новый Структура; + ПредлагаемыеЗначенияНастроек.Вставить("МинимальнаяДлинаПароля", 8); + ПредлагаемыеЗначенияНастроек.Вставить("МаксимальныйСрокДействияПароля", 30); + ПредлагаемыеЗначенияНастроек.Вставить("МинимальныйСрокДействияПароля", 1); + ПредлагаемыеЗначенияНастроек.Вставить("ЗапретитьПовторениеПароляСредиПоследних", 10); + ПредлагаемыеЗначенияНастроек.Вставить("ПросрочкаРаботыВПрограммеДоЗапрещенияВхода", 45); + + Если ПоказатьНастройкиВнешнихПользователей Тогда + СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВнешниеПользователи"); + АвтоЗаголовок = Ложь; + Заголовок = НСтр("ru = 'Настройки входа внешних пользователей'"); + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ПользователиСлужебный.НастройкиВхода().ВнешниеПользователи); + Иначе + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ПользователиСлужебный.НастройкиВхода().Пользователи); + КонецЕсли; + + Для Каждого КлючИЗначение Из ПредлагаемыеЗначенияНастроек Цикл + Если ЗначениеЗаполнено(ЭтотОбъект[КлючИЗначение.Ключ]) Тогда + ЭтотОбъект[КлючИЗначение.Ключ + "Включить"] = Истина; + Иначе + ЭтотОбъект[КлючИЗначение.Ключ] = КлючИЗначение.Значение; + Элементы[КлючИЗначение.Ключ].Доступность = Ложь; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПарольДолженОтвечатьТребованиямСложностиПриИзменении(Элемент) + + Если МинимальнаяДлинаПароля < 7 Тогда + МинимальнаяДлинаПароля = 7; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура МинимальнаяДлинаПароляПриИзменении(Элемент) + + Если МинимальнаяДлинаПароля < 7 + И ПарольДолженОтвечатьТребованиямСложности Тогда + + МинимальнаяДлинаПароля = 7; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НастройкаВключитьПриИзменении(Элемент) + + ИмяНастройки = Лев(Элемент.Имя, СтрДлина(Элемент.Имя) - СтрДлина("Включить")); + + Если ЭтотОбъект[Элемент.Имя] = Ложь Тогда + ЭтотОбъект[ИмяНастройки] = ПредлагаемыеЗначенияНастроек[ИмяНастройки]; + КонецЕсли; + + Элементы[ИмяНастройки].Доступность = ЭтотОбъект[Элемент.Имя]; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + ЗаписатьНаСервере(); + Оповестить("Запись_НаборКонстант", Новый Структура, "НастройкиВходаПользователей"); + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаписатьНаСервере() + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить("Константа.НастройкиВходаПользователей"); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + НастройкиВхода = ПользователиСлужебный.НастройкиВхода(); + + Если ПоказатьНастройкиВнешнихПользователей Тогда + Настройки = НастройкиВхода.ВнешниеПользователи; + Иначе + Настройки = НастройкиВхода.Пользователи; + КонецЕсли; + + Настройки.ПарольДолженОтвечатьТребованиямСложности = ПарольДолженОтвечатьТребованиямСложности; + + Если Не ЗначениеЗаполнено(ПросрочкаРаботыВПрограммеДоЗапрещенияВхода) Тогда + Настройки.ПросрочкаРаботыВПрограммеДатаВключения = '00010101'; + + ИначеЕсли Не ЗначениеЗаполнено(Настройки.ПросрочкаРаботыВПрограммеДатаВключения) Тогда + Настройки.ПросрочкаРаботыВПрограммеДатаВключения = НачалоДня(ТекущаяДатаСеанса()); + КонецЕсли; + + Для Каждого КлючИЗначение Из ПредлагаемыеЗначенияНастроек Цикл + Если ЭтотОбъект[КлючИЗначение.Ключ + "Включить"] Тогда + Настройки[КлючИЗначение.Ключ] = ЭтотОбъект[КлючИЗначение.Ключ]; + Иначе + Настройки[КлючИЗначение.Ключ] = 0; + КонецЕсли; + КонецЦикла; + + Константы.НастройкиВходаПользователей.Установить(Новый ХранилищеЗначения(НастройкиВхода)); + + Если ЗначениеЗаполнено(НастройкиВхода.Пользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода) + Или ЗначениеЗаполнено(НастройкиВхода.ВнешниеПользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода) Тогда + + УстановитьПривилегированныйРежим(Истина); + ПользователиСлужебный.ИзменитьЗаданиеКонтрольАктивностиПользователей(Истина); + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" new file mode 100644 index 00000000..953a0a51 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\222\321\205\320\276\320\264\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.mdo" @@ -0,0 +1,16 @@ + + + НастройкиВходаПользователей + + ru + Настройки входа пользователей + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Form.form" new file mode 100644 index 00000000..14b84472 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Form.form" @@ -0,0 +1,1211 @@ + + + + <key>ru</key> + <value>Права доступа</value> + + + ГруппыПрав + 1 + + <key>ru</key> + <value>Группы прав</value> + + true + true + + true + + + ГруппыПрав + + false + None + + ГруппыПравПользователь + 19 + true + true + + true + + + + ГруппыПрав.Пользователь + + + + OnChange + ГруппыПравПользовательПриИзменении + + + ГруппыПравПользовательExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПравПользовательКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + EnterOnInput + true + Center + true + + + AutoComplete + ГруппыПравПользовательАвтоПодбор + + + StartChoice + ГруппыПравПользовательНачалоВыбора + + + Clearing + ГруппыПравПользовательОчистка + + + TextEditEnd + ГруппыПравПользовательОкончаниеВводаТекста + + 35 + true + true + true + true + true + true + true + + + None + + ГруппыПравКоманднаяПанель + 3 + true + true + + true + + Left + true + + + Selection + ГруппыПравВыбор + + + BeforeDeleteRow + ГруппыПравПередУдалением + + + OnActivateRow + ГруппыПравПриАктивизацииСтроки + + + OnActivateField + ГруппыПравПриАктивизацииПоля + + + BeforeRowChange + ГруппыПравПередНачаломИзменения + + + OnStartEdit + ГруппыПравПриНачалеРедактирования + + + OnChange + ГруппыПравПриИзменении + + + true + true + + true + + ГруппыПравСтрокаПоиска + 61 + + ГруппыПравСтрокаПоискаРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПравСтрокаПоискаКонтекстноеМеню + 62 + true + true + + true + + true + + + true + + + + true + true + + true + + ГруппыПравСостояниеПросмотра + 64 + + ГруппыПравСостояниеПросмотраРасширеннаяПодсказка + 66 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПравСостояниеПросмотраКонтекстноеМеню + 65 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ГруппыПравУправлениеПоиском + 67 + + ГруппыПравУправлениеПоискомРасширеннаяПодсказка + 69 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПравУправлениеПоискомКонтекстноеМеню + 68 + true + true + + true + + true + + SearchControlAddition + + true + + + + ГруппыПравExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + ГруппыПравКонтекстноеМеню + 2 + + ГруппыПравКонтекстноеМенюДобавить + 23 + true + true + + true + + false + + ГруппыПравКонтекстноеМенюДобавитьExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПрав.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + ГруппыПравКонтекстноеМенюСкопировать + 24 + true + true + + true + + false + + ГруппыПравКонтекстноеМенюСкопироватьExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПрав.StandardCommand.Copy + Auto + true + true + UserCmds + Auto + + + ГруппыПравКонтекстноеМенюУдалить + 25 + true + true + + true + + false + + ГруппыПравКонтекстноеМенюУдалитьExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПрав.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + + ГруппыПравКонтекстноеМенюСнятьУстановкуПрава + 39 + true + + true + + + ГруппыПравКонтекстноеМенюСнятьУстановкуПраваExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьУстановкуПрава + Auto + true + true + UserCmds + Auto + + + ГруппыПравКонтекстноеМенюУстановитьЗапретПрава + 40 + true + + true + + + ГруппыПравКонтекстноеМенюУстановитьЗапретПраваExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьЗапретПрава + Auto + true + true + UserCmds + Auto + + + ГруппыПравКонтекстноеМенюУстановитьРазрешениеПрава + 41 + true + + true + + + ГруппыПравКонтекстноеМенюУстановитьРазрешениеПраваExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьРазрешениеПрава + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + + ГруппыПрав.НомерКартинки + + + CommonPicture.СостоянияПользователей + + +
        + + НаследоватьПраваРодителей + 15 + + <key>ru</key> + <value>Наследовать права от вышестоящих папок</value> + + true + true + + true + + + + НаследоватьПраваРодителей + + + Right + + OnChange + НаследоватьПраваРодителейПриИзменении + + + НаследоватьПраваРодителейExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + + НаследоватьПраваРодителейКонтекстноеМеню + 16 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 12 + true + true + + true + + false + + ФормаЗаписатьИЗакрытьExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 21 + true + true + + true + + false + + ФормаЗаписатьExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Записать + Auto + true + true + UserCmds + Auto + + + ФормаДобавить + 31 + true + true + + true + + false + + ФормаДобавитьExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПрав.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + ФормаУдалить + 33 + true + true + + true + + false + + ФормаУдалитьExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПрав.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + + ФормаПереместитьВверх + 37 + true + true + + true + + + ФормаПереместитьВверхExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПрав.StandardCommand.MoveUp + Auto + true + true + UserCmds + Auto + + + ФормаПереместитьВниз + 38 + true + true + + true + + + ФормаПереместитьВнизExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПрав.StandardCommand.MoveDown + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 30 + true + + true + + false + + ФормаСправкаExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + + ФормаИзменитьФорму + 36 + true + true + + true + + false + + ФормаИзменитьФормуExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + + ФормаВывестиСписок + 59 + true + true + + true + + + ФормаВывестиСписокРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ГруппыПрав.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ГруппыПрав + + <key>ru</key> + <value>Группы прав</value> + + 1 + + ValueTable + + + true + + + true + + true + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + CatalogRef.ВнешниеПользователи + CatalogRef.ГруппыВнешнихПользователей + CatalogRef.ГруппыПользователей + CatalogRef.Пользователи + + + true + + + true + + + + ВладелецНастройки + 3 + + AnyRef + + + true + + + true + + + + НастройкаРодителя + 2 + + Boolean + + + true + + + true + + + + НаследованиеРазрешено + 4 + + Boolean + + + true + + + true + + + + НомерКартинки + 5 + + Number + + 10 + + + + true + + + true + + + + + ПрямыеЗависимостиПрав + 5 + + + true + + + true + + + + ОбратныеЗависимостиПрав + 6 + + + true + + + true + + + + ВозможныеПрава + 7 + + + true + + + true + + + + НаследоватьПраваРодителей + + <key>ru</key> + <value>Наследовать права родителей</value> + + 11 + + Boolean + + + true + + + true + + true + + + ВнешнийПользовательИлиГруппа + 14 + + Boolean + + + true + + + true + + + + ИспользоватьВнешнихПользователей + 15 + + Boolean + + + true + + + true + + + + СписокТиповПользователей + 16 + + ValueList + + + true + + + true + + + + + + + ДобавленныеРеквизиты + 2 + + + true + + + true + + + + РодительЗаполнен + 3 + + Boolean + + + true + + + true + + + + ПодтвердитьОтказОтУправленияПравами + 17 + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + StdPicture.WriteAndClose + + + + ЗаписатьИЗакрыть + + + TextPicture + DontUse + + + Записать + + <key>ru</key> + <value>Записать</value> + + 2 + + ru + Записать + + + true + + + + Записать + + + DontUse + + + Перечитать + + <key>ru</key> + <value>Перечитать</value> + + 3 + + ru + Перечитать + + + true + + + StdPicture.Reread + + + + Перечитать + + + DontUse + + + УстановитьРазрешениеПрава + + <key>ru</key> + <value>Установить разрешение права "Да"</value> + + 4 + + ru + Установить разрешение права + + + true + + + + УстановитьРазрешениеПрава + + + DontUse + + + УстановитьЗапретПрава + + <key>ru</key> + <value>Установить запрет права "Нет"</value> + + 5 + + ru + Установить запрет права + + + true + + + + УстановитьЗапретПрава + + + DontUse + + + СнятьУстановкуПрава + + <key>ru</key> + <value>Снять установку права " "</value> + + 6 + + ru + Снять установку права + + + true + + + + СнятьУстановкуПрава + + + DontUse + + + СсылкаНаОбъект + + true + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..f24fbbee --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Module.bsl" @@ -0,0 +1,947 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + СсылкаНаОбъект = Параметры.СсылкаНаОбъект; + Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда + ВызватьИсключение НСтр("ru = 'Не указан владелец настроек прав.'"); + КонецЕсли; + + ВозможныеПрава = УправлениеДоступомСлужебныйПовтИсп.ВозможныеПраваДляНастройкиПравОбъектов(); + ТипСсылкиНаОбъект = ТипЗнч(СсылкаНаОбъект); + + Если ВозможныеПрава.ПоТипамСсылок.Получить(ТипСсылкиНаОбъект) = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Права доступа для каждого объекта не настраиваются + |для объектов типа ""%1"".'"), + Строка(ТипСсылкиНаОбъект)); + КонецЕсли; + + Если Не ПравоДоступа("Просмотр", Метаданные.НайтиПоТипу(ТипСсылкиНаОбъект)) Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Нет права Просмотр на объекты типа ""%1"".'"), Строка(ТипСсылкиНаОбъект)); + КонецЕсли; + + // Проверка разрешения на открытие формы. + ПроверитьРазрешениеНаУправлениеПравами(); + + ИспользоватьВнешнихПользователей = + ВнешниеПользователи.ИспользоватьВнешнихПользователей() + И ПравоДоступа("Просмотр", Метаданные.Справочники.ВнешниеПользователи); + + УстановитьПривилегированныйРежим(Истина); + + СписокТиповПользователей.Добавить(Тип("СправочникСсылка.Пользователи"), + Метаданные.Справочники.Пользователи.Синоним); + + СписокТиповПользователей.Добавить(Тип("СправочникСсылка.ВнешниеПользователи"), + Метаданные.Справочники.ВнешниеПользователи.Синоним); + + РодительЗаполнен = + Параметры.СсылкаНаОбъект.Метаданные().Иерархический + И ЗначениеЗаполнено(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.СсылкаНаОбъект, "Родитель")); + + Элементы.НаследоватьПраваРодителей.Видимость = РодительЗаполнен; + + ЗаполнитьПрава(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьОповещение", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НаследоватьПраваРодителейПриИзменении(Элемент) + + НаследоватьПраваРодителейПриИзмененииНаСервере(); + +КонецПроцедуры + +&НаСервере +Процедура НаследоватьПраваРодителейПриИзмененииНаСервере() + + Если НаследоватьПраваРодителей Тогда + ДобавитьНаследуемыеПрава(); + ЗаполнитьНомераКартинокПользователей(); + Иначе + // Очистка настроек, наследуемых от родителей по иерархии. + Индекс = ГруппыПрав.Количество()-1; + Пока Индекс >= 0 Цикл + Если ГруппыПрав.Получить(Индекс).НастройкаРодителя Тогда + ГруппыПрав.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыГруппыПрав + +&НаКлиенте +Процедура ГруппыПравПриИзменении(Элемент) + + ГруппыПрав.Сортировать("НастройкаРодителя Убыв"); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Если Поле.Имя = "ГруппыПравПользователь" Тогда + Возврат; + КонецЕсли; + + Отказ = Ложь; + ПроверкаВозможностиИзмененияПрав(Отказ); + + Если НЕ Отказ Тогда + ТекущееПраво = Сред(Поле.Имя, СтрДлина("ГруппыПрав") + 1); + ТекущиеДанные = Элементы.ГруппыПрав.ТекущиеДанные; + + Если ТекущееПраво = "НаследованиеРазрешено" Тогда + ТекущиеДанные[ТекущееПраво] = НЕ ТекущиеДанные[ТекущееПраво]; + Модифицированность = Истина; + + ИначеЕсли ВозможныеПрава.Свойство(ТекущееПраво) Тогда + СтароеЗначение = ТекущиеДанные[ТекущееПраво]; + + Если ТекущиеДанные[ТекущееПраво] = Истина Тогда + ТекущиеДанные[ТекущееПраво] = Ложь; + + ИначеЕсли ТекущиеДанные[ТекущееПраво] = Ложь Тогда + ТекущиеДанные[ТекущееПраво] = Неопределено; + Иначе + ТекущиеДанные[ТекущееПраво] = Истина; + КонецЕсли; + Модифицированность = Истина; + + ОбновитьЗависимыеПрава(ТекущиеДанные, ТекущееПраво, СтароеЗначение); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПриАктивизацииСтроки(Элемент) + + ТекущиеДанные = Элементы.ГруппыПрав.ТекущиеДанные; + + ДоступностьКоманд = ?(ТекущиеДанные = Неопределено, Ложь, НЕ ТекущиеДанные.НастройкаРодителя); + Элементы.ГруппыПравКонтекстноеМенюУдалить.Доступность = ДоступностьКоманд; + Элементы.ФормаУдалить.Доступность = ДоступностьКоманд; + Элементы.ФормаПереместитьВверх.Доступность = ДоступностьКоманд; + Элементы.ФормаПереместитьВниз.Доступность = ДоступностьКоманд; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПриАктивизацииПоля(Элемент) + + ДоступностьКоманд = ВозможныеПрава.Свойство(Сред(Элемент.ТекущийЭлемент.Имя, СтрДлина("ГруппыПрав") + 1)); + Элементы.ГруппыПравКонтекстноеМенюСнятьУстановкуПрава.Доступность = ДоступностьКоманд; + Элементы.ГруппыПравКонтекстноеМенюУстановитьРазрешениеПрава.Доступность = ДоступностьКоманд; + Элементы.ГруппыПравКонтекстноеМенюУстановитьЗапретПрава.Доступность = ДоступностьКоманд; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПередНачаломИзменения(Элемент, Отказ) + + ПроверкаВозможностиИзмененияПрав(Отказ); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПередУдалением(Элемент, Отказ) + + ПроверкаВозможностиИзмененияПрав(Отказ, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + + Если НоваяСтрока Тогда + + // Установка начальных значений. + Элементы.ГруппыПрав.ТекущиеДанные.ВладелецНастройки = Параметры.СсылкаНаОбъект; + Элементы.ГруппыПрав.ТекущиеДанные.НаследованиеРазрешено = Истина; + Элементы.ГруппыПрав.ТекущиеДанные.НастройкаРодителя = Ложь; + + Для каждого ДобавленныйРеквизит Из ДобавленныеРеквизиты Цикл + Элементы.ГруппыПрав.ТекущиеДанные[ДобавленныйРеквизит.Ключ] = ДобавленныйРеквизит.Значение; + КонецЦикла; + КонецЕсли; + + Если Элементы.ГруппыПрав.ТекущиеДанные.Пользователь = Неопределено Тогда + Элементы.ГруппыПрав.ТекущиеДанные.Пользователь = ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка"); + Элементы.ГруппыПрав.ТекущиеДанные.НомерКартинки = -1; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПользовательПриИзменении(Элемент) + + Если ЗначениеЗаполнено(Элементы.ГруппыПрав.ТекущиеДанные.Пользователь) Тогда + ЗаполнитьНомераКартинокПользователей(Элементы.ГруппыПрав.ТекущаяСтрока); + Иначе + Элементы.ГруппыПрав.ТекущиеДанные.НомерКартинки = -1; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПользовательНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ВыбратьПользователей(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПользовательОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Элементы.ГруппыПрав.ТекущиеДанные.Пользователь = ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка"); + Элементы.ГруппыПрав.ТекущиеДанные.НомерКартинки = -1; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПользовательОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Текст) Тогда + СтандартнаяОбработка = Ложь; + ДанныеВыбора = СформироватьДанныеВыбораПользователя(Текст); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ГруппыПравПользовательАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Текст) Тогда + СтандартнаяОбработка = Ложь; + ДанныеВыбора = СформироватьДанныеВыбораПользователя(Текст); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + ЗаписатьНачало(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Записать(Команда) + + ЗаписатьНачало(); + +КонецПроцедуры + +&НаКлиенте +Процедура Перечитать(Команда) + + Если НЕ Модифицированность Тогда + ПрочитатьПрава(); + Иначе + ПоказатьВопрос( + Новый ОписаниеОповещения("ПеречитатьЗавершение", ЭтотОбъект), + НСтр("ru = 'Данные изменены. Прочитать без сохранения?'"), + РежимДиалогаВопрос.ДаНет, + 5, + КодВозвратаДиалога.Нет); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СнятьУстановкуПрава(Команда) + + УстановитьЗначениеТекущегоПрава(Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗапретПрава(Команда) + + УстановитьЗначениеТекущегоПрава(Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьРазрешениеПрава(Команда) + + УстановитьЗначениеТекущегоПрава(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗначениеТекущегоПрава(НовоеЗначение) + + Отказ = Ложь; + ПроверкаВозможностиИзмененияПрав(Отказ); + + Если Не Отказ Тогда + ТекущееПраво = Сред(Элементы.ГруппыПрав.ТекущийЭлемент.Имя, СтрДлина("ГруппыПрав") + 1); + ТекущиеДанные = Элементы.ГруппыПрав.ТекущиеДанные; + + Если ВозможныеПрава.Свойство(ТекущееПраво) + И ТекущиеДанные <> Неопределено Тогда + + СтароеЗначение = ТекущиеДанные[ТекущееПраво]; + ТекущиеДанные[ТекущееПраво] = НовоеЗначение; + + Модифицированность = Истина; + + ОбновитьЗависимыеПрава(ТекущиеДанные, ТекущееПраво, СтароеЗначение); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГруппыПрав.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ГруппыПрав.НастройкаРодителя"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрытьОповещение(Результат, Контекст) Экспорт + + ЗаписатьНачало(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьНачало(Закрыть = Ложь) + + Отказ = Ложь; + ОбработкаПроверкиЗаполнения(Отказ); + + Если Отказ Тогда + Возврат; + КонецЕсли; + + ПодтвердитьОтказОтУправленияПравами = Неопределено; + Попытка + ЗаписатьПрава(); + Исключение + Если ПодтвердитьОтказОтУправленияПравами <> Истина Тогда + ВызватьИсключение; + КонецЕсли; + КонецПопытки; + + Если ПодтвердитьОтказОтУправленияПравами = Истина Тогда + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ЗаписатьИЗакрыть", НСтр("ru = 'Записать и закрыть'")); + Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'")); + ПоказатьВопрос( + Новый ОписаниеОповещения("ЗаписатьПослеПодтверждения", ЭтотОбъект), + НСтр("ru = 'После записи настройка прав станет недоступной.'"), + Кнопки,, "Отмена"); + Иначе + Если Закрыть Тогда + Закрыть(); + Иначе + ОчиститьСообщения(); + КонецЕсли; + ЗаписатьЗавершение(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьПослеПодтверждения(Ответ, Контекст) Экспорт + + Если Ответ = "ЗаписатьИЗакрыть" Тогда + ПодтвердитьОтказОтУправленияПравами = Ложь; + ЗаписатьПрава(); + Закрыть(); + КонецЕсли; + + ЗаписатьЗавершение(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьЗавершение() + + Оповестить("Запись_НастройкиПравОбъектов", , Параметры.СсылкаНаОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПеречитатьЗавершение(Ответ, Контекст) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ПрочитатьПрава(); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры и функции. + +&НаКлиенте +Процедура ОбновитьЗависимыеПрава(Знач Данные, Знач Право, Знач СтароеЗначение, Знач ГлубинаРекурсии = 0) + + Если Данные[Право] = СтароеЗначение Тогда + Возврат; + КонецЕсли; + + Если ГлубинаРекурсии > 100 Тогда + Возврат; + Иначе + ГлубинаРекурсии = ГлубинаРекурсии + 1; + КонецЕсли; + + ЗависимыеПрава = Неопределено; + + Если Данные[Право] = Истина Тогда + + // Увеличены разрешения (с Неопределено или Ложь на Истина). + // Требуется повысить разрешения на ведущие права. + ПрямыеЗависимостиПрав.Свойство(Право, ЗависимыеПрава); + ЗначениеЗависимогоПрава = Истина; + + ИначеЕсли Данные[Право] = Ложь Тогда + + // Увеличены запрещения (с Истина или Неопределено на Ложь). + // Требуется повысить запрещения на зависимые права. + ОбратныеЗависимостиПрав.Свойство(Право, ЗависимыеПрава); + ЗначениеЗависимогоПрава = Ложь; + Иначе + Если СтароеЗначение = Ложь Тогда + // Уменьшены запрещения (с Ложь на Неопределено). + // Требуется уменьшить запрещения на ведущие права. + ПрямыеЗависимостиПрав.Свойство(Право, ЗависимыеПрава); + ЗначениеЗависимогоПрава = Неопределено; + Иначе + // Уменьшены разрешения (с Истина на Неопределено). + // Требуется уменьшить разрешения на зависимые права. + ОбратныеЗависимостиПрав.Свойство(Право, ЗависимыеПрава); + ЗначениеЗависимогоПрава = Неопределено; + КонецЕсли; + КонецЕсли; + + Если ЗависимыеПрава <> Неопределено Тогда + Для каждого ЗависимоеПраво Из ЗависимыеПрава Цикл + Если ТипЗнч(ЗависимоеПраво) = Тип("Массив") Тогда + УстановитьЗависимоеПраво = Истина; + Для каждого ОдноИзЗависимыхПрав Из ЗависимоеПраво Цикл + Если Данные[ОдноИзЗависимыхПрав] = ЗначениеЗависимогоПрава Тогда + УстановитьЗависимоеПраво = Ложь; + Прервать; + КонецЕсли; + КонецЦикла; + Если УстановитьЗависимоеПраво Тогда + Если НЕ (ЗначениеЗависимогоПрава = Неопределено И Данные[ЗависимоеПраво[0]] <> СтароеЗначение) Тогда + ТекущееСтароеЗначение = Данные[ЗависимоеПраво[0]]; + Данные[ЗависимоеПраво[0]] = ЗначениеЗависимогоПрава; + ОбновитьЗависимыеПрава(Данные, ЗависимоеПраво[0], ТекущееСтароеЗначение); + КонецЕсли; + КонецЕсли; + Иначе + Если НЕ (ЗначениеЗависимогоПрава = Неопределено И Данные[ЗависимоеПраво] <> СтароеЗначение) Тогда + ТекущееСтароеЗначение = Данные[ЗависимоеПраво]; + Данные[ЗависимоеПраво] = ЗначениеЗависимогоПрава; + ОбновитьЗависимыеПрава(Данные, ЗависимоеПраво, ТекущееСтароеЗначение); + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ДобавитьРеквизит(НовыеРеквизиты, Реквизит, НачальноеЗначение) + + НовыеРеквизиты.Добавить(Реквизит); + ДобавленныеРеквизиты.Вставить(Реквизит.Имя, НачальноеЗначение); + +КонецПроцедуры + +&НаСервере +Функция ДобавитьЭлемент(Имя, Тип, Родитель) + + Элемент = Элементы.Добавить(Имя, Тип, Родитель); + Элемент.ФиксацияВТаблице = ФиксацияВТаблице.Нет; + + Возврат Элемент; + +КонецФункции + +&НаСервере +Процедура ДобавитьРеквизитыИлиЭлементыФормы(НовыеРеквизиты = Неопределено) + + Права = УправлениеДоступомСлужебныйПовтИсп.ВозможныеПраваДляНастройкиПравОбъектов(); + ТипСсылкиВладельцаПрав = ТипЗнч(Параметры.СсылкаНаОбъект); + ОписанияВозможныхПрав = Права.ПоТипамСсылок.Получить(ТипСсылкиВладельцаПрав); + + ОписаниеТиповПсевдоФлажка = Новый ОписаниеТипов("Булево, Число", + Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный)); + + // Добавление возможных прав, настраиваемых по владельцу (таблице значений доступа). + Для Каждого ОписаниеПрава Из ОписанияВозможныхПрав Цикл + ПредставленияПрава = РегистрыСведений.НастройкиПравОбъектов.ПредставлениеВозможногоПрава(ОписаниеПрава); + + Если НовыеРеквизиты <> Неопределено Тогда + + ДобавитьРеквизит(НовыеРеквизиты, Новый РеквизитФормы(ПредставленияПрава.Имя, ОписаниеТиповПсевдоФлажка, + "ГруппыПрав", ПредставленияПрава.Заголовок), ОписаниеПрава.НачальноеЗначение); + + ВозможныеПрава.Вставить(ПредставленияПрава.Имя); + + // Добавление прямых и обратных зависимостей прав. + ПрямыеЗависимостиПрав.Вставить(ПредставленияПрава.Имя, ОписаниеПрава.ТребуемыеПрава); + Для каждого ЗависимоеПраво Из ОписаниеПрава.ТребуемыеПрава Цикл + Если ТипЗнч(ЗависимоеПраво) = Тип("Массив") Тогда + ЗависимыеПрава = ЗависимоеПраво; + Иначе + ЗависимыеПрава = Новый Массив; + ЗависимыеПрава.Добавить(ЗависимоеПраво); + КонецЕсли; + Для каждого ЗависимоеПраво Из ЗависимыеПрава Цикл + Если ОбратныеЗависимостиПрав.Свойство(ЗависимоеПраво) Тогда + ЗависимыеПрава = ОбратныеЗависимостиПрав[ЗависимоеПраво]; + Иначе + ЗависимыеПрава = Новый Массив; + ОбратныеЗависимостиПрав.Вставить(ЗависимоеПраво, ЗависимыеПрава); + КонецЕсли; + Если ЗависимыеПрава.Найти(ПредставленияПрава.Имя) = Неопределено Тогда + ЗависимыеПрава.Добавить(ПредставленияПрава.Имя); + КонецЕсли; + КонецЦикла; + КонецЦикла; + Иначе + Элемент = ДобавитьЭлемент("ГруппыПрав" + ПредставленияПрава.Имя, Тип("ПолеФормы"), Элементы.ГруппыПрав); + Элемент.ТолькоПросмотр = Истина; + Элемент.Формат = НСтр("ru = 'ЧЦ=1; ЧН=; БЛ=Нет; БИ=Да'"); + Элемент.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр; + Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; + Элемент.ПутьКДанным = "ГруппыПрав." + ПредставленияПрава.Имя; + + Элемент.Подсказка = ПредставленияПрава.Подсказка; + // Расчет оптимальной ширины элемента. + ШиринаЭлемента = 0; + Для НомерСтроки = 1 По СтрЧислоСтрок(ПредставленияПрава.Заголовок) Цикл + ШиринаЭлемента = Макс(ШиринаЭлемента, СтрДлина(СтрПолучитьСтроку(ПредставленияПрава.Заголовок, НомерСтроки))); + КонецЦикла; + Если СтрЧислоСтрок(ПредставленияПрава.Заголовок) = 1 Тогда + ШиринаЭлемента = ШиринаЭлемента + 1; + КонецЕсли; + Элемент.Ширина = ШиринаЭлемента; + КонецЕсли; + + Если Элементы.ГруппыПрав.ВысотаШапки < СтрЧислоСтрок(ПредставленияПрава.Заголовок) Тогда + Элементы.ГруппыПрав.ВысотаШапки = СтрЧислоСтрок(ПредставленияПрава.Заголовок); + КонецЕсли; + КонецЦикла; + + Если НовыеРеквизиты = Неопределено И Параметры.СсылкаНаОбъект.Метаданные().Иерархический Тогда + Элемент = ДобавитьЭлемент("ГруппыПравНаследованиеРазрешено", Тип("ПолеФормы"), Элементы.ГруппыПрав); + Элемент.ТолькоПросмотр = Истина; + Элемент.Формат = НСтр("ru = 'ЧЦ=1; ЧН=; БЛ=Нет; БИ=Да'"); + Элемент.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр; + Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; + Элемент.ПутьКДанным = "ГруппыПрав.НаследованиеРазрешено"; + + Элемент.Заголовок = НСтр("ru = 'Для + |подпапок'"); + Элемент.Подсказка = НСтр("ru = 'Права не только для текущей папки, + |но и для ее нижестоящих папок'"); + + Элемент = ДобавитьЭлемент("ГруппыПравВладелецНастройки", Тип("ПолеФормы"), Элементы.ГруппыПрав); + Элемент.ТолькоПросмотр = Истина; + Элемент.ПутьКДанным = "ГруппыПрав.ВладелецНастройки"; + Элемент.Заголовок = НСтр("ru = 'Наследуется от'"); + Элемент.Подсказка = НСтр("ru = 'Папка, от которой наследуются настройка прав'"); + Элемент.Видимость = РодительЗаполнен; + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + ЭлементУсловногоОформления.Использование = Истина; + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Text", ""); + + ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить( + Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.Использование = Истина; + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ГруппыПрав.НастройкаРодителя"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Использование = Истина; + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ГруппыПравВладелецНастройки"); + + Если Элементы.ГруппыПрав.ВысотаШапки = 1 Тогда + Элементы.ГруппыПрав.ВысотаШапки = 2; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПрава() + + ПрямыеЗависимостиПрав = Новый Структура; + ОбратныеЗависимостиПрав = Новый Структура; + ВозможныеПрава = Новый Структура; + + ДобавленныеРеквизиты = Новый Структура; + НовыеРеквизиты = Новый Массив; + ДобавитьРеквизитыИлиЭлементыФормы(НовыеРеквизиты); + + // Добавление реквизитов формы. + ИзменитьРеквизиты(НовыеРеквизиты); + + // Добавление элементов формы + ДобавитьРеквизитыИлиЭлементыФормы(); + + ПрочитатьПрава(); + +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьПрава() + + ГруппыПрав.Очистить(); + + УстановитьПривилегированныйРежим(Истина); + НастройкиПрав = РегистрыСведений.НастройкиПравОбъектов.Прочитать(Параметры.СсылкаНаОбъект); + + НаследоватьПраваРодителей = НастройкиПрав.Наследовать; + + Для каждого Настройка Из НастройкиПрав.Настройки Цикл + Если НаследоватьПраваРодителей ИЛИ НЕ Настройка.НастройкаРодителя Тогда + ЗаполнитьЗначенияСвойств(ГруппыПрав.Добавить(), Настройка); + КонецЕсли; + КонецЦикла; + ЗаполнитьНомераКартинокПользователей(); + + Модифицированность = Ложь; + +КонецПроцедуры + +&НаСервере +Процедура ДобавитьНаследуемыеПрава() + + УстановитьПривилегированныйРежим(Истина); + НастройкиПрав = РегистрыСведений.НастройкиПравОбъектов.Прочитать(Параметры.СсылкаНаОбъект); + + Индекс = 0; + Для каждого Настройка Из НастройкиПрав.Настройки Цикл + Если Настройка.НастройкаРодителя Тогда + ЗаполнитьЗначенияСвойств(ГруппыПрав.Вставить(Индекс), Настройка); + Индекс = Индекс + 1; + КонецЕсли; + КонецЦикла; + + ЗаполнитьНомераКартинокПользователей(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаПроверкиЗаполнения(Отказ) + + ОчиститьСообщения(); + + НомерСтроки = ГруппыПрав.Количество()-1; + + Пока НЕ Отказ И НомерСтроки >= 0 Цикл + ТекущаяСтрока = ГруппыПрав.Получить(НомерСтроки); + + // Проверка заполнения флажков прав. + НетЗаполненногоПрава = Истина; + ИмяПервогоПрава = ""; + Для каждого ВозможноеПраво Из ВозможныеПрава Цикл + Если НЕ ЗначениеЗаполнено(ИмяПервогоПрава) Тогда + ИмяПервогоПрава = ВозможноеПраво.Ключ; + КонецЕсли; + Если ТипЗнч(ТекущаяСтрока[ВозможноеПраво.Ключ]) = Тип("Булево") Тогда + НетЗаполненногоПрава = Ложь; + Прервать; + КонецЕсли; + КонецЦикла; + Если НетЗаполненногоПрава Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Не заполнено ни одно право доступа.'"), + , + "ГруппыПрав[" + Формат(НомерСтроки, "ЧГ=0") + "]." + ИмяПервогоПрава, + , + Отказ); + Возврат; + КонецЕсли; + + // Проверка заполнения пользователей/групп пользователей, + // значений доступа и их дублей. + + // Проверка заполнения + Если НЕ ЗначениеЗаполнено(ТекущаяСтрока["Пользователь"]) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Не заполнен пользователь или группа.'"), + , + "ГруппыПрав[" + Формат(НомерСтроки, "ЧГ=0") + "].Пользователь", + , + Отказ); + Возврат; + КонецЕсли; + + // Проверка дублей. + Отбор = Новый Структура; + Отбор.Вставить("ВладелецНастройки", ТекущаяСтрока["ВладелецНастройки"]); + Отбор.Вставить("Пользователь", ТекущаяСтрока["Пользователь"]); + + Если ГруппыПрав.НайтиСтроки(Отбор).Количество() > 1 Тогда + Если ТипЗнч(Отбор.Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда + ТекстСообщения = НСтр("ru = 'Настройка для пользователя ""%1"" уже есть.'"); + Иначе + ТекстСообщения = НСтр("ru = 'Настройка для группы пользователей ""%1"" уже есть.'"); + КонецЕсли; + ОбщегоНазначенияКлиент.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, Отбор.Пользователь), + , + "ГруппыПрав[" + Формат(НомерСтроки, "ЧГ=0") + "].Пользователь", + , + Отказ); + Возврат; + КонецЕсли; + + НомерСтроки = НомерСтроки - 1; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьПрава() + + ПроверитьРазрешениеНаУправлениеПравами(); + + НачатьТранзакцию(); + Попытка + УстановитьПривилегированныйРежим(Истина); + РегистрыСведений.НастройкиПравОбъектов.Записать(Параметры.СсылкаНаОбъект, ГруппыПрав, НаследоватьПраваРодителей); + УстановитьПривилегированныйРежим(Ложь); + + Если ПодтвердитьОтказОтУправленияПравами = Ложь + Или УправлениеДоступом.ЕстьПраво("УправлениеПравами", Параметры.СсылкаНаОбъект) Тогда + + Модифицированность = Ложь; + Иначе + ПодтвердитьОтказОтУправленияПравами = Истина; + ВызватьИсключение НСтр("ru = 'После записи настройка прав станет недоступной.'"); + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверкаВозможностиИзмененияПрав(Отказ, ПроверкаУдаления = Ложь) + + ТекущийВладелецНастройки = Элементы.ГруппыПрав.ТекущиеДанные["ВладелецНастройки"]; + + Если ЗначениеЗаполнено(ТекущийВладелецНастройки) + И ТекущийВладелецНастройки <> Параметры.СсылкаНаОбъект Тогда + + Отказ = Истина; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Эти права унаследованы, их можно изменить в форме настройки прав + |вышестоящей папки ""%1"".'"), + ТекущийВладелецНастройки); + + Если ПроверкаУдаления Тогда + ТекстСообщения = ТекстСообщения + Символы.ПС + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для удаления всех унаследованных прав следует + |снять флажок ""%1"".'"), + Элементы.НаследоватьПраваРодителей.Заголовок); + КонецЕсли; + КонецЕсли; + + Если Отказ Тогда + ПоказатьПредупреждение(, ТекстСообщения); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СформироватьДанныеВыбораПользователя(Текст) + + Возврат Пользователи.СформироватьДанныеВыбораПользователя(Текст); + +КонецФункции + +&НаКлиенте +Процедура ПоказатьВыборТипаПользователиИлиВнешниеПользователи(ОбработкаПродолжения) + + ВыборИПодборВнешнихПользователей = Ложь; + + Если ИспользоватьВнешнихПользователей Тогда + + СписокТиповПользователей.ПоказатьВыборЭлемента( + Новый ОписаниеОповещения( + "ПоказатьВыборТипаПользователиИлиВнешниеПользователиЗавершение", + ЭтотОбъект, + ОбработкаПродолжения), + НСтр("ru = 'Выбор типа данных'"), + СписокТиповПользователей[0]); + Иначе + ВыполнитьОбработкуОповещения(ОбработкаПродолжения, ВыборИПодборВнешнихПользователей); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьВыборТипаПользователиИлиВнешниеПользователиЗавершение(ВыбранныйЭлемент, ОбработкаПродолжения) Экспорт + + Если ВыбранныйЭлемент <> Неопределено Тогда + ВыборИПодборВнешнихПользователей = + ВыбранныйЭлемент.Значение = Тип("СправочникСсылка.ВнешниеПользователи"); + + ВыполнитьОбработкуОповещения(ОбработкаПродолжения, ВыборИПодборВнешнихПользователей); + Иначе + ВыполнитьОбработкуОповещения(ОбработкаПродолжения, Неопределено); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьПользователей() + + ТекущийПользователь = ?(Элементы.ГруппыПрав.ТекущиеДанные = Неопределено, + Неопределено, Элементы.ГруппыПрав.ТекущиеДанные.Пользователь); + + Если ЗначениеЗаполнено(ТекущийПользователь) + И ( ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.Пользователи") + ИЛИ ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ГруппыПользователей") ) Тогда + + ВыборИПодборВнешнихПользователей = Ложь; + + ИначеЕсли ИспользоватьВнешнихПользователей + И ЗначениеЗаполнено(ТекущийПользователь) + И ( ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ВнешниеПользователи") + ИЛИ ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ГруппыВнешнихПользователей") ) Тогда + + ВыборИПодборВнешнихПользователей = Истина; + Иначе + ПоказатьВыборТипаПользователиИлиВнешниеПользователи( + Новый ОписаниеОповещения("ВыбратьПользователейЗавершение", ЭтотОбъект)); + Возврат; + КонецЕсли; + + ВыбратьПользователейЗавершение(ВыборИПодборВнешнихПользователей, Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьПользователейЗавершение(ВыборИПодборВнешнихПользователей, Контекст) Экспорт + + Если ВыборИПодборВнешнихПользователей = Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + ПараметрыФормы.Вставить("ТекущаяСтрока", ?( + Элементы.ГруппыПрав.ТекущиеДанные = Неопределено, + Неопределено, + Элементы.ГруппыПрав.ТекущиеДанные.Пользователь)); + + Если ВыборИПодборВнешнихПользователей Тогда + ПараметрыФормы.Вставить("ВыборГруппВнешнихПользователей", Истина); + Иначе + ПараметрыФормы.Вставить("ВыборГруппПользователей", Истина); + КонецЕсли; + + Если ВыборИПодборВнешнихПользователей Тогда + + ОткрытьФорму( + "Справочник.ВнешниеПользователи.ФормаВыбора", + ПараметрыФормы, + Элементы.ГруппыПравПользователь); + Иначе + ОткрытьФорму( + "Справочник.Пользователи.ФормаВыбора", + ПараметрыФормы, + Элементы.ГруппыПравПользователь); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьНомераКартинокПользователей(ИдентификаторСтроки = Неопределено) + + Пользователи.ЗаполнитьНомераКартинокПользователей(ГруппыПрав, "Пользователь", "НомерКартинки", ИдентификаторСтроки); + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьРазрешениеНаУправлениеПравами() + + Если УправлениеДоступом.ЕстьПраво("УправлениеПравами", Параметры.СсылкаНаОбъект) Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru = 'Настройка прав недоступна.'"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..8d6c4911 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\260\320\262\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262.mdo" @@ -0,0 +1,10 @@ + + + НастройкиПравОбъектов + + ru + Настройки прав объектов + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Form.form" new file mode 100644 index 00000000..971f65be --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Form.form" @@ -0,0 +1,346 @@ + + + + <key>ru</key> + <value>Регистрация событий доступа к персональным данным</value> + + + ОбластиПерсональныхДанных + 7 + + <key>ru</key> + <value>Области персональных данных</value> + + true + true + + true + + + ОбластиПерсональныхДанных + + None + + ОбластиПерсональныхДанныхКоманднаяПанель + 9 + true + true + + true + + Left + true + + + true + true + + true + + ОбластиПерсональныхДанныхSearchString + 13 + + ОбластиПерсональныхДанныхSearchStringExtendedTooltip + 15 + true + true + + true + + Label + true + true + + Left + + + + ОбластиПерсональныхДанныхSearchStringContextMenu + 14 + true + true + + true + + true + + + true + + + + true + true + + true + + ОбластиПерсональныхДанныхViewStatus + 16 + + ОбластиПерсональныхДанныхViewStatusExtendedTooltip + 18 + true + true + + true + + Label + true + true + + Left + + + + ОбластиПерсональныхДанныхViewStatusContextMenu + 17 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ОбластиПерсональныхДанныхSearchControl + 19 + + ОбластиПерсональныхДанныхSearchControlExtendedTooltip + 21 + true + true + + true + + Label + true + true + + Left + + + + ОбластиПерсональныхДанныхSearchControlContextMenu + 20 + true + true + + true + + true + + SearchControlAddition + + true + + + + ОбластиПерсональныхДанныхExtendedTooltip + 11 + true + true + + true + + Label + true + true + + Left + + + + ОбластиПерсональныхДанныхКонтекстноеМеню + 8 + true + true + + true + + true + + Tree + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true +
        + + ДекорацияРегистрацияСобытияДоступНадпись + 4 + + <key>ru</key> + <value>Для выбранных областей данных выполняется регистрация событий доступа в соответствии с требованиями Федерального закона от 27.07.2006 N152-ФЗ "О персональных данных".</value> + + true + true + + true + + + ДекорацияРегистрацияСобытияДоступНадписьExtendedTooltip + 12 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияРегистрацияСобытияДоступНадписьКонтекстноеМеню + 5 + true + true + + true + + true + + Label + 2 + true + + Style.ПоясняющийТекст + + + Left + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 6 + true + true + + true + + + ФормаЗаписатьИЗакрытьExtendedTooltip + 10 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + Left + true + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ОбластиПерсональныхДанных + + <key>ru</key> + <value>Области персональных данных</value> + + 1 + + ValueTree + + + true + + + true + + true + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + StdPicture.WriteAndClose + + + + ЗаписатьИЗакрыть + + + Text + DontUse + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Help/ru.html" new file mode 100644 index 00000000..4d6f0f2e --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Help/ru.html" @@ -0,0 +1,8 @@ + +

        Предназначена для настройки регистрации событий доступа к персональным данным.

        +

        Открывается по команде Регистрация событий доступа к персональным данным из раздела Поддержка и обслуживание - Администрирование.

        +

        Регистрация почти всех событий (кроме событий доступа к персональным данным в программе выполняются по умолчанию).

        +

        Для регистрации событий доступа к личным данным физических лиц администратору программы необходимо установить флажок Личные данные.

        +

        Для регистрации доступа к паспортным данным установите флажок Паспортные данные. После этого программа автоматически регистрирует события доступа к этим данным в списке событий.

        +

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Module.bsl" new file mode 100644 index 00000000..a366f276 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/Module.bsl" @@ -0,0 +1,58 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + Отказ = Истина; + КонецЕсли; + + ЗащитаПерсональныхДанных.ПриСозданииФормыНастройкиРегистрацииСобытий(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Оповещение = Новый ОписаниеОповещения("ВыбратьИЗакрыть", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + ВыбратьИЗакрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаписатьНаСервере() + ЗащитаПерсональныхДанных.ПриЗаписиФормыНастройкиРегистрацииСобытий(ЭтотОбъект); + Модифицированность = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьИЗакрыть(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт + + ЗаписатьНаСервере(); + Модифицированность = Ложь; + Закрыть(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274.mdo" new file mode 100644 index 00000000..31e47840 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271\320\224\320\276\321\201\321\202\321\203\320\277\320\260\320\232\320\237\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\274\320\224\320\260\320\275\320\275\321\213\320\274.mdo" @@ -0,0 +1,16 @@ + + + НастройкиРегистрацииСобытийДоступаКПерсональнымДанным + + ru + Настройки регистрации событий доступа к персональным данным + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Attributes/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213/ExtInfo/ListSettings.dcss" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Attributes/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213/ExtInfo/ListSettings.dcss" new file mode 100644 index 00000000..581b7d5d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Attributes/\320\241\320\265\321\200\321\202\320\270\321\204\320\270\320\272\320\260\321\202\321\213/ExtInfo/ListSettings.dcss" @@ -0,0 +1,35 @@ + + + + + false + Отозван + Equal + false + + + false + ДействителенДо + Greater + + BeginningOfThisDay + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + Наименование + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" new file mode 100644 index 00000000..038fa788 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Form.form" @@ -0,0 +1,3561 @@ + + + + Страницы + 40 + + СтраницаСертификаты + 42 + + ГруппаСертификатыОтбор + 332 + + СертификатыПоказать + 290 + true + true + + true + + + + СертификатыПоказать + + + + OnChange + СертификатыПоказатьПриИзменении + + + СертификатыПоказатьРасширеннаяПодсказка + 292 + true + true + + true + + Label + true + true + + Left + + + + СертификатыПоказатьКонтекстноеМеню + 291 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 20 + true + true + false + true + true + true + true + true + + + ru + Все сертификаты + + + ВсеСертификаты + + + + + ru + Мои сертификаты + + + МоиСертификаты + + + + Style.ФонУправляющегоПоля + + + + + СертификатыПоказатьЗаявления + 334 + true + true + + true + + + + СертификатыПоказатьЗаявления + + + + OnChange + СертификатыПоказатьЗаявленияПриИзменении + + + СертификатыПоказатьЗаявленияРасширеннаяПодсказка + 336 + true + true + + true + + Label + true + true + + Left + + + + СертификатыПоказатьЗаявленияКонтекстноеМеню + 335 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + true + + + ru + Любое + + + Enum.СостоянияЗаявленияНаВыпускСертификата.EmptyRef + + + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты отбор</value> + + + ГруппаСертификатыОтборРасширеннаяПодсказка + 333 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПользовательскихНастроек + 293 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + + ГруппаПользовательскихНастроекРасширеннаяПодсказка + 294 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + Auto + Auto + + + + СертификатыКоманднаяПанельСписка + 266 + + СертификатыСоздать + 135 + + <key>ru</key> + <value>Добавить...</value> + + true + + true + + + СертификатыСоздатьРасширеннаяПодсказка + 136 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СертификатыДобавить + 344 + + ДобавитьЗаявлениеНаВыпускСертификата + 346 + true + true + + true + + + ДобавитьЗаявлениеНаВыпускСертификатаРасширеннаяПодсказка + 347 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьЗаявлениеНаВыпускСертификата + Auto + true + true + UserCmds + Auto + + + ДобавитьИзУстановленныхНаКомпьютере + 348 + true + true + + true + + + ДобавитьИзУстановленныхНаКомпьютереРасширеннаяПодсказка + 349 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ДобавитьИзУстановленныхНаКомпьютере + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавить</value> + + + СертификатыДобавитьРасширеннаяПодсказка + 345 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + + ПеревыпуститьСертификат + 353 + + <key>ru</key> + <value>Перевыпустить...</value> + + true + true + + true + + + ПеревыпуститьСертификатРасширеннаяПодсказка + 354 + + <key>ru</key> + <value>Перевыпустить сертификат, у которого закончился срок действия</value> + + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.Copy + true + true + UserCmds + Auto + + + СертификатыСтандартныеКоманды + 98 + true + true + + true + + + <key>ru</key> + <value>Сертификаты стандартные команды</value> + + + СертификатыСтандартныеКомандыРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + + Item.Сертификаты + + + true + true + + true + + + <key>ru</key> + <value>Сертификаты командная панель списка</value> + + + СертификатыКоманднаяПанельСпискаРасширеннаяПодсказка + 267 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Сертификаты + 46 + + <key>ru</key> + <value>Сертификаты</value> + + true + true + + true + + + Сертификаты + + true + None + Delete + + СертификатыНаименование + 53 + true + true + + true + + + + Сертификаты.Description + + + + СертификатыНаименованиеРасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + + СертификатыНаименованиеКонтекстноеМеню + 54 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 35 + true + true + + + + СертификатыКемВыдан + 80 + true + true + + true + + + + Сертификаты.КемВыдан + + + + СертификатыКемВыданРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + + СертификатыКемВыданКонтекстноеМеню + 81 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 20 + true + true + + + + СертификатыДействителенДо + 65 + true + true + + true + + + + Сертификаты.ДействителенДо + + + + СертификатыДействителенДоРасширеннаяПодсказка + 67 + true + true + + true + + Label + true + true + + Left + + + + СертификатыДействителенДоКонтекстноеМеню + 66 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 13 + true + true + false + + + + СертификатыПользователь + 260 + true + true + + true + + + + Сертификаты.Пользователь + + + + СертификатыПользовательРасширеннаяПодсказка + 262 + true + true + + true + + Label + true + true + + Left + + + + СертификатыПользовательКонтекстноеМеню + 261 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СертификатыСостояниеЗаявления + 337 + + <key>ru</key> + <value>Состояние заявления</value> + + true + true + + true + + + + Сертификаты.СостояниеЗаявления + + + + СертификатыСостояниеЗаявленияРасширеннаяПодсказка + 339 + true + true + + true + + Label + true + true + + Left + + + + СертификатыСостояниеЗаявленияКонтекстноеМеню + 338 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 16 + true + true + false + + + + СертификатыСсылка + 142 + true + true + + + + Сертификаты.Ref + + + + СертификатыСсылкаРасширеннаяПодсказка + 144 + true + true + + true + + Label + true + true + + Left + + + + СертификатыСсылкаКонтекстноеМеню + 143 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + 1 + true + true + + + + СертификатыКоманднаяПанель + 48 + true + true + + true + + Left + + + BeforeAddRow + СертификатыПередНачаломДобавления + + + true + true + + true + + СертификатыСтрокаПоиска + 299 + + СертификатыСтрокаПоискаРасширеннаяПодсказка + 301 + true + true + + true + + Label + true + true + + Left + + + + СертификатыСтрокаПоискаКонтекстноеМеню + 300 + true + true + + true + + true + + + true + + + + true + true + + true + + СертификатыСостояниеПросмотра + 302 + + СертификатыСостояниеПросмотраРасширеннаяПодсказка + 304 + true + true + + true + + Label + true + true + + Left + + + + СертификатыСостояниеПросмотраКонтекстноеМеню + 303 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + СертификатыУправлениеПоиском + 305 + + СертификатыУправлениеПоискомРасширеннаяПодсказка + 307 + true + true + + true + + Label + true + true + + Left + + + + СертификатыУправлениеПоискомКонтекстноеМеню + 306 + true + true + + true + + true + + SearchControlAddition + + true + + + + СертификатыРасширеннаяПодсказка + 49 + true + true + + true + + Label + true + true + + Left + + + + СертификатыКонтекстноеМеню + 47 + + СертификатыКонтекстноеМенюСоздать + 340 + + <key>ru</key> + <value>Добавить...</value> + + true + true + + true + + + СертификатыКонтекстноеМенюСоздатьРасширеннаяПодсказка + 341 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Сертификаты.StandardCommand.Create + Auto + true + true + UserCmds + Auto + + + СертификатыКонтекстноеМенюСтандартныеКоманды + 342 + true + true + + true + + + <key>ru</key> + <value>Сертификаты контекстное меню стандартные команды</value> + + + СертификатыКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 343 + true + true + + true + + Label + true + true + + Left + + + + Item.Сертификаты + + + true + true + + true + + + HierarchicalList + true + true + true + true + 4 + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + + Сертификаты.DefaultPicture + + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + ГруппаПользовательскихНастроек + +
        + true + true + + true + + + <key>ru</key> + <value>Сертификаты</value> + + + СтраницаСертификатыРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + СтраницаПрограммы + 103 + + НадписьНастройкаВЦентральномУзле + 355 + + <key>ru</key> + <value>Настройка программ электронной подписи и шифрования выполнена в корневом узле</value> + + true + true + + true + + + НадписьНастройкаВЦентральномУзлеРасширеннаяПодсказка + 357 + true + true + + true + + Label + true + true + + Left + + + + НадписьНастройкаВЦентральномУзлеКонтекстноеМеню + 356 + true + true + + true + + true + + Label + true + true + + Left + + Style.ToolTipBackColor + + + + + ГруппаВебКлиентРасширениеНеУстановлено + 171 + + ПояснениеВебКлиентРасширениеНеУстановлено + 165 + + <key>ru</key> + <value>В браузере не установлено расширение для работы с электронной подписью и шифрованием. Невозможно проверить, какие из программ установлены на компьютере.</value> + + true + true + + true + + + ПояснениеВебКлиентРасширениеНеУстановленоРасширеннаяПодсказка + 167 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеВебКлиентРасширениеНеУстановленоКонтекстноеМеню + 166 + true + true + + true + + true + + Label + true + + Style.ПоясняющийОшибкуТекст + + + Left + + + + УстановитьРасширение + 297 + true + true + + true + + + УстановитьРасширениеРасширеннаяПодсказка + 298 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.УстановитьРасширение + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Веб клиент расширение не установлено</value> + + + ГруппаВебКлиентРасширениеНеУстановленоРасширеннаяПодсказка + 172 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ПрограммыКоманднаяПанельОтдельно + 181 + + ПрограммыДобавить + 280 + true + true + + true + + + ПрограммыДобавитьРасширеннаяПодсказка + 281 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Программы.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + ПрограммыИзменить + 282 + true + true + + true + + + ПрограммыИзменитьРасширеннаяПодсказка + 283 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Программы.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ПрограммыУстановитьПометкуУдаления + 276 + true + true + + true + + + ПрограммыУстановитьПометкуУдаленияРасширеннаяПодсказка + 277 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПрограммыУстановитьПометкуУдаления + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПрограммыОбновить + 230 + true + true + + true + + + ПрограммыОбновитьРасширеннаяПодсказка + 231 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + + + ПрограммыВывестиСписок + 255 + true + true + + true + + + ПрограммыВывестиСписокРасширеннаяПодсказка + 256 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Программы.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Программы командная панель отдельно</value> + + + ПрограммыКоманднаяПанельОтдельноРасширеннаяПодсказка + 182 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + СтраницыПрограммыИОбновление + 320 + + СтраницаПрограммыСписок + 322 + + Программы + 203 + + <key>ru</key> + <value>Настройки программ электронной подписи и шифрования, которые пользователи могут применять на своих компьютерах</value> + + true + true + + true + + + Программы + + Top + + ПрограммыНаименование + 213 + + <key>ru</key> + <value>Программа</value> + + true + true + + true + + + + Программы.Наименование + + + + ПрограммыНаименованиеРасширеннаяПодсказка + 215 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыНаименованиеКонтекстноеМеню + 214 + true + true + + true + + true + + InputField + EnterOnInput + true + true + Left + true + + 15 + true + true + true + true + true + true + + + + ПрограммыРезультатПроверки + 223 + + <key>ru</key> + <value>Результат проверки</value> + + true + true + + true + + + + Программы.РезультатПроверки + + + + ПрограммыРезультатПроверкиРасширеннаяПодсказка + 225 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыРезультатПроверкиКонтекстноеМеню + 224 + true + true + + true + + true + + InputField + EnterOnInput + true + true + Left + true + + 40 + true + true + true + true + true + true + true + + + + ПрограммыПодробнее + 358 + true + true + + true + + + + Программы.Подробнее + + + + ПрограммыПодробнееРасширеннаяПодсказка + 360 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыПодробнееКонтекстноеМеню + 359 + true + true + + true + + true + + InputField + true + EnterOnInput + true + true + Left + true + + 10 + true + true + false + true + true + true + true + + Style.ГиперссылкаЦвет + + + + + ПрограммыКоманднаяПанель + 205 + true + true + + true + + Left + + + Selection + ПрограммыВыбор + + + BeforeAddRow + ПрограммыПередНачаломДобавления + + + BeforeDeleteRow + ПрограммыПередУдалением + + + OnActivateRow + ПрограммыПриАктивизацииСтроки + + + BeforeRowChange + ПрограммыПередНачаломИзменения + + + true + true + + true + + ПрограммыСтрокаПоиска + 308 + + ПрограммыСтрокаПоискаРасширеннаяПодсказка + 310 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыСтрокаПоискаКонтекстноеМеню + 309 + true + true + + true + + true + + + true + + + + true + true + + true + + ПрограммыСостояниеПросмотра + 311 + + ПрограммыСостояниеПросмотраРасширеннаяПодсказка + 313 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыСостояниеПросмотраКонтекстноеМеню + 312 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПрограммыУправлениеПоиском + 314 + + ПрограммыУправлениеПоискомРасширеннаяПодсказка + 316 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыУправлениеПоискомКонтекстноеМеню + 315 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПрограммыРасширеннаяПодсказка + 206 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыКонтекстноеМеню + 204 + + ПрограммыКонтекстноеМенюДобавить + 284 + true + true + + true + + + ПрограммыКонтекстноеМенюДобавитьРасширеннаяПодсказка + 285 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Программы.StandardCommand.Add + Auto + true + true + UserCmds + Auto + + + ПрограммыКонтекстноеМенюИзменить + 286 + true + true + + true + + + ПрограммыКонтекстноеМенюИзменитьРасширеннаяПодсказка + 287 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Программы.StandardCommand.Change + Auto + true + true + UserCmds + Auto + + + ПрограммыКонтекстноеМенюПрограммыУстановитьПометкуУдаления + 278 + true + true + + true + + + ПрограммыКонтекстноеМенюПрограммыУстановитьПометкуУдаленияРасширеннаяПодсказка + 279 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПрограммыУстановитьПометкуУдаления + Auto + true + true + UserCmds + Auto + + + ПрограммыКонтекстноеМенюОбновить + 247 + true + true + + true + + + ПрограммыКонтекстноеМенюОбновитьРасширеннаяПодсказка + 248 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + + + ПрограммыКонтекстноеМенюВывестиСписок + 249 + true + true + + true + + + ПрограммыКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 250 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Программы.StandardCommand.OutputList + Auto + true + true + UserCmds + Auto + + + ПрограммыКонтекстноеМенюКопироватьВБуферОбмена + 251 + true + true + + true + + + ПрограммыКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 252 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Программы.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + + ПрограммыКонтекстноеМенюВыделитьВсе + 253 + true + true + + true + + + ПрограммыКонтекстноеМенюВыделитьВсеРасширеннаяПодсказка + 254 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Программы.StandardCommand.SelectAll + Auto + true + true + UserCmds + Auto + + true + true + + true + + + HierarchicalList + true + true + true + 1 + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + + Программы.НомерКартинки + + + CommonPicture.ПиктограммыЭлементов + + +
        + + ГруппаПрограммыLinuxПутьКПрограмме + 228 + + ПрограммыLinuxПутьКПрограмме + 216 + + <key>ru</key> + <value>Путь к программе на клиентском компьютере ОС Linux и macOS</value> + + true + true + + true + + + + Items.Программы.CurrentData.LinuxПутьКПрограмме + + + None + + ru + Путь к программе, который требуется на клиентских компьютерах с операционной системой Linux и macOS + + Button + + OnChange + ПрограммыLinuxПутьКПрограммеПриИзменении + + + ПрограммыLinuxПутьКПрограммеРасширеннаяПодсказка + 218 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыLinuxПутьКПрограммеКонтекстноеМеню + 217 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + StartChoice + ПрограммыLinuxПутьКПрограммеНачалоВыбора + + + ChoiceProcessing + ПрограммыLinuxПутьКПрограммеОбработкаВыбора + + 1 + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Путь к программе</value> + + + ГруппаПрограммыLinuxПутьКПрограммеРасширеннаяПодсказка + 229 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + + Items.Программы.CurrentData.Наименование + + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница программы список</value> + + + СтраницаПрограммыСписокРасширеннаяПодсказка + 323 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + СтраницаПрограммыОбновление + 324 + + ПрограммыОбновление + 326 + + <key>ru</key> + <value>Проверка программ, установленных на компьютере. Пожалуйста подождите ...</value> + + true + true + + true + + + ПрограммыОбновлениеРасширеннаяПодсказка + 328 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыОбновлениеКонтекстноеМеню + 327 + true + true + + true + + true + + Label + true + + Left + + + + ПрограммыДекорацияОбновления + 329 + + <key>ru</key> + <value>Программы декорация обновления</value> + + true + true + + true + + + ПрограммыДекорацияОбновленияРасширеннаяПодсказка + 331 + true + true + + true + + Label + true + true + + Left + + + + ПрограммыДекорацияОбновленияКонтекстноеМеню + 330 + true + true + + true + + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + + AutoSize + + + true + true + + true + + + <key>ru</key> + <value>Страница программы обновление</value> + + + СтраницаПрограммыОбновлениеРасширеннаяПодсказка + 325 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы программы и обновление</value> + + + СтраницыПрограммыИОбновлениеРасширеннаяПодсказка + 321 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + +
        + + ГруппаПроверятьПодписиНаСервере + 288 + + ПроверятьПодписиНаСервере + 273 + + <key>ru</key> + <value>Проверять подписи и сертификаты на сервере</value> + + true + true + + true + + + + ПроверятьПодписиНаСервере + + + Right + Button + + OnChange + ПроверятьПодписиНаСервереПриИзменении + + + ПроверятьПодписиНаСервереРасширеннаяПодсказка + 275 + + <key>ru</key> + <value>Позволяет не устанавливать программу на компьютер пользователя +для проверки электронных подписей и сертификатов. + +Важно: на каждый компьютер, где работает сервер 1С:Предприятия +или веб-сервер, подключенный к файловой информационной базе, +должна быть установлена хотя бы одна из программ в списке.</value> + + true + true + + true + + Label + true + true + + Left + + + + ПроверятьПодписиНаСервереКонтекстноеМеню + 274 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ПодписыватьНаСервере + 317 + + <key>ru</key> + <value>Подписывать и шифровать на сервере</value> + + true + true + + true + + + + ПодписыватьНаСервере + + + Right + Button + + OnChange + ПодписыватьНаСервереПриИзменении + + + ПодписыватьНаСервереРасширеннаяПодсказка + 319 + + <key>ru</key> + <value>Позволяет не устанавливать программу и сертификат +на компьютер пользователя для подписания, шифрования и расшифровки. + +Важно: на каждый компьютер, где работает сервер 1С:Предприятия +или веб-сервер, подключенный к файловой информационной базе, +должна быть установлена программа и сертификат с закрытым ключом.</value> + + true + true + + true + + Label + true + true + + Left + + + + ПодписыватьНаСервереКонтекстноеМеню + 318 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Проверять подписи на сервере</value> + + + ГруппаПроверятьПодписиНаСервереРасширеннаяПодсказка + 289 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + Инструкция + 270 + + <key>ru</key> + <value>Инструкции по работе с программами электронной подписи и шифрования</value> + + true + true + + true + + + ИнструкцияРасширеннаяПодсказка + 272 + true + true + + true + + Label + true + true + + Left + + + + ИнструкцияКонтекстноеМеню + 271 + true + true + + true + + true + + Label + true + + + Click + ИнструкцияНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Программы</value> + + + СтраницаПрограммыРасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
        + + СтраницаНастройки + 44 + + РасширениеДляЗашифрованныхФайлов + 9 + true + true + + true + + + + РасширениеДляЗашифрованныхФайлов + + + + OnChange + РасширениеДляЗашифрованныхФайловПриИзменении + + + РасширениеДляЗашифрованныхФайловExtendedTooltip + 19 + true + true + + true + + Label + true + true + + Left + + + + РасширениеДляЗашифрованныхФайловКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + false + true + true + true + true + + + + РасширениеДляФайловПодписи + 13 + true + true + + true + + + + РасширениеДляФайловПодписи + + + + OnChange + РасширениеДляФайловПодписиПриИзменении + + + РасширениеДляФайловПодписиExtendedTooltip + 20 + true + true + + true + + Label + true + true + + Left + + + + РасширениеДляФайловПодписиКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 10 + true + true + false + true + true + true + true + + + + ДействияПриСохраненииДанныхСЭлектроннойПодписью + 3 + + <key>ru</key> + <value>При сохранении данных в файл вместе с электронной подписью</value> + + true + true + + true + + + + ДействияПриСохраненииСЭП + + + Top + + OnChange + ДействияПриСохраненииДанныхСЭлектроннойПодписьюПриИзменении + + + ДействияПриСохраненииДанныхСЭлектроннойПодписьюРасширеннаяПодсказка + 18 + true + true + + true + + Label + true + true + + Left + + + + ДействияПриСохраненииДанныхСЭлектроннойПодписьюКонтекстноеМеню + 4 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Сохранять все подписи + + + СохранятьВсеПодписи + + + + + ru + Спрашивать + + + Спрашивать + + + + + + СохранятьСертификатВместеСПодписью + 350 + + <key>ru</key> + <value>Сохранять сертификат</value> + + true + true + + true + + + + СохранятьСертификатВместеСПодписью + + + Right + + OnChange + СохранятьСертификатВместеСПодписьюПриИзменении + + + СохранятьСертификатВместеСПодписьюРасширеннаяПодсказка + 352 + true + true + + true + + Label + true + true + + Left + + + + СохранятьСертификатВместеСПодписьюКонтекстноеМеню + 351 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + СтраницаНастройкиРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 41 + true + true + + true + + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + СтраницыПриСменеСтраницы + + TabsOnTop + Auto + +
        + Top + + ФормаКоманднаяПанель + -1 + + ФормаЗакрыть + 295 + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 296 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + true + UserCmds + Auto + + + ФормаОбновить + 232 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 233 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnReopen + ПриПовторномОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + Vertical + true + true + true + true + true + + ДействияПриСохраненииСЭП + + <key>ru</key> + <value>Действия при сохранении с ЭП</value> + + 1 + + String + + + + true + + + true + + ShowError + + + РасширениеДляЗашифрованныхФайлов + + <key>ru</key> + <value>Расширение для зашифрованных файлов</value> + + 4 + + String + + + + true + + + true + + ShowError + + + РасширениеДляФайловПодписи + + <key>ru</key> + <value>Расширение для файлов подписи</value> + + 6 + + String + + + + true + + + true + + ShowError + + + ТекстОшибки + 7 + + String + + + + true + + + true + + + + Сертификаты + + <key>ru</key> + <value>Сертификаты</value> + + 8 + + DynamicList + + + true + + + true + + + Сертификаты.Ref + + + Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования + true + true + true + true + + + + Программы + + <key>ru</key> + <value>Программы</value> + + 2 + + ValueTable + + + true + + + true + + + Ссылка + 1 + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + LinuxПутьКПрограмме + + <key>ru</key> + <value>Linux путь к программе</value> + + 2 + + String + + + + true + + + true + + + + РезультатПроверки + + <key>ru</key> + <value>Результат проверки</value> + + 3 + + String + + + + true + + + true + + + + ИмяПрограммы + 4 + + String + + + + true + + + true + + + + ТипПрограммы + 5 + + Number + + 10 + true + + + + true + + + true + + + + АлгоритмПодписи + 6 + + String + + + + true + + + true + + + + АлгоритмХеширования + 7 + + String + + + + true + + + true + + + + АлгоритмШифрования + 8 + + String + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 9 + + String + + + + true + + + true + + + + Установлена + 11 + + Boolean + String + + + + true + + + true + + + + НомерКартинки + 10 + + Number + + 1 + true + + + + true + + + true + + + + ПометкаУдаления + 12 + + Boolean + + + true + + + true + + + + ЭтоПрограммаОблачногоСервиса + 13 + + Boolean + + + true + + + true + + + + Подробнее + + <key>ru</key> + <value>Подробнее</value> + + 14 + + String + + + + true + + + true + + + + + ПроверятьПодписиНаСервере + + <key>ru</key> + <value>Проверять подписи на сервере</value> + + 5 + + Boolean + + + true + + + true + + + + СертификатыПоказать + + <key>ru</key> + <value>Показать</value> + + 3 + + String + + + + true + + + true + + + + ПодписыватьНаСервере + + <key>ru</key> + <value>Подписывать на сервере</value> + + 9 + + Boolean + + + true + + + true + + + + ЭтоПолноправныйПользователь + 10 + + Boolean + + + true + + + true + + + + СертификатыПоказатьЗаявления + + <key>ru</key> + <value>Состояние заявления</value> + + 11 + + EnumRef.СостоянияЗаявленияНаВыпускСертификата + + + true + + + true + + + + БезПраваСохранениеДанныхПользователя + 12 + + Boolean + + + true + + + true + + + + LinuxПутьКТекущейПрограмме + 13 + + String + + + + true + + + true + + + + СохранятьСертификатВместеСПодписью + + <key>ru</key> + <value>Сохранять сертификат вместе с подписью</value> + + 14 + + Boolean + + + true + + + true + + + + ПутиКПрограммамПоУмолчанию + 16 + + ValueTable + + + true + + + true + + + Программа + 2 + + CatalogRef.ПрограммыЭлектроннойПодписиИШифрования + + + true + + + true + + + + Путь + 1 + + String + + + + true + + + true + + + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 1 + + ru + Обновить настройки и список программ с результатами их проверки + + + true + + + StdPicture.Refresh + + + + Обновить + + + Text + DontUse + + + ПрограммыУстановитьПометкуУдаления + + <key>ru</key> + <value>Пометить на удаление / Снять пометку</value> + + 4 + + ru + Пометить текущий элемент на удаление / Снять пометку + + + true + + + StdPicture.MarkToDelete + + + + ПрограммыУстановитьПометкуУдаления + + + Text + DontUse + + + УстановитьРасширение + + <key>ru</key> + <value>Установить расширение</value> + + 2 + + ru + Установить расширение + + + true + + + + УстановитьРасширение + + + DontUse + + + ДобавитьЗаявлениеНаВыпускСертификата + + <key>ru</key> + <value>Заявление на выпуск сертификата</value> + + 3 + + ru + Заявление на выпуск сертификата + + + true + + + + ДобавитьЗаявлениеНаВыпускСертификата + + + DontUse + + + ДобавитьИзУстановленныхНаКомпьютере + + <key>ru</key> + <value>Из установленных на компьютере...</value> + + 5 + + ru + Из установленных на компьютере ... + + + true + + + + ДобавитьИзУстановленныхНаКомпьютере + + + DontUse + + + + + +
        diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..8e1ecf5e --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,35 @@ + +

        Настройка параметров для использования средств электронной подписи и шифрования (криптографии). 

        +

        Открывается по команде Настройки электронной подписи и шифрования раздела Администрирование - Общие настройки.

        +

        Для электронной подписи и шифрования требуется установить специальную стороннюю программу (криптопровайдер).

        +

        Для того чтобы подписывать данные, нужно включить флажок Электронная подпись, а для шифрования нужно включить флажок Шифрование в разделе Администрирование - Общие настройки. После этого становятся доступными соответствующие команды в программе.

        +

        Электронная подпись - реквизит электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Для установки подписи необходимо иметь сертификат ключа электронной подписи. Сертификат можно получить в удостоверяющем центре. Например, в удостоверяющем центре фирмы 1С http://ca.1c.ru/. Только удостоверяющий центр может выдать юридически значимый (квалифицированный сертификат).

        +

        В случае использования распределенной информационной базы большую часть настроек можно изменить только в главном узле.

        +

        Сертификаты

        +
        • Показывает все сертификаты, которые используются для подписания и шифрования данных, а также заявления на выпуск нового сертификата. +
        • Можно установить отбор только своих сертификатов в поле Показать. По умолчанию показываются все сертификаты. +
        • Предусмотрен отбор по полю Состояние заявления ("Любое", "Не подготовлено", "Подготовлено", "Отправлено", "Отклонено", "Исполнено, сертификат не установлен", "Исполнено"). +
        • Сертификат можно Добавить из числа установленных на компьютере. Также это можно сделать в процессе подписания или шифрования данных. +
        • Также с помощью кнопки Добавить можно подготовить Заявление на выпуск нового сертификата. +
        • Просмотреть сертификат или заявление на выпуск нового сертификата можно, дважды щелкнув по нему мышью. Также можно это сделать с помощью команды Изменить контекстного меню по правой кнопке мыши или меню Еще.

        Программы

        +
        • Содержит список программ, которые будут использованы в информационной базе (в том числе во всех узлах распределенной ИБ). +
        • Эти программы не обязательно должны быть установлены на всех компьютерах. Более того, установка более одной программы на одном компьютере может вызвать конфликты между ними. +
        • После запуска в списке уже присутствуют две записи о программах, наиболее распространенных в России - ViPNet CSP и КриптоПро CSP. +
        • Можно добавить записи о других программах (поставляются готовые настройки для Microsoft Enhanced CSP, ViPNet CSP, КриптоПро CSP, ЛИССИ CSP, Сигнал-КОМ CSP). +
        • Если требуется использовать программу отличную от известных, тогда нужно указать ее имя, тип и алгоритмы, как указано в инструкции, поставляемой ее производителем. +
        • В колонке Результат проверки отражаются сведения, по которым можно понять установлена ли программа на компьютере или нет или же установлена, но некорректно. +
        • Linux: Путь к программе (<Имя программы, соответствующей выделенной строке в списке>) - поле, которое требуется обязательно заполнять на компьютерах под управлением ОС Linux.
        • +
        • В нижней части списка расположена ссылка Инструкция по работе с программами электронной подписи и шифрования. Перейдите по этой ссылке в соответствующий раздел 1С:ИТС, если имеются вопросы. +
        • Проверять подписи и сертификаты на сервере - этот флажок виден только для серверных баз. Если его установить, тогда проверка электронной подписи и сертификата будет происходить на сервере, что позволяет не устанавливать программу на каждом компьютере, гдетребуется только такие операции. +
          • В записи о программе можно перейти к списку Пути к программе на серверах Linux - в котором нужно указать пути для тех компьютеров, на которых сервер 1С:Предприятия работает под управлением ОС Linux.

        Дополнительно

        +
        • Задайте Расширение для зашифрованных файлов при отправке по почте, при выполнении команды Сохранить как и при экспорте папки (по умолчанию .p7m). +
        • +
          Напишите Расширение для файлов подписи (по умолчанию .p7s).
          +
        • +
          С помощью переключателя При сохранении данных в файл вместе с электронной подписью задайте поведение программы при выполнении команды Сохранить вместе с электронной подписью:
          +
          • +
            Сохранять все подписи - все подписи сохраняются;
            +
          • +
            Спрашивать - выбор сохраняемых подписей осуществляется из списка.
        • +
          Включите флажок Сохранять сертификат для сохранения на компьютер сертификата вместе с файлом и электронной подписью.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..6b824d6b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,1125 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ПроверкаПрограммВыполнялась; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + ЭлектроннаяПодписьСлужебный.УстановитьУсловноеОформлениеСпискаСертификатов(Сертификаты, Истина); + + НавигационнаяСсылка = "e1cib/app/ОбщаяФорма.НастройкиЭлектроннойПодписиИШифрования"; + + Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + Элементы.СтраницаНастройки.Видимость = Ложь; + БезПраваСохранениеДанныхПользователя = Истина; + КонецЕсли; + + ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(); + + Если Параметры.Свойство("ПоказатьСтраницуСертификаты") Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСертификаты; + + ИначеЕсли Параметры.Свойство("ПоказатьСтраницуНастройки") Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаНастройки; + + ИначеЕсли Параметры.Свойство("ПоказатьСтраницуПрограммы") Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПрограммы; + КонецЕсли; + + Если ОбщегоНазначения.РазделениеВключено() Тогда + УстановитьПроверкуПодписейНаСервере(Ложь); + Элементы.ПроверятьПодписиНаСервере.Видимость = Ложь; + Элементы.ПодписыватьНаСервере.Видимость = Ложь; + Иначе + ПроверятьПодписиНаСервере = Константы.ПроверятьЭлектронныеПодписиНаСервере.Получить(); + ПодписыватьНаСервере = Константы.СоздаватьЭлектронныеПодписиНаСервере.Получить(); + КонецЕсли; + + Если Пользователи.ЭтоПолноправныйПользователь() Тогда + СертификатыПоказать = "ВсеСертификаты"; + Иначе + СертификатыПоказать = "МоиСертификаты"; + + // Страница Программы + Элементы.Программы.ИзменятьСоставСтрок = Ложь; + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ПрограммыДобавить", "Видимость", Ложь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ПрограммыИзменить", "Видимость", Ложь); + + Элементы.ПрограммыУстановитьПометкуУдаления.Видимость = Ложь; + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ПрограммыКонтекстноеМенюДобавить", "Видимость", Ложь); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ПрограммыКонтекстноеМенюИзменить", "Видимость", Ложь); + + Элементы.ПрограммыКонтекстноеМенюПрограммыУстановитьПометкуУдаления.Видимость = Ложь; + Элементы.ПроверятьПодписиНаСервере.Видимость = Ложь; + Элементы.ПодписыватьНаСервере.Видимость = Ложь; + Элементы.Программы.Заголовок = + НСтр("ru = 'Список программ, предусмотренных администратором, которые можно использовать на компьютере'"); + КонецЕсли; + + Если ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда + МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ЗаполнитьСписокВыбораСостоянияЗаявления(Элементы.СертификатыПоказатьЗаявления.СписокВыбора); + Иначе + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СертификатыСоздать", "Видимость", Истина); + + Элементы.СертификатыДобавить.Видимость = Ложь; + Элементы.СертификатыПоказатьЗаявления.Видимость = Ложь; + Элементы.Инструкция.Видимость = Ложь; + КонецЕсли; + + СертификатыОбновитьОтбор(ЭтотОбъект, Пользователи.ТекущийПользователь()); + + Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + // Состав и настройки предусмотренных программ нельзя изменять. + // Можно изменять только пути к программам на серверах Linux. + Элементы.Программы.ИзменятьСоставСтрок = Ложь; + Элементы.ПрограммыУстановитьПометкуУдаления.Доступность = Ложь; + Элементы.ПрограммыКонтекстноеМенюПрограммыУстановитьПометкуУдаления.Доступность = Ложь; + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ПрограммыИзменить", "ТолькоВоВсехДействиях", Ложь); + Иначе + Элементы.НадписьНастройкаВЦентральномУзле.Видимость = Ложь; + КонецЕсли; + + Если Не ЭлектроннаяПодписьСлужебный.ТребуетсяПутьКПрограмме(Истина) Тогда + Элементы.ГруппаПрограммыLinuxПутьКПрограмме.Видимость = Ложь; + КонецЕсли; + + Элементы.ГруппаВебКлиентРасширениеНеУстановлено.Видимость = ОбщегоНазначения.ЭтоВебКлиент() + И Параметры.Свойство("РасширениеНеПодключено"); + + ЗаполнитьПрограммыИНастройки(); + + ОбновитьТекущуюВидимостьЭлементов(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ОпределитьУстановленныеПрограммы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриПовторномОткрытии() + + ОпределитьУстановленныеПрограммы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") + И Параметр.Свойство("ЭтоНовый") Тогда + + Элементы.Сертификаты.Обновить(); + Элементы.Сертификаты.ТекущаяСтрока = Источник; + Возврат; + КонецЕсли; + + // При изменении состава или настроек программ. + Если ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования") + Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux") + Или ВРег(ИмяСобытия) = ВРег("Запись_ЛичныеНастройкиЭлектроннойПодписиИШифрования") Тогда + + ПодключитьОбработчикОжидания("ПриИзмененииСоставаИлиНастроекПрограмм", 0.1, Истина); + Возврат; + КонецЕсли; + + Если ВРег(ИмяСобытия) = ВРег("Установка_РасширениеРаботыСКриптографией") Тогда + ОпределитьУстановленныеПрограммы(); + Возврат; + КонецЕсли; + + // При изменении настроек использования. + Если ВРег(ИмяСобытия) <> ВРег("Запись_НаборКонстант") Тогда + Возврат; + КонецЕсли; + + Если ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи") + Или ВРег(Источник) = ВРег("ИспользоватьШифрование") Тогда + + ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница) + + Если ПроверкаПрограммВыполнялась <> Истина Тогда + ОпределитьУстановленныеПрограммы(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатыПоказатьПриИзменении(Элемент) + + СертификатыОбновитьОтбор(ЭтотОбъект, ПользователиКлиент.ТекущийПользователь()); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатыПоказатьЗаявленияПриИзменении(Элемент) + + СертификатыОбновитьОтбор(ЭтотОбъект, ПользователиКлиент.ТекущийПользователь()); + +КонецПроцедуры + +&НаКлиенте +Процедура РасширениеДляЗашифрованныхФайловПриИзменении(Элемент) + + Если ПустаяСтрока(РасширениеДляЗашифрованныхФайлов) Тогда + РасширениеДляЗашифрованныхФайлов = "p7m"; + КонецЕсли; + + СохранитьНастройки(); + +КонецПроцедуры + +&НаКлиенте +Процедура РасширениеДляФайловПодписиПриИзменении(Элемент) + + Если ПустаяСтрока(РасширениеДляФайловПодписи) Тогда + РасширениеДляФайловПодписи = "p7s"; + КонецЕсли; + + СохранитьНастройки(); + +КонецПроцедуры + +&НаКлиенте +Процедура ДействияПриСохраненииДанныхСЭлектроннойПодписьюПриИзменении(Элемент) + + СохранитьНастройки(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверятьПодписиНаСервереПриИзменении(Элемент) + + УстановитьПроверкуПодписейНаСервере(ПроверятьПодписиНаСервере); + + Оповестить("Запись_НаборКонстант", Новый Структура, "ПроверятьЭлектронныеПодписиНаСервере"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПодписыватьНаСервереПриИзменении(Элемент) + + УстановитьПодписаниеНаСервере(ПодписыватьНаСервере); + + Оповестить("Запись_НаборКонстант", Новый Структура, "СоздаватьЭлектронныеПодписиНаСервере"); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранятьСертификатВместеСПодписьюПриИзменении(Элемент) + СохранитьНастройки(); +КонецПроцедуры + +&НаКлиенте +Процедура ПрограммыLinuxПутьКПрограммеПриИзменении(Элемент) + + ТекущиеДанные = Элементы.Программы.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + СохранитьПутьКПрограмме(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПрограммыLinuxПутьКПрограммеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ТекущиеДанные = Элементы.Программы.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + ДанныеВыбора = Неопределено; + СтандартнаяОбработка = Ложь; + Возврат; + КонецЕсли; + + Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка); + Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор); + Если Строки.Количество() = 0 Тогда + ДанныеВыбора = Неопределено; + СтандартнаяОбработка = Ложь; + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПрограммыLinuxПутьКПрограммеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ТекущиеДанные = Элементы.Программы.ТекущиеДанные; + Если Не ЗначениеЗаполнено(ВыбранноеЗначение) + Или ТекущиеДанные = Неопределено Тогда + + Возврат; + КонецЕсли; + + Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка); + Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор); + ТекущиеДанные.LinuxПутьКПрограмме = ?(Строки.Количество() = 0, "", Строки[0].Путь); + + СохранитьПутьКПрограмме(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСертификаты + +&НаКлиенте +Процедура СертификатыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + ПараметрыСоздания = Новый Структура; + + Если Копирование Тогда + Если Элементы.Сертификаты.ТекущаяСтрока = Неопределено Тогда + Возврат; + КонецЕсли; + ТекущиеДанные = СертификатыТекущиеДанные(Элементы.Сертификаты); + ПараметрыСоздания.Вставить("СоздатьЗаявление", Истина); + ПараметрыСоздания.Вставить("СертификатОснование", ТекущиеДанные.Ссылка); + Иначе + ПараметрыСоздания = Новый Структура; + ПараметрыСоздания.Вставить("СкрытьЗаявление", Ложь); + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПрограммы + +&НаКлиенте +Процедура ПрограммыПриАктивизацииСтроки(Элемент) + + Элементы.ПрограммыУстановитьПометкуУдаления.Доступность = + Элементы.Программы.ТекущиеДанные <> Неопределено; + + Если Элементы.Программы.ТекущиеДанные <> Неопределено Тогда + LinuxПутьКТекущейПрограмме = Элементы.Программы.ТекущиеДанные.LinuxПутьКПрограмме; + КонецЕсли; + + ОбновитьLinuxПутьКПрограмме(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПрограммыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + + Если Элементы.Программы.ИзменятьСоставСтрок Тогда + ОткрытьФорму("Справочник.ПрограммыЭлектроннойПодписиИШифрования.ФормаОбъекта"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПрограммыПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + + Если Элементы.Найти("ПрограммыИзменить") <> Неопределено + И Элементы.ПрограммыИзменить.Видимость Тогда + + ПоказатьЗначение(, Элементы.Программы.ТекущиеДанные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПрограммыПередУдалением(Элемент, Отказ) + + Отказ = Истина; + + Если Элементы.Найти("ПрограммыИзменить") <> Неопределено + И Элементы.ПрограммыИзменить.Видимость Тогда + + ПрограммыУстановитьПометкуУдаления(Неопределено); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИнструкцияНажатие(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьИнструкциюПоРаботеСПрограммами(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПрограммыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + ТекущиеДанные = Элементы.Программы.ТекущиеДанные; + Если Поле = Элементы.ПрограммыПодробнее + И Не ПустаяСтрока(ТекущиеДанные.Подробнее)Тогда + + СтандартнаяОбработка = Ложь; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ЗаголовокПредупреждения", НСтр("ru = 'Результат проверки программы'")); + ПараметрыФормы.Вставить("ТекстОшибкиКлиент", ТекущиеДанные.РезультатПроверки); + ПараметрыФормы.Вставить("ПоказатьТребуетсяПомощь", Истина); + ПараметрыФормы.Вставить("ПоказатьИнструкцию", Истина); + + ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыФормы, ЭтотОбъект); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Обновить(Команда) + + ЗаполнитьПрограммыИНастройки(Истина); + + ОпределитьУстановленныеПрограммы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьЗаявлениеНаВыпускСертификата(Команда) + + ПараметрыСоздания = Новый Структура; + ПараметрыСоздания.Вставить("СоздатьЗаявление", Истина); + + ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьИзУстановленныхНаКомпьютере(Команда) + + ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьРасширение(Команда) + + ЭлектроннаяПодписьКлиент.УстановитьРасширение(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПрограммыУстановитьПометкуУдаления(Команда) + + ТекущиеДанные = Элементы.Программы.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.ПометкаУдаления Тогда + ТекстВопроса = НСтр("ru = 'Снять с ""%1"" пометку на удаление?'"); + Иначе + ТекстВопроса = НСтр("ru = 'Пометить ""%1"" на удаление?'"); + КонецЕсли; + + СодержимоеВопроса = Новый Массив; + СодержимоеВопроса.Добавить(БиблиотекаКартинок.Вопрос32); + СодержимоеВопроса.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ТекущиеДанные.Наименование)); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПрограммыУстановитьПометкуУдаленияПродолжить", ЭтотОбъект, ТекущиеДанные.Ссылка), + Новый ФорматированнаяСтрока(СодержимоеВопроса), + РежимДиалогаВопрос.ДаНет); + + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Программы.Установлена"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Ложь; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ПрограммыРезультатПроверки"); + ЭлементОформляемогоПоля.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ПрограммыНаименование"); + ЭлементОформляемогоПоля.Использование = Истина; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура СертификатыОбновитьОтбор(Форма, ТекущийПользователь) + + Элементы = Форма.Элементы; + + // Отбор сертификатов Все/Мои. + ПоказатьСвои = Форма.СертификатыПоказать <> "ВсеСертификаты"; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Форма.Сертификаты, "Пользователь", ТекущийПользователь,,, ПоказатьСвои); + + Элементы.СертификатыПользователь.Видимость = Не ПоказатьСвои; + + Если Элементы.СертификатыПоказатьЗаявления.Видимость Тогда + // Отбор сертификатов по состоянию заявления. + ОтборПоСостояниюЗаявления = ЗначениеЗаполнено(Форма.СертификатыПоказатьЗаявления); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты, + "СостояниеЗаявления", Форма.СертификатыПоказатьЗаявления, , , ОтборПоСостояниюЗаявления); + КонецЕсли; + +КонецПроцедуры + +// Параметры: +// ТаблицаФормы - ДанныеФормыКоллекция +// +// Возвращаемое значение: +// Структура: +// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования +// +&НаКлиенте +Функция СертификатыТекущиеДанные(ТаблицаФормы) + + Возврат ТаблицаФормы.ТекущиеДанные; + +КонецФункции + +&НаКлиенте +Процедура ПрограммыУстановитьПометкуУдаленияПродолжить(Ответ, ТекущаяПрограмма) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ИзменитьПометкуУдаленияПрограммы(ТекущаяПрограмма); + ОповеститьОбИзменении(ТекущаяПрограмма); + Оповестить("Запись_ПрограммыЭлектроннойПодписиИШифрования", Новый Структура, ТекущаяПрограмма); + ОпределитьУстановленныеПрограммы(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ИзменитьПометкуУдаленияПрограммы(Программа) + + ЗаблокироватьДанныеДляРедактирования(Программа, , УникальныйИдентификатор); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ПрограммыЭлектроннойПодписиИШифрования"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Программа); + + НачатьТранзакцию(); + Попытка + + Блокировка.Заблокировать(); + + Объект = Программа.ПолучитьОбъект(); + Объект.ПометкаУдаления = Не Объект.ПометкаУдаления; + Объект.Записать(); + + ЗафиксироватьТранзакцию(); + + Исключение + ОтменитьТранзакцию(); + РазблокироватьДанныеДляРедактирования(Программа, УникальныйИдентификатор); + ВызватьИсключение; + КонецПопытки; + + РазблокироватьДанныеДляРедактирования(Программа, УникальныйИдентификатор); + + ЗаполнитьПрограммыИНастройки(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененияИспользованияПодписанияИлиШифрования() + + ОбновитьТекущуюВидимостьЭлементов(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьТекущуюВидимостьЭлементов() + + Если Константы.ИспользоватьШифрование.Получить() + Или ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СертификатыСоздать", "Заголовок", НСтр("ru = 'Добавить...'")); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СертификатыКонтекстноеМенюСоздать", "Заголовок", НСтр("ru = 'Добавить...'")); + + Элементы.РасширениеДляЗашифрованныхФайлов.Видимость = Истина; + Иначе + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СертификатыСоздать", "Заголовок", НСтр("ru = 'Добавить'")); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СертификатыКонтекстноеМенюСоздать", "Заголовок", НСтр("ru = 'Добавить'")); + + Элементы.РасширениеДляЗашифрованныхФайлов.Видимость = Ложь; + КонецЕсли; + + Если Константы.ИспользоватьШифрование.Получить() Тогда + Если ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда + Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок = + НСтр("ru = 'Из установленных в облачном сервисе и на компьютере...'"); + Иначе + Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок = + НСтр("ru = 'Из установленных на компьютере...'"); + КонецЕсли; + Иначе + Если ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда + Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок = + НСтр("ru = 'Из установленных в облачном сервисе и на компьютере'"); + Иначе + Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок = + НСтр("ru = 'Из установленных на компьютере'"); + КонецЕсли; + КонецЕсли; + + Если Константы.ИспользоватьЭлектронныеПодписи.Получить() Тогда + ЗаголовокФлажка = НСтр("ru = 'Проверять подписи и сертификаты на сервере'"); + ПодсказкаФлажка = + НСтр("ru = 'Позволяет не устанавливать программу на компьютер пользователя + |для проверки электронных подписей и сертификатов. + | + |Важно: на каждый компьютер, где работает сервер 1С:Предприятия + |или веб-сервер, подключенный к файловой информационной базе, + |должна быть установлена хотя бы одна из программ в списке.'"); + Элементы.РасширениеДляФайловПодписи.Видимость = Истина; + Элементы.ДействияПриСохраненииДанныхСЭлектроннойПодписью.Видимость = Истина; + Иначе + ЗаголовокФлажка = НСтр("ru = 'Проверять сертификаты на сервере'"); + ПодсказкаФлажка = + НСтр("ru = 'Позволяет не устанавливать программу на компьютер пользователя + |для проверки сертификатов. + | + |Важно: на каждый компьютер, где работает сервер 1С:Предприятия + |или веб-сервер, подключенный к файловой информационной базе, + |должна быть установлена хотя бы одна из программ в списке.'"); + Элементы.РасширениеДляФайловПодписи.Видимость = Ложь; + Элементы.ДействияПриСохраненииДанныхСЭлектроннойПодписью.Видимость = Ложь; + КонецЕсли; + Элементы.ПроверятьПодписиНаСервере.Заголовок = ЗаголовокФлажка; + Элементы.ПроверятьПодписиНаСервере.РасширеннаяПодсказка.Заголовок = ПодсказкаФлажка; + + Если Не Константы.ИспользоватьЭлектронныеПодписи.Получить() Тогда + ЗаголовокФлажка = НСтр("ru = 'Шифровать и расшифровывать на сервере'"); + ПодсказкаФлажка = + НСтр("ru = 'Позволяет не устанавливать программу и сертификат + |на компьютер пользователя для шифрования и расшифровки. + | + |Важно: на каждый компьютер, где работает сервер 1С:Предприятия + |или веб-сервер, подключенный к файловой информационной базе, + |должна быть установлена программа и сертификат с закрытым ключом.'"); + ИначеЕсли Не Константы.ИспользоватьШифрование.Получить() Тогда + ЗаголовокФлажка = НСтр("ru = 'Подписывать на сервере'"); + ПодсказкаФлажка = + НСтр("ru = 'Позволяет не устанавливать программу и сертификат + |на компьютер пользователя для подписания. + | + |Важно: на каждый компьютер, где работает сервер 1С:Предприятия + |или веб-сервер, подключенный к файловой информационной базе, + |должна быть установлена программа и сертификат с закрытым ключом.'"); + Иначе + ЗаголовокФлажка = НСтр("ru = 'Подписывать и шифровать на сервере'"); + ПодсказкаФлажка = + НСтр("ru = 'Позволяет не устанавливать программу и сертификат + |на компьютер пользователя для подписания, шифрования и расшифровки. + | + |Важно: на каждый компьютер, где работает сервер 1С:Предприятия + |или веб-сервер, подключенный к файловой информационной базе, + |должна быть установлена программа и сертификат с закрытым ключом.'"); + КонецЕсли; + Элементы.ПодписыватьНаСервере.Заголовок = ЗаголовокФлажка; + Элементы.ПодписыватьНаСервере.РасширеннаяПодсказка.Заголовок = ПодсказкаФлажка; + +КонецПроцедуры + +&НаКлиенте +Процедура ОпределитьУстановленныеПрограммы() + + Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПрограммы Тогда + ПроверкаПрограммВыполнялась = Истина; + НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения( + "ОпределитьУстановленныеПрограммыПослеПодключенияРасширения", ЭтотОбъект)); + Иначе + ПроверкаПрограммВыполнялась = Неопределено; + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ОпределитьУстановленныеПрограммы. +&НаКлиенте +Процедура ОпределитьУстановленныеПрограммыПослеПодключенияРасширения(Подключено, Контекст) Экспорт + + Если Подключено Тогда + Элементы.СтраницыПрограммыИОбновление.ТекущаяСтраница = Элементы.СтраницаПрограммыОбновление; + КонецЕсли; + + #Если ВебКлиент Тогда + ПодключитьОбработчикОжидания("ОбработчикОжиданияОпределитьУстановленныеПрограммы", 0.3, Истина); + #Иначе + ПодключитьОбработчикОжидания("ОбработчикОжиданияОпределитьУстановленныеПрограммы", 0.1, Истина); + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияДляПродолжения() + + Возврат; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммы() + + НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения( + "ОбработчикОжиданияОпределитьУстановленныеПрограммыПослеПодключенияРасширения", ЭтотОбъект)); + + #Если ВебКлиент Тогда + ПодключитьОбработчикОжидания("ОбработчикОжиданияДляПродолжения", 0.3, Истина); + #Иначе + ПодключитьОбработчикОжидания("ОбработчикОжиданияДляПродолжения", 0.1, Истина); + #КонецЕсли + +КонецПроцедуры + +// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы. +&НаКлиенте +Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыПослеПодключенияРасширения(Подключено, Контекст) Экспорт + + Если Не Подключено Тогда + Если Не Элементы.ГруппаВебКлиентРасширениеНеУстановлено.Видимость Тогда + УстановитьВидимостьГруппаВебКлиентРасширениеНеУстановлено(Истина); + КонецЕсли; + ПодключитьОбработчикОжидания("ОбработчикОжиданияОпределитьУстановленныеПрограммы", 3, Истина); + Возврат; + КонецЕсли; + + Если Элементы.ГруппаВебКлиентРасширениеНеУстановлено.Видимость Тогда + УстановитьВидимостьГруппаВебКлиентРасширениеНеУстановлено(Ложь); + КонецЕсли; + + ПутиКПрограммамПоУмолчанию.Очистить(); + + Контекст = Новый Структура; + Контекст.Вставить("Индекс", -1); + + ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст); + +КонецПроцедуры + +// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы. +&НаКлиенте +Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст) + + Если Программы.Количество() <= Контекст.Индекс + 1 Тогда + // После цикла. + Элементы.СтраницыПрограммыИОбновление.ТекущаяСтраница = Элементы.СтраницаПрограммыСписок; + ТекущийЭлемент = Элементы.Программы; + ОбновитьLinuxПутьКПрограмме(); + Возврат; + КонецЕсли; + Контекст.Индекс = Контекст.Индекс + 1; + ОписаниеПрограммы = Программы.Получить(Контекст.Индекс); + + Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы); + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьПутьКПрограммеПоУмолчанию(Новый ОписаниеОповещения( + "ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПослеПолученияПутиКПрограмме", ЭтотОбъект, Контекст), + ОписаниеПрограммы.Ссылка); + +КонецПроцедуры + +// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы. +&НаКлиенте +Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПослеПолученияПутиКПрограмме(ОписаниеПути, Контекст) Экспорт + + ОписаниеПрограммы = Контекст.ОписаниеПрограммы; + + Если ЗначениеЗаполнено(ОписаниеПути.ПутьКПрограмме) Тогда + НоваяСтрока = ПутиКПрограммамПоУмолчанию.Добавить(); + НоваяСтрока.Программа = ОписаниеПрограммы.Ссылка; + НоваяСтрока.Путь = ОписаниеПути.ПутьКПрограмме; + КонецЕсли; + + Если ОписаниеПрограммы.ПометкаУдаления Тогда + ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, ""); + ОбновитьЗначение(ОписаниеПрограммы.Подробнее, ""); + ОбновитьЗначение(ОписаниеПрограммы.Установлена, ""); + ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст); + Возврат; + ИначеЕсли ОписаниеПрограммы.ЭтоПрограммаОблачногоСервиса Тогда + ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, НСтр("ru = 'Доступен.'")); + ОбновитьЗначение(ОписаниеПрограммы.Установлена, Истина); + ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст); + Возврат; + КонецЕсли; + + ОписанияПрограмм = Новый Массив; + ОписанияПрограмм.Добавить(Контекст.ОписаниеПрограммы); + + ОписаниеОшибок = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеОписаниеОшибок(); + + ПараметрыВыполнения = Новый Структура; + ПараметрыВыполнения.Вставить("ОписанияПрограмм", ОписанияПрограмм); + ПараметрыВыполнения.Вставить("Индекс", -1); + ПараметрыВыполнения.Вставить("ПоказатьОшибку", Неопределено); + ПараметрыВыполнения.Вставить("ОписаниеОшибок", ОписаниеОшибок); + ПараметрыВыполнения.Вставить("АлгоритмПодписи", ""); + ПараметрыВыполнения.Вставить("ИнтерактивныйРежим", Ложь); + ПараметрыВыполнения.Вставить("ЭтоLinux", ЭлектроннаяПодписьСлужебныйКлиент.ТребуетсяПутьКПрограмме()); + ПараметрыВыполнения.Вставить("Менеджер", Неопределено); + ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения( + "ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПродолжение", ЭтотОбъект, Контекст)); + + Контекст.Вставить("ПараметрыВыполнения", Новый Структура("ОписаниеОшибок", ОписаниеОшибок)); + + ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографииЦиклНачало(ПараметрыВыполнения); + +КонецПроцедуры + +// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы. +&НаКлиенте +Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПродолжение(Менеджер, Контекст) Экспорт + + ОписаниеПрограммы = Контекст.ОписаниеПрограммы; + Ошибки = Контекст.ПараметрыВыполнения.ОписаниеОшибок.Ошибки; // Массив Из см. ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки + + Если Менеджер <> Неопределено Тогда + ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, НСтр("ru = 'Установлена на компьютере.'")); + ОбновитьЗначение(ОписаниеПрограммы.Подробнее, ""); + ОбновитьЗначение(ОписаниеПрограммы.Установлена, Истина); + ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст); + Возврат; + КонецЕсли; + + Для каждого Ошибка Из Ошибки Цикл + Прервать; + КонецЦикла; + + Если Ошибка.НеУказанПуть Тогда + ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, Ошибка.Описание); + ОбновитьЗначение(ОписаниеПрограммы.Подробнее, НСтр("ru = 'Подробнее'") + "..."); + ОбновитьЗначение(ОписаниеПрограммы.Установлена, ""); + Иначе + ТекстОшибки = НСтр("ru = 'Не установлена на компьютере.'") + " " + Ошибка.Описание; + Если Ошибка.КАдминистратору И Не ЭтоПолноправныйПользователь Тогда + ТекстОшибки = ТекстОшибки + " " + НСтр("ru = 'Обратитесь к администратору.'"); + КонецЕсли; + ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, ТекстОшибки); + ОбновитьЗначение(ОписаниеПрограммы.Подробнее, НСтр("ru = 'Подробнее'") + "..."); + ОбновитьЗначение(ОписаниеПрограммы.Установлена, Ложь); + КонецЕсли; + + ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьLinuxПутьКПрограмме() + + ТекущиеДанные = Элементы.Программы.ТекущиеДанные; + + ПутьПоУмолчанию = ""; + Если ТекущиеДанные <> Неопределено Тогда + Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка); + Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор); + Если Строки.Количество() > 0 Тогда + ПутьПоУмолчанию = Строки[0].Путь; + КонецЕсли; + КонецЕсли; + + Элементы.ПрограммыLinuxПутьКПрограмме.КнопкаВыпадающегоСписка = ЗначениеЗаполнено(ПутьПоУмолчанию); + Элементы.ПрограммыLinuxПутьКПрограмме.ПодсказкаВвода = ПутьПоУмолчанию; + + СписокВыбораПутей = Элементы.ПрограммыLinuxПутьКПрограмме.СписокВыбора; + СписокВыбораПутей.Очистить(); + Если ЗначениеЗаполнено(ПутьПоУмолчанию) Тогда + Если ОбщегоНазначенияКлиент.ЭтоLinuxКлиент() Тогда + СписокВыбораПутей.Добавить("ПутьLinux", НСтр("ru = 'Стандартный путь для Linux'")); + Иначе + СписокВыбораПутей.Добавить("ПутьMac", НСтр("ru = 'Стандартный путь для Mac OS'")); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьВидимостьГруппаВебКлиентРасширениеНеУстановлено(Знач ВидимостьЭлемента) + + Элементы.ГруппаВебКлиентРасширениеНеУстановлено.Видимость = ВидимостьЭлемента; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииСоставаИлиНастроекПрограмм() + + ЗаполнитьПрограммыИНастройки(); + + ОпределитьУстановленныеПрограммы(); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПрограммыИНастройки(ОбновитьПовтИсп = Ложь) + + Элементы.Сертификаты.Обновить(); + + Если ОбновитьПовтИсп Тогда + ОбновитьПовторноИспользуемыеЗначения(); + КонецЕсли; + + ПерсональныеНастройки = ЭлектроннаяПодпись.ПерсональныеНастройки(); + + ДействияПриСохраненииСЭП = ПерсональныеНастройки.ДействияПриСохраненииСЭП; + РасширениеДляЗашифрованныхФайлов = ПерсональныеНастройки.РасширениеДляЗашифрованныхФайлов; + РасширениеДляФайловПодписи = ПерсональныеНастройки.РасширениеДляФайловПодписи; + ПутиКПрограммам = ПерсональныеНастройки.ПутиКПрограммамЭлектроннойПодписиИШифрования; + СохранятьСертификатВместеСПодписью = ПерсональныеНастройки.СохранятьСертификатВместеСПодписью; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Программы.Ссылка, + | Программы.Наименование КАК Наименование, + | Программы.ИмяПрограммы, + | Программы.ТипПрограммы, + | Программы.АлгоритмПодписи, + | Программы.АлгоритмХеширования, + | Программы.АлгоритмШифрования, + | Программы.ПометкаУдаления КАК ПометкаУдаления, + | Программы.ЭтоПрограммаОблачногоСервиса + |ИЗ + | Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК Программы + |ГДЕ + | НЕ Программы.ЭтоПрограммаОблачногоСервиса + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | Программы.Ссылка, + | Программы.Наименование, + | Программы.ИмяПрограммы, + | Программы.ТипПрограммы, + | Программы.АлгоритмПодписи, + | Программы.АлгоритмХеширования, + | Программы.АлгоритмШифрования, + | Программы.ПометкаУдаления, + | Программы.ЭтоПрограммаОблачногоСервиса + |ИЗ + | Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК Программы + |ГДЕ + | Программы.ЭтоПрограммаОблачногоСервиса + | И &ИспользоватьЭлектроннуюПодписьВМоделиСервиса + | + |УПОРЯДОЧИТЬ ПО + | Наименование"; + + Запрос.УстановитьПараметр("ИспользоватьЭлектроннуюПодписьВМоделиСервиса", + ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса()); + + Выборка = Запрос.Выполнить().Выбрать(); + + ОбработанныеСтроки = Новый Соответствие; + Индекс = 0; + + Пока Выборка.Следующий() Цикл + Если Не Пользователи.ЭтоПолноправныйПользователь() И Выборка.ПометкаУдаления Тогда + Продолжить; + КонецЕсли; + Строки = Программы.НайтиСтроки(Новый Структура("Ссылка", Выборка.Ссылка)); + Если Строки.Количество() = 0 Тогда + Если Программы.Количество()-1 < Индекс Тогда + Строка = Программы.Добавить(); + Иначе + Строка = Программы.Вставить(Индекс); + КонецЕсли; + Иначе + Строка = Строки[0]; + ИндексСтроки = Программы.Индекс(Строка); + Если ИндексСтроки <> Индекс Тогда + Программы.Сдвинуть(ИндексСтроки, Индекс - ИндексСтроки); + КонецЕсли; + КонецЕсли; + // Обновление только измененных значений, чтобы таблица формы не обновлялась лишний раз. + ОбновитьЗначение(Строка.Ссылка, Выборка.Ссылка); + ОбновитьЗначение(Строка.ПометкаУдаления, Выборка.ПометкаУдаления); + ОбновитьЗначение(Строка.Наименование, Выборка.Наименование); + ОбновитьЗначение(Строка.ИмяПрограммы, Выборка.ИмяПрограммы); + ОбновитьЗначение(Строка.ТипПрограммы, Выборка.ТипПрограммы); + ОбновитьЗначение(Строка.АлгоритмПодписи, Выборка.АлгоритмПодписи); + ОбновитьЗначение(Строка.АлгоритмХеширования, Выборка.АлгоритмХеширования); + ОбновитьЗначение(Строка.АлгоритмШифрования, Выборка.АлгоритмШифрования); + ОбновитьЗначение(Строка.LinuxПутьКПрограмме, ПутиКПрограммам.Получить(Выборка.Ссылка)); + ОбновитьЗначение(Строка.НомерКартинки, ?(Выборка.ПометкаУдаления, 4, 3)); + ОбновитьЗначение(Строка.ЭтоПрограммаОблачногоСервиса, Выборка.ЭтоПрограммаОблачногоСервиса); + Если Строка.ЭтоПрограммаОблачногоСервиса И Не Строка.ПометкаУдаления Тогда + ОбновитьЗначение(Строка.РезультатПроверки, НСтр("ru = 'Доступен.'")); + ОбновитьЗначение(Строка.Установлена, Истина); + КонецЕсли; + + ОбработанныеСтроки.Вставить(Строка, Истина); + Индекс = Индекс + 1; + КонецЦикла; + + Индекс = Программы.Количество()-1; + Пока Индекс >=0 Цикл + Строка = Программы.Получить(Индекс); + Если ОбработанныеСтроки.Получить(Строка) = Неопределено Тогда + Программы.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс-1; + КонецЦикла; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьЗначение(СтароеЗначение, НовоеЗначение) + + Если СтароеЗначение <> НовоеЗначение Тогда + СтароеЗначение = НовоеЗначение; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьНастройки() + + СохраняемыеНастройки = Новый Структура; + СохраняемыеНастройки.Вставить("ДействияПриСохраненииСЭП", ДействияПриСохраненииСЭП); + СохраняемыеНастройки.Вставить("РасширениеДляЗашифрованныхФайлов", РасширениеДляЗашифрованныхФайлов); + СохраняемыеНастройки.Вставить("РасширениеДляФайловПодписи", РасширениеДляФайловПодписи); + СохраняемыеНастройки.Вставить("СохранятьСертификатВместеСПодписью", СохранятьСертификатВместеСПодписью); + СохранитьНастройкиНаСервере(СохраняемыеНастройки); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СохранитьНастройкиНаСервере(СохраняемыеНастройки) + + ПерсональныеНастройки = ЭлектроннаяПодпись.ПерсональныеНастройки(); + ЗаполнитьЗначенияСвойств(ПерсональныеНастройки, СохраняемыеНастройки); + ЭлектроннаяПодписьСлужебный.СохранитьПерсональныеНастройки(ПерсональныеНастройки); + + // Требуется для обновления персональных настроек на клиенте. + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СохранитьПутьLinuxНаСервере(Программа, ПутьLinux) + + ПерсональныеНастройки = ЭлектроннаяПодпись.ПерсональныеНастройки(); + ПерсональныеНастройки.ПутиКПрограммамЭлектроннойПодписиИШифрования.Вставить(Программа, ПутьLinux); + ЭлектроннаяПодписьСлужебный.СохранитьПерсональныеНастройки(ПерсональныеНастройки); + + // Требуется для обновления персональных настроек на клиенте. + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьПроверкуПодписейНаСервере(ПроверятьПодписиНаСервере) + + Если Не ПравоДоступа("Изменение", Метаданные.Константы.ПроверятьЭлектронныеПодписиНаСервере) + Или Константы.ПроверятьЭлектронныеПодписиНаСервере.Получить() = ПроверятьПодписиНаСервере Тогда + + Возврат; + КонецЕсли; + + Константы.ПроверятьЭлектронныеПодписиНаСервере.Установить(ПроверятьПодписиНаСервере); + + // Требуется для обновления общих настроек на сервере и на клиенте. + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьПодписаниеНаСервере(ПодписыватьНаСервере) + + Если Не ПравоДоступа("Изменение", Метаданные.Константы.СоздаватьЭлектронныеПодписиНаСервере) + Или Константы.СоздаватьЭлектронныеПодписиНаСервере.Получить() = ПодписыватьНаСервере Тогда + + Возврат; + КонецЕсли; + + Константы.СоздаватьЭлектронныеПодписиНаСервере.Установить(ПодписыватьНаСервере); + + // Требуется для обновления общих настроек на сервере и на клиенте. + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьПутьКПрограмме() + + ТекущиеДанные = Элементы.Программы.ТекущиеДанные; + Если БезПраваСохранениеДанныхПользователя Тогда + ТекущиеДанные.LinuxПутьКПрограмме = LinuxПутьКТекущейПрограмме; + ПоказатьПредупреждение(, + НСтр("ru = 'Невозможно сохранить путь к программе. Отсутствует право сохранения данных. + |Обратитесь к администратору.'")); + Иначе + СохранитьПутьLinuxНаСервере(ТекущиеДанные.Ссылка, ТекущиеДанные.LinuxПутьКПрограмме); + ОпределитьУстановленныеПрограммы(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..3233cbab --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\320\276\320\271\320\237\320\276\320\264\320\277\320\270\321\201\320\270\320\230\320\250\320\270\321\204\321\200\320\276\320\262\320\260\320\275\320\270\321\217.mdo" @@ -0,0 +1,16 @@ + + + НастройкиЭлектроннойПодписиИШифрования + + ru + Настройки электронной подписи и шифрования + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/Form.form" new file mode 100644 index 00000000..8b88951d --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/Form.form" @@ -0,0 +1,156 @@ + + + + НовыйПароль + 8 + + <key>ru</key> + <value>Запомните новый пароль или скопируйте в буфер обмена</value> + + true + true + + true + + + + НовыйПароль + + + true + Top + + НовыйПарольРасширеннаяПодсказка + 10 + true + true + + true + + Label + true + true + + Left + + + + НовыйПарольКонтекстноеМеню + 9 + true + true + + true + + true + + InputField + true + Center + Enter + true + Left + true + + true + true + true + true + true + true + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаЗакрыть + 3 + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 4 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + true + UserCmds + Auto + + true + true + + true + + Center + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + CustomizeForm + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + НовыйПароль + + <key>ru</key> + <value>Новый пароль</value> + + 1 + + String + + + + true + + + true + + + + ДляВнешнегоПользователя + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/Module.bsl" new file mode 100644 index 00000000..f37da276 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/Module.bsl" @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + НовыйПароль = Пользователи.СоздатьПароль(8, Истина, ?(Параметры.ДляВнешнегоПользователя, + "ДляВнешнихПользователей", "ДляПользователей")); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.ФормаЗакрыть.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214.mdo" new file mode 100644 index 00000000..de6129cb --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214/\320\235\320\276\320\262\321\213\320\271\320\237\320\260\321\200\320\276\320\273\321\214.mdo" @@ -0,0 +1,10 @@ + + + НовыйПароль + + ru + Новый пароль + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Form.form" new file mode 100644 index 00000000..43b17fb0 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Form.form" @@ -0,0 +1,961 @@ + + + + <key>ru</key> + <value>Что нового в конфигурации</value> + + + ОтложенноеОбновление + 24 + + ОтложенноеОбновлениеДанных + 25 + + <key>ru</key> + <value>Выполняются дополнительные процедуры обработки данных</value> + + true + true + + true + + + ОтложенноеОбновлениеДанныхExtendedTooltip + 29 + + <key>ru</key> + <value>Работа в программе временно ограничена, так как еще не завершен переход на новую версию.</value> + + true + true + + true + + Label + true + + Left + + + Hyperlink + Form.Command.ОтложенноеОбновлениеДанных + Auto + true + UserCmds + + CommonPicture.Предупреждение + + ShowBottom + Auto + + true + true + + true + + + <key>ru</key> + <value>Отложенное обновление</value> + + + ОтложенноеОбновлениеExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + + ГруппаОтключеныРегламентныеЗадания + 53 + + КартинкаОтключеныРегламентныеЗадания + 58 + true + true + + true + + + КартинкаОтключеныРегламентныеЗаданияРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + + КартинкаОтключеныРегламентныеЗаданияКонтекстноеМеню + 59 + true + true + + true + + true + + true + true + + + CommonPicture.Информация + + + + + ОтключеныРегламентныеЗадания + 55 + + <key>ru</key> + <value>При выполнения обновления была установлена блокировка выполнения регламентных заданий. +Для разблокировки требуется <link перезапустить>перезапустить</> программу.</value> + + true + true + + true + + + ОтключеныРегламентныеЗаданияРасширеннаяПодсказка + 57 + true + true + + true + + Label + true + true + + Left + + + + ОтключеныРегламентныеЗаданияКонтекстноеМеню + 56 + true + true + + true + + true + + true + Label + true + + + URLProcessing + ОтключеныРегламентныеЗаданияОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Отключены регламентные задания</value> + + + ГруппаОтключеныРегламентныеЗаданияРасширеннаяПодсказка + 54 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ОписаниеОбновлений + 1 + + <key>ru</key> + <value>Описание обновлений</value> + + true + true + + true + + + + ОписаниеОбновлений + + + true + None + + ОписаниеОбновленийExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеОбновленийКонтекстноеМеню + 2 + true + true + + true + + true + + SpreadsheetDocumentField + Enter + true + Left + true + + + Selection + ОписаниеОбновленийВыбор + + 80 + true + 20 + true + true + true + Special + ScrollAlways + ScrollAlways + Auto + true + + + + Группа + 10 + + АдресФормыВПрограмме + 11 + + <key>ru</key> + <value>Описание изменений также можно открыть из группы "Информация" раздела "Главное".</value> + + true + true + + true + + + АдресФормыВПрограммеExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + АдресФормыВПрограммеКонтекстноеМеню + 12 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + Top + + + + ГруппаТехническаяИнформацияИЗакрыть + 23 + + ТехническаяИнформацияОРезультатахОбновления + 8 + + <key>ru</key> + <value>Техническая информация об обновлении</value> + + true + true + + true + + Button + + ТехническаяИнформацияОРезультатахОбновленияExtendedTooltip + 42 + + <key>ru</key> + <value>Техническая информация из журнала регистрации для обращения в службу технической поддержки.</value> + + true + true + + true + + Label + true + true + + Left + + + + ТехническаяИнформацияОРезультатахОбновленияКонтекстноеМеню + 9 + true + true + + true + + true + + Label + true + false + Right + + + Click + ПоказатьСведенияОРезультатахОбновленияНажатие + + true + Right + + + + КоманднаяПанельФормы + 22 + + Закрыть + 3 + true + true + + true + + false + + ЗакрытьExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель формы</value> + + + КоманднаяПанельФормыExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Техническая информация и закрыть</value> + + false + Right + + ГруппаТехническаяИнформацияИЗакрытьExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа</value> + + + ГруппаExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + Top + + ФормаКоманднаяПанель + -1 + + Найти + 14 + + <key>ru</key> + <value>Найти...</value> + + true + true + + true + + + НайтиExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ОписаниеОбновлений.StandardCommand.Find + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + РазвернутьВсеГруппы + 21 + true + true + + true + + + РазвернутьВсеГруппыExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ОписаниеОбновлений.StandardCommand.ExpandAllGroups + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ОписаниеОбновленийСвернутьВсеГруппы + 45 + true + true + + true + + + ОписаниеОбновленийСвернутьВсеГруппыРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ОписаниеОбновлений.StandardCommand.CollapseAllGroups + Auto + true + true + UserCmds + Auto + + + ОписаниеОбновленийГруппа + 51 + + Сохранить + 7 + + <key>ru</key> + <value>Сохранить как...</value> + + true + true + + true + + + СохранитьExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ОписаниеОбновлений.StandardCommand.Save + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Печать + 15 + true + true + + true + + + ПечатьExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ОписаниеОбновлений.StandardCommand.Print + Auto + true + true + UserCmds + + StdPicture.Print + + Auto + InCommandBarAndInAdditionalSubmenu + + + ОписаниеОбновленийПредварительныйПросмотр + 47 + true + true + + true + + + ОписаниеОбновленийПредварительныйПросмотрРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ОписаниеОбновлений.StandardCommand.Preview + Auto + true + true + UserCmds + Auto + + + ОписаниеОбновленийПараметрыСтраницы + 49 + true + true + + true + + + ОписаниеОбновленийПараметрыСтраницыРасширеннаяПодсказка + 50 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ОписаниеОбновлений.StandardCommand.PageSetup + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Описание обновлений группа</value> + + + ОписаниеОбновленийГруппаРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + + + + Справка + 4 + true + true + + true + + false + + СправкаExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + + ИзменитьФорму + 19 + true + true + + true + + + ИзменитьФормуExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + Vertical + true + true + true + UseIfNecessary + true + true + + ОписаниеОбновлений + + <key>ru</key> + <value>Описание обновлений</value> + + 2 + + SpreadsheetDocument + + + true + + + true + + + + + ВремяНачалаОбновления + 3 + + Date + + + + true + + + true + + + + ВремяОкончанияОбновления + 4 + + Date + + + + true + + + true + + + + КлиентСервернаяБаза + 1 + + Boolean + + + true + + + true + + + + ОтложенноеОбновлениеДанных + + <key>ru</key> + <value>Выполняются дополнительные процедуры обработки данных</value> + + 1 + + true + + + + ОтложенноеОбновлениеДанных + + + DontUse + + + ВремяНачалаОбновления + + Date + + + + + ВремяОкончанияОбновления + + Date + + + + + ПоказыватьТолькоИзменения + + Boolean + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Help/ru.html" new file mode 100644 index 00000000..8ddbf4de --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Help/ru.html" @@ -0,0 +1,13 @@ + +

        Описание обновлений включает в себя список изменений в последней версии программы, а также историю изменений в предыдущих версиях.

        +

        Выводится однократно после завершения обновления на новую версию. Описание обновлений можно просмотреть позднее по команде Описание изменений программы в панели Информация в разделе Главное.

        +

        Доступные действия

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

        Информация о ходе обновления версии ИБ

        +
        • Если в программе после обновления версии еще проводится обработка данных, то для всех пользователей выводится предупреждение  Выполняются дополнительные процедуры обработки данных. В это время работа в программе временно ограничена, так как еще не завершен переход на новую версию.

        Возможности для администратора

        +
        • Администратор может ознакомиться со списком дополнительных инструкций, которые рекомендуется выполнить после обязательной части процесса обновления ИБ. Перейти к выполнению инструкций можно с помощью ссылок, расположенных в тексте описания новой версии. +
        • По ссылке Выполняются дополнительные процедуры обработки данных перейдите, для того чтобы узнать о ходе дополнительной обработки данных. +
        • Перейдите по ссылке Техническая информация о результатах обновления, для того чтобы просмотреть события в журнале регистрации, возникшие в процессе обновления.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Module.bsl" new file mode 100644 index 00000000..d058ea7e --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Module.bsl" @@ -0,0 +1,214 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + НастройкиПодсистемы = ОбновлениеИнформационнойБазыСлужебный.НастройкиПодсистемы(); + АдресФормыВПрограмме = НастройкиПодсистемы.РасположениеОписанияИзмененийПрограммы; + + Если ЗначениеЗаполнено(АдресФормыВПрограмме) Тогда + Элементы.АдресФормыВПрограмме.Заголовок = АдресФормыВПрограмме; + КонецЕсли; + + Если Не Параметры.ПоказыватьТолькоИзменения Тогда + Элементы.АдресФормыВПрограмме.Видимость = Ложь; + КонецЕсли; + + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Что нового в конфигурации %1'"), Метаданные.Синоним); + + Если ЗначениеЗаполнено(Параметры.ВремяНачалаОбновления) Тогда + ВремяНачалаОбновления = Параметры.ВремяНачалаОбновления; + ВремяОкончанияОбновления = Параметры.ВремяОкончанияОбновления; + КонецЕсли; + + Разделы = ОбновлениеИнформационнойБазыСлужебный.НеотображавшиесяРазделыОписанияИзменений(); + ПоследняяВерсия = ОбновлениеИнформационнойБазыСлужебный.ПоследняяВерсияОтображенияИзмененийСистемы(); + + Если Разделы.Количество() = 0 Тогда + ДокументОписаниеОбновлений = Метаданные.ОбщиеМакеты.Найти("ОписаниеИзмененийСистемы"); + Если ДокументОписаниеОбновлений <> Неопределено + И (ПоследняяВерсия = Неопределено + Или Не Параметры.ПоказыватьТолькоИзменения) Тогда + ВсеРазделы = ОбновлениеИнформационнойБазыСлужебный.РазделыОписанияИзменений(); + Если ТипЗнч(ВсеРазделы) = Тип("СписокЗначений") + И ВсеРазделы.Количество() <> 0 Тогда + Для Каждого Элемент Из ВсеРазделы Цикл + Разделы.Добавить(Элемент.Представление); + КонецЦикла; + ДокументОписаниеОбновлений = ОбновлениеИнформационнойБазыСлужебный.ДокументОписаниеОбновлений(Разделы); + Иначе + ДокументОписаниеОбновлений = ПолучитьОбщийМакет(ДокументОписаниеОбновлений); + КонецЕсли; + Иначе + ДокументОписаниеОбновлений = Новый ТабличныйДокумент(); + КонецЕсли; + Иначе + ДокументОписаниеОбновлений = ОбновлениеИнформационнойБазыСлужебный.ДокументОписаниеОбновлений(Разделы); + КонецЕсли; + + Если ДокументОписаниеОбновлений.ВысотаТаблицы = 0 Тогда + Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Конфигурация успешно обновлена на версию %1'"), Метаданные.Версия); + ДокументОписаниеОбновлений.Область("R1C1:R1C1").Текст = Текст; + КонецЕсли; + + ОписанияПодсистем = СтандартныеПодсистемыПовтИсп.ОписанияПодсистем(); + Для каждого ИмяПодсистемы Из ОписанияПодсистем.Порядок Цикл + ОписаниеПодсистемы = ОписанияПодсистем.ПоИменам.Получить(ИмяПодсистемы); + Если НЕ ЗначениеЗаполнено(ОписаниеПодсистемы.ОсновнойСерверныйМодуль) Тогда + Продолжить; + КонецЕсли; + Модуль = ОбщегоНазначения.ОбщийМодуль(ОписаниеПодсистемы.ОсновнойСерверныйМодуль); + Модуль.ПриПодготовкеМакетаОписанияОбновлений(ДокументОписаниеОбновлений); + КонецЦикла; + ОбновлениеИнформационнойБазыПереопределяемый.ПриПодготовкеМакетаОписанияОбновлений(ДокументОписаниеОбновлений); + + ОписаниеОбновлений.Очистить(); + ОписаниеОбновлений.Вывести(ДокументОписаниеОбновлений); + + СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); + ВремяНачалаОбновления = СведенияОбОбновлении.ВремяНачалаОбновления; + ВремяОкончанияОбновления = СведенияОбОбновлении.ВремяОкончанияОбновления; + + Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() + Или СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно <> Неопределено + Или СведенияОбОбновлении.ДеревоОбработчиков <> Неопределено + И СведенияОбОбновлении.ДеревоОбработчиков.Строки.Количество() = 0 Тогда + Элементы.ОтложенноеОбновление.Видимость = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + ЗаголовокСообщения = НСтр("ru = 'Необходимо выполнить дополнительные процедуры обработки данных'"); + Элементы.ОтложенноеОбновлениеДанных.Заголовок = ЗаголовокСообщения; + КонецЕсли; + + Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + Элементы.ОтложенноеОбновлениеДанных.Заголовок = + НСтр("ru = 'Не выполнены дополнительные процедуры обработки данных'"); + КонецЕсли; + + Если Не ЗначениеЗаполнено(ВремяНачалаОбновления) И Не ЗначениеЗаполнено(ВремяОкончанияОбновления) Тогда + Элементы.ТехническаяИнформацияОРезультатахОбновления.Видимость = Ложь; + ИначеЕсли Пользователи.ЭтоПолноправныйПользователь() И Не ОбщегоНазначения.РазделениеВключено() Тогда + Элементы.ТехническаяИнформацияОРезультатахОбновления.Видимость = Истина; + Иначе + Элементы.ТехническаяИнформацияОРезультатахОбновления.Видимость = Ложь; + КонецЕсли; + + КлиентСервернаяБаза = Не ОбщегоНазначения.ИнформационнаяБазаФайловая(); + + // Отображение информации о блокировке регламентных заданий. + Если Не КлиентСервернаяБаза + И Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + ПараметрЗапускаКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска"); + ВыполненоОтключениеРегламентныхЗаданий = СтрНайти(ПараметрЗапускаКлиента, "РегламентныеЗаданияОтключены") <> 0; + Если Не ВыполненоОтключениеРегламентныхЗаданий Тогда + Элементы.ГруппаОтключеныРегламентныеЗадания.Видимость = Ложь; + КонецЕсли; + Иначе + Элементы.ГруппаОтключеныРегламентныеЗадания.Видимость = Ложь; + КонецЕсли; + + Элементы.ОписаниеОбновлений.ГоризонтальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.НеИспользовать; + + ОбновлениеИнформационнойБазыСлужебный.УстановитьФлагОтображенияОписанийПоТекущуюВерсию(); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.КоманднаяПанельФормы.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если КлиентСервернаяБаза Тогда + ПодключитьОбработчикОжидания("ОбновитьСтатусОтложенногоОбновления", 60); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ОписаниеОбновленийВыбор(Элемент, Область, СтандартнаяОбработка) + + Если СтрНайти(Область.Текст, "http://") = 1 Или СтрНайти(Область.Текст, "https://") = 1 Тогда + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(Область.Текст); + КонецЕсли; + + ОбновлениеИнформационнойБазыКлиентПереопределяемый.ПриНажатииНаГиперссылкуВДокументеОписанияОбновлений(Область); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьСведенияОРезультатахОбновленияНажатие(Элемент) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПоказатьОшибкиИПредупреждения", Истина); + ПараметрыФормы.Вставить("ДатаНачала", ВремяНачалаОбновления); + ПараметрыФормы.Вставить("ДатаОкончания", ВремяОкончанияОбновления); + + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", ПараметрыФормы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОтложенноеОбновлениеДанных(Команда) + ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОтложенногоОбновленияИБ"); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбновитьСтатусОтложенногоОбновления() + + ОбновитьСтатусОтложенногоОбновленияНаСервере(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСтатусОтложенногоОбновленияНаСервере() + + СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); + Если СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления <> Неопределено Тогда + Элементы.ОтложенноеОбновление.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтключеныРегламентныеЗаданияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Оповещение = Новый ОписаниеОповещения("ОтключеныРегламентныеЗаданияОбработкаНавигационнойСсылкиЗавершение", ЭтотОбъект); + ТекстВопроса = НСтр("ru = 'Перезапустить программу?'"); + ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет); +КонецПроцедуры + +&НаКлиенте +Процедура ОтключеныРегламентныеЗаданияОбработкаНавигационнойСсылкиЗавершение(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = КодВозвратаДиалога.Да Тогда + НовыйПараметрЗапуска = СтрЗаменить(ПараметрЗапуска, "РегламентныеЗаданияОтключены", ""); + НовыйПараметрЗапуска = СтрЗаменить(НовыйПараметрЗапуска, "ЗапуститьОбновлениеИнформационнойБазы", ""); + НовыйПараметрЗапуска = "/C """ + НовыйПараметрЗапуска + """"; + ПрекратитьРаботуСистемы(Истина, НовыйПараметрЗапуска); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" new file mode 100644 index 00000000..7211d145 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" @@ -0,0 +1,17 @@ + + + ОписаниеИзмененийПрограммы + + ru + Описание изменений программы + + true + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/Form.form" new file mode 100644 index 00000000..3b98ed05 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/Form.form" @@ -0,0 +1,1162 @@ + + + + <key>ru</key> + <value>Прекращение синхронизации данных</value> + + + ПанельОсновная + 1 + + Начало + 14 + + Группа7 + 15 + + Декорация3 + 16 + true + true + + true + + + Декорация3ExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню + 17 + true + true + + true + + true + + 6 + true + 3 + true + + + CommonPicture.Предупреждение32 + + + + + Декорация1 + 18 + + <key>ru</key> + <value>Синхронизация с автономным рабочим местом будет прекращена +без возможности восстановления. +Убедитесь, что все данные из автономного рабочего места +перенесены в приложение в Интернете.</value> + + true + true + + true + + + Декорация1ExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + Декорация1КонтекстноеМеню + 19 + true + true + + true + + true + + Label + true + + Left + Center + + + true + true + + true + + + Группа7ExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Center + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Начало</value> + + true + + НачалоExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Ожидание + 8 + + Группа8 + 9 + + Декорация4 + 10 + true + true + + true + + + Декорация4ExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + Декорация4КонтекстноеМеню + 11 + true + true + + true + + true + + 6 + true + 3 + true + + + CommonPicture.ДлительнаяОперация48 + + + + + Декорация5 + 12 + + <key>ru</key> + <value>Отключение автономного рабочего места. +Пожалуйста, подождите...</value> + + true + true + + true + + + Декорация5ExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + Декорация5КонтекстноеМеню + 13 + true + true + + true + + true + + Label + 3 + true + + Left + Center + + + true + true + + true + + + Группа8ExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Center + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Ожидание</value> + + + ОжиданиеExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + Завершение + 2 + + Группа9 + 3 + + Декорация6 + 4 + true + true + + true + + + Декорация6ExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + Декорация6КонтекстноеМеню + 5 + true + true + + true + + true + + 6 + true + 3 + true + + + CommonPicture.Информация32 + + + + + Декорация2 + 6 + + <key>ru</key> + <value>Синхронизация с автономным рабочим местом прекращена.</value> + + true + true + + true + + + Декорация2ExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + Декорация2КонтекстноеМеню + 7 + true + true + + true + + true + + Label + true + + Left + Center + + + true + true + + true + + + Группа9ExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Center + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Завершение</value> + + + ЗавершениеExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + true + + ПанельОсновнаяExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ПанельНавигации + 20 + + СтраницаНавигацииНачало + 27 + + Группа5 + 28 + + ПрекратитьСинхронизациюДанных + 29 + true + true + + true + + + ПрекратитьСинхронизациюДанныхExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПрекратитьСинхронизациюДанных + Auto + true + true + true + UserCmds + Auto + + + Отменить + 30 + true + true + + true + + + ОтменитьExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отменить + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Группа5ExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница навигации начало</value> + + + СтраницаНавигацииНачалоExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаНавигацииОжидание + 21 + + Группа6 + 22 + + Закрыть + 23 + true + + true + + + ЗакрытьExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Закрыть + Auto + true + true + UserCmds + Auto + + true + + true + + true + + Группа6ExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + + true + + + <key>ru</key> + <value>Страница навигации ожидание</value> + + true + true + + СтраницаНавигацииОжиданиеExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаНавигацииОкончание + 24 + + Группа14 + 25 + + Закрыть1 + 26 + true + true + + true + + + Закрыть1ExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Закрыть + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + Группа14ExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница навигации окончание</value> + + true + + СтраницаНавигацииОкончаниеExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + ПанельНавигацииExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + UseIfNecessary + true + true + + ТаблицаПереходов + 1 + + ValueTable + + + true + + + true + + + ПорядковыйНомерПерехода + 1 + + Number + + 3 + true + + + + true + + + true + + + + ИмяОсновнойСтраницы + 2 + + String + + + + true + + + true + + + + ИмяСтраницыДекорации + 3 + + String + + + + true + + + true + + + + ИмяСтраницыНавигации + 4 + + String + + + + true + + + true + + + + ИмяОбработчикаПриОткрытии + 5 + + String + + + + true + + + true + + + + ИмяОбработчикаПриПереходеДалее + 6 + + String + + + + true + + + true + + + + ИмяОбработчикаПриПереходеНазад + 7 + + String + + + + true + + + true + + + + ДлительнаяОперация + 8 + + Boolean + + + true + + + true + + + + ИмяОбработчикаДлительнойОперации + 9 + + String + + + + true + + + true + + + + + ПорядковыйНомерПерехода + 2 + + Number + + 3 + true + + + + true + + + true + + + + ДлительнаяОперация + 3 + + Boolean + + + true + + + true + + + + ДлительнаяОперацияЗавершена + 4 + + Boolean + + + true + + + true + + + + ИдентификаторЗадания + 5 + + + true + + + true + + + + СобытиеЖурналаРегистрацииУдалениеАвтономногоРабочегоМеста + 6 + + String + + + + true + + + true + + + + АвтономноеРабочееМесто + 7 + + ExchangePlanRef + + + true + + + true + + + + ПараметрыОбработчикаОжидания + 8 + + + true + + + true + + + + Закрыть + + <key>ru</key> + <value>Закрыть</value> + + 1 + + ru + Закрыть + + + true + + + + ЗакрытьФорму + + + DontUse + + + Отменить + + <key>ru</key> + <value>Отменить</value> + + 2 + + ru + Отменить + + + true + + + + Отменить + + + DontUse + + + ПрекратитьСинхронизациюДанных + + <key>ru</key> + <value>Прекратить синхронизацию данных</value> + + 3 + + ru + Прекратить синхронизацию данных + + + true + + + + ПрекратитьСинхронизациюДанных + + + DontUse + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/Module.bsl" new file mode 100644 index 00000000..a01d3b45 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/Module.bsl" @@ -0,0 +1,521 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + АвтономноеРабочееМесто = Параметры.АвтономноеРабочееМесто; + + Если Не ЗначениеЗаполнено(АвтономноеРабочееМесто) Тогда + ВызватьИсключение НСтр("ru = 'Не задано автономное рабочее место.'"); + КонецЕсли; + + СобытиеЖурналаРегистрацииУдалениеАвтономногоРабочегоМеста = АвтономнаяРаботаСлужебный.СобытиеЖурналаРегистрацииУдалениеАвтономногоРабочегоМеста(); + + УстановитьОсновнойСценарий(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + // Позиционируемся на первом шаге помощника + УстановитьПорядковыйНомерПерехода(1); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ПрекратитьСинхронизациюДанных(Команда) + + ПерейтиДалее(); + +КонецПроцедуры + +&НаКлиенте +Процедура Отменить(Команда) + + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму(Команда) + + Закрыть(); + +КонецПроцедуры + +// Обработчики ожидания + +&НаКлиенте +Процедура ОбработчикОжиданияДлительнойОперации() + + Попытка + + Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда + + ДлительнаяОперация = Ложь; + ДлительнаяОперацияЗавершена = Истина; + ПерейтиДалее(); + + Иначе + + ОбменДаннымиКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); + ПодключитьОбработчикОжидания("ОбработчикОжиданияДлительнойОперации", ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина); + + КонецЕсли; + + Исключение + + ЗаписатьОшибкуВЖурналРегистрации( + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииУдалениеАвтономногоРабочегоМеста); + + ДлительнаяОперация = Ложь; + ПерейтиНазад(); + ПоказатьПредупреждение(,НСтр("ru = 'В процессе работы возникли ошибки.'")); + + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Поставляемая часть + +&НаКлиенте +Процедура ИзменитьПорядковыйНомерПерехода(Итератор) + + ОчиститьСообщения(); + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + Итератор); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПорядковыйНомерПерехода(Знач Значение) + + ЭтоПереходДалее = (Значение > ПорядковыйНомерПерехода); + + ПорядковыйНомерПерехода = Значение; + + Если ПорядковыйНомерПерехода < 0 Тогда + + ПорядковыйНомерПерехода = 0; + + КонецЕсли; + + ПорядковыйНомерПереходаПриИзменении(ЭтоПереходДалее); + +КонецПроцедуры + +&НаКлиенте +Процедура ПорядковыйНомерПереходаПриИзменении(Знач ЭтоПереходДалее) + + // Выполняем обработчики событий перехода + ВыполнитьОбработчикиСобытийПерехода(ЭтоПереходДалее); + + // Устанавливаем отображение страниц + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + Элементы.ПанельОсновная.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяОсновнойСтраницы]; + Элементы.ПанельНавигации.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяСтраницыНавигации]; + + // Устанавливаем текущую кнопку по умолчанию + КнопкаДалее = ПолучитьКнопкуФормыПоИмениКоманды(Элементы.ПанельНавигации.ТекущаяСтраница, "ПрекратитьСинхронизациюДанных"); + + Если КнопкаДалее <> Неопределено Тогда + + КнопкаДалее.КнопкаПоУмолчанию = Истина; + + Иначе + + КнопкаГотово = ПолучитьКнопкуФормыПоИмениКоманды(Элементы.ПанельНавигации.ТекущаяСтраница, "Закрыть"); + + Если КнопкаГотово <> Неопределено Тогда + + КнопкаГотово.КнопкаПоУмолчанию = Истина; + + КонецЕсли; + + КонецЕсли; + + Если ЭтоПереходДалее И СтрокаПереходаТекущая.ДлительнаяОперация Тогда + + ПодключитьОбработчикОжидания("ВыполнитьОбработчикДлительнойОперации", 0.1, Истина); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработчикиСобытийПерехода(Знач ЭтоПереходДалее) + + // Обработчики событий переходов + Если ЭтоПереходДалее Тогда + + СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - 1)); + + Если СтрокиПерехода.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + СтрокаПерехода = СтрокиПерехода[0]; + + // обработчик ПриПереходеДалее + Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеДалее) + И Не СтрокаПерехода.ДлительнаяОперация Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеДалее); + + Отказ = Ложь; + + ВозвращаемоеЗначение = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + Иначе + + СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода + 1)); + + Если СтрокиПерехода.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + СтрокаПерехода = СтрокиПерехода[0]; + + // обработчик ПриПереходеНазад + Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеНазад) + И Не СтрокаПерехода.ДлительнаяОперация Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеНазад); + + Отказ = Ложь; + + ВозвращаемоеЗначение = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + Если СтрокаПереходаТекущая.ДлительнаяОперация И Не ЭтоПереходДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + Возврат; + КонецЕсли; + + // обработчик ПриОткрытии + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии) Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПропуститьСтраницу, ЭтоПереходДалее)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии); + + Отказ = Ложь; + ПропуститьСтраницу = Ложь; + + ВозвращаемоеЗначение = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + ИначеЕсли ПропуститьСтраницу Тогда + + Если ЭтоПереходДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + Иначе + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработчикДлительнойОперации() + + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + // обработчик ОбработкаДлительнойОперации + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации) Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПерейтиДалее)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации); + + Отказ = Ложь; + ПерейтиДалее = Истина; + + ВозвращаемоеЗначение = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + ИначеЕсли ПерейтиДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + + Иначе + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ТаблицаПереходовНоваяСтрока(ИмяОсновнойСтраницы, ИмяСтраницыНавигации, ИмяСтраницыДекорации = "") + + НоваяСтрока = ТаблицаПереходов.Добавить(); + + НоваяСтрока.ПорядковыйНомерПерехода = ТаблицаПереходов.Количество(); + НоваяСтрока.ИмяОсновнойСтраницы = ИмяОсновнойСтраницы; + НоваяСтрока.ИмяСтраницыДекорации = ИмяСтраницыДекорации; + НоваяСтрока.ИмяСтраницыНавигации = ИмяСтраницыНавигации; + + Возврат НоваяСтрока; + +КонецФункции + +&НаКлиенте +Функция ПолучитьКнопкуФормыПоИмениКоманды(ЭлементФормы, ИмяКоманды) + + Для Каждого Элемент Из ЭлементФормы.ПодчиненныеЭлементы Цикл + + Если ТипЗнч(Элемент) = Тип("ГруппаФормы") Тогда + + ЭлементФормыПоИмениКоманды = ПолучитьКнопкуФормыПоИмениКоманды(Элемент, ИмяКоманды); + + Если ЭлементФормыПоИмениКоманды <> Неопределено Тогда + + Возврат ЭлементФормыПоИмениКоманды; + + КонецЕсли; + + ИначеЕсли ТипЗнч(Элемент) = Тип("КнопкаФормы") + И СтрНайти(Элемент.ИмяКоманды, ИмяКоманды) > 0 Тогда + + Возврат Элемент; + + Иначе + + Продолжить; + + КонецЕсли; + + КонецЦикла; + + Возврат Неопределено; + +КонецФункции + +&НаКлиенте +Процедура ПерейтиДалее() + + ИзменитьПорядковыйНомерПерехода(+1); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиНазад() + + ИзменитьПорядковыйНомерПерехода(-1); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Переопределяемая часть - Служебные процедуры и функции + +&НаСервере +Процедура УдалитьАвтономноеРабочееМесто(Отказ, СообщениеОбОшибке = "") + + КонтекстУдаления = Новый Структура("АвтономноеРабочееМесто", АвтономноеРабочееМесто); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Удаление автономного рабочего места'"); + ПараметрыВыполнения.ЗапуститьНеВФоне = Ложь; + ПараметрыВыполнения.ЗапуститьВФоне = Истина; + + ФоновоеЗадание = ДлительныеОперации.ВыполнитьВФоне( + "АвтономнаяРаботаСлужебный.УдалитьАвтономноеРабочееМесто", + КонтекстУдаления, + ПараметрыВыполнения); + + Если ФоновоеЗадание.Статус = "Выполняется" Тогда + ДлительнаяОперация = Истина; + ИдентификаторЗадания = ФоновоеЗадание.ИдентификаторЗадания; + ИначеЕсли ФоновоеЗадание.Статус = "Выполнено" Тогда + Возврат; + Иначе + Отказ = Истина; + СообщениеОбОшибке = ФоновоеЗадание.КраткоеПредставлениеОшибки; + Если ЗначениеЗаполнено(ФоновоеЗадание.ПодробноеПредставлениеОшибки) Тогда + СообщениеОбОшибке = ФоновоеЗадание.ПодробноеПредставлениеОшибки; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ЗаписатьОшибкуВЖурналРегистрации(СтрокаСообщенияОбОшибке, Событие) + + ЗаписьЖурналаРегистрации(Событие, УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщенияОбОшибке); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Переопределяемая часть - Обработчики событий переходов + +&НаКлиенте +Функция Подключаемый_Ожидание_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + ДлительнаяОперация = Ложь; + ДлительнаяОперацияЗавершена = Ложь; + ИдентификаторЗадания = Неопределено; + + СообщениеОбОшибке = ""; + УдалитьАвтономноеРабочееМесто(Отказ, СообщениеОбОшибке); + + Если Отказ Тогда + + ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При удалении автономного рабочего места возникли ошибки: %1'"), СообщениеОбОшибке)); + + ИначеЕсли Не ДлительнаяОперация Тогда + + Оповестить("Удаление_АвтономноеРабочееМесто"); + + КонецЕсли; + +КонецФункции + +&НаКлиенте +Функция Подключаемый_ОжиданиеДлительнаяОперация_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + Если ДлительнаяОперация Тогда + + ПерейтиДалее = Ложь; + + ОбменДаннымиКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); + + ПодключитьОбработчикОжидания("ОбработчикОжиданияДлительнойОперации", ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина); + + КонецЕсли; + +КонецФункции + +&НаКлиенте +Функция Подключаемый_ОжиданиеДлительнаяОперацияОкончание_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + Если ДлительнаяОперацияЗавершена Тогда + + Оповестить("Удаление_АвтономноеРабочееМесто"); + + КонецЕсли; + +КонецФункции + +&НаСервереБезКонтекста +Функция ЗаданиеВыполнено(ИдентификаторЗадания) + + Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Переопределяемая часть - Инициализация переходов помощника + +&НаСервере +Процедура УстановитьОсновнойСценарий() + + ТаблицаПереходов.Очистить(); + + НовыйПереход = ТаблицаПереходовНоваяСтрока("Начало", "СтраницаНавигацииНачало"); + + НовыйПереход = ТаблицаПереходовНоваяСтрока("Ожидание", "СтраницаНавигацииОжидание"); + НовыйПереход.ДлительнаяОперация = Истина; + НовыйПереход.ИмяОбработчикаДлительнойОперации = "Ожидание_ОбработкаДлительнойОперации"; + + НовыйПереход = ТаблицаПереходовНоваяСтрока("Ожидание", "СтраницаНавигацииОжидание"); + НовыйПереход.ДлительнаяОперация = Истина; + НовыйПереход.ИмяОбработчикаДлительнойОперации = "ОжиданиеДлительнаяОперация_ОбработкаДлительнойОперации"; + + НовыйПереход = ТаблицаПереходовНоваяСтрока("Ожидание", "СтраницаНавигацииОжидание"); + НовыйПереход.ДлительнаяОперация = Истина; + НовыйПереход.ИмяОбработчикаДлительнойОперации = "ОжиданиеДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"; + + НовыйПереход = ТаблицаПереходовНоваяСтрока("Завершение", "СтраницаНавигацииОкончание"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260.mdo" new file mode 100644 index 00000000..bd00082b --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260/\320\236\321\202\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\220\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\263\320\276\320\240\320\260\320\261\320\276\321\207\320\265\320\263\320\276\320\234\320\265\321\201\321\202\320\260.mdo" @@ -0,0 +1,10 @@ + + + ОтключениеАвтономногоРабочегоМеста + + ru + Отключение автономного рабочего места + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Form.form" new file mode 100644 index 00000000..10cf99b4 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Form.form" @@ -0,0 +1,1475 @@ + + + + <key>ru</key> + <value>Отправка SMS на телефон</value> + + + Страницы + 41 + + ПараметрыОтправки + 15 + + ГруппаНомерПолучателя + 128 + + НомераПолучателей + 130 + true + true + + true + + + + НомераПолучателей + + + + НомераПолучателейРасширеннаяПодсказка + 132 + true + true + + true + + Label + true + true + + Left + + + + НомераПолучателейКонтекстноеМеню + 131 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + ru + +79001234567 + + + + true + + true + + + <key>ru</key> + <value>Номер получателя</value> + + + ГруппаНомерПолучателяРасширеннаяПодсказка + 129 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаТекстСообщения + 18 + + ТекстСообщения + 3 + true + true + + true + + + + ТекстСообщения + + + + ТекстСообщенияРасширеннаяПодсказка + 27 + true + true + + true + + Label + true + true + + Left + + + + ТекстСообщенияКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + EditTextChange + ТекстИзменениеТекстаРедактирования + + true + 5 + true + true + true + true + true + true + OnValueChange + + + + ГруппаТранслит + 36 + + ОтправлятьВТранслите + 21 + true + true + + true + + + + ОтправлятьВТранслите + + + Right + + ОтправлятьВТранслитеExtendedTooltip + 28 + true + true + + true + + Label + true + true + + Left + + + + ОтправлятьВТранслитеКонтекстноеМеню + 22 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ДлинаСообщенияСимволов + 38 + true + true + + true + + + + ДлинаСообщенияСимволов + + + + ДлинаСообщенияСимволовРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + + ДлинаСообщенияСимволовКонтекстноеМеню + 39 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Транслит</value> + + + ГруппаТранслитРасширеннаяПодсказка + 37 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаИмяОтправителя + 62 + + ДобавлятьОтправителя + 64 + + <key>ru</key> + <value>Имя отправителя:</value> + + true + true + + true + + + + ДобавлятьОтправителя + + + Right + + OnChange + ДобавлятьОтправителяПриИзменении + + + ДобавлятьОтправителяРасширеннаяПодсказка + 66 + true + true + + true + + Label + true + true + + Left + + + + ДобавлятьОтправителяКонтекстноеМеню + 65 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ИмяОтправителя + 13 + true + + true + + + + ИмяОтправителя + + + None + + ИмяОтправителяExtendedTooltip + 29 + true + true + + true + + Label + true + true + + Left + + + + ИмяОтправителяКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Имя отправителя</value> + + + ГруппаИмяОтправителяРасширеннаяПодсказка + 63 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Текст сообщения</value> + + + ГруппаТекстСообщенияРасширеннаяПодсказка + 26 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Параметры отправки</value> + + + ПараметрыОтправкиExtendedTooltip + 24 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаСтатус + 8 + + ГруппаПроверкаСтатуса + 45 + + ДекорацияАнимация + 51 + true + true + + true + + + ДекорацияАнимацияРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияАнимацияКонтекстноеМеню + 52 + true + true + + true + + true + + true + true + Center + + + CommonPicture.ДлительнаяОперация48 + + + + + СтатусОтправки + 71 + true + true + + true + + + + СтатусОтправки + + + None + + СтатусОтправкиРасширеннаяПодсказка + 73 + true + true + + true + + Label + true + true + + Left + + + + СтатусОтправкиКонтекстноеМеню + 72 + true + true + + true + + true + + LabelField + Center + Center + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Проверка статуса</value> + + + ГруппаПроверкаСтатусаРасширеннаяПодсказка + 46 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница статус</value> + + + СтраницаСтатусРасширеннаяПодсказка + 30 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + СтраницаСообщениеОтправлено + 91 + + ГруппаСообщениеОтправлено + 115 + + КартинкаСообщениеОтправлено + 95 + + <key>ru</key> + <value>Картинка сообщение отправлено</value> + + true + true + + true + + + КартинкаСообщениеОтправленоРасширеннаяПодсказка + 97 + true + true + + true + + Label + true + true + + Left + + + + КартинкаСообщениеОтправленоКонтекстноеМеню + 96 + true + true + + true + + true + + true + true + + + CommonPicture.Успешно32 + + + + + ТекстСообщениеОтправлено + 109 + + <key>ru</key> + <value>Отправка сообщения выполнена.</value> + + true + true + + true + + + ТекстСообщениеОтправленоРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + + ТекстСообщениеОтправленоКонтекстноеМеню + 110 + true + true + + true + + true + + Label + true + true + Center + + Left + + + true + true + + true + + + <key>ru</key> + <value>Сообщение отправлено</value> + + true + + ГруппаСообщениеОтправленоРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПроверкаСтатусаДоставки + 117 + + КартинкаДлительнаяОперация + 119 + + <key>ru</key> + <value>Картинка длительная операция</value> + + true + true + + true + + + КартинкаДлительнаяОперацияРасширеннаяПодсказка + 121 + true + true + + true + + Label + true + true + + Left + + + + КартинкаДлительнаяОперацияКонтекстноеМеню + 120 + true + true + + true + + true + + true + true + + + CommonPicture.НезавершившаясяПроверка + + + + + НадписьВыполняетсяПроверкаСтатусаДоставки + 125 + + <key>ru</key> + <value>Выполняется проверка статуса доставки...</value> + + true + true + + true + + + НадписьВыполняетсяПроверкаСтатусаДоставкиРасширеннаяПодсказка + 127 + true + true + + true + + Label + true + true + + Left + + + + НадписьВыполняетсяПроверкаСтатусаДоставкиКонтекстноеМеню + 126 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Проверка статуса доставки</value> + + Top + + ГруппаПроверкаСтатусаДоставкиРасширеннаяПодсказка + 118 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница сообщение отправлено</value> + + + СтраницаСообщениеОтправленоРасширеннаяПодсказка + 92 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаСообщениеНеОтправлено + 101 + + КартинкаСообщениеНеОтправлено + 103 + + <key>ru</key> + <value>Картинка сообщение не отправлено</value> + + true + true + + true + + + КартинкаСообщениеНеОтправленоРасширеннаяПодсказка + 105 + true + true + + true + + Label + true + true + + Left + + + + КартинкаСообщениеНеОтправленоКонтекстноеМеню + 104 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + ТекстСообщениеНеОтправлено + 112 + + <key>ru</key> + <value>Сообщение не было отправлено (см. журнал регистрации).</value> + + true + true + + true + + + ТекстСообщениеНеОтправленоРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + + ТекстСообщениеНеОтправленоКонтекстноеМеню + 113 + true + true + + true + + true + + Label + true + true + Center + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница сообщение не отправлено</value> + + + ru + Страница сообщение отправлено + + + СтраницаСообщениеНеОтправленоРасширеннаяПодсказка + 102 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 42 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ГруппаКоманднаяПанель + 43 + + НастройкаОтправкиSMSОткрыть + 34 + true + true + + true + + + НастройкаОтправкиSMSОткрытьРасширеннаяПодсказка + 35 + true + true + + true + + Label + true + true + + Left + + + CommonForm.НастройкаОтправкиSMS.StandardCommand.Open + Auto + true + true + UserCmds + Auto + + + Отправить + 5 + + <key>ru</key> + <value>Отправить ></value> + + true + true + + true + + + ОтправитьExtendedTooltip + 23 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отправить + Auto + true + true + true + UserCmds + Auto + + + Закрыть + 79 + true + + true + + + ЗакрытьРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + Auto + true + true + UserCmds + Auto + + + Справка + 81 + true + true + + true + + + СправкаРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + ГруппаКоманднаяПанельРасширеннаяПодсказка + 44 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + Use + true + Vertical + true + true + true + true + true + + НомераПолучателей + + <key>ru</key> + <value>Номера получателей</value> + + 1 + + String + + + + true + + + true + + ShowError + + + ТекстСообщения + + <key>ru</key> + <value>Текст сообщения</value> + + 2 + + String + + + + true + + + true + + ShowError + + + ИдентификаторСообщения + 3 + + String + + + + true + + + true + + + + ИмяОтправителя + + <key>ru</key> + <value>Имя отправителя</value> + + 4 + + String + + 20 + + + + true + + + true + + + ИмяОтправителя + + + + ОтправлятьВТранслите + + <key>ru</key> + <value>Отправлять в транслите</value> + + 5 + + Boolean + + + true + + + true + + + ОтправлятьВТранслите + + + + ДлинаСообщенияСимволов + + <key>ru</key> + <value>Длина сообщения, символов</value> + + 6 + + String + + 6 + + + + true + + + true + + + + ДобавлятьОтправителя + + <key>ru</key> + <value>Добавлять отправителя</value> + + 7 + + Boolean + + + true + + + true + + + + СтатусОтправки + + <key>ru</key> + <value>Статус отправки</value> + + 8 + + String + + + + true + + + true + + + + Отправить + + <key>ru</key> + <value>Отправить</value> + + 1 + + ru + Отправить + + + true + + + + Отправить + + + DontUse + + + НомераПолучателей + + + + Текст + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Help/ru.html" new file mode 100644 index 00000000..92e8b318 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Help/ru.html" @@ -0,0 +1,13 @@ + +

        Предназначена для набора и отправки сообщений SMS.

        +

        Открывается из карточек объектов программы (партнеров, организаций и т.п.) с помощью кнопки  - Отправить SMS.

        +

        Для отправки SMS необходимо заключить договор с одним из операторов сотовой связи (МТС или Билайн), указав в настройках отправки SMS полученные регистрационные данные.

        +

        Заполнение сообщения

        +
        • Напишите Текст сообщения. Максимальная длина текста одного сообщения составляет 140 символов (160 символов в латинице или 70 символов в кириллице). Провайдеры могут поддерживать отправку "длинных SMS" (несколько склеенных между собой SMS). Максимальная длина таких SMS определяется оператором, например, Билайн - 480 символов (в латинице), МТС - 1000 символов (в латинице). Необходимо учитывать, что некоторые модели телефонов не умеют склеивать длинные SMS. +
        • Отправлять в транслите - включите флажок, для того чтобы использовать эту возможность. +
        • В поле Длина сообщения, символов программа подсчитывает количество символов в набранном сообщении. +
        • Включите флажок, для того чтобы включать в сообщение Имя отправителя (заполните соответствующее поле, поддерживается только латиница).

        Проверка настроек отправки SMS

        +
        • Нажмите Настройка отправки SMS, для того чтобы проверить правильность настроек.

        Отправка SMS

        +
        • Если все настроено правильно, для отсылки сообщения нажмите Отправить. Программа сообщает о состоянии отправки.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Module.bsl" new file mode 100644 index 00000000..7d9361c9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/Module.bsl" @@ -0,0 +1,232 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + СтатусОтправки = НСтр("ru = 'Сообщение отправляется...'"); + ТекстСообщения = Параметры.Текст; + + НомераТелефонов = Новый Массив; + Если ТипЗнч(Параметры.НомераПолучателей) = Тип("Массив") Тогда + Для каждого ИнформацияОТелефоне Из Параметры.НомераПолучателей Цикл + НомераТелефонов.Добавить(ИнформацияОТелефоне.Телефон); + КонецЦикла; + ИначеЕсли ТипЗнч(Параметры.НомераПолучателей) = Тип("СписокЗначений") Тогда + Для каждого ИнформацияОТелефоне Из Параметры.НомераПолучателей Цикл + НомераТелефонов.Добавить(ИнформацияОТелефоне.Значение); + КонецЦикла; + Иначе + НомераТелефонов.Добавить(Строка(Параметры.НомераПолучателей)); + КонецЕсли; + + Если НомераТелефонов.Количество() = 0 Тогда + Элементы.ГруппаНомерПолучателя.Видимость = Истина; + КонецЕсли; + + НомераПолучателей = СтрСоединить(НомераТелефонов, ", "); + + ШаблонЗаголовка = НСтр("ru = 'Отправка SMS на телефон %1'"); + Если НомераТелефонов.Количество() > 1 Тогда + ШаблонЗаголовка = НСтр("ru = 'Отправка SMS на телефоны: %1'"); + КонецЕсли; + + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, НомераПолучателей); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + ДлинаСообщенияСимволов = СтрДлина(ТекстСообщения); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ДобавлятьОтправителяПриИзменении(Элемент) + Элементы.ИмяОтправителя.Доступность = ДобавлятьОтправителя; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Отправить(Команда) + + Если СтрДлина(ТекстСообщения) = 0 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Необходимо ввести текст сообщения'")); + Возврат; + КонецЕсли; + + Если НЕ ОтправкаSMSНастроена() Тогда + ОткрытьФорму("ОбщаяФорма.НастройкаОтправкиSMS"); + Возврат; + КонецЕсли; + + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСтатус; + + Если Элементы.Найти("НастройкаОтправкиSMSОткрыть") <> Неопределено Тогда + Элементы.НастройкаОтправкиSMSОткрыть.Видимость = Ложь; + КонецЕсли; + + Элементы.Закрыть.Видимость = Истина; + Элементы.Закрыть.КнопкаПоУмолчанию = Истина; + Элементы.Отправить.Видимость = Ложь; + + // Отправка из серверного контекста. + ОтправитьSMS(); + + // проверка статуса отправки + Если Не ПустаяСтрока(ИдентификаторСообщения) Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСообщениеОтправлено; + ПодключитьОбработчикОжидания("ПроверитьСтатусДоставки", 2, Истина); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОтправитьSMS() + + // Сброс отображаемого статуса доставки. + ИдентификаторСообщения = ""; + + // Подготовка номеров получателей. + МассивНомеров = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(НомераПолучателей, ", ", Истина); + + // отправка + РезультатОтправки = ОтправкаSMS.ОтправитьSMS(МассивНомеров, ТекстСообщения, ?(ДобавлятьОтправителя, ИмяОтправителя, ""), ОтправлятьВТранслите); + + // Вывод информации об ошибках в процессе отправки. + Если ПустаяСтрока(РезультатОтправки.ОписаниеОшибки) Тогда + // Проверка доставки для первого получателя. + Если РезультатОтправки.ОтправленныеСообщения.Количество() > 0 Тогда + ИдентификаторСообщения = РезультатОтправки.ОтправленныеСообщения[0].ИдентификаторСообщения; + КонецЕсли; + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСообщениеОтправлено; + Иначе + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСообщениеНеОтправлено; + + ШаблонСообщения = НСтр("ru = 'Отправка не выполнена: + |%1.'"); + + Элементы.ТекстСообщениеНеОтправлено.Заголовок = ФорматированнаяСтрока(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонСообщения, РезультатОтправки.ОписаниеОшибки)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьСтатусДоставки() + + РезультатДоставки = СтатусДоставки(ИдентификаторСообщения); + СтатусОтправки = РезультатДоставки.Описание; + + РезультатыДоставки = Новый Массив; + РезультатыДоставки.Добавить("Ошибка"); + РезультатыДоставки.Добавить("НеДоставлено"); + РезультатыДоставки.Добавить("Доставлено"); + РезультатыДоставки.Добавить("НеОтправлено"); + + ПроверкаСтатусаЗавершена = РезультатыДоставки.Найти(РезультатДоставки.Статус) <> Неопределено; + Элементы.ГруппаПроверкаСтатусаДоставки.Видимость = ПроверкаСтатусаЗавершена; + + ШаблонСостояния = НСтр("ru = 'Отправка сообщения выполнена. Состояние доставки: + |%1.'"); + Элементы.ТекстСообщениеОтправлено.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонСостояния, РезультатДоставки.Описание); + + + Если РезультатДоставки.Статус = "Ошибка" Тогда + Элементы.КартинкаСообщениеОтправлено.Картинка = БиблиотекаКартинок.Ошибка32; + Иначе + Если РезультатыДоставки.Найти(РезультатДоставки.Статус) <> Неопределено Тогда + Если Не РезультатДоставки.Статус = "Доставлено" Тогда + Элементы.КартинкаСообщениеОтправлено.Картинка = БиблиотекаКартинок.Предупреждение32; + КонецЕсли; + Элементы.ГруппаПроверкаСтатусаДоставки.Видимость = Ложь; + Иначе + ПодключитьОбработчикОжидания("ПроверитьСтатусДоставки", 2, Истина); + Элементы.ГруппаПроверкаСтатусаДоставки.Видимость = Истина; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СтатусДоставки(ИдентификаторСообщения) + + СтатусыДоставки = Новый Соответствие; + СтатусыДоставки.Вставить("Ошибка", НСтр("ru = 'произошла ошибка при подключении к провайдеру SMS'")); + СтатусыДоставки.Вставить("НеОтправлялось", НСтр("ru = 'сообщение не отправлялось провайдером'")); + СтатусыДоставки.Вставить("Отправляется", НСтр("ru = 'выполняется отправка провайдером'")); + СтатусыДоставки.Вставить("Отправлено", НСтр("ru = 'отправлено провайдером'")); + СтатусыДоставки.Вставить("НеОтправлено", НСтр("ru = 'сообщение не отправлено провайдером'")); + СтатусыДоставки.Вставить("Доставлено", НСтр("ru = 'сообщение доставлено'")); + СтатусыДоставки.Вставить("НеДоставлено", НСтр("ru = 'сообщение не доставлено'")); + + РезультатДоставки = Новый Структура("Статус, Описание"); + РезультатДоставки.Статус = ОтправкаSMS.СтатусДоставки(ИдентификаторСообщения); + РезультатДоставки.Описание = СтатусыДоставки[РезультатДоставки.Статус]; + Если РезультатДоставки.Описание = Неопределено Тогда + РезультатДоставки.Описание = "<" + РезультатДоставки.Статус + ">"; + КонецЕсли; + + Возврат РезультатДоставки; + +КонецФункции + +&НаКлиенте +Процедура ТекстИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + ДлинаСообщенияСимволов = СтрДлина(Текст); + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ОтправкаSMSНастроена() + Возврат ОтправкаSMS.НастройкаОтправкиSMSВыполнена(); +КонецФункции + +&НаСервереБезКонтекста +Функция ФорматированнаяСтрока(Текст) + + ФорматированныеСтроки = Новый Массив; + + Строки = СтрРазделить(Текст, Символы.ПС, Истина); + Для ИндексСтрок = 0 По Строки.ВГраница() Цикл + Строка = Строки[ИндексСтрок]; + Слова = СтрРазделить(Строка, " ", Истина); + Для ИндексСлов = 0 По Слова.ВГраница() Цикл + Фрагмент = Слова[ИндексСлов]; + Если СтрНачинаетсяС(Фрагмент, "http://") Или СтрНачинаетсяС(Фрагмент, "https://") Тогда + ФорматированныеСтроки.Добавить(Новый ФорматированнаяСтрока(Фрагмент, , , , Фрагмент)); + Иначе + ФорматированныеСтроки.Добавить(Новый ФорматированнаяСтрока(Фрагмент)); + КонецЕсли; + Если ИндексСлов <> Слова.ВГраница() Тогда + ФорматированныеСтроки.Добавить(" "); + КонецЕсли; + КонецЦикла; + Если ИндексСтрок <> Строки.ВГраница() Тогда + ФорматированныеСтроки.Добавить(Символы.ПС); + КонецЕсли; + КонецЦикла; + + Возврат Новый ФорматированнаяСтрока(ФорматированныеСтроки); // АПК:1356 - не мешает переводу на другие языки. + +КонецФункции + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS.mdo" new file mode 100644 index 00000000..313c76b9 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260SMS.mdo" @@ -0,0 +1,16 @@ + + + ОтправкаSMS + + ru + Отправка SMS + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Form.form" new file mode 100644 index 00000000..f82edadf --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Form.form" @@ -0,0 +1,1914 @@ + + + + УчетнаяЗапись + 76 + true + true + + true + + + + УчетнаяЗапись + + + + OnChange + УстановитьПризнакМодифицированностиФормы + + + УчетнаяЗаписьРасширеннаяПодсказка + 78 + true + true + + true + + Label + true + true + + Left + + + + УчетнаяЗаписьКонтекстноеМеню + 77 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + УчетнаяЗаписьОбработкаВыбора + + true + true + true + true + true + true + + Отбор.ИспользоватьДляОтправки + + + true + + + + + Отбор.ПометкаУдаления + + + + + + + + ОсновнаяГруппаТелаПисьма + 10 + VeryHigh + + ПочтовыеАдресаПолучателей + 87 + VeryHigh + + <key>ru</key> + <value>Почтовые адреса получателей</value> + + true + true + + true + + + ПочтовыеАдресаПолучателей + + None + + ПочтовыйАдресПолучателейВариантОтправки + 100 + true + true + + true + + + + ПочтовыеАдресаПолучателей.ВариантОтправки + + + + ПочтовыйАдресПолучателейВариантОтправкиРасширеннаяПодсказка + 102 + true + true + + true + + Label + true + true + + Left + + + + ПочтовыйАдресПолучателейВариантОтправкиКонтекстноеМеню + 101 + true + true + + true + + true + + InputField + true + Left + true + + 12 + true + true + false + true + true + true + OnActivate + true + + + ru + Кому: + + + Кому: + + + + + ru + Копия: + + + Копия: + + + + + ru + Скрытая копия: + + + Скрытая копия: + + + + + + ПочтовыйАдресПолучателейПредставление + 110 + true + true + + true + + + + ПочтовыеАдресаПолучателей.Представление + + + + ПочтовыйАдресПолучателейПредставлениеРасширеннаяПодсказка + 112 + true + true + + true + + Label + true + true + + Left + + + + ПочтовыйАдресПолучателейПредставлениеКонтекстноеМеню + 111 + true + true + + true + + true + + InputField + EnterOnInput + true + Left + true + + + AutoComplete + ПочтовыйАдресПолучателейПредставлениеАвтоПодбор + + 40 + true + true + true + true + true + + + + ПочтовыеАдресаПолучателейКоманднаяПанель + 89 + true + true + + true + + Left + + + BeforeDeleteRow + ПочтовыйАдресаПолучателейПередУдалением + + + BeforeEditEnd + ПочтовыйАдресаПолучателейПередОкончаниемРедактирования + + + OnStartEdit + ПочтовыйАдресаПолучателейПриНачалеРедактирования + + + true + true + + true + + ПочтовыеАдресаПолучателейСтрокаПоиска + 91 + + ПочтовыеАдресаПолучателейСтрокаПоискаРасширеннаяПодсказка + 93 + true + true + + true + + Label + true + true + + Left + + + + ПочтовыеАдресаПолучателейСтрокаПоискаКонтекстноеМеню + 92 + true + true + + true + + true + + + true + + + + true + true + + true + + ПочтовыеАдресаПолучателейСостояниеПросмотра + 94 + + ПочтовыеАдресаПолучателейСостояниеПросмотраРасширеннаяПодсказка + 96 + true + true + + true + + Label + true + true + + Left + + + + ПочтовыеАдресаПолучателейСостояниеПросмотраКонтекстноеМеню + 95 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ПочтовыеАдресаПолучателейУправлениеПоиском + 97 + + ПочтовыеАдресаПолучателейУправлениеПоискомРасширеннаяПодсказка + 99 + true + true + + true + + Label + true + true + + Left + + + + ПочтовыеАдресаПолучателейУправлениеПоискомКонтекстноеМеню + 98 + true + true + + true + + true + + SearchControlAddition + + true + + + + ПочтовыеАдресаПолучателейРасширеннаяПодсказка + 90 + true + true + + true + + Label + true + true + + Left + + + + ПочтовыеАдресаПолучателейКонтекстноеМеню + 88 + true + true + + true + + true + + true + true + true + true + 3 + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + true + + + + ТемаПисьма + 11 + true + true + + true + + + + ТемаПисьма + + + + ru + Тема отправляемого сообщения + + + OnChange + УстановитьПризнакМодифицированностиФормы + + + ТемаПисьмаExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + + ТемаПисьмаКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 60 + true + true + true + true + true + + + + КоманднаяПанельФорматирование + 79 + true + true + + true + + + <key>ru</key> + <value>Командная панель форматирование</value> + + + КоманднаяПанельФорматированиеРасширеннаяПодсказка + 80 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Item.ТелоПисьма + + + + ТелоПисьма + 22 + true + true + + true + + + + ТелоПисьма + + + None + + ru + Тело сообщения + + + OnChange + УстановитьПризнакМодифицированностиФормы + + + ТелоПисьмаExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + + ТелоПисьмаКонтекстноеМеню + 23 + true + true + + true + + true + + FormattedDocumentField + Enter + true + Left + true + + 50 + true + 10 + true + true + + + + ГруппаВложения + 21 + + Вложения + 13 + + <key>ru</key> + <value>Вложить</value> + + true + true + + true + + + ПредставлениеВложений + + false + None + Copy + CopyToClipboard + EndEdit + SortListAsc + SortListDesc + + Вложение1 + 34 + true + true + + true + + + + ПредставлениеВложений.Вложение1 + + + + Вложение1ExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + + Вложение1КонтекстноеМеню + 35 + true + true + + true + + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + Вложение2 + 36 + true + true + + true + + + + ПредставлениеВложений.Вложение2 + + + + Вложение2ExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + + Вложение2КонтекстноеМеню + 37 + true + true + + true + + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + ВложенияКоманднаяПанель + 15 + + ПриложитьФайл + 40 + true + true + + true + + false + + ПриложитьФайлExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПриложитьФайл + Auto + true + true + UserCmds + Auto + + true + true + + true + + Left + + + DragCheck + ВложенияПроверкаПеретаскивания + + + Selection + ВложенияВыбор + + + BeforeAddRow + ВложенияПередНачаломДобавления + + + BeforeDeleteRow + ВложенияПередУдалением + + + Drag + ВложенияПеретаскивание + + + OnChange + УстановитьПризнакМодифицированностиФормы + + + true + true + + true + + ВложенияСтрокаПоиска + 67 + + ВложенияСтрокаПоискаРасширеннаяПодсказка + 69 + true + true + + true + + Label + true + true + + Left + + + + ВложенияСтрокаПоискаКонтекстноеМеню + 68 + true + true + + true + + true + + + true + + + + true + true + + true + + ВложенияСостояниеПросмотра + 70 + + ВложенияСостояниеПросмотраРасширеннаяПодсказка + 72 + true + true + + true + + Label + true + true + + Left + + + + ВложенияСостояниеПросмотраКонтекстноеМеню + 71 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + ВложенияУправлениеПоиском + 73 + + ВложенияУправлениеПоискомРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + + ВложенияУправлениеПоискомКонтекстноеМеню + 74 + true + true + + true + + true + + SearchControlAddition + + true + + + + ВложенияExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + + ВложенияКонтекстноеМеню + 14 + + ГруппаПриложитьФайл + 45 + + КонтекстноеМенюВложенияПриложитьФайл + 44 + true + true + + true + + false + + КонтекстноеМенюВложенияПриложитьФайлExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПриложитьФайл + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюВложенияУдалить + 43 + true + true + + true + + false + + КонтекстноеМенюВложенияУдалитьExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.Delete + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Приложить файл</value> + + + ГруппаПриложитьФайлExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + + + + КонтекстноеМенюВложенияОткрытьФайл + 46 + true + true + + true + + false + + КонтекстноеМенюВложенияОткрытьФайлExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьФайл + Auto + true + true + UserCmds + Auto + + true + true + + true + + + true + true + true + true + 2 + true + 1 + 1 + AutoUse + true + Auto + Auto + true + true + true + AsFileRef + + + true + true + + true + + + <key>ru</key> + <value>Вложения</value> + + + ГруппаВложенияExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + АдресОтвета + 47 + true + true + + true + + + + АдресОтвета + + + + ru + Введите адрес электронной почты на который вы хотите получить ответ на это письмо + + + OnChange + УстановитьПризнакМодифицированностиФормы + + + АдресОтветаExtendedTooltip + 66 + true + true + + true + + Label + true + true + + Left + + + + АдресОтветаКонтекстноеМеню + 48 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + АдресОтветаОчистка + + + TextEditEnd + АдресОтветаОкончаниеВводаТекста + + + ChoiceProcessing + АдресОтветаОбработкаВыбора + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Основная группа тела письма</value> + + + ОсновнаяГруппаТелаПисьмаExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + Top + + ФормаКоманднаяПанель + -1 + + ОтправитьПисьмо + 1 + true + true + + true + + false + + ОтправитьПисьмоExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОтправитьПисьмо + Auto + true + true + true + UserCmds + Auto + + + ФормаСформироватьПоШаблону + 106 + true + true + + true + + + ФормаСформироватьПоШаблонуРасширеннаяПодсказка + 107 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СформироватьПоШаблону + Auto + true + true + UserCmds + Auto + + + Справка + 27 + true + true + + true + + false + + СправкаExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + + ФормаСохранитьКакШаблон + 108 + true + true + + true + + + ФормаСохранитьКакШаблонРасширеннаяПодсказка + 109 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СохранитьКакШаблон + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + ПочтовыйАдресПолучателя + 1 + + String + + + + true + + + true + + + + ТелоПисьма + 2 + + FormattedDocument + + + true + + + true + + + + ТемаПисьма + + <key>ru</key> + <value>Тема</value> + + 4 + + String + + + + true + + + true + + + + ВложенияВПисьмо + 5 + + ValueList + + + true + + + true + + + + + + + УчетнаяЗапись + + <key>ru</key> + <value>От</value> + + 6 + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + true + + + true + + + + АдресОтвета + + <key>ru</key> + <value>Адрес ответа</value> + + 7 + + String + + + + true + + + true + + + + АвтоматическаяПодстановкаАдресаОтвета + 8 + + Boolean + + + true + + + true + + + + ПредставлениеВложений + + <key>ru</key> + <value>Представление вложений</value> + + 9 + + ValueTable + + + true + + + true + + + Вложение1 + + <key>ru</key> + <value>Вложение1</value> + + 1 + + String + + + + true + + + true + + + + Вложение2 + + <key>ru</key> + <value>Вложение2</value> + + 2 + + String + + + + true + + + true + + + + + ВоВложенияхПрисутствуютСсылки + 3 + + Boolean + + + true + + + true + + + + ПарольЗадан + 11 + + + true + + + true + + + + АдресаОтветаПоУчетнымЗаписям + 10 + + ValueList + + + true + + + true + + + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + + + Вложения + 13 + + ValueTable + + + true + + + true + + + Представление + 1 + + String + + + + true + + + true + + + + АдресВоВременномХранилище + 2 + + String + + + + true + + + true + + + + Кодировка + 3 + + String + + + + true + + + true + + + + ПутьКФайлу + 4 + + String + + + + true + + + true + + + + Идентификатор + 5 + + String + + + + true + + + true + + + + + ТребуетсяПодтверждениеЗакрытияФормы + 15 + + Boolean + + + true + + + true + + + + ПочтовыеАдресаПолучателей + + <key>ru</key> + <value>Почтовые адреса получателей</value> + + 18 + + ValueTable + + + true + + + true + + true + + ВариантОтправки + + <key>ru</key> + <value>Вариант отправки</value> + + 1 + + String + + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 3 + + String + + + + true + + + true + + + + + ПолучателиСообщения + 20 + + ValueList + + + true + + + true + + + + + + + РезультатУспехЦвет + 21 + + Color + + + true + + + true + + + + Предмет + 12 + + + true + + + true + + + + ОписаниеПолучателяВоВременномХранилище + 14 + + String + + + + true + + + true + + + + ОтправитьПисьмо + + <key>ru</key> + <value>Отправить</value> + + 1 + + ru + Отправить письмо + + + true + + + + ОтправитьПисьмо + + + DontUse + + + ПриложитьФайл + + <key>ru</key> + <value>Приложить файл...</value> + + 2 + + ru + Приложить файл к письму + + + true + + + CommonPicture.Скрепка + + + + ПриложитьФайлВыполнить + + + TextPicture + DontUse + + + ОткрытьФайл + + <key>ru</key> + <value>Открыть файл</value> + + 3 + + ru + Открыть файл + + + true + + + StdPicture.OpenFile + + + + ОткрытьФайл + + + DontUse + + + СформироватьПоШаблону + + <key>ru</key> + <value>Сформировать по шаблону</value> + + 4 + + ru + Сформировать по шаблону + + + true + + + + СформироватьПоШаблону + + + DontUse + + + СохранитьКакШаблон + + <key>ru</key> + <value>Сохранить как шаблон...</value> + + 5 + + ru + Сохранить как шаблон + + + true + + + + СохранитьКакШаблон + + + DontUse + + + Отправитель + + ValueList + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + + Получатель + + + + Тема + + String + + + + + Текст + + String + + + + + Вложения + + + + АдресОтвета + + String + + + + + УдалятьФайлыПослеОтправки + + Boolean + + + + Копии + + + + СкрытыеКопии + + + + Предмет + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 00000000..e98a00ad --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,22 @@ + +

        Предназначена для отправки электронного сообщения.

        +

        Предусмотрены кнопки  Написать письмо или Отправить для отправки электронных сообщений из различных объектов программы, например, из окна пользователя программы и т.п.

        +

        Написание электронного сообщения

        +
        • В поле Кому можно указать через запятую сразу несколько адресов электронной почты получателей электронного сообщения. Примеры записи почтового адреса: +
          • ivanov@server - краткая запись, адрес почтового ящика; +
          • +
          • Иванов ivanov@server - полная запись почтового адреса состоит из имени адресата и адреса почтового ящика; +
          • +
          • ivanov (почтовый сервер при этом должен уметь сопоставлять данный краткий адрес полному).
        • +
        • +
          Заполните поле Тема;
          +
        • +
        • Напишите текст письма. Для форматирования текста можно использовать стандартные команды форматирования. Часть наиболее используемых выведена над текстом письма в виде значков, остальные можно найти в меню Еще; +
        • +
        • Для того чтобы вложить в почтовое сообщение дополнительный файлы, нажмите  Приложить файл. +
          • Для удаления вложения выделите его и нажмите клавишу Del.
        • +
        • В поле От автоматически программой будет предложена учетная запись, настроенная для автоматического получения и отправки писем. +
        • +
        • В поле Адрес ответа можно задать e-mail адрес, на который получатели письма будут отправлять ответ. Это поле нужно заполнять в том случае, если входящая корреспонденция системной учетной записи не просматривается (например, если учетная запись предназначена только для отправки).

        Отправка

        +
        • После окончания работы над электронным сообщением нажмите Отправить.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 00000000..d34f4b99 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,1155 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ИсторияПолучателей; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + РезультатУспехЦвет = ЦветаСтиля.РезультатУспехЦвет; + + ВложенияДляПисьма = Новый Структура; + + Если ТипЗнч(Параметры.Вложения) = Тип("СписокЗначений") Или ТипЗнч(Параметры.Вложения) = Тип("Массив") Тогда + Для Каждого Вложение Из Параметры.Вложения Цикл + ОпределитьНазначениеВложенияПисьма(Вложение, ВложенияДляПисьма); + КонецЦикла; + КонецЕсли; + + ТемаПисьма = Параметры.Тема; + ТелоПисьма.УстановитьHTML(ТекстВHTML(Параметры.Текст), ВложенияДляПисьма); + АдресОтвета = Параметры.АдресОтвета; + Предмет = Параметры.Предмет; + + Если НЕ ЗначениеЗаполнено(Параметры.Отправитель) Тогда + // Учетная запись не передана - выбираем первую доступную. + ДоступныеУчетныеЗаписи = РаботаСПочтовымиСообщениями.ДоступныеУчетныеЗаписи(Истина); + Если ДоступныеУчетныеЗаписи.Количество() = 0 Тогда + ТекстСообщения = НСтр("ru = 'Не обнаружены доступные учетные записи электронной почты, обратитесь к администратору системы.'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,,,,Отказ); + Возврат; + КонецЕсли; + + УчетнаяЗапись = ДоступныеУчетныеЗаписи[0].Ссылка; + + ИначеЕсли ТипЗнч(Параметры.Отправитель) = Тип("СправочникСсылка.УчетныеЗаписиЭлектроннойПочты") Тогда + УчетнаяЗапись = Параметры.Отправитель; + ИначеЕсли ТипЗнч(Параметры.Отправитель) = Тип("СписокЗначений") Тогда + НаборУчетныхЗаписей = Параметры.Отправитель; + + Если НаборУчетныхЗаписей.Количество() = 0 Тогда + ТекстСообщения = НСтр("ru = 'Не указаны учетные записи для отправки сообщения, обратитесь к администратору системы.'"); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,,,, Отказ); + Возврат; + КонецЕсли; + + Для Каждого ЭлементУчетнаяЗапись Из НаборУчетныхЗаписей Цикл + Элементы.УчетнаяЗапись.СписокВыбора.Добавить( + ЭлементУчетнаяЗапись.Значение, + ЭлементУчетнаяЗапись.Представление); + Если ЭлементУчетнаяЗапись.Значение.ИспользоватьДляПолучения Тогда + АдресаОтветаПоУчетнымЗаписям.Добавить(ЭлементУчетнаяЗапись.Значение, + ПолучитьПочтовыйАдресПоУчетнойЗаписи(ЭлементУчетнаяЗапись.Значение)); + КонецЕсли; + КонецЦикла; + + Элементы.УчетнаяЗапись.СписокВыбора.СортироватьПоПредставлению(); + УчетнаяЗапись = НаборУчетныхЗаписей[0].Значение; + + // Для переданного списка учетных записей выбираем их из списка выбора. + Элементы.УчетнаяЗапись.КнопкаВыпадающегоСписка = Истина; + КонецЕсли; + + Если ТипЗнч(Параметры.Получатель) = Тип("СписокЗначений") Тогда + + Для Каждого ЭлементПочтовыйАдрес Из Параметры.Получатель Цикл + НовыйПолучатель = ПочтовыеАдресаПолучателей.Добавить(); + НовыйПолучатель.ВариантОтправки = НСтр("ru = 'Кому:'"); + Если ЗначениеЗаполнено(ЭлементПочтовыйАдрес.Представление) Тогда + НовыйПолучатель.Представление = ЭлементПочтовыйАдрес.Представление + + " <" + + ЭлементПочтовыйАдрес.Значение + + ">" + Иначе + НовыйПолучатель.Представление = ЭлементПочтовыйАдрес.Значение; + КонецЕсли; + КонецЦикла; + + ИначеЕсли ТипЗнч(Параметры.Получатель) = Тип("Строка") Тогда + НовыйПолучатель = ПочтовыеАдресаПолучателей.Добавить(); + НовыйПолучатель.ВариантОтправки = НСтр("ru = 'Кому:'"); + НовыйПолучатель.Представление = Параметры.Получатель; + ИначеЕсли ТипЗнч(Параметры.Получатель) = Тип("Массив") Тогда + Для Каждого СтруктураПолучателя Из Параметры.Получатель Цикл + ЕстьСвойствоВыбран = СтруктураПолучателя.Свойство("Выбран"); + МассивАдресов = СтрРазделить(СтруктураПолучателя.Адрес, ";"); + Для Каждого Адрес Из МассивАдресов Цикл + Если ПустаяСтрока(Адрес) Тогда + Продолжить; + КонецЕсли; + Если (ЕстьСвойствоВыбран И СтруктураПолучателя.Выбран) ИЛИ (НЕ ЕстьСвойствоВыбран) Тогда + НовыйПолучатель = ПочтовыеАдресаПолучателей.Добавить(); + НовыйПолучатель.ВариантОтправки = НСтр("ru = 'Кому:'"); + НовыйПолучатель.Представление = СтруктураПолучателя.Представление + " <" + СокрЛП(Адрес) + ">"; + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЕсли; + + Если ТипЗнч(Параметры.Получатель) = Тип("Массив") Тогда + Если ТипЗнч(Параметры.Получатель) = Тип("Строка") Тогда + ЗаполнитьТаблицуПолучателейИзСтроки(Параметры.Получатель); + ИначеЕсли ТипЗнч(Параметры.Получатель) = Тип("СписокЗначений") Тогда + ПолучателиСообщения = (Параметры.Получатель); + ИначеЕсли ТипЗнч(Параметры.Получатель) = Тип("Массив") Тогда + ЗаполнитьТаблицуПолучателейИзМассиваСтруктур(Параметры.Получатель); + КонецЕсли; + + ОписаниеПолучателяВоВременномХранилище = ПоместитьВоВременноеХранилище(Параметры.Получатель, УникальныйИдентификатор); + Иначе + ОписаниеПолучателяВоВременномХранилище = ПоместитьВоВременноеХранилище(Новый Массив, УникальныйИдентификатор); + КонецЕсли; + + Если ПочтовыеАдресаПолучателей.Количество() = 0 Тогда + НоваяСтрока = ПочтовыеАдресаПолучателей.Добавить(); + НоваяСтрока.ВариантОтправки = НСтр("ru = 'Кому:'"); + НоваяСтрока.Представление = ""; + КонецЕсли; + + // Получаем список адресов, которые пользователь использовал ранее. + СписокАдресовОтвета = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( + "РедактированиеНовогоПисьма", "СписокАдресовОтвета"); + + Если СписокАдресовОтвета <> Неопределено И СписокАдресовОтвета.Количество() > 0 Тогда + Для Каждого ЭлементаАдресОтвета Из СписокАдресовОтвета Цикл + Элементы.АдресОтвета.СписокВыбора.Добавить(ЭлементаАдресОтвета.Значение, ЭлементаАдресОтвета.Представление); + КонецЦикла; + + Элементы.АдресОтвета.КнопкаВыпадающегоСписка = Истина; + КонецЕсли; + + Если ЗначениеЗаполнено(АдресОтвета) Тогда + АвтоматическаяПодстановкаАдресаОтвета = Ложь; + Иначе + Если УчетнаяЗапись.ИспользоватьДляПолучения Тогда + // Устанавливаем почтовый адрес по умолчанию. + Если ЗначениеЗаполнено(УчетнаяЗапись.ИмяПользователя) Тогда + АдресОтвета = УчетнаяЗапись.ИмяПользователя + " <" + УчетнаяЗапись.АдресЭлектроннойПочты + ">"; + Иначе + АдресОтвета = УчетнаяЗапись.АдресЭлектроннойПочты; + КонецЕсли; + КонецЕсли; + + АвтоматическаяПодстановкаАдресаОтвета = Истина; + КонецЕсли; + + // СтандартныеПодсистемы.ШаблоныСообщений + + Элементы.ФормаСформироватьПоШаблону.Видимость = Ложь; + Элементы.ФормаСохранитьКакШаблон.Видимость = Ложь; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений")Тогда + МодульШаблоныСообщенийСлужебный = ОбщегоНазначения.ОбщийМодуль("ШаблоныСообщенийСлужебный"); + + Если МодульШаблоныСообщенийСлужебный.ИспользуютсяШаблоныСообщений() Тогда + Элементы.ФормаСформироватьПоШаблону.Видимость = МодульШаблоныСообщенийСлужебный.ЕстьДоступныеШаблоны("Письмо", Предмет); + Элементы.ФормаСохранитьКакШаблон.Видимость = Истина; + КонецЕсли; + + КонецЕсли; + + // Конец СтандартныеПодсистемы.ШаблоныСообщений + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Вложение2.Видимость = Ложь; + Элементы.ОсновнаяГруппаТелаПисьма.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + Элементы.ТемаПисьма.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ЗагрузитьВложенияИзФайлов(); + ОбновитьПредставлениеВложений(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + Если Не ТребуетсяПодтверждениеЗакрытияФормы Тогда + Возврат; + КонецЕсли; + + Отказ = Истина; + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + ПодключитьОбработчикОжидания("ПоказатьВопросПередЗакрытиемФормы", 0.1, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + Если Не ЗавершениеРаботы Тогда + АдресаВложений = Новый Массив; + Для Каждого Вложение Из Вложения Цикл + АдресаВложений.Добавить(Вложение.АдресВоВременномХранилище); + КонецЦикла; + ОчиститьВложения(АдресаВложений); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +// Подставляет адрес ответа, если флаг автоматической подстановки ответа установлен. +// +&НаКлиенте +Процедура УчетнаяЗаписьОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Если ПустаяСтрока(АдресОтвета) Тогда + АвтоматическаяПодстановкаАдресаОтвета = Истина; + КонецЕсли; + + Если АвтоматическаяПодстановкаАдресаОтвета Тогда + Если АдресаОтветаПоУчетнымЗаписям.НайтиПоЗначению(ВыбранноеЗначение) <> Неопределено Тогда + АдресОтвета = АдресаОтветаПоУчетнымЗаписям.НайтиПоЗначению(ВыбранноеЗначение).Представление; + Иначе + АдресОтвета = ПолучитьПочтовыйАдресПоУчетнойЗаписи(ВыбранноеЗначение); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПризнакМодифицированностиФормы(Элемент) + ТребуетсяПодтверждениеЗакрытияФормы = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПочтовыеАдресаПолучателей + +&НаКлиенте +Процедура ПочтовыйАдресаПолучателейПередУдалением(Элемент, Отказ) + + Если ПочтовыеАдресаПолучателей.Количество() = 1 Тогда + Отказ = Истина; + ПочтовыеАдресаПолучателей[0].Представление = ""; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПочтовыйАдресаПолучателейПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) + Если НоваяСтрока Тогда + Элемент.ТекущиеДанные.ВариантОтправки = Элементы.ПочтовыйАдресПолучателейВариантОтправки.СписокВыбора.НайтиПоЗначению("Кому:"); + Элемент.ТекущийЭлемент = Элементы.ПочтовыйАдресПолучателейПредставление; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПочтовыйАдресПолучателейПредставлениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) + + Если ПолучателиСообщения.Количество() = 0 Тогда + ДанныеВыбора = ПохожиеПолучателиИзИстории(Текст); + Иначе + ДанныеВыбора = ПохожиеПолучателиИзСпискаПереданных(Текст); + КонецЕсли; + + СтандартнаяОбработка = ДанныеВыбора.Количество() = 0; + +КонецПроцедуры + +&НаКлиенте +Процедура ПочтовыйАдресаПолучателейПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ) + + Если ОтменаРедактирования Тогда + Возврат; + КонецЕсли; + + ДанныеСтроки = Элемент.ТекущиеДанные; + Если ДанныеСтроки = Неопределено Тогда + Возврат; + КонецЕсли; + + Адрес = ПочтовыйАдресИзПредставления(ДанныеСтроки.Представление); + + Если ПустаяСтрока(Адрес) Тогда + Адрес = ДанныеСтроки.Представление; + КонецЕсли; + + Если ПустаяСтрока(Адрес) Тогда + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Адрес, Истина) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Необходимо ввести корректный адрес электронной почты.'")); + Отказ = Истина; + Возврат; + КонецЕсли; + + Дубли = Новый Соответствие; + Для каждого ПолучательПисьма Из ПочтовыеАдресаПолучателей Цикл + АдресПочты = ПочтовыйАдресИзПредставления(ПолучательПисьма.Представление); + Если Дубли[ВРег(АдресПочты)] = Неопределено Тогда + Дубли.Вставить(ВРег(АдресПочты), Истина); + Иначе + ПоказатьПредупреждение(, НСтр("ru = 'Такой адрес электронной почты уже есть в списке.'")); + Отказ = Истина; + Возврат; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + + +#Область ОбработчикиСобытийЭлементовТаблицыФормыВложения + +// Удаляет вложение из списка, а так же вызывает функцию +// обновления таблицы представления вложений. +// +&НаКлиенте +Процедура ВложенияПередУдалением(Элемент, Отказ) + + НаименованиеВложения = Элемент.ТекущиеДанные[Элемент.ТекущийЭлемент.Имя]; + + Для Каждого Вложение Из Вложения Цикл + Если Вложение.Представление = НаименованиеВложения Тогда + Вложения.Удалить(Вложение); + КонецЕсли; + КонецЦикла; + + ОбновитьПредставлениеВложений(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВложенияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + ДобавитьФайлВоВложения(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВложенияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ОткрытьВложение(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВложенияПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ВложенияПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) + + СтандартнаяОбработка = Ложь; + + КоллекцияЗначений = ПараметрыПеретаскивания.Значение; + Если ТипЗнч(КоллекцияЗначений) <> Тип("Массив") Тогда + КоллекцияЗначений = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ПараметрыПеретаскивания.Значение); + КонецЕсли; + + ЗагружаемыеФайлы = Новый Массив; + Для Каждого Файл Из КоллекцияЗначений Цикл + Если ТипЗнч(Файл) = Тип("СсылкаНаФайл") Тогда + ЗагружаемыеФайлы.Добавить(Файл); + КонецЕсли; + КонецЦикла; + + Если Не ЗначениеЗаполнено(ЗагружаемыеФайлы) Тогда + Возврат; + КонецЕсли; + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриЗагрузкеВложений", ЭтотОбъект); + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + ПараметрыЗагрузки.Интерактивно = Ложь; + ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещения, ПараметрыЗагрузки, ЗагружаемыеФайлы); + +КонецПроцедуры + +&НаКлиенте +Процедура АдресОтветаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + + АвтоматическаяПодстановкаАдресаОтвета = Ложь; + АдресОтвета = ПолучитьПриведенныйПочтовыйАдресВФормате(Текст); + +КонецПроцедуры + +&НаКлиенте +Процедура АдресОтветаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + АвтоматическаяПодстановкаАдресаОтвета = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура АдресОтветаОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + СохранитьАдресОтвета(АдресОтвета, Ложь); + + Для Каждого ЭлементаАдресОтвета Из Элементы.АдресОтвета.СписокВыбора Цикл + Если ЭлементаАдресОтвета.Значение = АдресОтвета + И ЭлементаАдресОтвета.Представление = АдресОтвета Тогда + Элементы.АдресОтвета.СписокВыбора.Удалить(ЭлементаАдресОтвета); + КонецЕсли; + КонецЦикла; + + АдресОтвета = ""; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОткрытьФайл(Команда) + ОткрытьВложение(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтправитьПисьмо() + + ОчиститьСообщения(); + ЕстьОшибочныеПолучатели = Ложь; + Если ПоляЗаполненыКорректно() И ОтправитьПочтовоеСообщение(ЕстьОшибочныеПолучатели) Тогда + СохранитьАдресОтвета(АдресОтвета); + ТребуетсяПодтверждениеЗакрытияФормы = Ложь; + + ПоказатьОповещениеПользователя(НСтр("ru = 'Сообщение отправлено:'"), , + ?(ПустаяСтрока(ТемаПисьма), НСтр("ru = '<Без темы>'"), ТемаПисьма), БиблиотекаКартинок.Информация32); + + Если ЕстьОшибочныеПолучатели Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Письмо отправлено не всем получателям.'")); + Иначе + Закрыть(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ПоляЗаполненыКорректно() + Результат = Истина; + + Если ПочтовыеАдресаПолучателей.Количество() = 0 Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Необходимо заполнить получателя письма'"), , "ПочтовыеАдресаПолучателей"); + Результат = Ложь; + КонецЕсли; + Для каждого ПолучательПочты Из ПочтовыеАдресаПолучателей Цикл + Адрес = ПочтовыйАдресИзПредставления(ПолучательПочты.Представление); + Если ПустаяСтрока(Адрес) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Необходимо заполнить получателя письма'"),, "ПочтовыеАдресаПолучателей[" + Формат(ПочтовыеАдресаПолучателей.Индекс(ПолучательПочты), "ЧГ=0") + "].Представление"); + Результат = Ложь; + ИначеЕсли Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Адрес, Ложь) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Неверный адрес электронной почты'"),, "ПочтовыеАдресаПолучателей[" + Формат(ПочтовыеАдресаПолучателей.Индекс(ПолучательПочты), "ЧГ=0") + "].Представление"); + Результат = Ложь; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ПриложитьФайлВыполнить() + + ДобавитьФайлВоВложения(); + +КонецПроцедуры + +// СтандартныеПодсистемы.ШаблоныСообщений + +&НаКлиенте +Процедура СформироватьПоШаблону(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений") Тогда + МодульШаблоныСообщенийКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ШаблоныСообщенийКлиент"); + Оповещение = Новый ОписаниеОповещения("ЗаполнитьПоШаблонуПослеВыбораШаблона", ЭтотОбъект); + ПредметСообщения = ?(ЗначениеЗаполнено(Предмет), Предмет, "Общий"); + МодульШаблоныСообщенийКлиент.ПодготовитьСообщениеПоШаблону(ПредметСообщения, "Письмо", Оповещение); + КонецЕсли + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ШаблоныСообщений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ОтправитьПочтовоеСообщение(ЕстьОшибочныеПолучатели) + + ПараметрыПисьма = СформироватьПараметрыПисьма(); + Если ПараметрыПисьма = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма); + РезультатОтправки = РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗапись, Письмо); + РаботаСПочтовымиСообщениямиПереопределяемый.ПослеОтправкиПисьма(ПараметрыПисьма); + + ДобавитьПолучателейВИсторию(ПараметрыПисьма.Кому); + + ОшибочныеПолучатели = РезультатОтправки.ОшибочныеПолучатели; + Если ОшибочныеПолучатели.Количество() > 0 Тогда + Для Каждого ОшибочныйПолучатель Из ОшибочныеПолучатели Цикл + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1: %2'"), + ОшибочныйПолучатель.Ключ, ОшибочныйПолучатель.Значение); + + Поле = "ПочтовыеАдресаПолучателей"; + Для Каждого АдресПолучателя Из ПочтовыеАдресаПолучателей Цикл + Если СтрНайти(АдресПолучателя.Представление, ОшибочныйПолучатель.Ключ) > 0 Тогда + Поле = Поле + "[" + XMLСтрока(ПочтовыеАдресаПолучателей.Индекс(АдресПолучателя)) + "].Представление"; + Прервать; + КонецЕсли; + КонецЦикла; + + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , Поле); + КонецЦикла; + + ЕстьОшибочныеПолучатели = Истина; + Возврат ПочтовыеАдресаПолучателей.Количество() > ОшибочныеПолучатели.Количество(); + КонецЕсли; + + Возврат Истина; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПолучитьПочтовыйАдресПоУчетнойЗаписи(Знач УчетнаяЗапись) + + Возврат СокрЛП(УчетнаяЗапись.ИмяПользователя) + + ? (ПустаяСтрока(СокрЛП(УчетнаяЗапись.ИмяПользователя)), + УчетнаяЗапись.АдресЭлектроннойПочты, + " <" + УчетнаяЗапись.АдресЭлектроннойПочты + ">"); + +КонецФункции + +&НаКлиенте +Процедура ОткрытьВложение() + + ВыбранноеВложение = ВыбранноеВложение(); + Если ВыбранноеВложение = Неопределено Тогда + Возврат; + КонецЕсли; + +#Если Не ВебКлиент Тогда + Если СтрЗаканчиваетсяНа(ВыбранноеВложение.Представление, ".mxl") Тогда + ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьОткрытиеФайлаMXLПослеСозданияКаталога", ЭтотОбъект, ВыбранноеВложение); + ФайловаяСистемаКлиент.СоздатьВременныйКаталог(ОписаниеОповещения); + Возврат; + КонецЕсли; +#КонецЕсли + + ФайловаяСистемаКлиент.ОткрытьФайл(ВыбранноеВложение.АдресВоВременномХранилище, , ВыбранноеВложение.Представление); + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьОткрытиеФайлаMXLПослеСозданияКаталога(ИмяВременногоКаталога, ВыбранноеВложение) Экспорт + +#Если Не ВебКлиент Тогда + ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + ВыбранноеВложение.Представление; + ТабличныйДокумент = ПолучитьТабличныйДокументПоДвоичнымДанным(ВыбранноеВложение.АдресВоВременномХранилище); + + ДвоичныеДанные = ПолучитьИзВременногоХранилища(ВыбранноеВложение.АдресВоВременномХранилище); // ДвоичныеДанные + ДвоичныеДанные.Записать(ИмяВременногоФайла); + Файл = Новый Файл(ИмяВременногоФайла); + Файл.УстановитьТолькоЧтение(Истина); + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ИмяДокумента", ВыбранноеВложение.Представление); + ПараметрыОткрытия.Вставить("ТабличныйДокумент", ТабличныйДокумент); + ПараметрыОткрытия.Вставить("ПутьКФайлу", ИмяВременногоФайла); + + ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия, ЭтотОбъект); +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Функция ВыбранноеВложение() + + Результат = Неопределено; + Если Элементы.Вложения.ТекущиеДанные <> Неопределено Тогда + НаименованиеВложения = Элементы.Вложения.ТекущиеДанные[Элементы.Вложения.ТекущийЭлемент.Имя]; + Для Каждого Вложение Из Вложения Цикл + Если Вложение.Представление = НаименованиеВложения Тогда + Результат = Новый Структура("Представление, АдресВоВременномХранилище"); + ЗаполнитьЗначенияСвойств(Результат, Вложение); + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПолучитьТабличныйДокументПоДвоичнымДанным(Знач ДвоичныеДанные) + + Если ТипЗнч(ДвоичныеДанные) = Тип("Строка") Тогда + // Передан адрес двоичных данных во временном хранилище. + ДвоичныеДанные = ПолучитьИзВременногоХранилища(ДвоичныеДанные); // ДвоичныеДанные + КонецЕсли; + + ИмяФайла = ПолучитьИмяВременногоФайла("mxl"); + ДвоичныеДанные.Записать(ИмяФайла); + + ТабличныйДокумент = Новый ТабличныйДокумент; + ТабличныйДокумент.Прочитать(ИмяФайла); + + Попытка + УдалитьФайлы(ИмяФайла); + Исключение + ЗаписьЖурналаРегистрации(НСтр("ru = 'Получение табличного документа'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + + Возврат ТабличныйДокумент; + +КонецФункции + +&НаКлиенте +Процедура ДобавитьФайлВоВложения() + + ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьФайлВоВложенияПриПомещенииФайлов", ЭтотОбъект); + + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещения, ПараметрыЗагрузки); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьФайлВоВложенияПриПомещенииФайлов(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт + Если ПомещенныеФайлы = Неопределено Или ПомещенныеФайлы.Количество() = 0 Тогда + Возврат; + КонецЕсли; + ДобавитьФайлыВСписок(ПомещенныеФайлы); + ОбновитьПредставлениеВложений(); + ТребуетсяПодтверждениеЗакрытияФормы = Истина; +КонецПроцедуры + +&НаСервере +Процедура ДобавитьФайлыВСписок(ПомещенныеФайлы) + + Для Каждого ОписаниеФайла Из ПомещенныеФайлы Цикл + Файл = Новый Файл(ОписаниеФайла.Имя); + Вложение = Вложения.Добавить(); + Вложение.Представление = Файл.Имя; + Вложение.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ПолучитьИзВременногоХранилища(ОписаниеФайла.Хранение), УникальныйИдентификатор); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьПредставлениеВложений() + + ПредставлениеВложений.Очистить(); + + Индекс = 0; + + Для Каждого Вложение Из Вложения Цикл + Если Индекс = 0 Тогда + СтрокаПредставления = ПредставлениеВложений.Добавить(); + КонецЕсли; + + СтрокаПредставления["Вложение" + Формат(Индекс + 1, "ЧГ=0")] = Вложение.Представление; + Если Элементы.Вложение2.Видимость Тогда // Для мобильного клиента. + Индекс = Индекс + 1; + Если Индекс = 2 Тогда + Индекс = 0; + КонецЕсли; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Проверяет возможность отправления письма и если +// это возможно - формирует параметры отправки. +// +&НаСервере +Функция СформироватьПараметрыПисьма() + + ПараметрыПисьма = Новый Структура; + Кому = Новый Массив; + Копии = Новый Массив; + СкрытыеКопии = Новый Массив; + + Для каждого Получатель Из ПочтовыеАдресаПолучателей Цикл + ПочтаПолучателей = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(Получатель.Представление); + Для каждого ПочтаПолучателя Из ПочтаПолучателей Цикл + Если Получатель.ВариантОтправки = НСтр("ru = 'Скрытая копия:'") Тогда + СкрытыеКопии.Добавить(Новый Структура("Адрес, Представление", ПочтаПолучателя.Адрес, ПочтаПолучателя.Псевдоним)); + ИначеЕсли Получатель.ВариантОтправки = НСтр("ru = 'Копия:'") Тогда + Копии.Добавить(Новый Структура("Адрес, Представление", ПочтаПолучателя.Адрес, ПочтаПолучателя.Псевдоним)); + Иначе + Кому.Добавить(Новый Структура("Адрес, Представление", ПочтаПолучателя.Адрес, ПочтаПолучателя.Псевдоним)); + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Если Кому.Количество() > 0 Тогда + ПараметрыПисьма.Вставить("Кому", Кому); + КонецЕсли; + Если Копии.Количество() > 0 Тогда + ПараметрыПисьма.Вставить("Копии", Копии); + КонецЕсли; + Если СкрытыеКопии.Количество() > 0 Тогда + ПараметрыПисьма.Вставить("СкрытыеКопии", СкрытыеКопии); + КонецЕсли; + + СписокПолучателей = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(АдресОтвета); + Кому = Новый Массив; + Для Каждого Получатель Из СписокПолучателей Цикл + Если Не ПустаяСтрока(Получатель.ОписаниеОшибки) Тогда + ОбщегоНазначения.СообщитьПользователю( + Получатель.ОписаниеОшибки, , "АдресОтвета"); + Возврат Неопределено; + КонецЕсли; + Кому.Добавить(Новый Структура("Адрес, Представление", Получатель.Адрес, Получатель.Псевдоним)); + КонецЦикла; + + Если ЗначениеЗаполнено(АдресОтвета) Тогда + ПараметрыПисьма.Вставить("АдресОтвета", АдресОтвета); + КонецЕсли; + + Если ЗначениеЗаполнено(ТемаПисьма) Тогда + ПараметрыПисьма.Вставить("Тема", ТемаПисьма); + КонецЕсли; + + Если ЗначениеЗаполнено(ОписаниеПолучателяВоВременномХранилище) Тогда + ПараметрыПисьма.Вставить("ПолучателиСообщения", ПолучитьИзВременногоХранилища(ОписаниеПолучателяВоВременномХранилище)); + КонецЕсли; + + ПараметрыПисьма.Вставить("Тело", ТелоПисьма); + ПараметрыПисьма.Вставить("Вложения", Вложения()); + + Возврат ПараметрыПисьма; + +КонецФункции + +&НаСервере +Функция ТекстВHTML(Текст) + + Если СтрНайти(НРег(Текст), "", НаправлениеПоиска.СКонца) > 0 Тогда + Возврат Текст; + КонецЕсли; + + ДокументHTML = Новый ДокументHTML; + + ЭлементТело = ДокументHTML.СоздатьЭлемент("body"); + ДокументHTML.Тело = ЭлементТело; + + Для НомерСтроки = 1 По СтрЧислоСтрок(Текст) Цикл + Строка = СтрПолучитьСтроку(Текст, НомерСтроки); + + ЭлементБлок = ДокументHTML.СоздатьЭлемент("p"); + ЭлементТело.ДобавитьДочерний(ЭлементБлок); + + ЭлементТекст = ДокументHTML.СоздатьТекстовыйУзел(Строка); + ЭлементБлок.ДобавитьДочерний(ЭлементТекст); + КонецЦикла; + + ЗаписьDOM = Новый ЗаписьDOM; + ЗаписьHTML = Новый ЗаписьHTML; + ЗаписьHTML.УстановитьСтроку(); + ЗаписьDOM.Записать(ДокументHTML, ЗаписьHTML); + Результат = ЗаписьHTML.Закрыть(); + + Возврат Результат; + +КонецФункции + +&НаСервере +Функция Вложения() + + Результат = Новый Массив; + Для Каждого Вложение Из Вложения Цикл + ОписаниеВложения = Новый Структура; + ОписаниеВложения.Вставить("Представление", Вложение.Представление); + ОписаниеВложения.Вставить("АдресВоВременномХранилище", Вложение.АдресВоВременномХранилище); + ОписаниеВложения.Вставить("Кодировка", Вложение.Кодировка); + ОписаниеВложения.Вставить("Идентификатор", Вложение.Идентификатор); + Результат.Добавить(ОписаниеВложения); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервере +Процедура ОпределитьНазначениеВложенияПисьма(Вложение, ВложенияДляПисьма) + + Если Вложение.Свойство("Идентификатор") И ЗначениеЗаполнено(Вложение.Идентификатор) Тогда + КартинкаВложение = Новый Картинка(ПолучитьИзВременногоХранилища(Вложение.АдресВоВременномХранилище)); + ВложенияДляПисьма.Вставить(Вложение.Представление, КартинкаВложение); + Иначе + ОписаниеВложения = Вложения.Добавить(); + ЗаполнитьЗначенияСвойств(ОписаниеВложения, Вложение); + Если Не ПустаяСтрока(ОписаниеВложения.АдресВоВременномХранилище) Тогда + ОписаниеВложения.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище( + ПолучитьИзВременногоХранилища(ОписаниеВложения.АдресВоВременномХранилище), УникальныйИдентификатор); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СохранитьАдресОтвета(Знач АдресОтвета, Знач ДобавлятьАдресВСписок = Истина) + + // Получаем список адресов, которые пользователь использовал ранее. + СписокАдресовОтвета = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( + "РедактированиеНовогоПисьма", + "СписокАдресовОтвета"); + + Если СписокАдресовОтвета = Неопределено Тогда + СписокАдресовОтвета = Новый СписокЗначений(); + КонецЕсли; + + Для Каждого ЭлементАдресОтвета Из СписокАдресовОтвета Цикл + Если ЭлементАдресОтвета.Значение = АдресОтвета + И ЭлементАдресОтвета.Представление = АдресОтвета Тогда + СписокАдресовОтвета.Удалить(ЭлементАдресОтвета); + КонецЕсли; + КонецЦикла; + + Если ДобавлятьАдресВСписок + И ЗначениеЗаполнено(АдресОтвета) Тогда + СписокАдресовОтвета.Вставить(0, АдресОтвета, АдресОтвета); + КонецЕсли; + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( + "РедактированиеНовогоПисьма", + "СписокАдресовОтвета", + СписокАдресовОтвета); + +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьПриведенныйПочтовыйАдресВФормате(Текст) + АдресаСтрокой = ""; + Адреса = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(Текст); + + Если Адреса.Количество() > 1 Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Можно указывать только один адрес для ответа.'"), , "АдресОтвета"); + Возврат Текст; + КонецЕсли; + + Для Каждого ОписаниеАдреса Из Адреса Цикл + Если Не ПустаяСтрока(ОписаниеАдреса.ОписаниеОшибки) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(ОписаниеАдреса.ОписаниеОшибки, , "АдресОтвета"); + КонецЕсли; + + Если Не ПустаяСтрока(АдресаСтрокой) Тогда + АдресаСтрокой = АдресаСтрокой + "; "; + КонецЕсли; + АдресаСтрокой = АдресаСтрокой + АдресСтрокой(ОписаниеАдреса); + КонецЦикла; + + Возврат АдресаСтрокой; +КонецФункции + +&НаКлиенте +Функция АдресСтрокой(ОписаниеАдреса) + Результат = ""; + Если ПустаяСтрока(ОписаниеАдреса.Псевдоним) Тогда + Результат = ОписаниеАдреса.Адрес; + Иначе + Если ПустаяСтрока(ОписаниеАдреса.Адрес) Тогда + Результат = ОписаниеАдреса.Псевдоним; + Иначе + Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "%1 <%2>", ОписаниеАдреса.Псевдоним, ОписаниеАдреса.Адрес); + КонецЕсли; + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура ПриЗагрузкеВложений(Файлы, ДополнительныеПараметры) Экспорт + + Если Файлы = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьФайлыВСписок(Файлы); + ОбновитьПредставлениеВложений(); + ТребуетсяПодтверждениеЗакрытияФормы = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьВложенияИзФайлов() + + Для Каждого Вложение Из Вложения Цикл + Если Не ПустаяСтрока(Вложение.ПутьКФайлу) Тогда + ДвоичныеДанные = Новый ДвоичныеДанные(Вложение.ПутьКФайлу); + Вложение.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьВопросПередЗакрытиемФормы() + ТекстВопроса = НСтр("ru = 'Сообщение еще не отправлено. Закрыть форму?'"); + ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытиеФормыПодтверждено", ЭтотОбъект); + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("Закрыть", НСтр("ru = 'Закрыть'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена, НСтр("ru = 'Не закрывать'")); + ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки,, + КодВозвратаДиалога.Отмена, НСтр("ru = 'Отправка сообщения'")); +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытиеФормыПодтверждено(РезультатВопроса, ДополнительныеПараметры = Неопределено) Экспорт + + Если РезультатВопроса = КодВозвратаДиалога.Отмена Тогда + Возврат; + КонецЕсли; + + ТребуетсяПодтверждениеЗакрытияФормы = Ложь; + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьКакШаблон(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений") Тогда + МодульШаблоныСообщенийКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ШаблоныСообщенийКлиентСервер"); + ПараметровШаблона = МодульШаблоныСообщенийКлиентСервер.ОписаниеПараметровШаблона(); + МодульШаблоныСообщенийКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ШаблоныСообщенийКлиент"); + ПараметровШаблона.Тема = ТемаПисьма; + ПараметровШаблона.Текст = ТелоПисьма.ПолучитьТекст(); + ПараметровШаблона.ТипШаблона = "Письмо"; + МодульШаблоныСообщенийКлиент.ПоказатьФормуШаблона(ПараметровШаблона); + КонецЕсли; + +КонецПроцедуры + +// Параметры: +// Результат - см. ШаблоныСообщенийСлужебный.СформироватьСообщение +// ДополнительныеПараметры - Произвольный +// +&НаКлиенте +Процедура ЗаполнитьПоШаблонуПослеВыбораШаблона(Результат, ДополнительныеПараметры) Экспорт + Если Результат <> Неопределено Тогда + ТемаПисьма = Результат.Тема; + УстановитьТекстПисьмаИВложения(Результат.Текст, Результат.Вложения); + ОбновитьПредставлениеВложений(); + + Если ТипЗнч(Результат.Получатель) = Тип("СписокЗначений") Тогда + Для Каждого Получатель Из Результат.Получатель Цикл + АдресПолучателя = ПочтовыеАдресаПолучателей.Добавить(); + АдресПолучателя.ВариантОтправки = НСтр("ru = 'Кому:'"); + АдресПолучателя.Представление = Получатель.Представление; + КонецЦикла; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура УстановитьТекстПисьмаИВложения(Текст, СтруктураВложений) + + ВложенияHTML = Новый Структура(); + Если ТипЗнч(СтруктураВложений) = Тип("Массив") Тогда + Для каждого Вложение Из СтруктураВложений Цикл + ОпределитьНазначениеВложенияПисьма(Вложение, ВложенияHTML); + КонецЦикла; + КонецЕсли; + + ТелоПисьма.УстановитьHTML(Текст, ВложенияHTML); + +КонецПроцедуры + +&НаКлиенте +Функция ПочтовыйАдресИзПредставления(Знач Представление) + + Адрес = Представление; + ПозицияНачало = СтрНайти(Представление, "<"); + Если ПозицияНачало > 0 Тогда + ПозицияОкончание = СтрНайти(Представление, ">", НаправлениеПоиска.СНачала, ПозицияНачало); + Если ПозицияОкончание > 0 Тогда + Адрес = Сред(Представление, ПозицияНачало + 1, ПозицияОкончание - ПозицияНачало - 1); + КонецЕсли; + КонецЕсли; + + Возврат СокрЛП(Адрес); + +КонецФункции + +&НаСервере +Процедура ЗаполнитьТаблицуПолучателейИзМассиваСтруктур(ПараметрыПолучателейСообщения) + + Для Каждого ПараметрыПолучателя Из ПараметрыПолучателейСообщения Цикл + Если ЗначениеЗаполнено(ПараметрыПолучателя.Адрес) Тогда + Адрес = СтрЗаменить(ПараметрыПолучателя.Представление, ",", " ") + " < "+ ПараметрыПолучателя.Адрес + ">"; + + Если ПараметрыПолучателя.Свойство("ВидПочтовогоАдреса") + И ЗначениеЗаполнено(ПараметрыПолучателя.ВидПочтовогоАдреса) Тогда + Представление = Адрес + " (" + ПараметрыПолучателя.ВидПочтовогоАдреса + ")"; + ИначеЕсли ПараметрыПолучателя.Свойство("ИсточникКонтактнойИнформации") + И ЗначениеЗаполнено(ПараметрыПолучателя.ИсточникКонтактнойИнформации) Тогда + Представление = Адрес + " (" + Строка(ПараметрыПолучателя.ИсточникКонтактнойИнформации) + ")"; + Иначе + Представление = Адрес; + КонецЕсли; + ПолучателиСообщения.Добавить(Адрес, Представление); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьТаблицуПолучателейИзСтроки(Знач ПараметрыПолучателейСообщения) + + ПараметрыПолучателейСообщения = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(ПараметрыПолучателейСообщения); + + Для Каждого ПараметрыПолучателя Из ПараметрыПолучателейСообщения Цикл + Если ЗначениеЗаполнено(ПараметрыПолучателя.Адрес) Тогда + ПолучателиСообщения.Добавить(ПараметрыПолучателя.Адрес, ПараметрыПолучателя.Псевдоним); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОчиститьВложения(АдресаВложений) + Для Каждого АдресВложения Из АдресаВложений Цикл + УдалитьИзВременногоХранилища(АдресВложения); + КонецЦикла; +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьПолучателейВИсторию(ПолучателиПисьма) + + ИсторияПолучателей = ИсторияПолучателей(); + Для Каждого Получатель Из ПолучателиПисьма Цикл + ИсторияПолучателей.Вставить(Получатель.Адрес, Получатель.Представление); + КонецЦикла; + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("РедактированиеНовогоПисьма", "ИсторияПолучателей", ИсторияПолучателей); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ИсторияПолучателей() + + Возврат ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("РедактированиеНовогоПисьма", "ИсторияПолучателей", Новый Соответствие); + +КонецФункции + +&НаКлиенте +Функция ПредставлениеАдреса(Адрес, ПредставлениеПолучателя) + Результат = Адрес; + Если Не ПустаяСтрока(ПредставлениеПолучателя) Тогда + Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 <%2>", ПредставлениеПолучателя, Адрес); + КонецЕсли; + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция ПохожиеПолучателиИзИстории(Строка) + + Результат = Новый СписокЗначений; + Если СтрДлина(Строка) = 0 Тогда + Возврат Результат; + КонецЕсли; + + Если ИсторияПолучателей = Неопределено Тогда + ИсторияПолучателей = ИсторияПолучателей(); + КонецЕсли; + + Для Каждого Получатель Из ИсторияПолучателей Цикл + ПредставлениеАдреса = ПредставлениеАдреса(Получатель.Ключ, Получатель.Значение); + Позиция = СтрНайти(НРег(ПредставлениеАдреса), НРег(Строка)); + Если Позиция > 0 Тогда + ПодстрокаДоВхождения = Лев(ПредставлениеАдреса, Позиция - 1); + ПодстрокаВхождения = Сред(ПредставлениеАдреса, Позиция, СтрДлина(Строка)); + ПодстрокаПослеВхождения = Сред(ПредставлениеАдреса, Позиция + СтрДлина(Строка)); + СтрокаСПодсветкой = Новый ФорматированнаяСтрока( + ПодстрокаДоВхождения, + Новый ФорматированнаяСтрока(ПодстрокаВхождения, ШрифтСтиляВажнаяНадписьШрифт(), РезультатУспехЦвет), + ПодстрокаПослеВхождения); + Результат.Добавить(ПредставлениеАдреса, СтрокаСПодсветкой); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ПохожиеПолучателиИзСпискаПереданных(Знач Текст) + + Результат = Новый СписокЗначений; + + СписокАдресов = Новый Массив; + Для каждого СтрокаТаблицы Из ПочтовыеАдресаПолучателей Цикл + Адрес = ПочтовыйАдресИзПредставления(СтрокаТаблицы.Представление); + Если ЗначениеЗаполнено(Адрес) Тогда + СписокАдресов.Добавить(ВРег(Адрес)); + КонецЕсли; + КонецЦикла; + + ПредставлениеВыбор = Новый ФорматированнаяСтрока(Текст, ШрифтСтиляВажнаяНадписьШрифт(), РезультатУспехЦвет); + ДлинаТекста = СтрДлина(Текст); + Для Каждого Почта Из ПолучателиСообщения Цикл + Адрес = ПочтовыйАдресИзПредставления(Почта.Значение); + Если СписокАдресов.Найти(ВРег(Адрес)) = Неопределено Тогда + Позиция = СтрНайти(Почта.Значение, Текст); + Если Позиция > 0 Тогда + Представление= Новый ФорматированнаяСтрока(Лев(Почта.Представление, Позиция - 1), ПредставлениеВыбор, Сред(Почта.Представление, Позиция + ДлинаТекста)); + Результат.Добавить(Почта.Значение, Представление); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Функция ШрифтСтиляВажнаяНадписьШрифт() + Возврат ОбщегоНазначенияКлиент.ШрифтСтиля("ВажнаяНадписьШрифт"); +КонецФункции + + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 00000000..b3c056c2 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\241\320\276\320\276\320\261\321\211\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,16 @@ + + + ОтправкаСообщения + + ru + Отправка сообщения + + true + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/Form.form" new file mode 100644 index 00000000..9ff6139f --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/Form.form" @@ -0,0 +1,212 @@ + + + + <key>ru</key> + <value>Файлы сохранены</value> + + + Текст + 2 + true + true + + true + + + + Текст + + + None + + ТекстExtendedTooltip + 5 + true + true + + true + + Label + true + true + + Left + + + + ТекстКонтекстноеМеню + 3 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 70 + 10 + true + true + true + true + true + true + + + Bottom + + ФормаКоманднаяПанель + -1 + + ФормаОткрытьПапкуСФайлами + 6 + true + true + + true + + + ФормаОткрытьПапкуСФайламиРасширеннаяПодсказка + 7 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьПапкуСФайлами + Auto + true + true + UserCmds + Auto + + + ФормаЗакрыть + 1 + true + true + + true + + + ФормаЗакрытьExtendedTooltip + 4 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + + Текст + + <key>ru</key> + <value>Текст</value> + + 1 + + String + + + + true + + + true + + + + КаталогСФайлами + 2 + + String + + + + true + + + true + + + + ОткрытьПапкуСФайлами + + <key>ru</key> + <value>Открыть папку с файлами</value> + + 1 + + true + + + + ОткрытьПапкуСФайлами + + + DontUse + + + КаталогСФайлами + + String + + + + + Текст + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/Module.bsl" new file mode 100644 index 00000000..71442376 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/Module.bsl" @@ -0,0 +1,32 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Текст = Параметры.Текст; + КаталогСФайлами = Параметры.КаталогСФайлами; + + Элементы.ФормаОткрытьПапкуСФайлами.Видимость = ЗначениеЗаполнено(КаталогСФайлами); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОткрытьПапкуСФайлами(Команда) + + ФайловаяСистемаКлиент.ОткрытьПроводник(КаталогСФайлами); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271.mdo" new file mode 100644 index 00000000..ccca805a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271/\320\236\321\202\321\207\320\265\321\202\320\236\320\241\320\276\321\205\321\200\320\260\320\275\320\265\320\275\320\270\320\270\320\244\320\260\320\271\320\273\320\276\320\262\320\255\320\273\320\265\320\272\321\202\321\200\320\276\320\275\320\275\321\213\321\205\320\237\320\276\320\264\320\277\320\270\321\201\320\265\320\271.mdo" @@ -0,0 +1,10 @@ + + + ОтчетОСохраненииФайловЭлектронныхПодписей + + ru + Отчет о сохранении файлов электронных подписей + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Form.form" new file mode 100644 index 00000000..ec18ed51 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Form.form" @@ -0,0 +1,2954 @@ + + + + ВерхняяПанель + 395 + + СтрокаПоиска + 397 + true + true + + true + + + + СтрокаПоиска + + + + ru + Поиск отчетов по наименованиям, описаниям, именам авторов, а также по наименованиям полей и другим настройкам. + + + OnChange + СтрокаПоискаПриИзменении + + + СтрокаПоискаРасширеннаяПодсказка + 399 + true + true + + true + + Label + true + true + + Left + + + + СтрокаПоискаКонтекстноеМеню + 398 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + TextEditEnd + СтрокаПоискаОкончаниеВводаТекста + + 30 + 1 + true + true + true + true + true + true + true + + + + ВыполнитьПоиск + 400 + true + true + + true + + + ВыполнитьПоискРасширеннаяПодсказка + 401 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыполнитьПоиск + Auto + true + true + UserCmds + Auto + + + ГруппаКоманднаяПанельПравая + 405 + + ПоказыватьПодсказки + 407 + true + + true + + + + ПоказыватьПодсказки + + + Right + + OnChange + ПоказыватьПодсказкиПриИзменении + + + ПоказыватьПодсказкиРасширеннаяПодсказка + 409 + true + true + + true + + Label + true + true + + Left + + + + ПоказыватьПодсказкиКонтекстноеМеню + 408 + true + true + + true + + true + + CheckBoxField + Center + Enter + true + Left + true + + + + КоманднаяПанель + 410 + + Настроить + 412 + true + true + + true + + + НастроитьExtendedTooltip + 413 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Настроить + Auto + 12 + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ФормаОбновить + 414 + true + true + + true + + + ФормаОбновитьExtendedTooltip + 415 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Обновить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаВсеОтчеты + 416 + true + true + + true + + + ФормаВсеОтчетыРасширеннаяПодсказка + 417 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВсеОтчеты + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + Настройки + 418 + + СброситьМоиНастройки + 420 + true + true + + true + + + СброситьМоиНастройкиExtendedTooltip + 421 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СброситьМоиНастройки + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Настройки</value> + + + НастройкиРасширеннаяПодсказка + 419 + true + true + + true + + Label + true + true + + Left + + + + + + ФормаИзменитьФорму + 422 + true + true + + true + + + ФормаИзменитьФормуExtendedTooltip + 423 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + Справка + 426 + true + true + + true + + + СправкаРасширеннаяПодсказка + 427 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + 26 + 1 + false + + КоманднаяПанельРасширеннаяПодсказка + 411 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Командная панель правая</value> + + true + + ГруппаКоманднаяПанельПраваяРасширеннаяПодсказка + 406 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Right + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Верхняя панель</value> + + + ВерхняяПанельРасширеннаяПодсказка + 396 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ВерхняяПанельМобильныйКлиент + 445 + true + true + + true + + + <key>ru</key> + <value>Верхняя панель</value> + + + ВерхняяПанельМобильныйКлиентРасширеннаяПодсказка + 446 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + Страницы + 431 + + Ожидание + 433 + + КартинкаИНадпись + 437 + + ДекорацияДлительнаяОперация + 439 + + <key>ru</key> + <value>Длительная операция</value> + + true + true + + true + + + ДекорацияДлительнаяОперацияExtendedTooltip + 441 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияДлительнаяОперацияКонтекстноеМеню + 440 + true + true + + true + + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + + + + + ДекорацияПоясняющийТекстДлительнойОперации + 442 + + <key>ru</key> + <value>Формируется список вариантов отчетов. +Пожалуйста, подождите...</value> + + true + true + + true + + + ДекорацияПоясняющийТекстДлительнойОперацииExtendedTooltip + 444 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияПоясняющийТекстДлительнойОперацииКонтекстноеМеню + 443 + true + true + + true + + true + + Label + 30 + true + true + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Картинка и надпись</value> + + + КартинкаИНадписьРасширеннаяПодсказка + 438 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Center + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Ожидание</value> + + + ОжиданиеРасширеннаяПодсказка + 434 + true + true + + true + + Label + true + true + + Left + + + Page + + AlwaysHorizontal + true + + + + Основное + 435 + + Колонки + 3 + + БыстрыйДоступШапка + 375 + + БыстрыйДоступШапкаКартинка + 377 + true + true + + true + + + БыстрыйДоступШапкаКартинкаРасширеннаяПодсказка + 379 + true + true + + true + + Label + true + true + + Left + + + + БыстрыйДоступШапкаКартинкаКонтекстноеМеню + 378 + true + true + + true + + true + + true + true + + + CommonPicture.БыстрыйДоступ + + + + + БыстрыйДоступШапкаНадпись + 380 + + <key>ru</key> + <value>Быстрый доступ</value> + + true + true + + true + + Button + + БыстрыйДоступШапкаНадписьРасширеннаяПодсказка + 382 + + <key>ru</key> + <value>Для перемещения отчета в эту группу нажмите на отчете правой кнопкой мыши и выберите "Переместить в быстрый доступ". +В быстрый доступ рекомендуется помещать отчеты, которые используются постоянно. +Отчеты, перемещенные в быстрый доступ, будут отображаться вверху панели отчетов, выше всех остальных отчетов. +Это персональная настройка, у каждого пользователя свой быстрый доступ.</value> + + true + true + + true + + Label + true + true + + Left + + + + БыстрыйДоступШапкаНадписьКонтекстноеМеню + 381 + true + true + + true + + true + + Label + 1 + true + + Style.ГруппаВариантовОтчетовЦвет + + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Быстрый доступ шапка</value> + + + БыстрыйДоступШапкаРасширеннаяПодсказка + 376 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ПодсказкаДляРежимаНастройки + 367 + + БыстрыйДоступПодсказкаКогдаНеНастроен + 369 + + <key>ru</key> + <value>Для перемещения отчета в эту группу нажмите на отчете правой кнопкой мыши и выберите "Переместить в быстрый доступ". +</value> + + true + true + + true + + + БыстрыйДоступПодсказкаКогдаНеНастроенРасширеннаяПодсказка + 371 + true + true + + true + + Label + true + true + + Left + + + + БыстрыйДоступПодсказкаКогдаНеНастроенКонтекстноеМеню + 370 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Подсказка для режима настройки</value> + + + ПодсказкаДляРежимаНастройкиРасширеннаяПодсказка + 368 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + БыстрыйДоступ + 4 + + БыстрыйДоступКолонка1 + 5 + true + true + + true + + + <key>ru</key> + <value>Быстрый доступ колонка 1</value> + + + БыстрыйДоступКолонка1ExtendedTooltip + 285 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + БыстрыйДоступКолонка2 + 21 + true + true + + true + + + <key>ru</key> + <value>Быстрый доступ колонка 2</value> + + + БыстрыйДоступКолонка2ExtendedTooltip + 286 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Быстрый доступ</value> + + + БыстрыйДоступExtendedTooltip + 284 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + Equal + Auto + Auto + + + + БыстрыйДоступПодвал + 315 + + БыстрыйДоступПодвалЛиния + 317 + true + true + + true + + + БыстрыйДоступПодвалЛинияРасширеннаяПодсказка + 319 + true + true + + true + + Label + true + true + + Left + + + + БыстрыйДоступПодвалЛинияКонтекстноеМеню + 318 + true + true + + true + + true + + Label + true + true + true + + Left + + + 1 + + + + true + + true + + + <key>ru</key> + <value>Быстрый доступ подвал</value> + + + БыстрыйДоступПодвалРасширеннаяПодсказка + 316 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + Auto + Auto + + + + БезГруппы + 48 + + БезГруппыКолонка1 + 49 + true + true + + true + + + <key>ru</key> + <value>Без группы колонка 1</value> + + + БезГруппыКолонка1ExtendedTooltip + 290 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + БезГруппыКолонка2 + 58 + true + true + + true + + + <key>ru</key> + <value>Без группы колонка 2</value> + + + БезГруппыКолонка2ExtendedTooltip + 291 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Без группы</value> + + + БезГруппыExtendedTooltip + 289 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Equal + Auto + Auto + + + + БезГруппыПодвал + 43 + true + true + + true + + + БезГруппыПодвалРасширеннаяПодсказка + 293 + true + true + + true + + Label + true + true + + Left + + + + БезГруппыПодвалКонтекстноеМеню + 44 + true + true + + true + + true + + Label + true + true + + Left + + + + СГруппой + 74 + + СГруппойКолонка1 + 75 + true + true + + true + + + <key>ru</key> + <value>С группой колонка 1</value> + + + СГруппойКолонка1ExtendedTooltip + 295 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + СГруппойКолонка2 + 114 + true + true + + true + + + <key>ru</key> + <value>С группой колонка 2</value> + + + СГруппойКолонка2ExtendedTooltip + 296 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>С группой</value> + + + СГруппойExtendedTooltip + 294 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Equal + Auto + Auto + + + + СГруппойПодвал + 216 + true + true + + true + + + СГруппойПодвалРасширеннаяПодсказка + 298 + true + true + + true + + Label + true + true + + Left + + + + СГруппойПодвалКонтекстноеМеню + 217 + true + true + + true + + true + + Label + true + true + + Left + + + + СмТакжеЗаголовок + 428 + + <key>ru</key> + <value>См. также</value> + + true + true + + true + + + СмТакжеЗаголовокРасширеннаяПодсказка + 430 + true + true + + true + + Label + true + true + + Left + + + + СмТакжеЗаголовокКонтекстноеМеню + 429 + true + true + + true + + true + + Label + true + true + + Style.ГруппаВариантовОтчетовЦвет + + + Style.NormalTextFont + 0.0 + + + Left + + + + СмТакже + 198 + + СмТакжеКолонка1 + 199 + true + true + + true + + + <key>ru</key> + <value>См также колонка 1</value> + + + СмТакжеКолонка1ExtendedTooltip + 300 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + СмТакжеКолонка2 + 208 + true + true + + true + + + <key>ru</key> + <value>См также колонка 2</value> + + + СмТакжеКолонка2ExtendedTooltip + 301 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>См также</value> + + + СмТакжеExtendedTooltip + 299 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + Equal + Auto + Auto + + + + СмТакжеПодвал + 218 + true + true + + true + + + СмТакжеПодвалРасширеннаяПодсказка + 303 + true + true + + true + + Label + true + true + + Left + + + + СмТакжеПодвалКонтекстноеМеню + 219 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Колонки</value> + + + КолонкиExtendedTooltip + 283 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + РезультатыПоискаИзДругихРазделовГруппа + 345 + + РезультатыПоискаИзДругихРазделовШапка + 383 + + <key>ru</key> + <value>Отчеты, найденные в других разделах:</value> + + true + true + + true + + None + + РезультатыПоискаИзДругихРазделовШапкаРасширеннаяПодсказка + 385 + true + true + + true + + Label + true + true + + Left + + + + РезультатыПоискаИзДругихРазделовШапкаКонтекстноеМеню + 384 + true + true + + true + + true + + Label + 2 + true + + Style.FormTextColor + + + System.DefaultGUIFont + Arial + 11.0 + true + false + false + false + + + Left + Center + + + + РезультатыПоискаИзДругихРазделов + 350 + true + true + + true + + + <key>ru</key> + <value>Результаты поиска из других разделов</value> + + + РезультатыПоискаИзДругихРазделовРасширеннаяПодсказка + 351 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Отчеты, найденные в других разделах</value> + + + РезультатыПоискаИзДругихРазделовГруппаРасширеннаяПодсказка + 346 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Основное</value> + + + ОсновноеРасширеннаяПодсказка + 436 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 432 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + + ПодвалФормы + 311 + + СсылкаВсеОтчеты + 261 + true + true + + true + + + СсылкаВсеОтчетыExtendedTooltip + 304 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.ВсеОтчеты + Auto + true + true + UserCmds + + Style.ГиперссылкаЦвет + + Auto + + + Декорация2 + 389 + true + true + + true + + + Декорация2РасширеннаяПодсказка + 391 + true + true + + true + + Label + true + true + + Left + + + + Декорация2КонтекстноеМеню + 390 + true + true + + true + + true + + Label + true + true + + true + Left + + + + ОписаниеМобильногоПриложения + 392 + + <key>ru</key> + <value>Как посмотреть отчеты на смартфоне или планшете?</value> + + true + true + + true + + + ОписаниеМобильногоПриложенияРасширеннаяПодсказка + 394 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеМобильногоПриложенияКонтекстноеМеню + 393 + true + true + + true + + true + + Label + true + + + Click + ОписаниеМобильногоПриложенияНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Подвал формы</value> + + + ПодвалФормыРасширеннаяПодсказка + 312 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + true + true + + true + + Right + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnReopen + ПриПовторномОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + true + Vertical + true + true + true + true + true + + + КоманднаяПанель + + + + РежимНастройки + 4 + + Boolean + + + true + + + true + + + + ЦветСкрытыхВариантов + 5 + + Color + + + true + + + true + + + + ЦветВидимыхВариантов + 6 + + Color + + + true + + + true + + + + ШрифтВажнойНадписи + 7 + + Font + + + true + + + true + + + + ДобавленныеВарианты + 9 + + ValueTable + + + true + + + true + + + Ссылка + 1 + + CatalogRef.ВариантыОтчетов + + + true + + + true + + + + Отчет + 2 + + CatalogRef.ИдентификаторыОбъектовРасширений + String + CatalogRef.ДополнительныеОтчетыИОбработки + CatalogRef.ИдентификаторыОбъектовМетаданных + + 1000 + + + + true + + + true + + + + Наименование + 3 + + String + + + + true + + + true + + + + Описание + 4 + + String + + + + true + + + true + + + + КлючВарианта + 5 + + String + + + + true + + + true + + + + Подсистема + 6 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Важный + 7 + + Boolean + + + true + + + true + + + + СмТакже + 8 + + Boolean + + + true + + + true + + + + БезГруппы + 9 + + Boolean + + + true + + + true + + + + Видимость + 10 + + Boolean + + + true + + + true + + + + БыстрыйДоступ + 11 + + Boolean + + + true + + + true + + + + ГруппаУровня2Имя + 12 + + String + + + + true + + + true + + + + НадписьИмя + 13 + + String + + + + true + + + true + + + + ИмяОтчета + 16 + + String + + + + true + + + true + + + + Дополнительный + 17 + + Boolean + + + true + + + true + + + + Автор + 19 + + CatalogRef.ВнешниеПользователи + CatalogRef.Пользователи + + + true + + + true + + + + КлючЗамеров + 15 + + String + + + + true + + + true + + + + + ПостоянныеРеквизиты + 14 + + ValueList + + + true + + + true + + + + + + + ПостоянныеКоманды + 2 + + ValueList + + + true + + + true + + + + + + + ИмяИконкиБыстрогоДоступа + 15 + + String + + + + true + + + true + + + + КартинкаБыстрыйДоступ + 10 + + Picture + + + true + + + true + + + + СтрокаПоиска + + <key>ru</key> + <value>Поиск</value> + + 11 + + String + + + + true + + + true + + + + ТекущийРазделСсылка + 16 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + ПодсистемыПрограммы + 12 + + ValueTable + + + true + + + true + + + Ссылка + 1 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Представление + 8 + + String + + 256 + + + + true + + + true + + + + Имя + 9 + + String + + 512 + + + + true + + + true + + + + ПолноеИмя + 2 + + String + + + + true + + + true + + + + Приоритет + 3 + + String + + 100 + + + + true + + + true + + + + НомерЭлемента + 4 + + Number + + 10 + + + + true + + + true + + + + ИмяЭлемента + 5 + + String + + 512 + + + + true + + + true + + + + РодительСсылка + 6 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + РазделСсылка + 7 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + ВидимыхВариантов + 10 + + Number + + 10 + + + + true + + + true + + + + + ЦветГруппыВариантовОтчетов + 18 + + Color + + + true + + + true + + + + ИскатьВоВсехРазделах + 17 + + Boolean + + + true + + + true + + + + ПоказыватьПодсказки + + <key>ru</key> + <value>Описания отчетов</value> + + 20 + + Boolean + + + true + + + true + + + + ЦветПодсветкиНайденныхСлов + 21 + + Color + + + true + + + true + + + + ПоказатьОповещениеОПодсказках + 19 + + Boolean + + + true + + + true + + + + ЦветПодсказки + 22 + + Color + + + true + + + true + + + + ШрифтВажнойГруппы + 8 + + Font + + + true + + + true + + + + ШрифтОбычнойГруппы + 23 + + Font + + + true + + + true + + + + ШрифтРаздела + 24 + + Font + + + true + + + true + + + + ЦветРаздела + 25 + + Color + + + true + + + true + + + + ПараметрыКлиента + 26 + + + true + + + true + + + + ВариантОтчетаПоИмениЭлемента + 1 + + + true + + + true + + + + ПодсистемаПоСсылке + 27 + + + true + + + true + + + + ДлительнаяОперация + 28 + + + true + + + true + + + + Настроить + + <key>ru</key> + <value>Настройка</value> + + 1 + + ru + Настроить видимость и быстрый доступ к отчетам этой панели + + + true + + F2 + + StdPicture.CustomizeForm + + + + Настроить + + + TextPicture + DontUse + + + ПереместитьВБыстрыйДоступ + + <key>ru</key> + <value>Переместить в быстрый доступ</value> + + 2 + + ru + Переместить в быстрый доступ + + + true + + + CommonPicture.БыстрыйДоступДобавить + + + + ПереместитьВБыстрыйДоступ + + + DontUse + + + УбратьИзБыстрогоДоступа + + <key>ru</key> + <value>Убрать из быстрого доступа</value> + + 3 + + ru + Убрать из быстрого доступа + + + true + + + CommonPicture.БыстрыйДоступУдалить + + + + УбратьИзБыстрогоДоступа + + + DontUse + + + Изменить + + <key>ru</key> + <value>Изменить...</value> + + 5 + + ru + Открыть карточку варианта отчета... + + + true + + + StdPicture.Change + + + + Изменить + + + DontUse + + + СброситьМоиНастройки + + <key>ru</key> + <value>Сбросить мои настройки</value> + + 6 + + ru + Сбросить мои настройки видимости и быстрого доступа к отчетам данного раздела + + + true + + + + СброситьНастройки + + + TextPicture + DontUse + + + ВсеОтчеты + + <key>ru</key> + <value>Все отчеты...</value> + + 4 + + ru + Все отчеты + + + true + + + + ВсеОтчеты + + + DontUse + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 7 + + ru + Обновить + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + DontUse + + + ВыполнитьПоиск + + <key>ru</key> + <value>Найти</value> + + 8 + + ru + Найти + + + true + + + StdPicture.Find + + + + ВыполнитьПоиск + + + DontUse + + + ПутьКПодсистеме + + String + + 256 + + + + + Заголовок + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" new file mode 100644 index 00000000..7ed82844 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Help/ru.html" @@ -0,0 +1,56 @@ + +

        Выводит варианты отчетов, размещенные в разделе или группах раздела программы.

        +

        Открыть панель отчетов можно по соответствующей команде из разделов программы, например, в разделе Администрирование - Обслуживание - Отчеты и обработки предусмотрена команда Отчеты администратора.

        +

        Панель отчетов позволяет работать с отчетами из одного места и группирует варианты отчетов по группам командного интерфейса. Работа с панелью отчетов ведется в двух режимах:

        +

        Режим просмотра

        +
        • При первом открытии панели отчетов выводится оповещение о том, что к отчетам выводятся описания. Программа предоставляет возможность выбрать - оставить описания или отключить. Также можно это сделать в режиме настройки. +
        • +
        • Группы панели отчетов соответствуют группам раздела программы, в котором располагается отчет. +
          • Также в панели отчетов могут быть предусмотрены и другие виды группировки, которые зависят от конкретного списка отчетов. +
          • +
          • Предусмотрена группа См. также, в ней обычно размещаются варианты отчетов, которые редко используются при работе с программой. +
          • +
          • Важные отчеты в панели отчетов выделены жирным шрифтом. +
          • +
          • Эти группы можно настроить в списке всех отчетов, к которому можно перейти по команде Все отчеты.
        • +
        • Нажмите Настройка или клавишу F2, для того чтобы перейти в режим настройки панели отчетов.

        Поиск отчетов

        +

        Поиск доступен как в режиме просмотра, так и в режиме настройки.

        +
        • Отчеты можно искать по слову (части слова), также возможен поиск по нескольким словам. Поиск осуществляется: +
          • по наименованию отчета; +
          • +
          • по описанию варианта отчета; +
          • +
          • по представлениям полей варианта отчета; +
          • +
          • по представлениям параметров и отборов варианта отчета; +
          • +
          • по наименованиям пользовательских настроек варианта отчета; +
          • +
          • в наименованиях разделов и групп программы и панели отчетов.
        • +
        • В поле Поиск наберите искомое значение, нажмите Найти. Поиск проводится сначала в текущем разделе, а затем дополнительно во всех остальных разделах программы (эти результаты выводятся под заголовком Отчеты, найденные в других разделах, найденные отчеты сгруппированы по разделам программы, при этом каждый заголовок раздела является ссылкой, которая предназначена для быстрого перехода к панели отчетов другого раздела). +
        • +
        • Настройки поиска и поисковые слова запоминаются.

        Формирование отчета

        +
        • Нажмите левой кнопкой мыши по наименованию отчета.

        Отмена настроек панели отчетов

        +
        • Нажмите Еще - Сбросить мои настройки, для того чтобы вернуться к настройкам панели отчетов по умолчанию, если отчеты были размещены ошибочно.

        Все отчеты

        +
        • Нажмите Все отчеты для перехода к списку всех отчетов. В списке можно настроить варианты отчетов и их размещение во всех разделах программы.

        Режим настройки

        +
        • Перейти в этот режим можно с помощью кнопки Настройки (клавиши F2). +
        • +
        • Настроить вывод описаний вариантов отчетов можно с помощью флажка Описания отчетов. +
        • +
        • С помощью флажков можно управлять видимостью варианта отчета в группе. +
        • +
        • +
          При помощи контекстного меню по правой кнопке мыши вариант отчета можно переместить в быстрый доступ или открыть его для изменения наименования, описания или настроек размещения:
          +
          • +
            Для настройки быстрого доступа щелкните по варианту отчета в списке правой кнопкой мыши, выберите команду Переместить в быстрый доступ;
            +
          • +
          • +
            Для отмены быстрого доступа к варианту отчета щелкните по нему правой кнопкой мыши, выберите команду Убрать из быстрого доступа.
            +
          • +
          • +
            Для того чтобы открыть вариант отчета для изменения наименования, описания или настроек размещения, щелкните на вариант отчета правой кнопкой мыши, выберите команду  Изменить.
        • +
        • +
          Нажмите Настройки (клавишу F2), для того чтобы сохранить изменения и перевести панель отчетов в режим просмотра.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Module.bsl" new file mode 100644 index 00000000..9c21fc9e --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/Module.bsl" @@ -0,0 +1,2274 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных +&НаКлиенте +Перем Замер; +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОпределитьПоведениеВМобильномКлиенте(); + Если Не ЗначениеЗаполнено(Параметры.ПутьКПодсистеме) Тогда + Параметры.ПутьКПодсистеме = ВариантыОтчетовКлиентСервер.ИдентификаторНачальнойСтраницы(); + КонецЕсли; + + ПараметрыКлиента = ВариантыОтчетов.ПараметрыКлиента(); + ПараметрыКлиента.Вставить("ПутьКПодсистеме", Параметры.ПутьКПодсистеме); + + КартинкаБыстрыйДоступ = БиблиотекаКартинок.БыстрыйДоступ; + + ЭлементыСтиля = Метаданные.ЭлементыСтиля; + + ЦветСкрытыхВариантов = ЭлементыСтиля.СкрытыйВариантОтчетаЦвет.Значение; + ЦветВидимыхВариантов = ЭлементыСтиля.ГиперссылкаЦвет.Значение; + ЦветПодсветкиНайденныхСлов = ЭлементыСтиля.ФонРезультатовПоиска.Значение; + ЦветПодсказки = ЭлементыСтиля.ПоясняющийТекст.Значение; + ЦветГруппыВариантовОтчетов = ЭлементыСтиля.ГруппаВариантовОтчетовЦвет.Значение; + + ШрифтВажнойГруппы = ЭлементыСтиля.ГруппаВариантовОтчетовВажнаяШрифт.Значение; + ШрифтОбычнойГруппы = ЭлементыСтиля.ГруппаВариантовОтчетовОбычнаяШрифт.Значение; + ШрифтРаздела = ЭлементыСтиля.РазделВариантовОтчетовШрифт.Значение; + ШрифтВажнойНадписи = ЭлементыСтиля.ВажнаяНадписьШрифт.Значение; + + Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + Элементы.Настроить.Видимость = Ложь; + Элементы.СброситьМоиНастройки.Видимость = Ложь; + КонецЕсли; + + ГлобальныеНастройки = ВариантыОтчетов.ГлобальныеНастройки(); + Элементы.СтрокаПоиска.ПодсказкаВвода = ГлобальныеНастройки.Поиск.ПодсказкаВвода; + + ОписаниеМобильногоПриложения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ГлобальныеНастройки, "ОписаниеМобильногоПриложения"); + Если ОписаниеМобильногоПриложения = Неопределено Тогда + Элементы.ОписаниеМобильногоПриложения.Видимость = Ложь; + Иначе + ПараметрыКлиента.Вставить("ОписаниеМобильногоПриложения", ОписаниеМобильногоПриложения); + КонецЕсли; + + ЦветРаздела = ЦветГруппыВариантовОтчетов; + + Элементы.БыстрыйДоступШапкаНадпись.Шрифт = ШрифтВажнойГруппы; + Элементы.БыстрыйДоступШапкаНадпись.ЦветТекста = ЦветГруппыВариантовОтчетов; + + НаборРеквизитов = ПолучитьРеквизиты(); + Для Каждого Реквизит Из НаборРеквизитов Цикл + ПостоянныеРеквизиты.Добавить(Реквизит.Имя); + КонецЦикла; + + Для Каждого Команда Из Команды Цикл + ПостоянныеКоманды.Добавить(Команда.Имя); + КонецЦикла; + + // Чтение пользовательской настройки, общей для всех панелей отчетов. + ЗагрузитьВсеНастройки(); + + Если Параметры.Свойство("СтрокаПоиска") Тогда + СтрокаПоиска = Параметры.СтрокаПоиска; + КонецЕсли; + Если Параметры.Свойство("ИскатьВоВсехРазделах") Тогда + ИскатьВоВсехРазделах = Параметры.ИскатьВоВсехРазделах; + Иначе + ИскатьВоВсехРазделах = Истина; + КонецЕсли; + + // Заполнение панели. + ОпределитьПодсистемыИЗаголовок(Параметры); + ДлительнаяОперация = ОбновитьПанельОтчетовНаСервере(); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если ПоказатьОповещениеОПодсказках И ПоказыватьПодсказки Тогда + ПоказатьОповещениеПользователя( + НСтр("ru = 'Новая возможность'"), + "e1cib/data/ХранилищеНастроек.ХранилищеВариантовОтчетов.Форма.ОписаниеНовойВозможностиПоВыводуОписаний", + НСтр("ru = 'Вывод описаний в панелях отчетов'"), + БиблиотекаКартинок.Информация32); + КонецЕсли; + Если ДлительнаяОперация.Статус = "Выполняется" Тогда + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ВыводитьОкноОжидания = Ложь; + Завершение = Новый ОписаниеОповещения("ОбновитьПанельОтчетовЗавершение", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Завершение, ПараметрыОжидания); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьПанельОтчетовЗавершение(Результат, ДополнительныеПараметры) Экспорт + + ДлительнаяОперация = Неопределено; + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + Если Результат.Статус = "Ошибка" Тогда + ВызватьИсключение Результат.КраткоеПредставлениеОшибки; + КонецЕсли; + Если Результат.Статус = "Выполнено" Тогда + ЗаполнитьПанельОтчетов(Результат.АдресРезультата); + Если ПараметрыКлиента.ВыполнятьЗамеры Тогда + ЗакончитьЗамер(Замер); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриПовторномОткрытии() + Если РежимНастройки Или ЗначениеЗаполнено(СтрокаПоиска) Тогда + РежимНастройки = Ложь; + СтрокаПоиска = ""; + ОбновитьПанельОтчетовНаКлиенте("ПриПовторномОткрытии"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Изменения, Источник) + Если Источник = ЭтотОбъект Тогда + Возврат; + КонецЕсли; + Если ПараметрыКлиента.Свойство("Обновлять") Тогда + ОтключитьОбработчикОжидания("ОбновитьПанельОтчетовПоТаймеру"); + Иначе + ПараметрыКлиента.Вставить("Обновлять", Ложь) + КонецЕсли; + Если ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеВарианта() + Или ИмяСобытия = "Запись_НаборКонстант" Тогда + ПараметрыКлиента.Обновлять = Истина; + ИначеЕсли ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеОбщихНастроек() Тогда + Если Изменения.ПоказыватьПодсказки <> ПоказыватьПодсказки + Или Изменения.ИскатьВоВсехРазделах <> ИскатьВоВсехРазделах Тогда + ПараметрыКлиента.Обновлять = Истина; + КонецЕсли; + ЗаполнитьЗначенияСвойств(ЭтотОбъект, Изменения, "ПоказыватьПодсказки, ИскатьВоВсехРазделах, ПоказатьОповещениеОПодсказках"); + КонецЕсли; + Если ПараметрыКлиента.Обновлять Тогда + ПодключитьОбработчикОжидания("ОбновитьПанельОтчетовПоТаймеру", 1, Истина); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +// Параметры: +// Элемент - ДекорацияФормы +// +&НаКлиенте +Процедура Подключаемый_ВариантНажатие(Элемент) + Вариант = НайтиВариантПоИмениЭлемента(Элемент.Имя); + Если Вариант = Неопределено Тогда + Возврат; + КонецЕсли; + ПараметрыФормыОтчета = Новый Структура; + Подсистема = НайтиПодсистемуПоСсылке(ЭтотОбъект, Вариант.Подсистема); + Если Подсистема.ВидимыхВариантов > 1 Тогда + ПараметрыФормыОтчета.Вставить("Подсистема", Вариант.Подсистема); + КонецЕсли; + ВариантыОтчетовКлиент.ОткрытьФормуОтчета(ЭтотОбъект, Вариант, ПараметрыФормыОтчета); +КонецПроцедуры + +// Параметры: +// Элемент - ПолеФормы +// +&НаКлиенте +Процедура Подключаемый_ВидимостьВариантаПриИзменении(Элемент) + Флажок = Элемент; + Показать = ЭтотОбъект[Флажок.Имя]; + + НадписьИмя = Сред(Флажок.Имя, СтрДлина("Флажок_")+1); + Вариант = НайтиВариантПоИмениЭлемента(НадписьИмя); + Элемент = Элементы.Найти(НадписьИмя); + Если Вариант = Неопределено Или Элемент = Неопределено Тогда + Возврат; + КонецЕсли; + + ПоказатьСкрытьВариант(Вариант, Элемент, Показать); +КонецПроцедуры + +&НаКлиенте +Процедура СтрокаПоискаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка) + Если Не ПустаяСтрока(Текст) И ВведенаСлишкомКороткаяСтрокаПоиска(Текст) Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ВведенаСлишкомКороткаяСтрокаПоиска(Текст) + Текст = СокрЛП(Текст); + Если СтрДлина(Текст) < 2 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Введена слишком короткая строка поиска.'")); + Возврат Истина; + КонецЕсли; + + ЕстьНормальноеСлово = Ложь; + МассивСлов = ВариантыОтчетовКлиентСервер.РазложитьСтрокуПоискаВМассивСлов(Текст); + Для Каждого Слово Из МассивСлов Цикл + Если СтрДлина(Слово) >= 2 Тогда + ЕстьНормальноеСлово = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + Если Не ЕстьНормальноеСлово Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Введены слишком короткие слова для поиска.'")); + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + +&НаКлиенте +Процедура СтрокаПоискаПриИзменении(Элемент) + Если Не ПустаяСтрока(СтрокаПоиска) И ВведенаСлишкомКороткаяСтрокаПоиска(СтрокаПоиска) Тогда + СтрокаПоиска = ""; + ТекущийЭлемент = Элементы.СтрокаПоиска; + Возврат; + КонецЕсли; + + ОбновитьПанельОтчетовНаКлиенте("СтрокаПоискаПриИзменении"); + + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + ТекущийЭлемент = Элементы.СтрокаПоиска; + КонецЕсли; +КонецПроцедуры + +// Параметры: +// Элемент - ДекорацияФормы +// +&НаКлиенте +Процедура Подключаемый_ЗаголовокРазделаНажатие(Элемент) + ГруппаРазделаИмя = Элемент.Родитель.Имя; + Подстроки = СтрРазделить(ГруппаРазделаИмя, "_"); + ПриоритетРаздела = Подстроки[1]; + Найденные = ПодсистемыПрограммы.НайтиСтроки(Новый Структура("Приоритет", ПриоритетРаздела)); + Если Найденные.Количество() = 0 Тогда + Возврат; + КонецЕсли; + Раздел = Найденные[0]; + + ПутьКПодсистеме = СтрЗаменить(Раздел.ПолноеИмя, "Подсистема.", ""); + + ФормаПараметры = Новый Структура; + ФормаПараметры.Вставить("ПутьКПодсистеме", ПутьКПодсистеме); + ФормаПараметры.Вставить("СтрокаПоиска", СтрокаПоиска); + + ФормаВладелец = ЭтотОбъект; + ФормаУникальность = Истина; + + Если ПараметрыКлиента.ВыполнятьЗамеры Тогда + Замер = НачатьЗамер("ПанельОтчетов.Открытие", ПараметрыКлиента.ПрефиксЗамеров + "; " + ПутьКПодсистеме); + КонецЕсли; + + ОткрытьФорму("ОбщаяФорма.ПанельОтчетов", ФормаПараметры, ФормаВладелец, ФормаУникальность); + + Если ПараметрыКлиента.ВыполнятьЗамеры Тогда + ЗакончитьЗамер(Замер); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПодсказкиПриИзменении(Элемент) + ОбновитьПанельОтчетовНаКлиенте("ПоказыватьПодсказкиПриИзменении"); + + ОбщиеНастройки = Новый Структура; + ОбщиеНастройки.Вставить("ПоказыватьПодсказки", ПоказыватьПодсказки); + ОбщиеНастройки.Вставить("ИскатьВоВсехРазделах", ИскатьВоВсехРазделах); + ОбщиеНастройки.Вставить("ПоказатьОповещениеОПодсказках", ПоказатьОповещениеОПодсказках); + + Оповестить( + ВариантыОтчетовКлиент.ИмяСобытияИзменениеОбщихНастроек(), + ОбщиеНастройки, + ЭтотОбъект); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Настроить(Команда) + РежимНастройки = Не РежимНастройки; + ОбновитьПанельОтчетовНаКлиенте(?(РежимНастройки, "ВходВРежимНастройки", "ВыходИзРежимаНастройки")); +КонецПроцедуры + +&НаКлиенте +Процедура ПереместитьВБыстрыйДоступ(Команда) + +#Если ВебКлиент Тогда + Элемент = Элементы.Найти(Сред(Команда.Имя, СтрНайти(Команда.Имя, "_")+1)); +#Иначе + Элемент = ТекущийЭлемент; +#КонецЕсли + + Если ТипЗнч(Элемент) <> Тип("ДекорацияФормы") Тогда + Возврат; + КонецЕсли; + + Вариант = НайтиВариантПоИмениЭлемента(Элемент.Имя); + Если Вариант = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьУбратьВариантИзБыстрогоДоступа(Вариант, Элемент, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура УбратьИзБыстрогоДоступа(Команда) + +#Если ВебКлиент Тогда + Элемент = Элементы.Найти(Сред(Команда.Имя, СтрНайти(Команда.Имя, "_")+1)); +#Иначе + Элемент = ТекущийЭлемент; +#КонецЕсли + + Если ТипЗнч(Элемент) <> Тип("ДекорацияФормы") Тогда + Возврат; + КонецЕсли; + + Вариант = НайтиВариантПоИмениЭлемента(Элемент.Имя); + Если Вариант = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьУбратьВариантИзБыстрогоДоступа(Вариант, Элемент, Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура Изменить(Команда) + +#Если ВебКлиент Тогда + Элемент = Элементы.Найти(Сред(Команда.Имя, СтрНайти(Команда.Имя, "_")+1)); +#Иначе + Элемент = ТекущийЭлемент; +#КонецЕсли + + Если ТипЗнч(Элемент) <> Тип("ДекорацияФормы") Тогда + Возврат; + КонецЕсли; + + Вариант = НайтиВариантПоИмениЭлемента(Элемент.Имя); + Если Вариант = Неопределено Тогда + Возврат; + КонецЕсли; + + ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Вариант.Ссылка); +КонецПроцедуры + +&НаКлиенте +Процедура СброситьНастройки(Команда) + ТекстВопроса = НСтр("ru = 'Сбросить настройки расположения отчетов?'"); + Обработчик = Новый ОписаниеОповещения("СброситьНастройкиЗавершение", ЭтотОбъект); + ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Нет); +КонецПроцедуры + +&НаКлиенте +Процедура ВсеОтчеты(Команда) + ФормаПараметры = Новый Структура; + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + ФормаПараметры.Вставить("СтрокаПоиска", СтрокаПоиска); + КонецЕсли; + Если ЗначениеЗаполнено(СтрокаПоиска) И Не РежимНастройки И ИскатьВоВсехРазделах = 1 Тогда + // Спозиционироваться на корне дерева. + РазделСсылка = ПредопределенноеЗначение("Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка"); + Иначе + РазделСсылка = ТекущийРазделСсылка; + КонецЕсли; + ФормаПараметры.Вставить("РазделСсылка", РазделСсылка); + + Если ПараметрыКлиента.ВыполнятьЗамеры Тогда + Замер = НачатьЗамер("СписокОтчетов.Открытие"); + КонецЕсли; + + ОткрытьФорму("Справочник.ВариантыОтчетов.ФормаСписка", ФормаПараметры, , "ВариантыОтчетов.ВсеОтчеты"); + + Если ПараметрыКлиента.ВыполнятьЗамеры Тогда + ЗакончитьЗамер(Замер); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура Обновить(Команда) + ОбновитьПанельОтчетовНаКлиенте("Обновить"); +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПоиск(Команда) + ОбновитьПанельОтчетовНаКлиенте("ВыполнитьПоиск"); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Клиент + +&НаКлиенте +Процедура ПоказатьСкрытьВариант(Вариант, Элемент, Показать) + Вариант.Видимость = Показать; + Элемент.ЦветТекста = ?(Показать, ЦветВидимыхВариантов, ЦветСкрытыхВариантов); + ЭтотОбъект["Флажок_"+ Вариант.НадписьИмя] = Показать; + Если Вариант.Важный Тогда + Если Показать Тогда + Элемент.Шрифт = ШрифтВажнойНадписи; + Иначе + Элемент.Шрифт = Новый Шрифт; + КонецЕсли; + КонецЕсли; + Подсистема = НайтиПодсистемуПоСсылке(ЭтотОбъект, Вариант.Подсистема); + Подсистема.ВидимыхВариантов = Подсистема.ВидимыхВариантов + ?(Показать, 1, -1); + Пока Подсистема.Ссылка <> Подсистема.РазделСсылка Цикл + Подсистема = НайтиПодсистемуПоСсылке(ЭтотОбъект, Подсистема.РазделСсылка); + Подсистема.ВидимыхВариантов = Подсистема.ВидимыхВариантов + ?(Показать, 1, -1); + КонецЦикла; + СохранитьПользовательскиеНастройки(Вариант.Ссылка, Вариант.Подсистема, Вариант.Видимость, Вариант.БыстрыйДоступ); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьУбратьВариантИзБыстрогоДоступа(Вариант, Элемент, БыстрыйДоступ) + Если Вариант.БыстрыйДоступ = БыстрыйДоступ Тогда + Возврат; + КонецЕсли; + + // Регистрация результата для записи. + Вариант.БыстрыйДоступ = БыстрыйДоступ; + + // Связанное действие: если добавляемый в быстрый доступ вариант не видим - показываем его. + Если БыстрыйДоступ И Не Вариант.Видимость Тогда + ПоказатьСкрытьВариант(Вариант, Элемент, Истина); + КонецЕсли; + + // Визуальный результат + ПереместитьВариантБыстрогоДоступа(Вариант.ПолучитьИдентификатор(), БыстрыйДоступ); +КонецПроцедуры + +&НаКлиенте +Процедура СброситьНастройкиЗавершение(Ответ, ДополнительныеПараметры) Экспорт + Если Ответ = КодВозвратаДиалога.Да Тогда + РежимНастройки = Ложь; + ОбновитьПанельОтчетовНаКлиенте("СброситьНастройки"); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьПанельОтчетовПоТаймеру() + Если ПараметрыКлиента.Обновлять Тогда + ПараметрыКлиента.Обновлять = Ложь; + ОбновитьПанельОтчетовНаКлиенте(""); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ОбновитьПанельОтчетовНаКлиенте(Событие = "") + Если ПараметрыКлиента.ВыполнятьЗамеры Тогда + Замер = НачатьЗамер(Событие); + КонецЕсли; + + Элементы.Страницы.ТекущаяСтраница = Элементы.Ожидание; + ДлительнаяОперация = ОбновитьПанельОтчетовНаСервере(Событие); + Если ДлительнаяОперация <> Неопределено И ДлительнаяОперация.Статус = "Выполняется" Тогда + Завершение = Новый ОписаниеОповещения("ОбновитьПанельОтчетовЗавершение", ЭтотОбъект); + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ВыводитьОкноОжидания = Ложь; + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Завершение); + Возврат Истина; + КонецЕсли; + + Если ПараметрыКлиента.ВыполнятьЗамеры Тогда + ЗакончитьЗамер(Замер); + КонецЕсли; + + Если ДлительнаяОперация = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + Возврат Истина; +КонецФункции + +&НаКлиенте +Функция НачатьЗамер(Событие, Комментарий = Неопределено) + Если Комментарий = Неопределено Тогда + Комментарий = ПараметрыКлиента.ПрефиксЗамеров; + КонецЕсли; + + Замер = Новый Структура("Имя, Идентификатор, МодульОценкаПроизводительностиКлиент"); + Если Событие = "СписокОтчетов.Открытие" Или Событие = "ПанельОтчетов.Открытие" Тогда + Замер.Имя = Событие; + Комментарий = Комментарий + "; " + НСтр("ru = 'Из панели отчетов:'") + " " + ПараметрыКлиента.ПутьКПодсистеме; + Иначе + Если РежимНастройки Или Событие = "ВыходИзРежимаНастройки" Тогда + Замер.Имя = "ПанельОтчетов.РежимНастройки"; + ИначеЕсли ЗначениеЗаполнено(СтрокаПоиска) Тогда + Замер.Имя = "ПанельОтчетов.Поиск"; // Сам по себе поиск интересен только в режиме просмотра. + КонецЕсли; + Комментарий = Комментарий + "; " + ПараметрыКлиента.ПутьКПодсистеме; + Комментарий = Комментарий + "; " + НСтр("ru = 'Подсказки:'") + " " + Строка(ПоказыватьПодсказки); + КонецЕсли; + + Если Замер.Имя = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + Комментарий = Комментарий + + "; " + НСтр("ru = 'Поиск:'") + " " + Строка(СтрокаПоиска) + + "; " + НСтр("ru = 'Во всех разделах:'") + " " + Строка(ИскатьВоВсехРазделах); + Иначе + Комментарий = Комментарий + "; " + НСтр("ru = 'Без поиска'"); + КонецЕсли; + + Если Событие = "ВыходИзРежимаНастройки" Тогда + Комментарий = Комментарий + "; " + НСтр("ru = 'Выход из режима настройки'"); + КонецЕсли; + Замер.МодульОценкаПроизводительностиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОценкаПроизводительностиКлиент"); + Замер.Идентификатор = Замер.МодульОценкаПроизводительностиКлиент.ЗамерВремени(Замер.Имя); + Замер.МодульОценкаПроизводительностиКлиент.УстановитьКомментарийЗамера(Замер.Идентификатор, Комментарий); + Возврат Замер; +КонецФункции + +&НаКлиенте +Процедура ЗакончитьЗамер(Замер) + Если Замер <> Неопределено Тогда + Замер.МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(Замер.Идентификатор); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция НайтиВариантПоИмениЭлемента(НадписьИмя) + Идентификатор = ВариантОтчетаПоИмениЭлемента[НадписьИмя]; + Если Идентификатор <> Неопределено Тогда + Возврат ДобавленныеВарианты.НайтиПоИдентификатору(Идентификатор); + Иначе + Найденные = ДобавленныеВарианты.НайтиСтроки(Новый Структура("НадписьИмя", НадписьИмя)); + Если Найденные.Количество() = 1 Тогда + Возврат Найденные[0]; + КонецЕсли; + КонецЕсли; + Возврат Неопределено; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вызов сервера + +&НаКлиентеНаСервереБезКонтекста +Функция НайтиПодсистемуПоСсылке(Форма, Ссылка) + Идентификатор = Форма.ПодсистемаПоСсылке[Ссылка]; + Если Идентификатор <> Неопределено Тогда + Возврат Форма.ПодсистемыПрограммы.НайтиПоИдентификатору(Идентификатор); + КонецЕсли; + + Найденные = Форма.ПодсистемыПрограммы.НайтиСтроки(Новый Структура("Ссылка", Ссылка)); + Если Найденные.Количество() = 1 Тогда + Возврат Найденные[0]; + КонецЕсли; + Возврат Неопределено; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вызов сервера + +&НаСервере +Процедура ПереместитьВариантБыстрогоДоступа(Знач ВариантИдентификатор, Знач БыстрыйДоступ) + Вариант = ДобавленныеВарианты.НайтиПоИдентификатору(ВариантИдентификатор); + Элемент = Элементы.Найти(Вариант.НадписьИмя); + + Если БыстрыйДоступ Тогда + Элемент.Шрифт = Новый Шрифт; + ГруппаДляПереноса = ПодгруппаСНаименьшимКоличествомЭлементов(Элементы.БыстрыйДоступ); + ИначеЕсли Вариант.СмТакже Тогда + Элемент.Шрифт = Новый Шрифт; + ГруппаДляПереноса = ПодгруппаСНаименьшимКоличествомЭлементов(Элементы.СмТакже); + ИначеЕсли Вариант.БезГруппы Тогда + Элемент.Шрифт = ?(Вариант.Важный, ШрифтВажнойНадписи, Новый Шрифт); + ГруппаДляПереноса = ПодгруппаСНаименьшимКоличествомЭлементов(Элементы.БезГруппы); + Иначе + Элемент.Шрифт = ?(Вариант.Важный, ШрифтВажнойНадписи, Новый Шрифт); + Подсистема = НайтиПодсистемуПоСсылке(ЭтотОбъект, Вариант.Подсистема); + + ГруппаДляПереноса = Элементы.Найти(Подсистема.ИмяЭлемента + "_1"); + Если ГруппаДляПереноса = Неопределено Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + ПередКакимЭлементом = Неопределено; + Если ГруппаДляПереноса.ПодчиненныеЭлементы.Количество() > 0 Тогда + ПередКакимЭлементом = ГруппаДляПереноса.ПодчиненныеЭлементы.Получить(0); + КонецЕсли; + + Элементы.Переместить(Элемент.Родитель, ГруппаДляПереноса, ПередКакимЭлементом); + + Если БыстрыйДоступ Тогда + Элементы.БыстрыйДоступПодсказкаКогдаНеНастроен.Видимость = Ложь; + Иначе + ВариантыБыстрогоДоступа = ДобавленныеВарианты.НайтиСтроки(Новый Структура("БыстрыйДоступ", Истина)); + Если ВариантыБыстрогоДоступа.Количество() = 0 Тогда + Элементы.БыстрыйДоступПодсказкаКогдаНеНастроен.Видимость = Истина; + Иначе + Элементы.БыстрыйДоступПодсказкаКогдаНеНастроен.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + ФлажокИмя = "Флажок_" + Вариант.НадписьИмя; + Флажок = Элементы.Найти(ФлажокИмя); + ФлажокВыведен = (Флажок.Видимость = Истина); + Если ФлажокВыведен = БыстрыйДоступ Тогда + Флажок.Видимость = Не БыстрыйДоступ; + КонецЕсли; + + НадписьКонтекстноеМеню = Элемент.КонтекстноеМеню; + Если НадписьКонтекстноеМеню <> Неопределено Тогда + КнопкаУбрать = Элементы.Найти("УбратьИзБыстрогоДоступа_" + Вариант.НадписьИмя); + КнопкаУбрать.Видимость = БыстрыйДоступ; + КнопкаПереместить = Элементы.Найти("ПереместитьВБыстрыйДоступ_" + Вариант.НадписьИмя); + КнопкаПереместить.Видимость = Не БыстрыйДоступ; + КонецЕсли; + + СохранитьПользовательскиеНастройки(Вариант.Ссылка, Вариант.Подсистема, Вариант.Видимость, Вариант.БыстрыйДоступ); +КонецПроцедуры + +&НаСервере +Функция ОбновитьПанельОтчетовНаСервере(Знач Событие = "") + + Если ЗначениеЗаполнено(Событие) И ДлительнаяОперация <> Неопределено И ДлительнаяОперация.Статус = "Выполняется" Тогда + Возврат Неопределено; + КонецЕсли; + + Если Событие = "СброситьНастройки" Тогда + РегистрыСведений.НастройкиВариантовОтчетов.СброситьНастройкиПользователяВРазделе(ТекущийРазделСсылка); + КонецЕсли; + + Если Событие = "" Или Событие = "СтрокаПоискаПриИзменении" Или Событие = "СброситьНастройки" Тогда + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + СписокВыбора = Элементы.СтрокаПоиска.СписокВыбора; + ЭлементСписка = СписокВыбора.НайтиПоЗначению(СтрокаПоиска); + Если ЭлементСписка = Неопределено Тогда + СписокВыбора.Вставить(0, СтрокаПоиска); + Если СписокВыбора.Количество() > 10 Тогда + СписокВыбора.Удалить(10); + КонецЕсли; + Иначе + Индекс = СписокВыбора.Индекс(ЭлементСписка); + Если Индекс <> 0 Тогда + СписокВыбора.Сдвинуть(Индекс, -Индекс); + КонецЕсли; + КонецЕсли; + Если Событие = "СтрокаПоискаПриИзменении" Тогда + СохранитьНастройкиЭтойПанелиОтчетов(); + КонецЕсли; + КонецЕсли; + ИначеЕсли Событие = "ПоказыватьПодсказкиПриИзменении" + Или Событие = "ИскатьВоВсехРазделахПриИзменении" Тогда + + ОбщиеНастройки = Новый Структура; + ОбщиеНастройки.Вставить("ПоказыватьПодсказки", ПоказыватьПодсказки); + ОбщиеНастройки.Вставить("ИскатьВоВсехРазделах", ИскатьВоВсехРазделах); + ОбщиеНастройки.Вставить("ПоказатьОповещениеОПодсказках", ПоказатьОповещениеОПодсказках); + + ВариантыОтчетов.СохранитьОбщиеНастройкиПанели(ОбщиеНастройки); + + КонецЕсли; + + Элементы.ПоказыватьПодсказки.Видимость = РежимНастройки; + Элементы.БыстрыйДоступШапкаНадпись.ОтображениеПодсказки = ?(РежимНастройки, ОтображениеПодсказки.Кнопка, ОтображениеПодсказки.Нет); + Элементы.РезультатыПоискаИзДругихРазделовГруппа.Видимость = (ИскатьВоВсехРазделах = 1); + Элементы.Настроить.Пометка = РежимНастройки; + + // Заголовок. + СуффиксРежимаНастройки = " (" + НСтр("ru = 'настройка'") + ")"; + СуффиксВыведен = (Прав(Заголовок, СтрДлина(СуффиксРежимаНастройки)) = СуффиксРежимаНастройки); + Если СуффиксВыведен <> РежимНастройки Тогда + Если РежимНастройки Тогда + Заголовок = Заголовок + СуффиксРежимаНастройки; + Иначе + Заголовок = СтрЗаменить(Заголовок, СуффиксРежимаНастройки, ""); + КонецЕсли; + КонецЕсли; + + // Удаление элементов. + ОчиститьФормуОтДобавленныхЭлементов(); + + // Удаление команд + Если ОбщегоНазначения.ЭтоВебКлиент() Тогда + УдаляемыеКоманды = Новый Массив; + Для Каждого Команда Из Команды Цикл + Если ПостоянныеКоманды.НайтиПоЗначению(Команда.Имя) = Неопределено Тогда + УдаляемыеКоманды.Добавить(Команда); + КонецЕсли; + КонецЦикла; + Для Каждого Команда Из УдаляемыеКоманды Цикл + Команды.Удалить(Команда); + КонецЦикла; + КонецЕсли; + + // Сброс номера последнего добавленного элемента. + Для Каждого СтрокаТаблицы Из ПодсистемыПрограммы Цикл + СтрокаТаблицы.НомерЭлемента = 0; + СтрокаТаблицы.ВидимыхВариантов = 0; + КонецЦикла; + + // Заполнение панели отчетов + Возврат ЗаполнитьПанельОтчетовВФоне(); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Сервер + +&НаСервере +Процедура ОпределитьПоведениеВМобильномКлиенте() + Если Не ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Возврат; + КонецЕсли; + + Элементы.СтрокаПоиска.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + Элементы.СтрокаПоиска.КнопкаВыпадающегоСписка = Ложь; + Элементы.ВыполнитьПоиск.Отображение = ОтображениеКнопки.Картинка; + Элементы.Переместить(Элементы.ПоказыватьПодсказки, Элементы.ВерхняяПанельМобильныйКлиент); + Элементы.ГруппаКоманднаяПанельПравая.Видимость = Ложь; + Элементы.ОписаниеМобильногоПриложения.Видимость = Ложь; + + ПодстрокаПоиска = НСтр("ru = 'нажмите на отчете правой кнопкой мыши и'"); + ПодстрокаЗамены = НСтр("ru = 'в контекстном меню'"); + + Элементы.БыстрыйДоступПодсказкаКогдаНеНастроен.Заголовок = + СтрЗаменить(Элементы.БыстрыйДоступПодсказкаКогдаНеНастроен.Заголовок, ПодстрокаПоиска, ПодстрокаЗамены); + + Элементы.БыстрыйДоступШапкаНадпись.РасширеннаяПодсказка.Заголовок = + СтрЗаменить(Элементы.БыстрыйДоступШапкаНадпись.РасширеннаяПодсказка.Заголовок, ПодстрокаПоиска, ПодстрокаЗамены); +КонецПроцедуры + +&НаСервере +Процедура ОчиститьФормуОтДобавленныхЭлементов() + УдаляемыеЭлементы = Новый Массив; + Для Каждого ЭлементУровня3 Из Элементы.БыстрыйДоступ.ПодчиненныеЭлементы Цикл + Для Каждого ЭлементУровня4 Из ЭлементУровня3.ПодчиненныеЭлементы Цикл + УдаляемыеЭлементы.Добавить(ЭлементУровня4); + КонецЦикла; + КонецЦикла; + Для Каждого ЭлементУровня3 Из Элементы.БезГруппы.ПодчиненныеЭлементы Цикл + Для Каждого ЭлементУровня4 Из ЭлементУровня3.ПодчиненныеЭлементы Цикл + УдаляемыеЭлементы.Добавить(ЭлементУровня4); + КонецЦикла; + КонецЦикла; + Для Каждого ЭлементУровня3 Из Элементы.СГруппой.ПодчиненныеЭлементы Цикл + Для Каждого ЭлементУровня4 Из ЭлементУровня3.ПодчиненныеЭлементы Цикл + УдаляемыеЭлементы.Добавить(ЭлементУровня4); + КонецЦикла; + КонецЦикла; + Для Каждого ЭлементУровня3 Из Элементы.СмТакже.ПодчиненныеЭлементы Цикл + Для Каждого ЭлементУровня4 Из ЭлементУровня3.ПодчиненныеЭлементы Цикл + УдаляемыеЭлементы.Добавить(ЭлементУровня4); + КонецЦикла; + КонецЦикла; + Для Каждого ЭлементУровня4 Из Элементы.РезультатыПоискаИзДругихРазделов.ПодчиненныеЭлементы Цикл + УдаляемыеЭлементы.Добавить(ЭлементУровня4); + КонецЦикла; + Для Каждого УдаляемыйЭлемент Из УдаляемыеЭлементы Цикл + Элементы.Удалить(УдаляемыйЭлемент); + КонецЦикла; +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СохранитьПользовательскиеНастройки(Вариант, Подсистема, Видимость, БыстрыйДоступ) + ПакетНастроек = Новый ТаблицаЗначений; + ПакетНастроек.Добавить(); + Измерения = Новый Структура; + Измерения.Вставить("Пользователь", Пользователи.АвторизованныйПользователь()); + Измерения.Вставить("Вариант", Вариант); + Измерения.Вставить("Подсистема", Подсистема); + Ресурсы = Новый Структура; + Ресурсы.Вставить("Видимость", Видимость); + Ресурсы.Вставить("БыстрыйДоступ", БыстрыйДоступ); + РегистрыСведений.НастройкиВариантовОтчетов.ЗаписатьПакетНастроек(ПакетНастроек, Измерения, Ресурсы, Истина); +КонецПроцедуры + +&НаСервере +Функция ПодгруппаСНаименьшимКоличествомЭлементов(Группа) + ПодгруппаМин = Неопределено; + ВложенныхЭлементовМин = 0; + Для Каждого Подгруппа Из Группа.ПодчиненныеЭлементы Цикл + ВложенныхЭлементов = Подгруппа.ПодчиненныеЭлементы.Количество(); + Если ВложенныхЭлементов < ВложенныхЭлементовМин Или ПодгруппаМин = Неопределено Тогда + ПодгруппаМин = Подгруппа; + ВложенныхЭлементовМин = ВложенныхЭлементов; + КонецЕсли; + КонецЦикла; + Возврат ПодгруппаМин; +КонецФункции + +&НаСервере +Процедура ОпределитьПодсистемыИЗаголовок(Параметры) + + ЗаданЗаголовок = Не ПустаяСтрока(Параметры.Заголовок); + ЗаголовокПанели = ?(ЗаданЗаголовок, Параметры.Заголовок, НСтр("ru = 'Отчеты'")); + + Если Параметры.ПутьКПодсистеме = ВариантыОтчетовКлиентСервер.ИдентификаторНачальнойСтраницы() Тогда + ТекущийРазделПолноеИмя = Параметры.ПутьКПодсистеме; + Иначе + ТекущийРазделПолноеИмя = "Подсистема." + СтрЗаменить(Параметры.ПутьКПодсистеме, ".", ".Подсистема."); + КонецЕсли; + + ПодсистемыПрограммы.Очистить(); + ВсеПодсистемы = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя(); + ВсеРазделы = ВсеПодсистемы.Строки[0].Строки; + ПодсистемыПоСсылке = Новый Соответствие; + + Для Каждого СтрокаРаздел Из ВсеРазделы Цикл + СтрокаТаблицы = ПодсистемыПрограммы.Добавить(); + ЗаполнитьЗначенияСвойств(СтрокаТаблицы, СтрокаРаздел); + СтрокаТаблицы.ИмяЭлемента = СтрЗаменить(СтрокаРаздел.ПолноеИмя, ".", "_"); + СтрокаТаблицы.НомерЭлемента = 0; + СтрокаТаблицы.РазделСсылка = СтрокаРаздел.Ссылка; + + ПодсистемыПоСсылке[СтрокаТаблицы.Ссылка] = СтрокаТаблицы.ПолучитьИдентификатор(); + + Если СтрокаРаздел.ПолноеИмя = ТекущийРазделПолноеИмя Тогда + ТекущийРазделСсылка = СтрокаРаздел.Ссылка; + Если ЗаданЗаголовок Тогда + СтрокаРаздел.ПолноеПредставление = Параметры.Заголовок; + Иначе + ЗаголовокПанели = СтрокаРаздел.ПолноеПредставление; + КонецЕсли; + КонецЕсли; + + Найденные = СтрокаРаздел.Строки.НайтиСтроки(Новый Структура("РазделСсылка", СтрокаРаздел.Ссылка), Истина); + Для Каждого СтрокаДерева Из Найденные Цикл + СтрокаТаблицы = ПодсистемыПрограммы.Добавить(); + ЗаполнитьЗначенияСвойств(СтрокаТаблицы, СтрокаДерева); + СтрокаТаблицы.ИмяЭлемента = СтрЗаменить(СтрокаТаблицы.ПолноеИмя, ".", "_"); + СтрокаТаблицы.НомерЭлемента = 0; + СтрокаТаблицы.РодительСсылка = СтрокаДерева.Родитель.Ссылка; + СтрокаТаблицы.РазделСсылка = СтрокаРаздел.Ссылка; + + ПодсистемыПоСсылке[СтрокаТаблицы.Ссылка] = СтрокаТаблицы.ПолучитьИдентификатор(); + Если СтрокаДерева.ПолноеИмя = ТекущийРазделПолноеИмя Тогда + ТекущийРазделСсылка = СтрокаДерева.Ссылка; + Если ЗаданЗаголовок Тогда + СтрокаДерева.ПолноеПредставление = Параметры.Заголовок; + Иначе + ЗаголовокПанели = СтрокаДерева.ПолноеПредставление; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Если ТекущийРазделСсылка = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для панели отчетов указан несуществующий раздел ""%1"" (см. ВариантыОтчетовПереопределяемый.ОпределитьРазделыСВариантамиОтчетов).'"), + Параметры.ПутьКПодсистеме); + КонецЕсли; + + КлючНазначенияИспользования = "Раздел_" + Строка(ТекущийРазделСсылка.УникальныйИдентификатор()); + Заголовок = ЗаголовокПанели; + ПодсистемаПоСсылке = Новый ФиксированноеСоответствие(ПодсистемыПоСсылке); + +КонецПроцедуры + +&НаСервере +Процедура ЗагрузитьВсеНастройки() + ОбщиеНастройки = ВариантыОтчетов.ОбщиеНастройкиПанели(); + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ОбщиеНастройки, "ПоказатьОповещениеОПодсказках, ПоказыватьПодсказки, ИскатьВоВсехРазделах"); + + ЛокальныеНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( + ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(), + КлючНазначенияИспользования); + Если ЛокальныеНастройки <> Неопределено Тогда + Элементы.СтрокаПоиска.СписокВыбора.ЗагрузитьЗначения(ЛокальныеНастройки.СтрокаПоискаСписокВыбора); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура СохранитьНастройкиЭтойПанелиОтчетов() + ЛокальныеНастройки = Новый Структура; + ЛокальныеНастройки.Вставить("СтрокаПоискаСписокВыбора", Элементы.СтрокаПоиска.СписокВыбора.ВыгрузитьЗначения()); + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( + ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(), + КлючНазначенияИспользования, + ЛокальныеНастройки); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Сервер / Заполнение панели отчетов. + +&НаСервере +Функция ЗаполнитьПанельОтчетовВФоне() + // Очистка сведений об изменениях в пользовательских настройках. + ДобавленныеВарианты.Очистить(); + + ПараметрыПоиска = Новый Структура; + ПараметрыПоиска.Вставить("РежимНастройки", РежимНастройки); + ПараметрыПоиска.Вставить("СтрокаПоиска", СтрокаПоиска); + ПараметрыПоиска.Вставить("ИскатьВоВсехРазделах", ИскатьВоВсехРазделах); + ПараметрыПоиска.Вставить("ТекущийРазделСсылка", ТекущийРазделСсылка); + + ТолькоТекущийРаздел = РежимНастройки Или Не ЗначениеЗаполнено(СтрокаПоиска) Или ИскатьВоВсехРазделах = 0; + Если ТолькоТекущийРаздел Тогда + ТаблицаПодсистем = ПодсистемыПрограммы.Выгрузить(Новый Структура("РазделСсылка", ТекущийРазделСсылка)); + Иначе + ТаблицаПодсистем = ПодсистемыПрограммы.Выгрузить(); + КонецЕсли; + ПараметрыПоиска.Вставить("ПодсистемыПрограммы", ТаблицаПодсистем); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.ЗапуститьНеВФоне = (ВариантыОтчетов.ПредставленияЗаполнены() = "Заполнены"); + ДлительнаяОперация = ДлительныеОперации.ВыполнитьВФоне("ВариантыОтчетов.НайтиВариантыОтчетовДляВывода", ПараметрыПоиска, ПараметрыВыполнения); + Если ДлительнаяОперация.Статус = "Ошибка" Тогда + ВызватьИсключение ДлительнаяОперация.КраткоеПредставлениеОшибки; + КонецЕсли; + Если ДлительнаяОперация.Статус <> "Выполнено" Тогда + Возврат ДлительнаяОперация; + КонецЕсли; + + ЗаполнитьПанельОтчетов(ДлительнаяОперация.АдресРезультата); + Возврат ДлительнаяОперация; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьПанельОтчетов(ПараметрыЗаполненияВременноеХранилище) + + ПараметрыЗаполнения = ПолучитьИзВременногоХранилища(ПараметрыЗаполненияВременноеХранилище); // см. ВариантыОтчетов.ВариантыОтчетовДляВывода + УдалитьИзВременногоХранилища(ПараметрыЗаполненияВременноеХранилище); + + ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения); + Если РежимНастройки Тогда + ПараметрыЗаполнения.КонтекстноеМеню.УбратьИзБыстрогоДоступа.Видимость = Истина; + ПараметрыЗаполнения.КонтекстноеМеню.ПереместитьВБыстрыйДоступ.Видимость = Ложь; + КонецЕсли; + + ВывестиВариантыРаздела(ПараметрыЗаполнения, ТекущийРазделСсылка); + + Если ПараметрыЗаполнения.ТолькоТекущийРаздел Тогда + Элементы.РезультатыПоискаИзДругихРазделовГруппа.Видимость = Ложь; + Иначе + Элементы.РезультатыПоискаИзДругихРазделовГруппа.Видимость = Истина; + Если ПараметрыЗаполнения.ДругиеРазделы.Количество() = 0 Тогда + Надпись = Элементы.Вставить("ВДругихРазделах", Тип("ДекорацияФормы"), Элементы.РезультатыПоискаИзДругихРазделов); + Надпись.Заголовок = НСтр("ru = 'Отчеты в других разделах не найдены.'") + Символы.ПС; + Надпись.Высота = 2; + КонецЕсли; + Для Каждого РазделСсылка Из ПараметрыЗаполнения.ДругиеРазделы Цикл + ВывестиВариантыРаздела(ПараметрыЗаполнения, РазделСсылка); + КонецЦикла; + Если ПараметрыЗаполнения.НеВыведено > 0 Тогда // Вывод информационной надписи. + ЗаголовокНадписи = НСтр("ru = 'Выведены первые %1 отчетов из других разделов, уточните поисковый запрос.'"); + ЗаголовокНадписи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ЗаголовокНадписи, ПараметрыЗаполнения.ПределВывода); + Надпись = Элементы.Вставить("ПределВыводаПревышен", Тип("ДекорацияФормы"), Элементы.РезультатыПоискаИзДругихРазделов); + Надпись.Заголовок = ЗаголовокНадписи; + Надпись.Шрифт = ШрифтВажнойНадписи; + Надпись.Высота = 2; + КонецЕсли; + КонецЕсли; + + Если ПараметрыЗаполнения.ДобавляемыеРеквизиты.Количество() > 0 Тогда + // Регистрация старых реквизитов для удаления. + УдаляемыеРеквизиты = Новый Массив; + НаборРеквизитов = ПолучитьРеквизиты(); // Массив из РеквизитФормы + Для Каждого Реквизит Из НаборРеквизитов Цикл + Если ПостоянныеРеквизиты.НайтиПоЗначению(Реквизит.Имя) = Неопределено Тогда + УдаляемыеРеквизиты.Добавить(Реквизит.Имя); + КонецЕсли; + КонецЦикла; + // Удаление старых и добавление новых реквизитов. + ИзменитьРеквизиты(ПараметрыЗаполнения.ДобавляемыеРеквизиты, УдаляемыеРеквизиты); + // Связывание новых реквизитов с данными. + Для Каждого Реквизит Из ПараметрыЗаполнения.ДобавляемыеРеквизиты Цикл + Флажок = Элементы.Найти(Реквизит.Имя); + Флажок.ПутьКДанным = Реквизит.Имя; + НадписьИмя = Сред(Реквизит.Имя, СтрДлина("Флажок_")+1); + Найденные = ДобавленныеВарианты.НайтиСтроки(Новый Структура("НадписьИмя", НадписьИмя)); + Если Найденные.Количество() > 0 Тогда + Вариант = Найденные[0]; + ЭтотОбъект[Реквизит.Имя] = Вариант.Видимость; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + ВариантОтчетаПоИмениЭлемента = Новый ФиксированноеСоответствие(ПараметрыЗаполнения.ПоискВариантов); + Элементы.Страницы.ТекущаяСтраница = Элементы.Основное; + +КонецПроцедуры + +&НаСервере +Процедура ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения) + ПараметрыЗаполнения.Вставить("ИмяГруппы", ""); + ПараметрыЗаполнения.Вставить("ДобавляемыеРеквизиты", Новый Массив); + ПараметрыЗаполнения.Вставить("ДобавленоПустыхДекораций", 0); + ПараметрыЗаполнения.Вставить("ПределВывода", 20); + ПараметрыЗаполнения.Вставить("ОсталосьВывести", ПараметрыЗаполнения.ПределВывода); + ПараметрыЗаполнения.Вставить("НеВыведено", 0); + ПараметрыЗаполнения.Вставить("ВыведеноЭлементовВариантов", 0); + ПараметрыЗаполнения.Вставить("ПоискВариантов", Новый Соответствие); + + ШаблонГруппыВарианта = Новый Структура( + "Вид, РастягиватьПоГоризонтали, + |Отображение, Группировка, + |ОтображатьЗаголовок"); + ШаблонГруппыВарианта.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ШаблонГруппыВарианта.РастягиватьПоГоризонтали = Истина; + ШаблонГруппыВарианта.Отображение = ОтображениеОбычнойГруппы.Нет; + ШаблонГруппыВарианта.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + ШаблонГруппыВарианта.ОтображатьЗаголовок = Ложь; + + ШаблонКартинкиБыстрогоДоступа = Новый Структура( + "Вид, Ширина, Высота, Картинка, + |РастягиватьПоГоризонтали, РастягиватьПоВертикали"); + ШаблонКартинкиБыстрогоДоступа.Вид = ВидДекорацииФормы.Картинка; + ШаблонКартинкиБыстрогоДоступа.Ширина = 2; + ШаблонКартинкиБыстрогоДоступа.Высота = 1; + ШаблонКартинкиБыстрогоДоступа.Картинка = КартинкаБыстрыйДоступ; + ШаблонКартинкиБыстрогоДоступа.РастягиватьПоГоризонтали = Ложь; + ШаблонКартинкиБыстрогоДоступа.РастягиватьПоВертикали = Ложь; + + ШаблонКартинкиОтступа = Новый Структура( + "Вид, Ширина, Высота, + |РастягиватьПоГоризонтали, РастягиватьПоВертикали"); + ШаблонКартинкиОтступа.Вид = ВидДекорацииФормы.Картинка; + ШаблонКартинкиОтступа.Ширина = 1; + ШаблонКартинкиОтступа.Высота = 1; + ШаблонКартинкиОтступа.РастягиватьПоГоризонтали = Ложь; + ШаблонКартинкиОтступа.РастягиватьПоВертикали = Ложь; + + // Шаблоны заполнения создаваемых элементов управления. + ШаблонНадписиВарианта = Новый Структура( + "Вид, Гиперссылка, ЦветТекста, + |РастягиватьПоВертикали, Высота, + |РастягиватьПоГоризонтали, АвтоМаксимальнаяШирина, МаксимальнаяШирина"); + ШаблонНадписиВарианта.Вид = ВидДекорацииФормы.Надпись; + ШаблонНадписиВарианта.Гиперссылка = Истина; + ШаблонНадписиВарианта.ЦветТекста = ЦветВидимыхВариантов; + ШаблонНадписиВарианта.РастягиватьПоВертикали = Ложь; + ШаблонНадписиВарианта.Высота = 1; + ШаблонНадписиВарианта.РастягиватьПоГоризонтали = Истина; + ШаблонНадписиВарианта.АвтоМаксимальнаяШирина = Ложь; + ШаблонНадписиВарианта.МаксимальнаяШирина = 0; + + ПараметрыЗаполнения.Вставить("Шаблоны", Новый Структура); + ПараметрыЗаполнения.Шаблоны.Вставить("ГруппаВарианта", ШаблонГруппыВарианта); + ПараметрыЗаполнения.Шаблоны.Вставить("КартинкаБыстрогоДоступа", ШаблонКартинкиБыстрогоДоступа); + ПараметрыЗаполнения.Шаблоны.Вставить("КартинкаОтступа", ШаблонКартинкиОтступа); + ПараметрыЗаполнения.Шаблоны.Вставить("НадписьВарианта", ШаблонНадписиВарианта); + + Если РежимНастройки Тогда + ПараметрыЗаполнения.Вставить("КонтекстноеМеню", Новый Структура("УбратьИзБыстрогоДоступа, ПереместитьВБыстрыйДоступ, Изменить")); + ПараметрыЗаполнения.КонтекстноеМеню.УбратьИзБыстрогоДоступа = Новый Структура("Видимость", Ложь); + ПараметрыЗаполнения.КонтекстноеМеню.ПереместитьВБыстрыйДоступ = Новый Структура("Видимость", Ложь); + ПараметрыЗаполнения.КонтекстноеМеню.Изменить = Новый Структура("Видимость", Истина); + КонецЕсли; + + ПараметрыЗаполнения.Вставить("ГруппыВажности", Новый Массив); + ПараметрыЗаполнения.ГруппыВажности.Добавить("БыстрыйДоступ"); + ПараметрыЗаполнения.ГруппыВажности.Добавить("БезГруппы"); + ПараметрыЗаполнения.ГруппыВажности.Добавить("СГруппой"); + ПараметрыЗаполнения.ГруппыВажности.Добавить("СмТакже"); + + Для Каждого ИмяГруппы Из ПараметрыЗаполнения.ГруппыВажности Цикл + ПараметрыЗаполнения.Вставить(ИмяГруппы, Новый Структура("Отбор, Варианты, Количество")); + КонецЦикла; + + ПараметрыЗаполнения.БыстрыйДоступ.Отбор = Новый Структура("БыстрыйДоступ", Истина); + ПараметрыЗаполнения.БезГруппы.Отбор = Новый Структура("БыстрыйДоступ, БезГруппы", Ложь, Истина); + ПараметрыЗаполнения.СГруппой.Отбор = Новый Структура("БыстрыйДоступ, БезГруппы, СмТакже", Ложь, Ложь, Ложь); + ПараметрыЗаполнения.СмТакже.Отбор = Новый Структура("БыстрыйДоступ, БезГруппы, СмТакже", Ложь, Ложь, Истина); + +КонецПроцедуры + +// Параметры: +// ПараметрыЗаполнения - см. ВариантыОтчетов.ВариантыОтчетовДляВывода +// РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// +&НаСервере +Процедура ВывестиВариантыРаздела(ПараметрыЗаполнения, РазделСсылка) + ОтборПоРазделу = Новый Структура("РазделСсылка", РазделСсылка); + ВариантыРаздела = ПараметрыЗаполнения.Варианты.Скопировать(ОтборПоРазделу); + ПараметрыЗаполнения.Вставить("ВыводятсяВариантыТекущегоРаздела", РазделСсылка = ТекущийРазделСсылка); + ПараметрыЗаполнения.Вставить("ВариантыРаздела", ВариантыРаздела); + ПараметрыЗаполнения.Вставить("ВариантыКоличество", ВариантыРаздела.Количество()); + Если ПараметрыЗаполнения.ВариантыКоличество = 0 Тогда + // Вывод надписи, поясняющей почему нет вариантов (только для текущего раздела). + Если ПараметрыЗаполнения.ВыводятсяВариантыТекущегоРаздела Тогда + Надпись = Элементы.Вставить("СписокОтчетовПуст", Тип("ДекорацияФормы"), Элементы.БезГруппыКолонка1); + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + Если ПараметрыЗаполнения.ТолькоТекущийРаздел Тогда + Надпись.Заголовок = НСтр("ru = 'Отчеты не найдены.'"); + Иначе + Надпись.Заголовок = НСтр("ru = 'Отчеты в текущем разделе не найдены.'"); + Надпись.Высота = 2; + КонецЕсли; + Иначе + Надпись.Заголовок = НСтр("ru = 'В панели отчетов этого раздела не размещено ни одного отчета.'"); + КонецЕсли; + Элементы["БыстрыйДоступШапка"].Видимость = Ложь; + Элементы["БыстрыйДоступПодвал"].Видимость = Ложь; + Элементы["БезГруппыПодвал"].Видимость = Ложь; + Элементы["СГруппойПодвал"].Видимость = Ложь; + Элементы["СмТакжеЗаголовок"].Видимость = Ложь; + Элементы["СмТакжеПодвал"].Видимость = Ложь; + Элементы.БыстрыйДоступПодсказкаКогдаНеНастроен.Видимость = Ложь; + КонецЕсли; + Возврат; + КонецЕсли; + + Если ПараметрыЗаполнения.ТолькоТекущийРаздел Тогда + ПодсистемыРаздела = ПараметрыЗаполнения.ТаблицаПодсистем; // ТаблицаЗначений + Иначе + ПодсистемыРаздела = ПараметрыЗаполнения.ТаблицаПодсистем.Скопировать(ОтборПоРазделу); + КонецЕсли; + ПодсистемыРаздела.Сортировать("Приоритет ВОЗР"); // Сортировка по иерархии + + ПараметрыЗаполнения.Вставить("РазделСсылка", РазделСсылка); + ПараметрыЗаполнения.Вставить("ПодсистемыРаздела", ПодсистемыРаздела); + + ОпределитьГруппыИДекорацииДляВыводаВариантов(ПараметрыЗаполнения); + + Если Не ПараметрыЗаполнения.ВыводятсяВариантыТекущегоРаздела + И ПараметрыЗаполнения.ОсталосьВывести = 0 Тогда + ПараметрыЗаполнения.НеВыведено = ПараметрыЗаполнения.НеВыведено + ПараметрыЗаполнения.ВариантыКоличество; + Возврат; + КонецЕсли; + + Для Каждого ИмяГруппы Из ПараметрыЗаполнения.ГруппыВажности Цикл + ПараметрыГруппы = ПараметрыЗаполнения[ИмяГруппы]; // см. ВариантыОтчетов.ВариантыОтчетовДляВывода + Если ПараметрыЗаполнения.ОсталосьВывести <= 0 Тогда + ПараметрыГруппы.Варианты = Новый Массив; + ПараметрыГруппы.Количество = 0; + Иначе + ПараметрыГруппы.Варианты = ПараметрыЗаполнения.ВариантыРаздела.Скопировать(ПараметрыГруппы.Отбор); + ПараметрыГруппы.Количество = ПараметрыГруппы.Варианты.Количество(); + КонецЕсли; + + Если ПараметрыГруппы.Количество = 0 И Не (РежимНастройки И ИмяГруппы = "СГруппой") Тогда + Продолжить; + КонецЕсли; + + Если Не ПараметрыЗаполнения.ВыводятсяВариантыТекущегоРаздела Тогда + // Ограничение на вывод вариантов. + ПараметрыЗаполнения.ОсталосьВывести = ПараметрыЗаполнения.ОсталосьВывести - ПараметрыГруппы.Количество; + Если ПараметрыЗаполнения.ОсталосьВывести < 0 Тогда + // Удаление строк, которые уже превышают предел. + ЛишнихВариантов = -ПараметрыЗаполнения.ОсталосьВывести; + Для Номер = 1 По ЛишнихВариантов Цикл + ПараметрыГруппы.Варианты.Удалить(ПараметрыГруппы.Количество - Номер); + КонецЦикла; + ПараметрыЗаполнения.НеВыведено = ПараметрыЗаполнения.НеВыведено + ЛишнихВариантов; + ПараметрыЗаполнения.ОсталосьВывести = 0; + КонецЕсли; + КонецЕсли; + + Если РежимНастройки Тогда + ПараметрыЗаполнения.КонтекстноеМеню.УбратьИзБыстрогоДоступа.Видимость = (ИмяГруппы = "БыстрыйДоступ"); + ПараметрыЗаполнения.КонтекстноеМеню.ПереместитьВБыстрыйДоступ.Видимость = (ИмяГруппы <> "БыстрыйДоступ"); + КонецЕсли; + + ПараметрыЗаполнения.ИмяГруппы = ИмяГруппы; + ВывестиВариантыСГруппой(ПараметрыЗаполнения); + КонецЦикла; + + ЕстьБыстрыйДоступ = (ПараметрыЗаполнения.БыстрыйДоступ.Количество > 0); + ЕстьВариантыБезГруппы = (ПараметрыЗаполнения.БезГруппы.Количество > 0); + ЕстьВариантыСГруппой = (ПараметрыЗаполнения.СГруппой.Количество > 0); + ЕстьВариантыСмТакже = (ПараметрыЗаполнения.СмТакже.Количество > 0); + + Элементы[ПараметрыЗаполнения.Префикс + "БыстрыйДоступШапка"].Видимость = РежимНастройки Или ЕстьБыстрыйДоступ; + Элементы[ПараметрыЗаполнения.Префикс + "БыстрыйДоступПодвал"].Видимость = ( + РежимНастройки + Или ( + ЕстьБыстрыйДоступ + И ( + ЕстьВариантыБезГруппы + Или ЕстьВариантыСГруппой + Или ЕстьВариантыСмТакже))); + Элементы[ПараметрыЗаполнения.Префикс + "БезГруппыПодвал"].Видимость = ЕстьВариантыБезГруппы; + Элементы[ПараметрыЗаполнения.Префикс + "СГруппойПодвал"].Видимость = ЕстьВариантыСГруппой; + Элементы[ПараметрыЗаполнения.Префикс + "СмТакжеЗаголовок"].Видимость = ЕстьВариантыСмТакже; + Элементы[ПараметрыЗаполнения.Префикс + "СмТакжеПодвал"].Видимость = ЕстьВариантыСмТакже; + + Если ПараметрыЗаполнения.ВыводятсяВариантыТекущегоРаздела Тогда + Элементы.БыстрыйДоступПодсказкаКогдаНеНастроен.Видимость = РежимНастройки И Не ЕстьБыстрыйДоступ; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьГруппыИДекорацииДляВыводаВариантов(ПараметрыЗаполнения) + // В этой процедуре определяются подмены стандартных групп и элементов. + ПараметрыЗаполнения.Вставить("Префикс", ""); + Если ПараметрыЗаполнения.ВыводятсяВариантыТекущегоРаздела Тогда + Возврат; + КонецЕсли; + + ИнформацияОРазделе = ПараметрыЗаполнения.ТаблицаПодсистем.Найти(ПараметрыЗаполнения.РазделСсылка, "Ссылка"); + ПараметрыЗаполнения.Префикс = "Раздел_" + ИнформацияОРазделе.Приоритет + "_"; + + ГруппаРазделаИмя = ПараметрыЗаполнения.Префикс + ИнформацияОРазделе.Имя; + ГруппаРаздела = Элементы.Вставить(ГруппаРазделаИмя, Тип("ГруппаФормы"), Элементы.РезультатыПоискаИзДругихРазделов); + ГруппаРаздела.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ГруппаРаздела.Отображение = ОтображениеОбычнойГруппы.Нет; + ГруппаРаздела.ОтображатьЗаголовок = Ложь; + ГруппаРаздела.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСверху; + ГруппаРаздела.РастягиватьПоГоризонтали = Истина; + + РазделСуффикс = " (" + Формат(ПараметрыЗаполнения.ВариантыКоличество, "ЧН=0; ЧГ=") + ")" + Символы.ПС; + Если ПараметрыЗаполнения.ИспользоватьПодсветку Тогда + ПараметрыПодсветки = ПараметрыЗаполнения.РезультатПоиска.ПодсветкаПодсистем.Получить(ПараметрыЗаполнения.РазделСсылка); + Если ПараметрыПодсветки = Неопределено Тогда + ПодсветкаПредставления = Новый Структура("Значение, КоличествоНайденныхСлов, ПодсветкаСлов", ИнформацияОРазделе.Представление, 0, Новый СписокЗначений); + Для Каждого Слово Из ПараметрыЗаполнения.МассивСлов Цикл + ВариантыОтчетов.ОтметитьСлово(ПодсветкаПредставления, Слово); + КонецЦикла; + Иначе + ПодсветкаПредставления = ПараметрыПодсветки.НаименованиеПодсистемы; + КонецЕсли; + ПодсветкаПредставления.Значение = ПодсветкаПредставления.Значение + РазделСуффикс; + Если ПодсветкаПредставления.КоличествоНайденныхСлов > 0 Тогда + РазделЗаголовок = СформироватьСтрокуСПодсветкой(ПодсветкаПредставления); + Иначе + РазделЗаголовок = ПодсветкаПредставления.Значение; + КонецЕсли; + Иначе + РазделЗаголовок = ИнформацияОРазделе.Представление + РазделСуффикс; + КонецЕсли; + + ЗаголовокРаздела = ГруппаРаздела.РасширеннаяПодсказка; // ДекорацияФормы, РасширениеДекорацииФормыДляНадписи + ЗаголовокРаздела.Заголовок = РазделЗаголовок; + ЗаголовокРаздела.Шрифт = ШрифтРаздела; + ЗаголовокРаздела.ЦветТекста = ЦветРаздела; + ЗаголовокРаздела.Высота = 2; + ЗаголовокРаздела.Гиперссылка = Истина; + ЗаголовокРаздела.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Верх; + ЗаголовокРаздела.РастягиватьПоГоризонтали = Истина; + ЗаголовокРаздела.УстановитьДействие("Нажатие", "Подключаемый_ЗаголовокРазделаНажатие"); + + ГруппаРаздела.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + + ДекорацияОтступаИмя = ПараметрыЗаполнения.Префикс + "ДекорацияОтступа"; + ДекорацияОтступа = Элементы.Вставить(ДекорацияОтступаИмя, Тип("ДекорацияФормы"), ГруппаРаздела); + ДекорацияОтступа.Вид = ВидДекорацииФормы.Надпись; + ДекорацияОтступа.Заголовок = " "; + + // Ранее в других группах достигнут предел вывода - не нужно создавать подчиненные. + Если ПараметрыЗаполнения.ОсталосьВывести = 0 Тогда + ЗаголовокРаздела.Высота = 1; // Сам заголовок раздела больше не нужно отделять от вариантов. + Возврат; + КонецЕсли; + + СкопироватьЭлемент(ПараметрыЗаполнения.Префикс, ГруппаРаздела, "Колонки", 2); + + Элементы.Удалить(Элементы[ПараметрыЗаполнения.Префикс + "БыстрыйДоступПодсказкаКогдаНеНастроен"]); + + НайденнаяГруппа = Элементы[ПараметрыЗаполнения.Префикс + "БыстрыйДоступШапка"]; // ГруппаФормы + НайденнаяГруппа.РасширеннаяПодсказка.Заголовок = ""; +КонецПроцедуры + +&НаСервере +Функция СкопироватьЭлемент(ПрефиксНового, ГруппаНового, ИмяКопируемого, УровеньВложенности) + КопируемыйЭлемент = Элементы.Найти(ИмяКопируемого); + ИмяНового = ПрефиксНового + ИмяКопируемого; + НовыйЭлемент = Элементы.Найти(ИмяНового); + ТипЭлемента = ТипЗнч(КопируемыйЭлемент); + ЭтоГруппа = (ТипЭлемента = Тип("ГруппаФормы")); + Если НовыйЭлемент = Неопределено Тогда + НовыйЭлемент = Элементы.Вставить(ИмяНового, ТипЭлемента, ГруппаНового); + КонецЕсли; + Если ЭтоГруппа Тогда + НеЗаполняемыеСвойства = "Имя, Родитель, Видимость, СочетаниеКлавиш, ПодчиненныеЭлементы, ПутьКДаннымЗаголовка"; + Иначе + НеЗаполняемыеСвойства = "Имя, Родитель, Видимость, СочетаниеКлавиш, РасширеннаяПодсказка"; + КонецЕсли; + ЗаполнитьЗначенияСвойств(НовыйЭлемент, КопируемыйЭлемент, , НеЗаполняемыеСвойства); + Если ЭтоГруппа И УровеньВложенности > 0 Тогда + Для Каждого ПодчиненныйЭлемент Из КопируемыйЭлемент.ПодчиненныеЭлементы Цикл + СкопироватьЭлемент(ПрефиксНового, НовыйЭлемент, ПодчиненныйЭлемент.Имя, УровеньВложенности - 1); + КонецЦикла; + КонецЕсли; + Возврат НовыйЭлемент; +КонецФункции + +// Параметры: +// ПараметрыЗаполнения - см. ВариантыОтчетов.ВариантыОтчетовДляВывода +// +&НаСервере +Процедура ВывестиВариантыСГруппой(ПараметрыЗаполнения) + ПараметрыГруппы = ПараметрыЗаполнения[ПараметрыЗаполнения.ИмяГруппы]; // см. ВариантыОтчетов.ВариантыОтчетовДляВывода + Варианты = ПараметрыГруппы.Варианты; + КоличествоВариантов = ПараметрыГруппы.Количество; + Если КоличествоВариантов = 0 И Не (РежимНастройки И ПараметрыЗаполнения.ИмяГруппы = "СГруппой") Тогда + Возврат; + КонецЕсли; + + // Базовые свойства группы 2 уровня. + ГруппаУровня2Имя = ПараметрыЗаполнения.ИмяГруппы; + ГруппаУровня2 = Элементы.Найти(ПараметрыЗаполнения.Префикс + ГруппаУровня2Имя); + + ВыводБезГрупп = (ГруппаУровня2Имя = "БыстрыйДоступ" Или ГруппаУровня2Имя = "СмТакже"); + + // Сортировка вариантов (есть группы и важные). + Варианты.Сортировать("ПодсистемаПриоритет ВОЗР, Важный УБЫВ, Наименование ВОЗР"); + НайденныеРодители = Варианты.НайтиСтроки(Новый Структура("ВерхнийУровень", Истина)); + Для Каждого ВариантРодитель Из НайденныеРодители Цикл + НайденныеПодчиненные = Варианты.НайтиСтроки(Новый Структура("Родитель, Подсистема", ВариантРодитель.Ссылка, ВариантРодитель.Подсистема)); + ТекущийИндекс = Варианты.Индекс(ВариантРодитель); + Для Каждого ВариантПодчиненный Из НайденныеПодчиненные Цикл + ВариантРодитель.КоличествоПодчиненных = ВариантРодитель.КоличествоПодчиненных + 1; + ВариантПодчиненный.ВыводитсяВместеСОсновным = Истина; + ИндексПодчиненного = Варианты.Индекс(ВариантПодчиненный); + Если ИндексПодчиненного < ТекущийИндекс Тогда + Варианты.Сдвинуть(ИндексПодчиненного, ТекущийИндекс - ИндексПодчиненного); + ИначеЕсли ИндексПодчиненного = ТекущийИндекс Тогда + ТекущийИндекс = ТекущийИндекс + 1; + Иначе + Варианты.Сдвинуть(ИндексПодчиненного, ТекущийИндекс - ИндексПодчиненного + 1); + ТекущийИндекс = ТекущийИндекс + 1; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + ДеревоРаспределения = ДеревоРаспределения(); + + МаксимальныйУровеньВложенности = 0; + + Для Каждого Подсистема Из ПараметрыЗаполнения.ПодсистемыРаздела Цикл + + СтрокаРодителя = ДеревоРаспределения.Строки.Найти(Подсистема.РодительСсылка, "ПодсистемаСсылка", Истина); + Если СтрокаРодителя = Неопределено Тогда + СтрокаДерева = ДеревоРаспределения.Строки.Добавить(); + Иначе + СтрокаДерева = СтрокаРодителя.Строки.Добавить(); + КонецЕсли; + + СтрокаДерева.Подсистема = Подсистема; + СтрокаДерева.ПодсистемаСсылка = Подсистема.Ссылка; + + Если ВыводБезГрупп Тогда + Если Подсистема.Ссылка = ПараметрыЗаполнения.РазделСсылка Тогда + Для Каждого Вариант Из Варианты Цикл + СтрокаДерева.Варианты.Добавить(Вариант); + КонецЦикла; + КонецЕсли; + Иначе + СтрокаДерева.Варианты = Варианты.НайтиСтроки(Новый Структура("Подсистема", Подсистема.Ссылка)); + КонецЕсли; + СтрокаДерева.КоличествоВариантов = СтрокаДерева.Варианты.Количество(); + + ЕстьВарианты = СтрокаДерева.КоличествоВариантов > 0; + Если Не ЕстьВарианты Тогда + СтрокаДерева.КоличествоПустыхСтрок = -1; + КонецЕсли; + + // Вычисление уровня вложенности, Учет количества в иерархии (если есть варианты). + Если СтрокаРодителя <> Неопределено Тогда + Пока СтрокаРодителя <> Неопределено Цикл + Если ЕстьВарианты Тогда + СтрокаРодителя.ВсегоВложенныхВариантов = СтрокаРодителя.ВсегоВложенныхВариантов + СтрокаДерева.КоличествоВариантов; + СтрокаРодителя.ВсегоВложенныхПодсистем = СтрокаРодителя.ВсегоВложенныхПодсистем + 1; + СтрокаРодителя.ВсегоВложенныхПустыхСтрок = СтрокаРодителя.ВсегоВложенныхПустыхСтрок + 1; + КонецЕсли; + СтрокаРодителя = СтрокаРодителя.Родитель; + СтрокаДерева.УровеньВложенности = СтрокаДерева.УровеньВложенности + 1; + КонецЦикла; + КонецЕсли; + + МаксимальныйУровеньВложенности = Макс(МаксимальныйУровеньВложенности, СтрокаДерева.УровеньВложенности); + + КонецЦикла; + + // Вычисление колонки расположения и необходимости переноса каждой подсистемы на основе данных по количеству. + ПараметрыЗаполнения.Вставить("МаксимальныйУровеньВложенности", МаксимальныйУровеньВложенности); + ДеревоРаспределения.Колонки.Добавить("ГруппаФормы"); + ДеревоРаспределения.Колонки.Добавить("НачатВывод", Новый ОписаниеТипов("Булево")); + КорневаяСтрока = ДеревоРаспределения.Строки[0]; + КоличествоСтрок = КорневаяСтрока.КоличествоВариантов + КорневаяСтрока.ВсегоВложенныхВариантов + КорневаяСтрока.ВсегоВложенныхПодсистем + Макс(КорневаяСтрока.ВсегоВложенныхПустыхСтрок - 2, 0); + + // Переменные для поддержки динамики групп 3 уровня. + КоличествоКолонок = ГруппаУровня2.ПодчиненныеЭлементы.Количество(); + Если КорневаяСтрока.КоличествоВариантов = 0 Тогда + Если КоличествоКолонок > 1 И КорневаяСтрока.ВсегоВложенныхВариантов <= 5 Тогда + КоличествоКолонок = 1; + ИначеЕсли КоличествоКолонок > 2 И КорневаяСтрока.ВсегоВложенныхВариантов <= 10 Тогда + КоличествоКолонок = 2; + КонецЕсли; + КонецЕсли; + // Количество вариантов для вывода в одной колонке. + ГруппаУровня3Отсечка = Макс(Цел(КоличествоСтрок / КоличествоКолонок), 2); + + ПорядокВывода = ПорядокВывода(); + + Рекурсия = Новый Структура; + Рекурсия.Вставить("ВсегоОсталосьВывести", КоличествоСтрок); + Рекурсия.Вставить("СвободноКолонок", КоличествоКолонок - 1); + Рекурсия.Вставить("КоличествоКолонок", КоличествоКолонок); + Рекурсия.Вставить("ГруппаУровня3Отсечка", ГруппаУровня3Отсечка); + Рекурсия.Вставить("НомерТекущейКолонки", 1); + Рекурсия.Вставить("ЭтоПоследняяКолонка", Рекурсия.НомерТекущейКолонки = Рекурсия.КоличествоКолонок Или КоличествоСтрок <= 6); + Рекурсия.Вставить("СвободноСтрок", ГруппаУровня3Отсечка); + Рекурсия.Вставить("НачатВыводВТекущейКолонке", Ложь); + + ЗаполнитьПорядокВывода(ПорядокВывода, Неопределено, КорневаяСтрока, Рекурсия, ПараметрыЗаполнения); + + // Вывод в форму + НомерТекущейКолонки = 0; + Для Каждого СтрокаПорядкаВывода Из ПорядокВывода Цикл + + Если НомерТекущейКолонки <> СтрокаПорядкаВывода.НомерКолонки Тогда + НомерТекущейКолонки = СтрокаПорядкаВывода.НомерКолонки; + ТекущийУровеньВложенности = 0; + ТекущаяГруппа = ГруппаУровня2.ПодчиненныеЭлементы.Получить(НомерТекущейКолонки - 1); + ТекущиеГруппыПоУровнямВложенности = Новый Соответствие; + ТекущиеГруппыПоУровнямВложенности.Вставить(0, ТекущаяГруппа); + КонецЕсли; + + Если СтрокаПорядкаВывода.ЭтоПодсистема Тогда + + Если СтрокаПорядкаВывода.ПодсистемаСсылка = ПараметрыЗаполнения.РазделСсылка Тогда + ТекущийУровеньВложенности = 0; + ТекущаяГруппа = ТекущиеГруппыПоУровнямВложенности.Получить(0); + Иначе + ТекущийУровеньВложенности = СтрокаПорядкаВывода.УровеньВложенности; + ВГруппу = ТекущиеГруппыПоУровнямВложенности.Получить(СтрокаПорядкаВывода.УровеньВложенности - 1); + ТекущаяГруппа = ДобавитьГруппуПодсистемы(ПараметрыЗаполнения, СтрокаПорядкаВывода, ВГруппу); + ТекущиеГруппыПоУровнямВложенности.Вставить(ТекущийУровеньВложенности, ТекущаяГруппа); + КонецЕсли; + + ИначеЕсли СтрокаПорядкаВывода.ЭтоВариант Тогда + + Если ТекущийУровеньВложенности <> СтрокаПорядкаВывода.УровеньВложенности Тогда + ТекущийУровеньВложенности = СтрокаПорядкаВывода.УровеньВложенности; + ТекущаяГруппа = ТекущиеГруппыПоУровнямВложенности.Получить(ТекущийУровеньВложенности); + КонецЕсли; + + ДобавитьЭлементыВариантаОтчета(ПараметрыЗаполнения, СтрокаПорядкаВывода.Вариант, ТекущаяГруппа, СтрокаПорядкаВывода.УровеньВложенности); + + Если СтрокаПорядкаВывода.Вариант.КоличествоПодчиненных > 0 Тогда + ТекущийУровеньВложенности = ТекущийУровеньВложенности + 1; + ТекущаяГруппа = ДобавитьГруппуСОтступом(ПараметрыЗаполнения, СтрокаПорядкаВывода, ТекущаяГруппа); + ТекущиеГруппыПоУровнямВложенности.Вставить(ТекущийУровеньВложенности, ТекущаяГруппа); + КонецЕсли; + + ИначеЕсли СтрокаПорядкаВывода.ЭтоПустаяСтрока Тогда + + ВГруппу = ТекущиеГруппыПоУровнямВложенности.Получить(СтрокаПорядкаВывода.УровеньВложенности - 1); + ДобавитьПустуюДекорацию(ПараметрыЗаполнения, ВГруппу); + + КонецЕсли; + + КонецЦикла; + + Для НомерКолонки = 3 По ГруппаУровня2.ПодчиненныеЭлементы.Количество() Цикл + Найденные = ПорядокВывода.НайтиСтроки(Новый Структура("НомерКолонки, ЭтоПодсистема", НомерКолонки, Ложь)); + Если Найденные.Количество() = 0 Тогда + ГруппаУровня3 = ГруппаУровня2.ПодчиненныеЭлементы.Получить(НомерКолонки - 1); + ДобавитьПустуюДекорацию(ПараметрыЗаполнения, ГруппаУровня3); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Конструктор коллекции, для моделирования распределения вариантов отчетов с учетом вложенности подсистем. +// +// Возвращаемое значение: +// ДеревоЗначений - коллекция, для моделирования распределения вариантов отчетов с учетом вложенности подсистем, где: +// * Подсистема - СтрокаТаблицыЗначений - описание подсистемы. +// * ПодсистемаСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * Варианты - Массив из СтрокаТаблицыЗначений: +// ** Ссылка - СправочникСсылка.ВариантыОтчетов +// ** Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// ** ПодсистемаПредставление - Строка +// ** ПодсистемаПриоритет - Строка +// ** РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// ** БезГруппы - Булево +// ** Важный - Булево +// ** СмТакже - Булево +// ** Дополнительный - Булево +// ** Видимость - Булево +// ** БыстрыйДоступ - Булево +// ** ИмяОтчета - Строка +// ** Наименование - Строка +// ** Описание - Строка +// ** Автор - СправочникСсылка.Пользователи +// - СправочникСсылка.ВнешниеПользователи +// ** Отчет - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ДополнительныеОтчетыИОбработки +// - Строка +// ** ТипОтчета - ПеречислениеСсылка.ТипыОтчетов +// ** КлючВарианта - Строка +// ** Родитель - СправочникСсылка.ВариантыОтчетов +// ** ВерхнийУровень - Булево +// ** КлючЗамеров - Строка +// * КоличествоВариантов- Число - счетчик вариантов отчетов. +// * КоличествоПустыхСтрок - Число - дополнительный счетчик. +// * ВсегоВложенныхВариантов- Число - счетчик дочерних вариантов отчетов. +// * ВсегоВложенныхПодсистем- Число - счетчик дочерних подсистем. +// * ВсегоВложенныхПустыхСтрок- Число - дополнительный счетчик. +// * УровеньВложенности- Число - номер уровня в иерархии. +// * ВерхнийУровень- Булево - признак того, что запись верхнего уровня. +// +&НаСервере +Функция ДеревоРаспределения() + + ОписаниеПризнака = Новый ОписаниеТипов("Булево"); + ОписаниеЧисла = Новый ОписаниеТипов("Число"); + ОписаниеМассива = Новый ОписаниеТипов("Массив"); + + ОписаниеИдентификатора = Новый ОписаниеТипов( + "СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений"); + + ДеревоРаспределения = Новый ДеревоЗначений; + + ДеревоРаспределения.Колонки.Добавить("Подсистема"); + ДеревоРаспределения.Колонки.Добавить("ПодсистемаСсылка", ОписаниеИдентификатора); + ДеревоРаспределения.Колонки.Добавить("Варианты", ОписаниеМассива); + ДеревоРаспределения.Колонки.Добавить("КоличествоВариантов", ОписаниеЧисла); + ДеревоРаспределения.Колонки.Добавить("КоличествоПустыхСтрок", ОписаниеЧисла); + ДеревоРаспределения.Колонки.Добавить("ВсегоВложенныхВариантов", ОписаниеЧисла); + ДеревоРаспределения.Колонки.Добавить("ВсегоВложенныхПодсистем", ОписаниеЧисла); + ДеревоРаспределения.Колонки.Добавить("ВсегоВложенныхПустыхСтрок", ОписаниеЧисла); + ДеревоРаспределения.Колонки.Добавить("УровеньВложенности", ОписаниеЧисла); + ДеревоРаспределения.Колонки.Добавить("ВерхнийУровень", ОписаниеПризнака); + + Возврат ДеревоРаспределения; + +КонецФункции + +// Конструктор коллекции, хранящей сведения о порядке вывода отчетов на панель. +// +// Возвращаемое значение: +// ТаблицаЗначений: +// * НомерКолонки- Число +// * ЭтоПодсистема - Булево +// * ЭтоПродолжение - Булево +// * ЭтоВариант - Булево +// * ЭтоПустаяСтрока - Булево +// * СтрокаДерева - СтрокаДереваЗначений - см. ... +// * Подсистема - СтрокаТаблицыЗначений: +// ** Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// ** Представление - Строка +// ** Имя - Строка +// ** ПолноеИмя - Строка +// ** Приоритет - Строка +// ** НомерЭлемента - Число +// ** ИмяЭлемента - Строка +// ** РодительСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// ** РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// ** ВидимыхВариантов - Число +// * ПодсистемаСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ПодсистемаПриоритет - Число +// * Вариант - СтрокаТаблицыЗначений: +// ** КоличествоПодчиненных - Число - счетчик подчиненных элементов. +// * ВариантСсылка - СправочникСсылка.ВариантыОтчетов +// * УровеньВложенности - Число +// +&НаСервере +Функция ПорядокВывода() + + ОписаниеПризнака = Новый ОписаниеТипов("Булево"); + ОписаниеЧисла = Новый ОписаниеТипов("Число"); + ОписаниеСтроки = Новый ОписаниеТипов("Строка"); + + ОписаниеИдентификатора = Новый ОписаниеТипов( + "СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений"); + + ПорядокВывода = Новый ТаблицаЗначений; + + ПорядокВывода.Колонки.Добавить("НомерКолонки", ОписаниеЧисла); + ПорядокВывода.Колонки.Добавить("ЭтоПодсистема", ОписаниеПризнака); + ПорядокВывода.Колонки.Добавить("ЭтоПродолжение", ОписаниеПризнака); + ПорядокВывода.Колонки.Добавить("ЭтоВариант", ОписаниеПризнака); + ПорядокВывода.Колонки.Добавить("ЭтоПустаяСтрока", ОписаниеПризнака); + ПорядокВывода.Колонки.Добавить("СтрокаДерева"); + ПорядокВывода.Колонки.Добавить("Подсистема"); + ПорядокВывода.Колонки.Добавить("ПодсистемаСсылка", ОписаниеИдентификатора); + ПорядокВывода.Колонки.Добавить("ПодсистемаПриоритет", ОписаниеСтроки); + ПорядокВывода.Колонки.Добавить("Вариант"); + ПорядокВывода.Колонки.Добавить("ВариантСсылка"); + ПорядокВывода.Колонки.Добавить("УровеньВложенности", ОписаниеЧисла); + + Возврат ПорядокВывода; + +КонецФункции + +// Параметры: +// ПорядокВывода - см. ПорядокВывода +// СтрокаРодителя - см. ДеревоРаспределения +// СтрокаДерева - см. ДеревоРаспределения +// Рекурсия - Структура: +// * ВсегоОсталосьВывести - Число +// * СвободноКолонок - Число +// * КоличествоКолонок - Число +// * ГруппаУровня3Отсечка - Число +// * НомерТекущейКолонки - Число +// * ЭтоПоследняяКолонка - Булево +// * СвободноСтрок - Число +// * НачатВыводВТекущейКолонке - Булево +// ПараметрыЗаполнения - см. ВариантыОтчетов.ВариантыОтчетовДляВывода +// +&НаСервере +Процедура ЗаполнитьПорядокВывода(ПорядокВывода, СтрокаРодителя, СтрокаДерева, Рекурсия, ПараметрыЗаполнения) + + Если Не Рекурсия.ЭтоПоследняяКолонка И Рекурсия.СвободноСтрок <= 0 Тогда // текущая колонка исчерпана + // Переход к новой колонке. + Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1; // Пустая группа, которую не надо выводить. + Рекурсия.НомерТекущейКолонки = Рекурсия.НомерТекущейКолонки + 1; + Рекурсия.ЭтоПоследняяКолонка = (Рекурсия.НомерТекущейКолонки = Рекурсия.КоличествоКолонок); + СвободноКолонок = Рекурсия.КоличествоКолонок - Рекурсия.НомерТекущейКолонки + 1; + // Количество вариантов для вывода в одной колонке. + Рекурсия.ГруппаУровня3Отсечка = Макс(Цел(Рекурсия.ВсегоОсталосьВывести / СвободноКолонок), 2); + Рекурсия.СвободноСтрок = Рекурсия.ГруппаУровня3Отсечка; // Количество вариантов для вывода в одной колонке. + + // Вывод иерархии / Повтор иерархии с добавкой "(продолжение)" если вывод строк текущего родителя уже был начат в + // предыдущей колонке. + ТекущийРодитель = СтрокаРодителя; + Пока ТекущийРодитель <> Неопределено И ТекущийРодитель.ПодсистемаСсылка <> ПараметрыЗаполнения.РазделСсылка Цикл + + // Рекурсия.ВсегоОсталосьВывести при этом не уменьшается, т.к. вывод продолжения увеличивает количество строк. + ВывестиПодсистему = ПорядокВывода.Добавить(); + ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки; + ВывестиПодсистему.ЭтоПодсистема = Истина; + ВывестиПодсистему.ЭтоПродолжение = СтрокаРодителя.НачатВывод; + ВывестиПодсистему.СтрокаДерева = СтрокаДерева; + ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет; + ЗаполнитьЗначенияСвойств(ВывестиПодсистему, ТекущийРодитель, "Подсистема, ПодсистемаСсылка, УровеньВложенности"); + + ТекущийРодитель = ТекущийРодитель.Родитель; + КонецЦикла; + + Рекурсия.НачатВыводВТекущейКолонке = Ложь; + + КонецЕсли; + + Если (СтрокаДерева.КоличествоВариантов > 0 Или СтрокаДерева.ВсегоВложенныхВариантов > 0) И Рекурсия.НачатВыводВТекущейКолонке И СтрокаРодителя.НачатВывод Тогда + // Вывод пустой строки. + Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1; + ВывестиПустуюСтроку = ПорядокВывода.Добавить(); + ВывестиПустуюСтроку.НомерКолонки = Рекурсия.НомерТекущейКолонки; + ВывестиПустуюСтроку.ЭтоПустаяСтрока = Истина; + ВывестиПустуюСтроку.СтрокаДерева = СтрокаДерева; + ВывестиПустуюСтроку.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет; + ЗаполнитьЗначенияСвойств(ВывестиПустуюСтроку, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности"); + + // Учет строк, занятых пустой строкой. + Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1; + КонецЕсли; + + // Вывод группы. + Если СтрокаРодителя <> Неопределено Тогда + ВывестиПодсистему = ПорядокВывода.Добавить(); + ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки; + ВывестиПодсистему.ЭтоПодсистема = Истина; + ВывестиПодсистему.СтрокаДерева = СтрокаДерева; + ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет; + ЗаполнитьЗначенияСвойств(ВывестиПодсистему, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности"); + КонецЕсли; + + Если СтрокаДерева.КоличествоВариантов > 0 Тогда + + // Учет строки, занятой группой. + Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1; + Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1; + + СтрокаДерева.НачатВывод = Истина; + Рекурсия.НачатВыводВТекущейКолонке = Истина; + + Если Рекурсия.ЭтоПоследняяКолонка + Или СтрокаРодителя <> Неопределено + И (СтрокаДерева.КоличествоВариантов <= 5 + Или СтрокаДерева.КоличествоВариантов - 2 <= Рекурсия.СвободноСтрок + 2) Тогда + + // Вывод всех в текущую колонку. + ВозможноПродолжение = Ложь; + КоличествоВТекущуюКолонку = СтрокаДерева.КоличествоВариантов; + + Иначе + + // Частичный вывод в текущую колонку с продолжением в следующей. + ВозможноПродолжение = Истина; + КоличествоВТекущуюКолонку = Макс(Рекурсия.СвободноСтрок + 2, 3); + + КонецЕсли; + + // Регистрация вариантов в текущей колонке / Довывод вариантов в новой колонке. + ВариантовВыведено = 0; + ВидимыхВариантов = 0; + Для Каждого Вариант Из СтрокаДерева.Варианты Цикл + // СтрокаДерева.Варианты - это результат поиска по таблице значений. + // Код рассчитан на то, что сортировка результата поиска не отличается от сортировки строк. + // Если это не так, то исходную таблицу необходимо скопировать + // с фильтром по подсистеме и отсортировать по наименованию. + + Если ВозможноПродолжение + И Не Рекурсия.ЭтоПоследняяКолонка + И Не Вариант.ВыводитсяВместеСОсновным + И ВариантовВыведено >= КоличествоВТекущуюКолонку Тогда + // Переход к новой колонке. + Рекурсия.НомерТекущейКолонки = Рекурсия.НомерТекущейКолонки + 1; + Рекурсия.ЭтоПоследняяКолонка = (Рекурсия.НомерТекущейКолонки = Рекурсия.КоличествоКолонок); + СвободноКолонок = Рекурсия.КоличествоКолонок - Рекурсия.НомерТекущейКолонки + 1; + // Количество вариантов для вывода в одной колонке. + Рекурсия.ГруппаУровня3Отсечка = Макс(Цел(Рекурсия.ВсегоОсталосьВывести / СвободноКолонок), 2); + Рекурсия.СвободноСтрок = Рекурсия.ГруппаУровня3Отсечка; // Количество вариантов для вывода в одной колонке. + + Если Рекурсия.ЭтоПоследняяКолонка Тогда + КоличествоВТекущуюКолонку = -1; + Иначе + КоличествоВТекущуюКолонку = Макс(Мин(Рекурсия.СвободноСтрок, СтрокаДерева.КоличествоВариантов - ВариантовВыведено), 3); + КонецЕсли; + ВариантовВыведено = 0; + + // Повтор иерархии с добавкой "(продолжение)". + ТекущийРодитель = СтрокаРодителя; + Пока ТекущийРодитель <> Неопределено И ТекущийРодитель.ПодсистемаСсылка <> ПараметрыЗаполнения.РазделСсылка Цикл + + // Рекурсия.ВсегоОсталосьВывести при этом не уменьшается, т.к. вывод продолжения увеличивает количество строк. + ВывестиПодсистему = ПорядокВывода.Добавить(); + ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки; + ВывестиПодсистему.ЭтоПодсистема = Истина; + ВывестиПодсистему.ЭтоПродолжение = Истина; + ВывестиПодсистему.СтрокаДерева = СтрокаДерева; + ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет; + ЗаполнитьЗначенияСвойств(ВывестиПодсистему, ТекущийРодитель, "Подсистема, ПодсистемаСсылка, УровеньВложенности"); + + ТекущийРодитель = ТекущийРодитель.Родитель; + КонецЦикла; + + // Вывод группы с добавкой "(продолжение)". + // Рекурсия.ВсегоОсталосьВывести при этом не уменьшается, т.к. вывод продолжения увеличивает количество строк. + ВывестиПодсистему = ПорядокВывода.Добавить(); + ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки; + ВывестиПодсистему.ЭтоПодсистема = Истина; + ВывестиПодсистему.ЭтоПродолжение = Истина; + ВывестиПодсистему.СтрокаДерева = СтрокаДерева; + ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет; + ЗаполнитьЗначенияСвойств(ВывестиПодсистему, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности"); + + // Учет строки, занятой группой. + Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1; + КонецЕсли; + + Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1; + ВывестиВариант = ПорядокВывода.Добавить(); + ВывестиВариант.НомерКолонки = Рекурсия.НомерТекущейКолонки; + ВывестиВариант.ЭтоВариант = Истина; + ВывестиВариант.СтрокаДерева = СтрокаДерева; + ВывестиВариант.Вариант = Вариант; + ВывестиВариант.ВариантСсылка = Вариант.Ссылка; + ВывестиВариант.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет; + ЗаполнитьЗначенияСвойств(ВывестиВариант, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности"); + Если Вариант.ВыводитсяВместеСОсновным Тогда + ВывестиВариант.УровеньВложенности = ВывестиВариант.УровеньВложенности + 1; + КонецЕсли; + + ВариантовВыведено = ВариантовВыведено + 1; + Если Вариант.Видимость Тогда + ВидимыхВариантов = ВидимыхВариантов + 1; + КонецЕсли; + + // Учет строк, занятых вариантами. + Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1; + КонецЦикла; + + Если ВидимыхВариантов > 0 Тогда + ПодсистемаФормы = НайтиПодсистемуПоСсылке(ЭтотОбъект, СтрокаДерева.ПодсистемаСсылка); + ПодсистемаФормы.ВидимыхВариантов = ПодсистемаФормы.ВидимыхВариантов + ВидимыхВариантов; + Пока ПодсистемаФормы.Ссылка <> ПодсистемаФормы.РазделСсылка Цикл + ПодсистемаФормы = НайтиПодсистемуПоСсылке(ЭтотОбъект, ПодсистемаФормы.РазделСсылка); + ПодсистемаФормы.ВидимыхВариантов = ПодсистемаФормы.ВидимыхВариантов + ВидимыхВариантов; + КонецЦикла; + КонецЕсли; + + КонецЕсли; + + // Регистрация вложенных строк. + Для Каждого СтрокаПодчиненного Из СтрокаДерева.Строки Цикл + ЗаполнитьПорядокВывода(ПорядокВывода, СтрокаДерева, СтрокаПодчиненного, Рекурсия, ПараметрыЗаполнения); + // Проброс НачатВывод из нижнего уровня. + Если СтрокаПодчиненного.НачатВывод Тогда + СтрокаДерева.НачатВывод = Истина; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Параметры: +// ПараметрыЗаполнения - см. ВариантыОтчетов.ВариантыОтчетовДляВывода +// СтрокаПорядкаВывода - см. ПорядокВывода +// ВГруппу - ГруппаФормы +// +// Возвращаемое значение: +// ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы, Произвольный, ДекорацияФормы +// +&НаСервере +Функция ДобавитьГруппуПодсистемы(ПараметрыЗаполнения, СтрокаПорядкаВывода, ВГруппу) + Подсистема = СтрокаПорядкаВывода.Подсистема; + СтрокаДерева = СтрокаПорядкаВывода.СтрокаДерева; + Если СтрокаДерева.КоличествоВариантов = 0 + И СтрокаДерева.ВсегоВложенныхВариантов = 0 + И Не (РежимНастройки И ПараметрыЗаполнения.ИмяГруппы = "СГруппой") Тогда + Возврат ВГруппу; + КонецЕсли; + ПодсистемаПредставление = Подсистема.Представление; + + Подсистема.НомерЭлемента = Подсистема.НомерЭлемента + 1; + ГруппаПодсистемыИмя = Подсистема.ИмяЭлемента + "_" + Формат(Подсистема.НомерЭлемента, "ЧГ=0"); + + Если Не ПараметрыЗаполнения.ТолькоТекущийРаздел Тогда + Пока Элементы.Найти(ГруппаПодсистемыИмя) <> Неопределено Цикл + Подсистема.НомерЭлемента = Подсистема.НомерЭлемента + 1; + ГруппаПодсистемыИмя = Подсистема.ИмяЭлемента + "_" + Формат(Подсистема.НомерЭлемента, "ЧГ=0"); + КонецЦикла; + КонецЕсли; + + // Добавление отступа слева. + Если СтрокаПорядкаВывода.УровеньВложенности > 1 Тогда + // Группа. + ГруппаОтступа = Элементы.Вставить(ГруппаПодсистемыИмя + "_ГруппаОтступа", Тип("ГруппаФормы"), ВГруппу); + ГруппаОтступа.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ГруппаОтступа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + ГруппаОтступа.Отображение = ОтображениеОбычнойГруппы.Нет; + ГруппаОтступа.ОтображатьЗаголовок = Ложь; + ГруппаОтступа.РастягиватьПоГоризонтали = Истина; + + // Картинка. + КартинкаОтступа = Элементы.Вставить(ГруппаПодсистемыИмя + "_КартинкаОтступа", Тип("ДекорацияФормы"), ГруппаОтступа); + ЗаполнитьЗначенияСвойств(КартинкаОтступа, ПараметрыЗаполнения.Шаблоны.КартинкаОтступа); + КартинкаОтступа.Ширина = СтрокаПорядкаВывода.УровеньВложенности - 1; + Если СтрокаПорядкаВывода.СтрокаДерева.КоличествоВариантов = 0 И СтрокаПорядкаВывода.СтрокаДерева.ВсегоВложенныхВариантов = 0 Тогда + КартинкаОтступа.Видимость = Ложь; + КонецЕсли; + + // Подмена группы верхнего уровня. + ВГруппу = ГруппаОтступа; + + ШрифтЗаголовка = ШрифтОбычнойГруппы; + ОтображениеГруппыПодсистемы = ОтображениеОбычнойГруппы.Нет; + Иначе + ШрифтЗаголовка = ШрифтВажнойГруппы; + ОтображениеГруппыПодсистемы = ОтображениеОбычнойГруппы.ОбычноеВыделение; + КонецЕсли; + + ГруппаПодсистемы = Элементы.Вставить(ГруппаПодсистемыИмя, Тип("ГруппаФормы"), ВГруппу); + ГруппаПодсистемы.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ГруппаПодсистемы.РастягиватьПоГоризонтали = Истина; + ГруппаПодсистемы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; + ГруппаПодсистемы.Отображение = ОтображениеГруппыПодсистемы; + + ТребуетсяПодсветка = Ложь; + Если ПараметрыЗаполнения.ИспользоватьПодсветку Тогда + ПараметрыПодсветки = ПараметрыЗаполнения.РезультатПоиска.ПодсветкаПодсистем.Получить(Подсистема.Ссылка); + Если ПараметрыПодсветки <> Неопределено Тогда + ПодсветкаПредставления = ПараметрыПодсветки.НаименованиеПодсистемы; + Если ПодсветкаПредставления.КоличествоНайденныхСлов > 0 Тогда + ТребуетсяПодсветка = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ТребуетсяПодсветка Тогда + Если СтрокаПорядкаВывода.ЭтоПродолжение Тогда + Суффикс = НСтр("ru = '(продолжение)'"); + Если Не СтрЗаканчиваетсяНа(ПодсветкаПредставления.Значение, Суффикс) Тогда + ПодсветкаПредставления.Значение = ПодсветкаПредставления.Значение + " " + Суффикс; + КонецЕсли; + КонецЕсли; + + ГруппаПодсистемы.ОтображатьЗаголовок = Ложь; + ГруппаПодсистемы.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСверху; + + ФорматированнаяСтрока = СформироватьСтрокуСПодсветкой(ПодсветкаПредставления); + + ЗаголовокПодсистемы = Элементы.Вставить(ГруппаПодсистемы.Имя + "_РасширеннаяПодсказка", Тип("ДекорацияФормы"), ГруппаПодсистемы); + ЗаголовокПодсистемы.Заголовок = ФорматированнаяСтрока; + ЗаголовокПодсистемы.ЦветТекста = ЦветГруппыВариантовОтчетов; + ЗаголовокПодсистемы.Шрифт = ШрифтЗаголовка; + ЗаголовокПодсистемы.РастягиватьПоГоризонтали = Истина; + ЗаголовокПодсистемы.Высота = 1; + + Иначе + Если СтрокаПорядкаВывода.ЭтоПродолжение Тогда + ПодсистемаПредставление = ПодсистемаПредставление + " " + НСтр("ru = '(продолжение)'"); + КонецЕсли; + + ГруппаПодсистемы.ОтображатьЗаголовок = Истина; + ГруппаПодсистемы.Заголовок = ПодсистемаПредставление; + КонецЕсли; + + СтрокаДерева.ГруппаФормы = ГруппаПодсистемы; + + Возврат ГруппаПодсистемы; +КонецФункции + +&НаСервере +Функция ДобавитьГруппуСОтступом(ПараметрыЗаполнения, СтрокаПорядкаВывода, ВГруппу) + ПараметрыЗаполнения.ВыведеноЭлементовВариантов = ПараметрыЗаполнения.ВыведеноЭлементовВариантов + 1; + + ГруппаОтступаИмя = "ГруппаОтступа_" + Формат(ПараметрыЗаполнения.ВыведеноЭлементовВариантов, "ЧГ=0"); + КартинкаОтступаИмя = "КартинкаОтступа_" + Формат(ПараметрыЗаполнения.ВыведеноЭлементовВариантов, "ЧГ=0"); + ГруппаВыводаИмя = "ГруппаВывода_" + Формат(ПараметрыЗаполнения.ВыведеноЭлементовВариантов, "ЧГ=0"); + + // Отступ. + ГруппаОтступа = Элементы.Вставить(ГруппаОтступаИмя, Тип("ГруппаФормы"), ВГруппу); + ГруппаОтступа.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ГруппаОтступа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + ГруппаОтступа.Отображение = ОтображениеОбычнойГруппы.Нет; + ГруппаОтступа.ОтображатьЗаголовок = Ложь; + ГруппаОтступа.РастягиватьПоГоризонтали = Истина; + + // Картинка. + КартинкаОтступа = Элементы.Вставить(КартинкаОтступаИмя, Тип("ДекорацияФормы"), ГруппаОтступа); + ЗаполнитьЗначенияСвойств(КартинкаОтступа, ПараметрыЗаполнения.Шаблоны.КартинкаОтступа); + КартинкаОтступа.Ширина = 1; + + // Вывод. + ГруппаВывода = Элементы.Вставить(ГруппаВыводаИмя, Тип("ГруппаФормы"), ГруппаОтступа); + ГруппаВывода.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ГруппаВывода.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; + ГруппаВывода.Отображение = ОтображениеОбычнойГруппы.Нет; + ГруппаВывода.ОтображатьЗаголовок = Ложь; + ГруппаВывода.РастягиватьПоГоризонтали = Истина; + + Возврат ГруппаВывода; +КонецФункции + +// Параметры: +// ПараметрыЗаполнения - см. ВариантыОтчетов.ВариантыОтчетовДляВывода +// Вариант - СтрокаТаблицыЗначений: +// * Ссылка - СправочникСсылка.ВариантыОтчетов +// * Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ПодсистемаПредставление - Строка +// * ПодсистемаПриоритет - Строка +// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * БезГруппы - Булево +// * Важный - Булево +// * СмТакже - Булево +// * Дополнительный - Булево +// * Видимость - Булево +// * БыстрыйДоступ - Булево +// * ИмяОтчета - Строка +// * Наименование - Строка +// * Описание - Строка +// * Автор - СправочникСсылка.Пользователи +// - СправочникСсылка.ВнешниеПользователи +// * Отчет - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ДополнительныеОтчетыИОбработки +// - Строка +// * ТипОтчета - ПеречислениеСсылка.ТипыОтчетов +// * КлючВарианта - Строка +// * Родитель - СправочникСсылка.ВариантыОтчетов +// * ВерхнийУровень - Булево +// * КлючЗамеров - Строка +// ВГруппу - ГруппаФормы +// - КнопкаФормы +// - ТаблицаФормы +// - ПолеФормы +// - Произвольный +// УровеньВложенности - Число +// +// Возвращаемое значение: +// ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы, ДекорацияФормы +// +&НаСервере +Функция ДобавитьЭлементыВариантаОтчета(ПараметрыЗаполнения, Вариант, ВГруппу, УровеньВложенности = 0) + + // Уникальное имя добавляемого элемента. + НадписьИмя = "Вариант_" + ОтчетыСервер.ПривестиИдентификаторКИмени(Вариант.Ссылка.УникальныйИдентификатор()); + Если ЗначениеЗаполнено(Вариант.Подсистема) Тогда + НадписьИмя = НадписьИмя + + "_Подсистема_" + + ОтчетыСервер.ПривестиИдентификаторКИмени(Вариант.Подсистема.УникальныйИдентификатор()); + КонецЕсли; + Если Не ПараметрыЗаполнения.ТолькоТекущийРаздел И Элементы.Найти(НадписьИмя) <> Неопределено Тогда + Если ЗначениеЗаполнено(Вариант.РазделСсылка) Тогда + Номер = 0; + Суффикс = "_Раздел_" + ОтчетыСервер.ПривестиИдентификаторКИмени(Вариант.РазделСсылка.УникальныйИдентификатор()); + Иначе + Номер = 1; + Суффикс = "_1"; + КонецЕсли; + Пока Элементы.Найти(НадписьИмя + Суффикс) <> Неопределено Цикл + Номер = Номер + 1; + Суффикс = "_" + XMLСтрока(Номер); + КонецЦикла; + НадписьИмя = НадписьИмя + Суффикс; + КонецЕсли; + + Если РежимНастройки Тогда + ГруппаВариантаИмя = "Группа_" + НадписьИмя; + ГруппаВарианта = Элементы.Вставить(ГруппаВариантаИмя, Тип("ГруппаФормы"), ВГруппу); + ЗаполнитьЗначенияСвойств(ГруппаВарианта, ПараметрыЗаполнения.Шаблоны.ГруппаВарианта); + Иначе + ГруппаВарианта = ВГруппу; + КонецЕсли; + + // Добавление флажка (для быстрого доступа не используется). + Если РежимНастройки Тогда + ФлажокИмя = "Флажок_" + НадписьИмя; + + РеквизитФормы = Новый РеквизитФормы(ФлажокИмя, Новый ОписаниеТипов("Булево"), , , Ложь); + ПараметрыЗаполнения.ДобавляемыеРеквизиты.Добавить(РеквизитФормы); + + Флажок = Элементы.Вставить(ФлажокИмя, Тип("ПолеФормы"), ГруппаВарианта); + Флажок.Вид = ВидПоляФормы.ПолеФлажка; + Флажок.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + Флажок.Видимость = (ПараметрыЗаполнения.ИмяГруппы <> "БыстрыйДоступ"); + Флажок.УстановитьДействие("ПриИзменении", "Подключаемый_ВидимостьВариантаПриИзменении"); + КонецЕсли; + + // Добавление надписи-гиперссылки варианта отчета. + Надпись = Элементы.Вставить(НадписьИмя, Тип("ДекорацияФормы"), ГруппаВарианта); + ЗаполнитьЗначенияСвойств(Надпись, ПараметрыЗаполнения.Шаблоны.НадписьВарианта); + Надпись.Заголовок = СокрЛП(Вариант.Наименование); + Если ЗначениеЗаполнено(Вариант.Описание) Тогда + Надпись.Подсказка = СокрЛП(Вариант.Описание); + КонецЕсли; + Если ЗначениеЗаполнено(Вариант.Автор) Тогда + Надпись.Подсказка = СокрЛ(Надпись.Подсказка + Символы.ПС) + НСтр("ru = 'Автор:'") + " " + СокрЛП(Строка(Вариант.Автор)); + КонецЕсли; + Надпись.УстановитьДействие("Нажатие", "Подключаемый_ВариантНажатие"); + Если Не Вариант.Видимость Тогда + Надпись.ЦветТекста = ЦветСкрытыхВариантов; + КонецЕсли; + Если Вариант.Важный + И ПараметрыЗаполнения.ИмяГруппы <> "СмТакже" + И ПараметрыЗаполнения.ИмяГруппы <> "БыстрыйДоступ" Тогда + Надпись.Шрифт = ШрифтВажнойНадписи; + КонецЕсли; + Надпись.АвтоМаксимальнаяШирина = Ложь; + + СоставПодсказки = Новый Массив; + ОпределитьСоставПодсказкиВарианта(ПараметрыЗаполнения, Вариант, СоставПодсказки, Надпись); + ВывестиПодсказкуВарианта(Надпись, СоставПодсказки); + + Если РежимНастройки Тогда + Для Каждого КлючИЗначение Из ПараметрыЗаполнения.КонтекстноеМеню Цикл + КомандаИмя = КлючИЗначение.Ключ; + КнопкаИмя = КомандаИмя + "_" + НадписьИмя; + Кнопка = Элементы.Вставить(КнопкаИмя, Тип("КнопкаФормы"), Надпись.КонтекстноеМеню); + Если ОбщегоНазначения.ЭтоВебКлиент() Тогда + Команда = Команды.Добавить(КнопкаИмя); + ЗаполнитьЗначенияСвойств(Команда, Команды[КомандаИмя]); + Кнопка.ИмяКоманды = КнопкаИмя; + Иначе + Кнопка.ИмяКоманды = КомандаИмя; + КонецЕсли; + ЗаполнитьЗначенияСвойств(Кнопка, КлючИЗначение.Значение); + КонецЦикла; + КонецЕсли; + + // Регистрация добавленной надписи. + СтрокаТаблицы = ДобавленныеВарианты.Добавить(); + ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Вариант); + СтрокаТаблицы.ГруппаУровня2Имя = ПараметрыЗаполнения.ИмяГруппы; + СтрокаТаблицы.НадписьИмя = НадписьИмя; + + ПараметрыЗаполнения.ПоискВариантов[НадписьИмя] = СтрокаТаблицы.ПолучитьИдентификатор(); + + Возврат Надпись; + +КонецФункции + +// Параметры: +// ПараметрыЗаполнения - см. ВариантыОтчетов.ВариантыОтчетовДляВывода +// Вариант - СтрокаТаблицыЗначений: +// * КоличествоПодчиненных - Число +// СоставПодсказки - Массив +// Надпись - ГруппаФормы +// - КнопкаФормы +// - ТаблицаФормы +// - ПолеФормы +// - ДекорацияФормы +// +&НаСервере +Процедура ОпределитьСоставПодсказкиВарианта(ПараметрыЗаполнения, Вариант, СоставПодсказки, Надпись) + ПодсказкаВыведена = Ложь; + Если ПараметрыЗаполнения.ИспользоватьПодсветку Тогда + ПараметрыПодсветки = ПараметрыЗаполнения.РезультатПоиска.ПодсветкаВариантов.Получить(Вариант.Ссылка); // Структура + Если ПараметрыПодсветки <> Неопределено Тогда + Если ПараметрыПодсветки.НаименованиеВарианта.КоличествоНайденныхСлов > 0 Тогда + Надпись.Заголовок = СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.НаименованиеВарианта); + КонецЕсли; + Если ПараметрыПодсветки.Описание.КоличествоНайденныхСлов > 0 Тогда + СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.Описание, СоставПодсказки); + ПодсказкаВыведена = Истина; + КонецЕсли; + Если ПараметрыПодсветки.ПредставлениеАвтора.КоличествоНайденныхСлов > 0 Тогда + Если СоставПодсказки.Количество() > 0 Тогда + СоставПодсказки.Добавить(Символы.ПС); + КонецЕсли; + СоставПодсказки.Добавить(НСтр("ru = 'Автор:'") + " "); + СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.ПредставлениеАвтора, СоставПодсказки); + СоставПодсказки.Добавить("."); + ПодсказкаВыведена = Истина; + КонецЕсли; + Если ПараметрыПодсветки.НаименованияПользовательскихНастроек.КоличествоНайденныхСлов > 0 Тогда + Если СоставПодсказки.Количество() > 0 Тогда + СоставПодсказки.Добавить(Символы.ПС); + КонецЕсли; + СоставПодсказки.Добавить(НСтр("ru = 'Сохраненные настройки:'") + " "); + СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.НаименованияПользовательскихНастроек, СоставПодсказки); + СоставПодсказки.Добавить("."); + ПодсказкаВыведена = Истина; + КонецЕсли; + Если ПараметрыПодсветки.НаименованияПолей.КоличествоНайденныхСлов > 0 Тогда + Если СоставПодсказки.Количество() > 0 Тогда + СоставПодсказки.Добавить(Символы.ПС); + КонецЕсли; + СоставПодсказки.Добавить(НСтр("ru = 'Поля:'") + " "); + СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.НаименованияПолей, СоставПодсказки); + СоставПодсказки.Добавить("."); + ПодсказкаВыведена = Истина; + КонецЕсли; + Если ПараметрыПодсветки.НаименованияПараметровИОтборов.КоличествоНайденныхСлов > 0 Тогда + Если СоставПодсказки.Количество() > 0 Тогда + СоставПодсказки.Добавить(Символы.ПС); + КонецЕсли; + СоставПодсказки.Добавить(НСтр("ru = 'Настройки:'") + " "); + СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.НаименованияПараметровИОтборов, СоставПодсказки); + СоставПодсказки.Добавить("."); + ПодсказкаВыведена = Истина; + КонецЕсли; + Если ПараметрыПодсветки.КлючевыеСлова.КоличествоНайденныхСлов > 0 Тогда + Если СоставПодсказки.Количество() > 0 Тогда + СоставПодсказки.Добавить(Символы.ПС); + КонецЕсли; + СоставПодсказки.Добавить(НСтр("ru = 'Ключевые слова:'") + " "); + СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.КлючевыеСлова, СоставПодсказки); + СоставПодсказки.Добавить("."); + ПодсказкаВыведена = Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + Если Не ПодсказкаВыведена И ПоказыватьПодсказки Тогда + СоставПодсказки.Добавить(СокрЛП(Надпись.Подсказка)); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ВывестиПодсказкуВарианта(Надпись, СоставПодсказки) + Если СоставПодсказки.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Надпись.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу; + + Подсказка = Надпись.РасширеннаяПодсказка; + Подсказка.Заголовок = Новый ФорматированнаяСтрока(СоставПодсказки); + Подсказка.ЦветТекста = ЦветПодсказки; + Подсказка.АвтоМаксимальнаяВысота = Ложь; + Подсказка.МаксимальнаяВысота = 3; + Подсказка.РастягиватьПоГоризонтали = Истина; + Подсказка.АвтоМаксимальнаяШирина = Ложь; + Подсказка.МаксимальнаяШирина = 0; +КонецПроцедуры + +&НаСервере +Функция СформироватьСтрокуСПодсветкой(ОбластьПоиска, Содержимое = Неопределено) + ВозвращатьФорматированнуюСтроку = Ложь; + Если Содержимое = Неопределено Тогда + ВозвращатьФорматированнуюСтроку = Истина; + Содержимое = Новый Массив; + КонецЕсли; + + ИсходныйТекст = ОбластьПоиска.Значение; + ТекстСокращен = Ложь; + ДлинаТекста = СтрДлина(ИсходныйТекст); + Если ДлинаТекста > 150 Тогда + ТекстСокращен = СократитьТекст(ИсходныйТекст, ДлинаТекста, 150); + КонецЕсли; + + ОбластьПоиска.ПодсветкаСлов.СортироватьПоЗначению(НаправлениеСортировки.Возр); + КоличествоОткрыто = 0; + ПозицияНачалаОбычногоТекста = 1; + ПозицияНачалаПодсветки = 0; + Для Каждого ЭлементСписка Из ОбластьПоиска.ПодсветкаСлов Цикл + Если ТекстСокращен И ЭлементСписка.Значение > ДлинаТекста Тогда + ЭлементСписка.Значение = ДлинаТекста; // Корректировка подсветки если текст был сокращен. + КонецЕсли; + Подсвечивать = (ЭлементСписка.Представление = "+"); + КоличествоОткрыто = КоличествоОткрыто + ?(Подсвечивать, 1, -1); + Если Подсвечивать И КоличествоОткрыто = 1 Тогда + ПозицияНачалаПодсветки = ЭлементСписка.Значение; + ФрагментОбычногоТекста = Сред(ИсходныйТекст, ПозицияНачалаОбычногоТекста, ПозицияНачалаПодсветки - ПозицияНачалаОбычногоТекста); + Содержимое.Добавить(ФрагментОбычногоТекста); + ИначеЕсли Не Подсвечивать И КоличествоОткрыто = 0 Тогда + ПозицияНачалаОбычногоТекста = ЭлементСписка.Значение; + ПодсвечиваемыйФрагмент = Сред(ИсходныйТекст, ПозицияНачалаПодсветки, ПозицияНачалаОбычногоТекста - ПозицияНачалаПодсветки); + Содержимое.Добавить(Новый ФорматированнаяСтрока(ПодсвечиваемыйФрагмент, , , ЦветПодсветкиНайденныхСлов)); + КонецЕсли; + КонецЦикла; + Если ПозицияНачалаОбычногоТекста <= ДлинаТекста Тогда + ФрагментОбычногоТекста = Сред(ИсходныйТекст, ПозицияНачалаОбычногоТекста); + Содержимое.Добавить(ФрагментОбычногоТекста); + КонецЕсли; + + Если ВозвращатьФорматированнуюСтроку Тогда + Возврат Новый ФорматированнаяСтрока(Содержимое); // АПК:1356 Строка не формируется заново, а выполняется обработка существующей. + Иначе + Возврат Неопределено; + КонецЕсли; +КонецФункции + +&НаСервере +Функция СократитьТекст(Текст, ТекущаяДлина, ЦелеваяДлина) + ПозицияПС = СтрНайти(Текст, Символы.ПС, НаправлениеПоиска.СКонца, ЦелеваяДлина); + ПозицияТочки = СтрНайти(Текст, ".", НаправлениеПоиска.СКонца, ЦелеваяДлина); + ПозицияЗапятой = СтрНайти(Текст, ",", НаправлениеПоиска.СКонца, ЦелеваяДлина); + ПозицияТочкиСЗапятой = СтрНайти(Текст, ",", НаправлениеПоиска.СКонца, ЦелеваяДлина); + Позиция = Макс(ПозицияПС, ПозицияТочки, ПозицияЗапятой, ПозицияТочкиСЗапятой); + Если Позиция = 0 Тогда + ПозицияПС = СтрНайти(Текст, Символы.ПС, НаправлениеПоиска.СНачала, ЦелеваяДлина); + ПозицияТочки = СтрНайти(Текст, ".", НаправлениеПоиска.СНачала, ЦелеваяДлина); + ПозицияЗапятой = СтрНайти(Текст, ",", НаправлениеПоиска.СНачала, ЦелеваяДлина); + ПозицияТочкиСЗапятой = СтрНайти(Текст, ",", НаправлениеПоиска.СНачала, ЦелеваяДлина); + Позиция = Мин(ПозицияПС, ПозицияТочки, ПозицияЗапятой, ПозицияТочкиСЗапятой); + КонецЕсли; + Если Позиция = 0 Или Позиция = ТекущаяДлина Тогда + Возврат Ложь; + КонецЕсли; + Текст = Лев(Текст, Позиция) + " ..."; + ТекущаяДлина = Позиция; + Возврат Истина; +КонецФункции + +&НаСервере +Функция ДобавитьПустуюДекорацию(ПараметрыЗаполнения, ВГруппу) + + ПараметрыЗаполнения.ДобавленоПустыхДекораций = ПараметрыЗаполнения.ДобавленоПустыхДекораций + 1; + ДекорацияИмя = "ПустаяДекорация_" + Формат(ПараметрыЗаполнения.ДобавленоПустыхДекораций, "ЧГ=0"); + + Декорация = Элементы.Вставить(ДекорацияИмя, Тип("ДекорацияФормы"), ВГруппу); + Декорация.Вид = ВидДекорацииФормы.Надпись; + Декорация.Заголовок = " "; + Декорация.РастягиватьПоГоризонтали = Истина; + + Возврат Декорация; + +КонецФункции + +&НаКлиенте +Процедура ОписаниеМобильногоПриложенияНажатие(Элемент) + + ПараметрыФормы = ПараметрыКлиента.ОписаниеМобильногоПриложения; + ОткрытьФорму(ПараметрыФормы.ИмяФормы, ПараметрыФормы.ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" new file mode 100644 index 00000000..bc500a63 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262/\320\237\320\260\320\275\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\276\320\262.mdo" @@ -0,0 +1,15 @@ + + + ПанельОтчетов + + ru + Панель отчетов + + + + ru + + + PersonalComputer + MobileDevice + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Form.form" new file mode 100644 index 00000000..8ad0f74a --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Form.form" @@ -0,0 +1,1594 @@ + + + + <key>ru</key> + <value>Параметры администрирования</value> + + + ПоясняющаяНадпись + 109 + + <key>ru</key> + <value>Поясняющая надпись</value> + + true + true + + true + + + ПоясняющаяНадписьРасширеннаяПодсказка + 111 + true + true + + true + + Label + true + true + + Left + + + + ПоясняющаяНадписьКонтекстноеМеню + 110 + true + true + + true + + true + + Label + true + + Left + Top + + + + ГруппаАдминистрированиеИБ + 24 + + РежимРаботы + 31 + + НеразделенныйРежим + 33 + + ИмяАдминистратораИнформационнойБазы + 99 + + <key>ru</key> + <value>Имя пользователя</value> + + true + true + + true + + + + ИмяАдминистратораИнформационнойБазы + + + + ИмяАдминистратораИнформационнойБазыРасширеннаяПодсказка + 101 + true + true + + true + + Label + true + true + + Left + + + + ИмяАдминистратораИнформационнойБазыКонтекстноеМеню + 100 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ПарольНеразделенногоАдминистратораИБ + 36 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + + ПарольАдминистратораИнформационнойБазы + + + + ПарольНеразделенногоАдминистратораИБExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + + ПарольНеразделенногоАдминистратораИБКонтекстноеМеню + 37 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Неразделенный режим</value> + + + НеразделенныйРежимРасширеннаяПодсказка + 45 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + + + + РазделенныйРежим + 32 + + АдминистраторИБ + 25 + + <key>ru</key> + <value>Имя пользователя</value> + + true + true + + true + + + + АдминистраторИБ + + + + ru + Администратор информационной базы, от имени которого выполняется принудительное отключение сеансов + + + АдминистраторИБExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + + АдминистраторИБКонтекстноеМеню + 26 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + false + true + true + true + + + + ПарольАдминистратораИБ + 27 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + + ПарольАдминистратораИнформационнойБазы + + + + ru + Пароль администратора информационной базы, от имени которого выполняется принудительное отключение сеансов + + + ПарольАдминистратораИБExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + + ПарольАдминистратораИБКонтекстноеМеню + 28 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Разделенный режим</value> + + + РазделенныйРежимРасширеннаяПодсказка + 48 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Режим работы</value> + + + РежимРаботыExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Администратор информационной базы</value> + + + ГруппаАдминистрированиеИБРасширеннаяПодсказка + 43 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + Auto + + + + ГруппаАдминистрированиеКластера + 76 + + ГруппаПараметрыКластера + 9 + + ИмяВКластере + 102 + + true + + + + ИмяВКластере + + + + ИмяВКластереРасширеннаяПодсказка + 104 + true + true + + true + + Label + true + true + + Left + + + + ИмяВКластереКонтекстноеМеню + 103 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ИмяАдминистратораКластера + 10 + true + true + + true + + + + ИмяАдминистратораКластера + + + + ИмяАдминистратораКластераExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + + ИмяАдминистратораКластераКонтекстноеМеню + 11 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ПарольАдминистратораКластера + 12 + true + true + + true + + + + ПарольАдминистратораКластера + + + + ПарольАдминистратораКластераExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + ПарольАдминистратораКластераКонтекстноеМеню + 13 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ПортКластераСерверов + 17 + true + true + + true + + + + ПортКластера + + + + ПортКластераСерверовExtendedTooltip + 59 + true + true + + true + + Label + true + true + + Left + + + + ПортКластераСерверовКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + + ru + ЧГ=0 + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Параметры авторизации кластера серверов</value> + + + ГруппаПараметрыКластераРасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаПараметрыУправления + 78 + + ТипПодключения + 114 + + <key>ru</key> + <value>Подключение к кластеру серверов</value> + + true + true + + true + + + + ТипПодключения + + + + OnChange + ТипПодключенияПриИзменении + + + ТипПодключенияРасширеннаяПодсказка + 116 + true + true + + true + + Label + true + true + + Left + + + + ТипПодключенияКонтекстноеМеню + 115 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 26 + true + true + true + true + true + true + true + + + ru + COM-соединение с агентом сервера + + + COM + + + + + ru + Через сервер администрирования (ras) + + + RAS + + + + + + ГруппаТипПодключения + 85 + + ГруппаCOM + 61 + + АдресАгентаСервера + 82 + + <key>ru</key> + <value>Адрес</value> + + true + true + + true + + + + АдресАгентаСервера + + + + АдресАгентаСервераРасширеннаяПодсказка + 84 + true + true + + true + + Label + true + true + + Left + + + + АдресАгентаСервераКонтекстноеМеню + 83 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ПортАгентаСервера + 19 + + <key>ru</key> + <value>Порт</value> + + true + true + + true + + + + ПортАгентаСервера + + + + ПортАгентаСервераExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + + ПортАгентаСервераКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + + ru + ЧГ=0 + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>COM</value> + + + ГруппаCOMРасширеннаяПодсказка + 62 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + + ГруппаRAS + 63 + + АдресСервераАдминистрирования + 68 + + <key>ru</key> + <value>Адрес</value> + + true + true + + true + + + + АдресСервераАдминистрирования + + + + АдресСервераАдминистрированияРасширеннаяПодсказка + 70 + true + true + + true + + Label + true + true + + Left + + + + АдресСервераАдминистрированияКонтекстноеМеню + 69 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ПортСервераАдминистрирования + 73 + + <key>ru</key> + <value>Порт</value> + + true + true + + true + + + + ПортСервераАдминистрирования + + + + ПортСервераАдминистрированияРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + + ПортСервераАдминистрированияКонтекстноеМеню + 74 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + + ru + ЧГ=0 + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>RAS</value> + + + ГруппаRASРасширеннаяПодсказка + 64 + true + true + + true + + Label + true + true + + Left + + + Page + + HorizontalIfPossible + true + + + true + true + + true + + + <key>ru</key> + <value>Тип подключения</value> + + + ГруппаТипПодключенияРасширеннаяПодсказка + 86 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Подключение к кластеру серверов через сервер администрирования (ras)</value> + + + ГруппаПараметрыУправленияРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + + + true + true + + true + + + <key>ru</key> + <value>Параметры администрирования кластера</value> + + + ГруппаАдминистрированиеКластераРасширеннаяПодсказка + 77 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + WeakSeparation + true + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + OK + 30 + true + true + + true + + + OKРасширеннаяПодсказка + 40 + true + true + + true + + Label + true + true + + Left + + + Form.Command.OK + Auto + true + true + true + UserCmds + Auto + + + Справка + 23 + true + true + + true + + false + + СправкаExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + Auto + + + Отмена + 112 + true + true + + true + + + ОтменаРасширеннаяПодсказка + 113 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + LockOwnerWindow + true + Vertical + true + true + true + true + true + + ИмяАдминистратораКластера + + <key>ru</key> + <value>Имя администратора кластера</value> + + 4 + + String + + + + true + + + true + + + + ПарольАдминистратораКластера + + <key>ru</key> + <value>Пароль администратора кластера</value> + + 5 + + String + + + + true + + + true + + + + ПортАгентаСервера + + <key>ru</key> + <value>Порт агента сервера</value> + + 7 + + Number + + 5 + true + + + + true + + + true + + + + ПортКластера + + <key>ru</key> + <value>Порт кластера серверов</value> + + 8 + + Number + + 5 + true + + + + true + + + true + + + + АдминистраторИБ + + <key>ru</key> + <value>Администратор ИБ</value> + + 1 + + CatalogRef.Пользователи + + + true + + + true + + + + ПарольАдминистратораИнформационнойБазы + + <key>ru</key> + <value>Пароль администратора информационной базы</value> + + 2 + + String + + + + true + + + true + + + + АдресСервераАдминистрирования + + <key>ru</key> + <value>Адрес сервера администрирования</value> + + 11 + + String + + + + true + + + true + + + + ПортСервераАдминистрирования + + <key>ru</key> + <value>Порт сервера администрирования</value> + + 12 + + Number + + 5 + + + + true + + + true + + + + АдресАгентаСервера + + <key>ru</key> + <value>Адрес агента сервера</value> + + 6 + + String + + + + true + + + true + + + + ИмяВКластере + + <key>ru</key> + <value>Имя в кластере</value> + + 13 + + String + + + + true + + + true + + + + ИмяАдминистратораИнформационнойБазы + + <key>ru</key> + <value>Имя администратора информационной базы</value> + + 3 + + String + + + + true + + + true + + + + ПараметрыАдминистрирования + 9 + + + true + + + true + + + + ТипПодключения + + <key>ru</key> + <value>Тип подключения</value> + + 14 + + String + + + + true + + + true + + + + ТребуетсяВводПараметровАдминистрирования + 10 + + Boolean + + + true + + + true + + + + OK + + <key>ru</key> + <value>OK</value> + + 1 + + ru + OK + + + true + + + + Записать + + + DontUse + + + Отмена + + <key>ru</key> + <value>Отмена</value> + + 2 + + ru + Отмена + + + true + + + + Отмена + + + DontUse + + + ПараметрыАдминистрирования + + + + ЗапрашиватьПараметрыАдминистрированияИБ + + Boolean + + true + + + ЗапрашиватьПараметрыАдминистрированияКластера + + Boolean + + true + + + Заголовок + + String + + + + + ПоясняющаяНадпись + + String + + + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Help/ru.html" new file mode 100644 index 00000000..be96ecbc --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Help/ru.html" @@ -0,0 +1,15 @@ + +

        Предназначена для указания параметров доступа к кластеру серверов.

        +

        Открывается из окна Блокировка работы пользователей по ссылке Включить возможность управления блокировкой регламентных заданий.

        +

        Параметры необходимы для выполнения различных административных действий с клиент-серверной информационной базой:

        +
        • имя и пароль Администратора информационной базы для выполнения блокировки регламентных и фоновых заданий от его имени. В простейшем случае, это могут быть Ваши имя и пароль, которые Вы используете для входа в программу. В целях безопасности рекомендуется создать отдельного служебного пользователя с административными правами. Следует иметь в виду, что имя и пароль хранятся непосредственно в самой базе, и могут быть прочитаны, если злоумышленник получит полный доступ к базе. +
        • Параметры администрирования кластера: +
          • имя и пароль одного из Администраторов кластера серверов, от имени которого выполняется принудительное завершение (отключение) сеансов пользователей. Не задается, если в кластере серверов не задан ни один администратор; +
          • номера портов для доступа к кластеру серверов и агенту сервера, если они не стандартные. Как правило, номер порта агента сервера отличается от порта кластера серверов на единицу, например: 3040 и 3041. +
          • Подключение к кластеру серверов - выберите из списка один из вариантов: +
            • COM-соединение с агентом сервера; +
            • Через сервер администрирования (ras).
          • Адрес - например, "demo". +
          • Порт - например, "3040".

        См. также

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Module.bsl" new file mode 100644 index 00000000..f60a89c8 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/Module.bsl" @@ -0,0 +1,318 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() И Параметры.ЗапрашиватьПараметрыАдминистрированияКластера Тогда + ВызватьИсключение НСтр("ru = 'Настройка параметров кластера серверов доступна только в клиент-серверном режиме работы.'"); + КонецЕсли; + + Если Параметры.ЗапрашиватьПараметрыАдминистрированияКластера + И ОбщегоНазначения.ЭтоMacOSКлиент() Тогда + Возврат; // Отказ устанавливается в ПриОткрытии. + КонецЕсли; + + ДоступноИспользованиеРазделенныхДанных = ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных(); + + Если Параметры.ПараметрыАдминистрирования = Неопределено Тогда + ПараметрыАдминистрирования = СтандартныеПодсистемыСервер.ПараметрыАдминистрирования(); + Иначе + ПараметрыАдминистрирования = Параметры.ПараметрыАдминистрирования; + КонецЕсли; + + ПроверитьНеобходимостьВводаПараметровАдминистрирования(); + + Если ДоступноИспользованиеРазделенныхДанных Тогда + + ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени( + ПараметрыАдминистрирования.ИмяАдминистратораИнформационнойБазы); + Если ПользовательИБ <> Неопределено Тогда + ИдентификаторАдминистратораИБ = ПользовательИБ.УникальныйИдентификатор; + КонецЕсли; + Пользователи.НайтиНеоднозначныхПользователейИБ(Неопределено, ИдентификаторАдминистратораИБ); + АдминистраторИБ = Справочники.Пользователи.НайтиПоРеквизиту("ИдентификаторПользователяИБ", ИдентификаторАдминистратораИБ); + + КонецЕсли; + + Если Не ПустаяСтрока(Параметры.Заголовок) Тогда + Заголовок = Параметры.Заголовок; + КонецЕсли; + + Если ПустаяСтрока(Параметры.ПоясняющаяНадпись) Тогда + Элементы.ПоясняющаяНадпись.Видимость = Ложь; + Иначе + Элементы.ПоясняющаяНадпись.Заголовок = Параметры.ПоясняющаяНадпись; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ПараметрыАдминистрирования); + + Элементы.РежимРаботы.ТекущаяСтраница = ?(ДоступноИспользованиеРазделенныхДанных, Элементы.РазделенныйРежим, Элементы.НеразделенныйРежим); + Элементы.ГруппаАдминистрированиеИБ.Видимость = Параметры.ЗапрашиватьПараметрыАдминистрированияИБ; + Элементы.ГруппаАдминистрированиеКластера.Видимость = Параметры.ЗапрашиватьПараметрыАдминистрированияКластера; + + Если ОбщегоНазначения.ЭтоLinuxКлиент() Тогда + + ТипПодключения = "RAS"; + Элементы.ТипПодключения.Видимость = Ложь; + Элементы.ГруппаПараметрыУправления.ОтображатьЗаголовок = Истина; + Элементы.ГруппаПараметрыУправления.Отображение = ОтображениеОбычнойГруппы.СлабоеВыделение; + + КонецЕсли; + + Элементы.ГруппаТипПодключения.ТекущаяСтраница = ?(ТипПодключения = "COM", Элементы.ГруппаCOM, Элементы.ГруппаRAS); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Параметры.ЗапрашиватьПараметрыАдминистрированияКластера + И ОбщегоНазначенияКлиент.ЭтоMacOSКлиент() Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Подключение к кластеру серверов недоступно в клиенте под управлением ОС X.'"); + ПоказатьПредупреждение(,ТекстСообщения); + Возврат; + КонецЕсли; + + Если Не ТребуетсяВводПараметровАдминистрирования Тогда + Попытка + ПроверитьПараметрыАдминистрирования(ПараметрыАдминистрирования); + Исключение + Возврат; // Обработка не требуется. Форма будет открыта в штатном режиме. + КонецПопытки; + Отказ = Истина; + ВыполнитьОбработкуОповещения(ЭтотОбъект.ОписаниеОповещенияОЗакрытии, ПараметрыАдминистрирования); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + Если Не Параметры.ЗапрашиватьПараметрыАдминистрированияИБ Тогда + Возврат; + КонецЕсли; + + Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + + Если Не ЗначениеЗаполнено(АдминистраторИБ) Тогда + Возврат; + КонецЕсли; + + ИмяПоля = "АдминистраторИБ"; + + ПользовательИБ = Неопределено; + ПолучитьАдминистратораИБ(ПользовательИБ); + Если ПользовательИБ = Неопределено Тогда + ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Указанный пользователь не имеет доступа к информационной базе.'"),, + ИмяПоля,,Отказ); + Возврат; + КонецЕсли; + + Если Не Пользователи.ЭтоПолноправныйПользователь(ПользовательИБ, Истина) Тогда + ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'У пользователя нет административных прав.'"),, + ИмяПоля,,Отказ); + Возврат; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ТипПодключенияПриИзменении(Элемент) + + Элементы.ГруппаТипПодключения.ТекущаяСтраница = ?(ТипПодключения = "COM", Элементы.ГруппаCOM, Элементы.ГруппаRAS); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Записать(Команда) + + ОчиститьСообщения(); + + Если Не ПроверитьЗаполнениеНаСервере() Тогда + Возврат; + КонецЕсли; + + // Заполняем структуру настроек. + ЗаполнитьЗначенияСвойств(ПараметрыАдминистрирования, ЭтотОбъект); + + ПроверитьПараметрыАдминистрирования(ПараметрыАдминистрирования); + + СохранитьПараметрыПодключения(); + + // Восстанавливаем значения паролей. + ЗаполнитьЗначенияСвойств(ПараметрыАдминистрирования, ЭтотОбъект); + + Закрыть(ПараметрыАдминистрирования); + +КонецПроцедуры + +&НаКлиенте +Процедура Отмена(Команда) + Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ПроверитьЗаполнениеНаСервере() + + Возврат ПроверитьЗаполнение(); + +КонецФункции + +&НаСервере +Процедура СохранитьПараметрыПодключения() + + // Сохраняем параметры в константу, пароли очищаем. + СтандартныеПодсистемыСервер.УстановитьПараметрыАдминистрирования(ПараметрыАдминистрирования); + +КонецПроцедуры + +&НаСервере +Процедура ПолучитьАдминистратораИБ(ПользовательИБ = Неопределено) + + Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + + Если ЗначениеЗаполнено(АдминистраторИБ) Тогда + + ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( + АдминистраторИБ.ИдентификаторПользователяИБ); + + Иначе + + ПользовательИБ = Неопределено; + + КонецЕсли; + + ИмяАдминистратораИнформационнойБазы = ?(ПользовательИБ = Неопределено, "", ПользовательИБ.Имя); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьПараметрыАдминистрирования(ПараметрыАдминистрирования) + + Если ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() + И ТипПодключения = "COM" Тогда + + Оповещение = Новый ОписаниеОповещения("ПроверитьПараметрыАдминистрированияПослеПроверкиCOMСоединителя", ЭтотОбъект); + ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель(Ложь, Оповещение); + Иначе + ПроверитьПараметрыАдминистрированияПослеПроверкиCOMСоединителя(Истина, Неопределено); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьПараметрыАдминистрированияПослеПроверкиCOMСоединителя(Зарегистрировано, Контекст) Экспорт + + Если Зарегистрировано Тогда + ПроверитьПараметрыАдминистрированияНаСервере(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьПараметрыАдминистрированияНаСервере() + + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + ПроверитьПараметрыАдминистрированияФайловойБазы(); + Иначе + АдминистрированиеКластера.ПроверитьПараметрыАдминистрирования(ПараметрыАдминистрирования,, + Параметры.ЗапрашиватьПараметрыАдминистрированияКластера, Параметры.ЗапрашиватьПараметрыАдминистрированияИБ); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьНеобходимостьВводаПараметровАдминистрирования() + + ТребуетсяВводПараметровАдминистрирования = Истина; + + Если Параметры.ЗапрашиватьПараметрыАдминистрированияИБ И Не Параметры.ЗапрашиватьПараметрыАдминистрированияКластера Тогда + + КоличествоПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей().Количество(); + + Если КоличествоПользователей > 0 Тогда + + // Вычисляем актуальное имя пользователя, даже если оно было ранее изменено в текущем сеансе; + // Например, для подключения к текущей ИБ через внешнее соединение из этого сеанса; + // Во всех остальных случаях достаточно получить ПользователиИнформационнойБазы.ТекущийПользователь(). + ТекущийПользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( + ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор); + + Если ТекущийПользователь = Неопределено Тогда + ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); + КонецЕсли; + + Если ТекущийПользователь.АутентификацияСтандартная И Не ТекущийПользователь.ПарольУстановлен + И Пользователи.ЭтоПолноправныйПользователь(ТекущийПользователь, Истина) Тогда + + ПараметрыАдминистрирования.ИмяАдминистратораИнформационнойБазы = ТекущийПользователь.Имя; + ПараметрыАдминистрирования.ПарольАдминистратораИнформационнойБазы = ""; + + ТребуетсяВводПараметровАдминистрирования = Ложь; + + КонецЕсли; + + ИначеЕсли КоличествоПользователей = 0 Тогда + + ПараметрыАдминистрирования.ИмяАдминистратораИнформационнойБазы = ""; + ПараметрыАдминистрирования.ПарольАдминистратораИнформационнойБазы = ""; + + ТребуетсяВводПараметровАдминистрирования = Ложь; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьПараметрыАдминистрированияФайловойБазы() + + Если Параметры.ЗапрашиватьПараметрыАдминистрированияИБ Тогда + + // В базовых версиях проверку подключения не осуществляем. + Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() + Или СтандартныеПодсистемыСервер.ЭтоУчебнаяПлатформа() Тогда + Возврат; + КонецЕсли; + + ПараметрыПодключения = ОбщегоНазначенияКлиентСервер.СтруктураПараметровДляУстановкиВнешнегоСоединения(); + ПараметрыПодключения.КаталогИнформационнойБазы = СтрРазделить(СтрокаСоединенияИнформационнойБазы(), """")[1]; + ПараметрыПодключения.ИмяПользователя = ИмяАдминистратораИнформационнойБазы; + ПараметрыПодключения.ПарольПользователя = ПарольАдминистратораИнформационнойБазы; + + Результат = ОбщегоНазначения.УстановитьВнешнееСоединениеСБазой(ПараметрыПодключения); + + Если Результат.Соединение = Неопределено Тогда + ВызватьИсключение Результат.КраткоеОписаниеОшибки; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" new file mode 100644 index 00000000..af7b6517 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\321\217\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213.mdo" @@ -0,0 +1,16 @@ + + + ПараметрыАдминистрированияПрограммы + + ru + Параметры администрирования программы + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Form.form" new file mode 100644 index 00000000..754b2948 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Form.form" @@ -0,0 +1,1106 @@ + + + + ВариантыИспользованияПроксиСервера + 20 + true + true + + true + + + + ВариантИспользованияПроксиСервера + + + None + + OnChange + ВариантыИспользованияПроксиСервераПриИзменении + + + ВариантыИспользованияПроксиСервераExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + + ВариантыИспользованияПроксиСервераКонтекстноеМеню + 21 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Не использовать прокси-сервер + + + 0 + + + + + ru + Использовать системные настройки прокси-сервера + + + 1 + + + + + ru + Использовать другие настройки прокси-сервера: + + + 2 + + + + + + ПараметрыПрокси + 18 + + ГруппаАдресСервера + 19 + + ПроксиСервер + 9 + true + true + + true + + + + Сервер + + + + ru + IP адрес или имя прокси сервера + + + ПроксиСерверExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + + ПроксиСерверКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Порт + 1 + true + true + + true + + + + Порт + + + + ru + Порт прокси сервера + + + ПортExtendedTooltip + 49 + true + true + + true + + Label + true + true + + Left + + + + ПортКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + + ru + ЧН=; ЧГ= + + true + true + true + + 0 + + + 65535 + + + + true + true + + true + + + ГруппаАдресСервераExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + + ГруппаАутентификация + 74 + + ИспользоватьАутентификациюОС + 63 + + <key>ru</key> + <value>Аутентификация</value> + + true + true + + true + + + + ИспользоватьАутентификациюОС + + + Button + + ИспользоватьАутентификациюОСРасширеннаяПодсказка + 65 + + <key>ru</key> + <value>- Базовая (Basic Authentication) +- Операционная система (NTLM Integrated Windows) + в версии 1С:Предприятия под Windows</value> + + true + true + + true + + Label + true + true + + Left + + + + ИспользоватьАутентификациюОСКонтекстноеМеню + 64 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + ru + Базовая + + + 0 + + + + + ru + Операционная система + + + 1 + + + + + + Пользователь + 5 + true + true + + true + + + + Пользователь + + + + ru + Логин для авторизации на прокси сервере + + + ПользовательExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + + ПользовательКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Пароль + 3 + true + true + + true + + + + Пароль + + + + ru + Пароль для авторизации на прокси сервере + + + ПарольExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + + ПарольКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + true + + + ГруппаАутентификацияРасширеннаяПодсказка + 75 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + Auto + + + + ГруппаДополнительныхПараметров + 25 + + НеИспользоватьПроксиДляЛокальныхАдресов + 11 + true + true + + true + + + + НеИспользоватьПроксиДляЛокальныхАдресов + + + Right + + НеИспользоватьПроксиДляЛокальныхАдресовExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + + НеИспользоватьПроксиДляЛокальныхАдресовКонтекстноеМеню + 12 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ДополнительныеПараметрыПроксиСервера + 26 + true + true + + true + + + ДополнительныеПараметрыПроксиСервераExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ДополнительныеПараметрыПроксиСервера + Auto + true + true + Right + UserCmds + Auto + + true + true + + true + + + ГруппаДополнительныхПараметровExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + ПараметрыПроксиExtendedTooltip + 46 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + Auto + Auto + + + Bottom + + ФормаКоманднаяПанель + -1 + + Ок + 8 + true + true + + true + + false + + ОкExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КнопкаОК + Auto + true + true + true + UserCmds + Auto + + + КнопкаОтмена + 34 + true + true + + true + + + КнопкаОтменаExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + Form.Command.КнопкаОтмена + Auto + true + true + UserCmds + Auto + + true + true + + true + + Right + true + + + ChoiceProcessing + ОбработкаВыбора + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Close + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwnerWindow + true + true + Vertical + true + true + true + true + true + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + String + + + + true + + + true + + true + + + Пароль + + <key>ru</key> + <value>Пароль</value> + + 2 + + String + + + + true + + + true + + true + + + Порт + + <key>ru</key> + <value>Порт</value> + + 3 + + Number + + 5 + true + + + + true + + + true + + true + + + Сервер + + <key>ru</key> + <value>Адрес сервера</value> + + 4 + + String + + + + true + + + true + + true + + + НеИспользоватьПроксиДляЛокальныхАдресов + + <key>ru</key> + <value>Не использовать прокси для локальных адресов</value> + + 5 + + Boolean + + + true + + + true + + true + + + НастройкаПроксиНаКлиенте + 6 + + Boolean + + + true + + + true + + + + ВариантИспользованияПроксиСервера + + <key>ru</key> + <value>Вариант использования прокси-сервера</value> + + 8 + + Number + + 1 + + + + true + + + true + + true + + + ИспользоватьСистемныеНастройки + 9 + + Boolean + + + true + + + true + + + + ИспользоватьПрокси + 7 + + Boolean + + + true + + + true + + + + СерверыИсключений + 10 + + ValueList + + + true + + + true + + + + + + + ОдинПроксиДляВсехПротоколов + 11 + + Boolean + + + true + + + true + + + + СерверHTTP + 12 + + String + + + + true + + + true + + + + ПортHTTP + 13 + + Number + + 5 + true + + + + true + + + true + + + + СерверHTTPS + 14 + + String + + + + true + + + true + + + + СерверFTP + 15 + + String + + + + true + + + true + + + + ПортHTTPS + 16 + + Number + + 5 + true + + + + true + + + true + + + + ПортFTP + 17 + + Number + + 5 + true + + + + true + + + true + + + + ВыполненаПопыткаСохраненияНастроекВФайл + 18 + + Boolean + + + true + + + true + + + + ИспользоватьАутентификациюОС + + <key>ru</key> + <value>Использовать аутентификацию ОС</value> + + 19 + + Number + + + + true + + + true + + + + ДоступноРедактирование + 20 + + Boolean + + + true + + + true + + + + КнопкаОК + + <key>ru</key> + <value>ОК</value> + + 1 + + true + + + + КнопкаОК + + + TextPicture + true + DontUse + + + ДополнительныеПараметрыПроксиСервера + + <key>ru</key> + <value>Дополнительно</value> + + 2 + + ru + Дополнительные параметры прокси сервера + + + true + + + + ДополнительныеПараметрыПроксиСервера + + + DontUse + + + КнопкаОтмена + + <key>ru</key> + <value>Отмена</value> + + 3 + + ru + Кнопка отмена + + + true + + + + КнопкаОтмена + + + DontUse + + + НастройкаПроксиНаКлиенте + + Boolean + + true + + + + + + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Help/ru.html" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Help/ru.html" new file mode 100644 index 00000000..5e5700de --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Help/ru.html" @@ -0,0 +1,24 @@ + +

        Предназначена для настройки параметров прокси-сервера.

        +

        Программа предоставляет возможности для получения файлов из сети Интернет по протоколам HTTP, HTTPS, FTP и сохранения полученных файлов на клиенте, сервере или во временном хранилище.

        +

        При работе с программой для выполнения определенных операций (таких, как загрузка курсов валют, загрузка адресного классификатора, обмен данными через FTP-ресурс, обновление конфигурации с веб-сайта поставщика и т.п.) может потребоваться доступ к сети Интернет.

        +

        В случае если доступ в Интернет осуществляется через прокси-сервер, в программе необходимо указать параметры прокси-сервера. При этом существуют клиентские и серверные настройки прокси-сервера.

        +

        В общем случае, параметры прокси-сервера нужны для работы механизмов, которые получают файлы из Интернета по протоколам HTTP, HTTPS и FTP. Настройка прокси-сервера на сервере нужна для работы механизмов на сервере.

        +

        А для клиентских механизмов (например, загрузка курсов валют в тонком и толстом клиенте) нужна настройка на рабочем месте. В то же время, для работы в программе с электронной почтой настраивать прокси-сервер не требуется. Как правило, параметры прокси-сервера указываются для каждого рабочего места по отдельности, поскольку настройки доступа к сети Интернет могут различаться для разных рабочих мест.

        +

        Но если в организации используется клиент-серверная версия 1С:Предприятия, то параметры прокси-сервера необходимо указать и на сервере 1С:Предприятия(из раздела Администрирование - Общие настройки - Параметры серверной информационной базы).При этом параметры прокси-сервера для рабочего места и сервера 1С:Предприятия могут различаться.

        +

        Для доступа в Интернет с клиентских компьютеров параметры прокси‑сервера задаются на каждом клиентском рабочем месте (по команде Персональные настройки в разделе Администрирование).

        +

        Внимание: при работе с включенными профилями безопасности для настройки параметров прокси-сервера можно использовать только конфигурационный файл inetcfg.xml.

        +

        Настройка параметров прокси-сервера

        +
        • Выберите вариант использования прокси-сервера с помощью переключателя: +
          • Не использовать прокси-сервер - значение по умолчанию при первом запуске программы; +
          • Использовать системные настройки прокси-сервера - настройки заполняются автоматически значениями из настроек прокси-сервера операционной системы. В этом случае заполненные настройки недоступны для редактирования. +
          • Использовать другие настройки прокси-сервера - настройки задаются вручную: +
            • Напишите Адрес сервера и Порт сервера (одинаковый параметр для сервера 1С:Предприятия и рабочих мест). +
            • Из выпадающего списка выберите способ Аутентификации: +
              • Базовая - в этом случае для каждого рабочего места и сервера необходимо указать пользователя прокси-сервера и его пароль (в общем случае могут быть различными, зависит от сетевой политики в организации). +
              • Операционная система - в этом случае для работы с прокси-сервером будет использована учетная запись пользователя операционной системы.
            • Укажите имя Пользователя и Пароль. +
            • Для каждого рабочего места и сервера включение флажка Не использовать прокси для локальных адресов позволит снизить нагрузку на прокси-сервер при работе в локальной сети организации.
        • Для подтверждения параметров прокси-сервера нажмите ОК.

        Дополнительные параметры

        +
        • Нажмите Дополнительно: +
          • если используются системные настройки прокси-сервера - для того чтобы просмотреть дополнительные параметры; +
          • если используются другие настройки прокси-сервера - для того чтобы перейти к настройке дополнительных параметров.

        См. также:

        + \ No newline at end of file diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" new file mode 100644 index 00000000..7027fa02 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -0,0 +1,444 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + НастройкаПроксиНаКлиенте = Параметры.НастройкаПроксиНаКлиенте; + Если НЕ Параметры.НастройкаПроксиНаКлиенте + И НЕ Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + ВызватьИсключение НСтр("ru = 'Недостаточно прав доступа. + | + |Настройка прокси-сервера выполняется администратором.'"); + КонецЕсли; + + Если НастройкаПроксиНаКлиенте Тогда + НастройкаПроксиСервера = ПолучениеФайловИзИнтернета.НастройкиПроксиНаКлиенте(); + Иначе + АвтоЗаголовок = Ложь; + Заголовок = НСтр("ru = 'Параметры прокси-сервера на сервере 1С:Предприятия'"); + НастройкаПроксиСервера = ПолучениеФайловИзИнтернета.НастройкиПроксиНаСервере(); + КонецЕсли; + + ИспользоватьПрокси = Истина; + ИспользоватьСистемныеНастройки = Истина; + Если ТипЗнч(НастройкаПроксиСервера) = Тип("Соответствие") Тогда + + ИспользоватьПрокси = НастройкаПроксиСервера.Получить("ИспользоватьПрокси"); + ИспользоватьСистемныеНастройки = НастройкаПроксиСервера.Получить("ИспользоватьСистемныеНастройки"); + + Если ИспользоватьПрокси И НЕ ИспользоватьСистемныеНастройки Тогда + + // Заполнить данные формы настройками, заданными вручную. + Сервер = НастройкаПроксиСервера.Получить("Сервер"); + Пользователь = НастройкаПроксиСервера.Получить("Пользователь"); + Пароль = НастройкаПроксиСервера.Получить("Пароль"); + Порт = НастройкаПроксиСервера.Получить("Порт"); + НеИспользоватьПроксиДляЛокальныхАдресов = НастройкаПроксиСервера.Получить("НеИспользоватьПроксиДляЛокальныхАдресов"); + ЗначениеПараметра = НастройкаПроксиСервера.Получить("ИспользоватьАутентификациюОС"); + ИспользоватьАутентификациюОС = ?(ЗначениеПараметра = Неопределено, 0, Число(ЗначениеПараметра)); + + АдресаСерверовИсключенийМассив = НастройкаПроксиСервера.Получить("НеИспользоватьПроксиДляАдресов"); + Если ТипЗнч(АдресаСерверовИсключенийМассив) = Тип("Массив") Тогда + СерверыИсключений.ЗагрузитьЗначения(АдресаСерверовИсключенийМассив); + КонецЕсли; + + ДополнительныеПрокси = НастройкаПроксиСервера.Получить("ДополнительныеНастройкиПрокси"); + + Если ТипЗнч(ДополнительныеПрокси) <> Тип("Соответствие") Тогда + ОдинПроксиДляВсехПротоколов = Истина; + Иначе + + // Если в настройках заданы дополнительные прокси-серверы, + // то прочитать их из настроек. + Для каждого ПротоколСервер Из ДополнительныеПрокси Цикл + Протокол = ПротоколСервер.Ключ; + НастройкаПоПротоколу = ПротоколСервер.Значение; + ЭтотОбъект["Сервер" + Протокол] = НастройкаПоПротоколу.Адрес; + ЭтотОбъект["Порт" + Протокол] = НастройкаПоПротоколу.Порт; + КонецЦикла; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + // Варианты использования прокси-сервера: + // 0 - Не использовать прокси-сервер (по умолчанию, соответствует Новый ИнтернетПрокси(Ложь)). + // 1 - Использовать системные настройки прокси-сервера (соответствует Новый ИнтернетПрокси(Истина)). + // 2 - Использовать свои настройки прокси-сервера (соответствует ручной настройке параметров прокси-сервера). + // Для последнего становятся доступно ручное изменение параметров прокси-сервера. + ВариантИспользованияПроксиСервера = ?(ИспользоватьПрокси, ?(ИспользоватьСистемныеНастройки = Истина, 1, 2), 0); + Если ВариантИспользованияПроксиСервера = 0 Тогда + ИнициализироватьЭлементыФормы(ЭтотОбъект, ПустыеНастройкиПроксиСервера()); + ИначеЕсли ВариантИспользованияПроксиСервера = 1 И Не НастройкаПроксиНаКлиенте Тогда + ИнициализироватьЭлементыФормы(ЭтотОбъект, СистемныеНастройкиПроксиСервера()); + КонецЕсли; + + УстановитьВидимостьДоступность(ЭтотОбъект); + + Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если НастройкаПроксиНаКлиенте Тогда +#Если ВебКлиент Тогда + ПоказатьПредупреждение(, НСтр("ru = 'В веб-клиенте параметры прокси-сервера необходимо задавать в настройках браузера.'")); + Отказ = Истина; + Возврат; +#КонецЕсли + + Если ВариантИспользованияПроксиСервера = 1 Тогда + ИнициализироватьЭлементыФормы(ЭтотОбъект, СистемныеНастройкиПроксиСервера()); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ДополнительныеПараметрыПроксиСервера") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + Для Каждого КлючИЗначение Из ВыбранноеЗначение Цикл + Если КлючИЗначение.Ключ <> "НеИспользоватьПроксиДляАдресов" Тогда + ЭтотОбъект[КлючИЗначение.Ключ] = КлючИЗначение.Значение; + КонецЕсли; + КонецЦикла; + + СерверыИсключений = ВыбранноеЗначение.НеИспользоватьПроксиДляАдресов; + + Модифицированность = Истина; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Оповещение = Новый ОписаниеОповещения("ВыбратьИЗакрыть", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВариантыИспользованияПроксиСервераПриИзменении(Элемент) + + ИспользоватьПрокси = (ВариантИспользованияПроксиСервера > 0); + ИспользоватьСистемныеНастройки = (ВариантИспользованияПроксиСервера = 1); + + НастройкиПрокси = Неопределено; + // Варианты настройки прокси-сервера: + // 0 - Не использовать прокси-сервер (по умолчанию, соответствует Новый ИнтернетПрокси(Ложь)). + // 1 - Использовать системные настройки прокси-сервера (соответствует Новый ИнтернетПрокси(Истина)). + // 2 - Использовать свои настройки прокси-сервера (соответствует ручной настройке параметров прокси-сервера). + // Для последнего становятся доступно ручное изменение параметров прокси-сервера. + Если ВариантИспользованияПроксиСервера = 0 Тогда + НастройкиПрокси = ПустыеНастройкиПроксиСервера(); + ИначеЕсли ВариантИспользованияПроксиСервера = 1 Тогда + НастройкиПрокси = ?(НастройкаПроксиНаКлиенте, + СистемныеНастройкиПроксиСервера(), + СистемныеНастройкиПроксиСервераНаСервере()); + КонецЕсли; + + ИнициализироватьЭлементыФормы(ЭтотОбъект, НастройкиПрокси); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ДополнительныеПараметрыПроксиСервера(Команда) + + // Формирование параметров для дополнительных настроек. + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ТолькоПросмотр", Не ДоступноРедактирование); + + ПараметрыФормы.Вставить("ОдинПроксиДляВсехПротоколов", ОдинПроксиДляВсехПротоколов); + + ПараметрыФормы.Вставить("Сервер" , Сервер); + ПараметрыФормы.Вставить("Порт" , Порт); + ПараметрыФормы.Вставить("СерверHTTP" , СерверHTTP); + ПараметрыФормы.Вставить("ПортHTTP" , ПортHTTP); + ПараметрыФормы.Вставить("СерверHTTPS", СерверHTTPS); + ПараметрыФормы.Вставить("ПортHTTPS" , ПортHTTPS); + ПараметрыФормы.Вставить("СерверFTP" , СерверFTP); + ПараметрыФормы.Вставить("ПортFTP" , ПортFTP); + + ПараметрыФормы.Вставить("НеИспользоватьПроксиДляАдресов", СерверыИсключений); + + ОткрытьФорму("ОбщаяФорма.ДополнительныеПараметрыПроксиСервера", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура КнопкаОК(Команда) + + // Сохраняет настройки прокси-сервера и закрывает форму, + // передавая в качестве возвращаемого результата параметры прокси. + СохранитьНастройкиПроксиСервера(); + +КонецПроцедуры + +&НаКлиенте +Процедура КнопкаОтмена(Команда) + + Модифицированность = Ложь; + Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ИнициализироватьЭлементыФормы(Форма, НастройкиПрокси) + + Если НастройкиПрокси <> Неопределено Тогда + + Форма.Сервер = НастройкиПрокси.Сервер; + Форма.Порт = НастройкиПрокси.Порт; + Форма.СерверHTTP = НастройкиПрокси.СерверHTTP; + Форма.ПортHTTP = НастройкиПрокси.ПортHTTP; + Форма.СерверHTTPS = НастройкиПрокси.СерверHTTPS; + Форма.ПортHTTPS = НастройкиПрокси.ПортHTTPS; + Форма.СерверFTP = НастройкиПрокси.СерверFTP; + Форма.ПортFTP = НастройкиПрокси.ПортFTP; + Форма.Пользователь = НастройкиПрокси.Пользователь; + Форма.Пароль = НастройкиПрокси.Пароль; + Форма.НеИспользоватьПроксиДляЛокальныхАдресов = НастройкиПрокси.НеИспользоватьПроксиДляЛокальныхАдресов; + Форма.СерверыИсключений.ЗагрузитьЗначения(НастройкиПрокси.НеИспользоватьПроксиДляАдресов); + Форма.ИспользоватьАутентификациюОС = ?(НастройкиПрокси.ИспользоватьАутентификациюОС, 1, 0); + + // Если настройки по всем протоколам совпадают с настройками прокси + // по умолчанию, то считаем, что один прокси используется для всех протоколов. + Форма.ОдинПроксиДляВсехПротоколов = (Форма.Сервер = Форма.СерверHTTP + И Форма.СерверHTTP = Форма.СерверHTTPS + И Форма.СерверHTTPS = Форма.СерверFTP + И Форма.Порт = Форма.ПортHTTP + И Форма.ПортHTTP = Форма.ПортHTTPS + И Форма.ПортHTTPS = Форма.ПортFTP); + + КонецЕсли; + + УстановитьВидимостьДоступность(Форма); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьВидимостьДоступность(Форма) + + // Изменяем доступность группы редактирования параметров прокси в зависимости + // от варианта использования прокси-сервера. + Форма.ДоступноРедактирование = (Форма.ВариантИспользованияПроксиСервера = 2); + + Форма.Элементы.ГруппаАдресСервера.Доступность = Форма.ДоступноРедактирование; + Форма.Элементы.ГруппаАутентификация.Доступность = Форма.ДоступноРедактирование; + Форма.Элементы.НеИспользоватьПроксиДляЛокальныхАдресов.Доступность = Форма.ДоступноРедактирование; + +КонецПроцедуры + +// Выполняет сохранение настроек прокси-сервера в интерактивном режиме в +// результате действий пользователя с отображением сообщений пользователю, +// после чего закрывает форму с возвратом настроек прокси-сервера. +// +&НаКлиенте +Процедура СохранитьНастройкиПроксиСервера(ЗакрытьФорму = Истина) + + НастройкаПроксиСервера = Новый Соответствие; + + НастройкаПроксиСервера.Вставить("ИспользоватьПрокси", ИспользоватьПрокси); + НастройкаПроксиСервера.Вставить("Пользователь" , Пользователь); + НастройкаПроксиСервера.Вставить("Пароль" , Пароль); + НастройкаПроксиСервера.Вставить("Сервер" , НормализованныйАдресПроксиСервера(Сервер)); + НастройкаПроксиСервера.Вставить("Порт" , Порт); + НастройкаПроксиСервера.Вставить("НеИспользоватьПроксиДляЛокальныхАдресов", НеИспользоватьПроксиДляЛокальныхАдресов); + НастройкаПроксиСервера.Вставить("НеИспользоватьПроксиДляАдресов", СерверыИсключений.ВыгрузитьЗначения()); + НастройкаПроксиСервера.Вставить("ИспользоватьСистемныеНастройки", ИспользоватьСистемныеНастройки); + НастройкаПроксиСервера.Вставить("ИспользоватьАутентификациюОС", Булево(ИспользоватьАутентификациюОС)); + + + // Формирование дополнительных адресов прокси-серверов. + + Если НЕ ОдинПроксиДляВсехПротоколов Тогда + + ДополнительныеНастройки = Новый Соответствие; + Если НЕ ПустаяСтрока(СерверHTTP) Тогда + ДополнительныеНастройки.Вставить("http", + Новый Структура("Адрес,Порт", НормализованныйАдресПроксиСервера(СерверHTTP), ПортHTTP)); + КонецЕсли; + + Если НЕ ПустаяСтрока(СерверHTTPS) Тогда + ДополнительныеНастройки.Вставить("https", + Новый Структура("Адрес,Порт", НормализованныйАдресПроксиСервера(СерверHTTPS), ПортHTTPS)); + КонецЕсли; + + Если НЕ ПустаяСтрока(СерверFTP) Тогда + ДополнительныеНастройки.Вставить("ftp", + Новый Структура("Адрес,Порт", НормализованныйАдресПроксиСервера(СерверFTP), ПортFTP)); + КонецЕсли; + + Если ДополнительныеНастройки.Количество() > 0 Тогда + НастройкаПроксиСервера.Вставить("ДополнительныеНастройкиПрокси", ДополнительныеНастройки); + КонецЕсли; + + КонецЕсли; + + ЗаписатьНастройкиПроксиСервераВИнформационнуюБазу(НастройкаПроксиНаКлиенте, НастройкаПроксиСервера); + + Модифицированность = Ложь; + + Если ЗакрытьФорму Тогда + + Закрыть(НастройкаПроксиСервера); + + КонецЕсли; + +КонецПроцедуры + +// Выполняет непосредственное сохранение настроек прокси-сервера. +&НаСервереБезКонтекста +Процедура ЗаписатьНастройкиПроксиСервераВИнформационнуюБазу(НастройкаПроксиНаКлиенте, НастройкаПроксиСервера) + + Если НастройкаПроксиНаКлиенте + Или ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("НастройкаПроксиСервера", "", НастройкаПроксиСервера); + Иначе + ПолучениеФайловИзИнтернетаСлужебный.СохранитьНастройкиПроксиНаСервере1СПредприятие(НастройкаПроксиСервера); + КонецЕсли; + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПустыеНастройкиПроксиСервера() + + Результат = Новый Структура; + Результат.Вставить("Сервер" , ""); + Результат.Вставить("Порт" , 0); + Результат.Вставить("СерверHTTP" , ""); + Результат.Вставить("ПортHTTP" , 0); + Результат.Вставить("СерверHTTPS" , ""); + Результат.Вставить("ПортHTTPS" , 0); + Результат.Вставить("СерверFTP" , ""); + Результат.Вставить("ПортFTP" , 0); + Результат.Вставить("Пользователь", ""); + Результат.Вставить("Пароль" , ""); + + Результат.Вставить("ИспользоватьАутентификациюОС", Ложь); + + Результат.Вставить("НеИспользоватьПроксиДляЛокальныхАдресов", Ложь); + Результат.Вставить("НеИспользоватьПроксиДляАдресов", Новый Массив); + + Возврат Результат; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция СистемныеНастройкиПроксиСервера() + +#Если ВебКлиент Тогда + + Возврат ПустыеНастройкиПроксиСервера(); + +#Иначе + + Прокси = Новый ИнтернетПрокси(Истина); + + Результат = Новый Структура; + Результат.Вставить("Сервер", Прокси.Сервер()); + Результат.Вставить("Порт" , Прокси.Порт()); + + Результат.Вставить("СерверHTTP" , Прокси.Сервер("http")); + Результат.Вставить("ПортHTTP" , Прокси.Порт("http")); + Результат.Вставить("СерверHTTPS", Прокси.Сервер("https")); + Результат.Вставить("ПортHTTPS" , Прокси.Порт("https")); + Результат.Вставить("СерверFTP" , Прокси.Сервер("ftp")); + Результат.Вставить("ПортFTP" , Прокси.Порт("ftp")); + + Результат.Вставить("Пользователь", Прокси.Пользователь("")); + Результат.Вставить("Пароль" , Прокси.Пароль("")); + Результат.Вставить("ИспользоватьАутентификациюОС", Прокси.ИспользоватьАутентификациюОС("")); + + Результат.Вставить("НеИспользоватьПроксиДляЛокальныхАдресов", + Прокси.НеИспользоватьПроксиДляЛокальныхАдресов); + + НеИспользоватьПроксиДляАдресов = Новый Массив; + Для Каждого АдресСервера Из Прокси.НеИспользоватьПроксиДляАдресов Цикл + НеИспользоватьПроксиДляАдресов.Добавить(АдресСервера); + КонецЦикла; + Результат.Вставить("НеИспользоватьПроксиДляАдресов", НеИспользоватьПроксиДляАдресов); + + Возврат Результат; + +#КонецЕсли + +КонецФункции + +&НаСервереБезКонтекста +Функция СистемныеНастройкиПроксиСервераНаСервере() + + Возврат СистемныеНастройкиПроксиСервера(); + +КонецФункции + +// Возвращает нормализованный адрес прокси-сервера - без пробелов. +// Если между значащими символами встречаются пробелы, то адрес +// обрезается до первого пробела. +// +// Параметры: +// АдресПроксиСервера - Строка - нормализуемый адрес прокси-сервера. +// +// Возвращаемое значение: +// Строка - нормализованный адрес прокси-сервера. +// +&НаКлиентеНаСервереБезКонтекста +Функция НормализованныйАдресПроксиСервера(Знач АдресПроксиСервера) + + АдресПроксиСервера = СокрЛП(АдресПроксиСервера); + ПозицияПробела = СтрНайти(АдресПроксиСервера, " "); + Если ПозицияПробела > 0 Тогда + // Если в адресе сервера присутствуют пробелы, то + // берется часть адреса перед первым пробелом. + АдресПроксиСервера = Лев(АдресПроксиСервера, ПозицияПробела - 1); + КонецЕсли; + + Возврат АдресПроксиСервера; + +КонецФункции + +&НаКлиенте +Процедура ВыбратьИЗакрыть(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт + + СохранитьНастройкиПроксиСервера(); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" new file mode 100644 index 00000000..0971a147 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -0,0 +1,16 @@ + + + ПараметрыПроксиСервера + + ru + Параметры прокси-сервера + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/tests/metadata/ssl/src/CommonForms/\320\237\320\265\321\207\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Form.form" "b/tests/metadata/ssl/src/CommonForms/\320\237\320\265\321\207\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Form.form" new file mode 100644 index 00000000..00ae7321 --- /dev/null +++ "b/tests/metadata/ssl/src/CommonForms/\320\237\320\265\321\207\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262/Form.form" @@ -0,0 +1,4177 @@ + + + + ГруппаКоманднаяПанель + 116 + VeryHigh + + КоманднаяПанельЛеваяЧасть + 114 + + КнопкаПечатьКоманднаяПанель + 38 + true + true + + true + + false + + КнопкаПечатьКоманднаяПанельExtendedTooltip + 145 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Печать + Auto + true + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаПредварительныйПросмотр + 214 + true + true + + true + + + КнопкаПредварительныйПросмотрРасширеннаяПодсказка + 215 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекущаяПечатнаяФорма.StandardCommand.Preview + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Командная панель левая часть</value> + + false + + КоманднаяПанельЛеваяЧастьExtendedTooltip + 144 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + НастройкаКоличестваКопий + 275 + VeryHigh + + Копий + 117 + VeryHigh + true + true + + true + + + + Копий + + + Left + + ru + Количество копий + + + OnChange + КопийПриИзменении + + + КопийExtendedTooltip + 146 + true + true + + true + + Label + true + true + + Left + + + + КопийКонтекстноеМеню + 118 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 4 + true + true + true + true + true + true + true + + 1 + + + 999 + + + + + ФлажокПодписьИПечать + 281 + VeryHigh + true + true + + true + + + + ПодписьИПечать + + + Right + Button + + OnChange + ФлажокПодписьИПечатьПриИзменении + + + ФлажокПодписьИПечатьРасширеннаяПодсказка + 283 + + <key>ru</key> + <value>Добавить факсимильную подпись и печать в печатную форму</value> + + true + true + + true + + true + Label + true + true + + Left + + + + ФлажокПодписьИПечатьКонтекстноеМеню + 282 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Настройка количества копий</value> + + + НастройкаКоличестваКопийРасширеннаяПодсказка + 276 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + КоманднаяПанельПраваяЧасть + 115 + + КнопкаПоказатьСкрытьНастройкуКомплекта + 101 + true + true + + true + + + КнопкаПоказатьСкрытьНастройкуКомплектаExtendedTooltip + 149 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПоказатьСкрытьНастройкуКоличестваКопий + Auto + true + true + UserCmds + Auto + + + ГруппаРедактированиеПечатнойФормы + 142 + + КнопкаРедактирование + 141 + true + true + + true + + + КнопкаРедактированиеExtendedTooltip + 157 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПереключитьРедактирование + Auto + true + true + UserCmds + Auto + + + Язык + 284 + true + true + + true + + + <key>ru</key> + <value>Язык</value> + + + ЯзыкРасширеннаяПодсказка + 285 + true + true + + true + + Label + true + true + + Left + + + Popup + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Редактирование печатной формы</value> + + + ГруппаРедактированиеПечатнойФормыExtendedTooltip + 156 + true + true + + true + + Label + true + true + + Left + + + + + + ГруппаСохранитьОтправить + 108 + + КнопкаСохранить + 102 + true + true + + true + + + КнопкаСохранитьExtendedTooltip + 159 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Сохранить + Auto + true + true + UserCmds + Auto + + + КнопкаОтправить + 103 + true + true + + true + + + КнопкаОтправитьExtendedTooltip + 160 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отправить + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Сохранить отправить</value> + + + ГруппаСохранитьОтправитьExtendedTooltip + 158 + true + true + + true + + Label + true + true + + Left + + + + + + ГруппаНавигация + 109 + + КнопкаПерейтиКДокументу + 64 + true + true + + true + + false + + КнопкаПерейтиКДокументуExtendedTooltip + 162 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКДокументу + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Навигация</value> + + + ГруппаНавигацияExtendedTooltip + 161 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель правая часть</value> + + false + + КоманднаяПанельПраваяЧастьExtendedTooltip + 147 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ГруппаПоказатель + 252 + + Показатель + 254 + true + true + + true + + + + Показатель + + + None + + ПоказательРасширеннаяПодсказка + 256 + true + true + + true + + Label + true + true + + Left + + + + ПоказательКонтекстноеМеню + 255 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 10 + true + true + false + true + true + true + true + + + + КомандыПоказателей + 257 + + КомандыВидовПоказателей + 259 + + РассчитатьСумму + 261 + + <key>ru</key> + <value>Сумма</value> + + true + true + + true + + + РассчитатьСуммуРасширеннаяПодсказка + 262 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РассчитатьСумму + Auto + true + true + UserCmds + Auto + + + РассчитатьКоличество + 263 + + <key>ru</key> + <value>Количество</value> + + true + true + + true + + + РассчитатьКоличествоРасширеннаяПодсказка + 264 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РассчитатьКоличество + Auto + true + true + UserCmds + Auto + + + РассчитатьСреднее + 265 + + <key>ru</key> + <value>Среднее</value> + + true + true + + true + + + РассчитатьСреднееРасширеннаяПодсказка + 266 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РассчитатьСреднее + Auto + true + true + UserCmds + Auto + + + РассчитатьМинимум + 267 + + <key>ru</key> + <value>Минимум</value> + + true + true + + true + + + РассчитатьМинимумРасширеннаяПодсказка + 268 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РассчитатьМинимум + Auto + true + true + UserCmds + Auto + + + РассчитатьМаксимум + 269 + + <key>ru</key> + <value>Максимум</value> + + true + true + + true + + + РассчитатьМаксимумРасширеннаяПодсказка + 270 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РассчитатьМаксимум + Auto + true + true + UserCmds + Auto + + + ВсеПоказатели + 271 + + РассчитатьВсеПоказатели + 273 + + <key>ru</key> + <value>Все показатели</value> + + true + true + + true + + + РассчитатьВсеПоказателиРасширеннаяПодсказка + 274 + true + true + + true + + Label + true + true + + Left + + + Form.Command.РассчитатьВсеПоказатели + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Все показатели</value> + + true + + ВсеПоказателиРасширеннаяПодсказка + 272 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Виды показателей</value> + + true + + КомандыВидовПоказателейРасширеннаяПодсказка + 260 + true + true + + true + + Label + true + true + + Left + + + Popup + + + CommonPicture.Сумма + + Picture + + + true + true + + true + + + <key>ru</key> + <value>Показатели</value> + + + ru + Выполняет расчет определенного или всех показателей выделенных ячеек + + true + + КомандыПоказателейРасширеннаяПодсказка + 258 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + true + true + + true + + + <key>ru</key> + <value>Показатель</value> + + true + false + + ГруппаПоказательРасширеннаяПодсказка + 253 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + КоманднаяПанельЕще + 192 + + КнопкаПечатьВсеДействия + 120 + true + true + + true + + false + + КнопкаПечатьВсеДействияExtendedTooltip + 148 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Печать + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + КнопкаПредварительныйПросмотрВсеДействия + 216 + true + true + + true + + + КнопкаПредварительныйПросмотрВсеДействияРасширеннаяПодсказка + 217 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекущаяПечатнаяФорма.StandardCommand.Preview + Auto + true + true + UserCmds + Auto + + + КнопкаПараметрыСтраницыВсеДействия + 218 + true + true + + true + + + КнопкаПараметрыСтраницыВсеДействияРасширеннаяПодсказка + 219 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТекущаяПечатнаяФорма.StandardCommand.PageSetup + Auto + true + true + UserCmds + Auto + + + ГруппаСохранитьОтправитьВсеДействия + 194 + + КнопкаСохранитьВсеДействия + 196 + true + true + + true + + + КнопкаСохранитьВсеДействияРасширеннаяПодсказка + 197 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Сохранить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + КнопкаОтправитьВсеДействия + 198 + true + true + + true + + + КнопкаОтправитьВсеДействияРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Отправить + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Группа сохранить отправить</value> + + + ГруппаСохранитьОтправитьВсеДействияРасширеннаяПодсказка + 195 + true + true + + true + + Label + true + true + + Left + + + + + + ГруппаРедактированиеМакета + 137 + + КнопкаИзменитьМакет + 138 + true + true + + true + + + КнопкаИзменитьМакетExtendedTooltip + 164 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ИзменитьМакет + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + КнопкаПерейтиКУправлениюМакетами + 81 + true + true + + true + + false + + КнопкаПерейтиКУправлениюМакетамиExtendedTooltip + 165 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ПерейтиКУправлениюМакетами + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Редактирование макета</value> + + + ГруппаРедактированиеМакетаExtendedTooltip + 163 + true + true + + true + + Label + true + true + + Left + + + + + + Справка + 277 + true + true + + true + + + СправкаРасширеннаяПодсказка + 278 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Picture + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель еще</value> + + + КоманднаяПанельЕщеРасширеннаяПодсказка + 193 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + Form + + + true + true + + true + + + <key>ru</key> + <value>Копий и автосумма</value> + + + ГруппаКоманднаяПанельExtendedTooltip + 143 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + Auto + + + + ГруппаДополнительнаяИнформация + 226 + + КартинкаИнформации + 223 + + <key>ru</key> + <value>Картинка информации</value> + + true + true + + true + + + КартинкаИнформацииРасширеннаяПодсказка + 225 + true + true + + true + + Label + true + true + + Left + + + + КартинкаИнформацииКонтекстноеМеню + 224 + true + true + + true + + true + + true + true + + + CommonPicture.Информация + + + + + ДополнительнаяИнформация + 220 + + <key>ru</key> + <value>С этим контрагентом возможен электронный документооборот. <link ПерейтиКНастройкамЭлектронногоДокументооборота>Перейти к настройкам</></value> + + true + true + + true + + + ДополнительнаяИнформацияРасширеннаяПодсказка + 222 + true + true + + true + + Label + true + true + + Left + + + + ДополнительнаяИнформацияКонтекстноеМеню + 221 + true + true + + true + + true + + true + Label + true + true + + + URLProcessing + ДополнительнаяИнформацияОбработкаНавигационнойСсылки + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Дополнительная информация</value> + + + ГруппаДополнительнаяИнформацияРасширеннаяПодсказка + 227 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + + ГруппаПечатныеФормы + 119 + + НастройкиПечатныхФорм + 86 + VeryLow + + <key>ru</key> + <value>Настройки печатных форм</value> + + true + true + + true + + + НастройкиПечатныхФорм + + None + Add + CancelSearch + Change + Copy + Delete + EndEdit + Find + OutputList + SelectAll + SortListAsc + SortListDesc + + НастройкиПечатныхФормПечатать + 93 + true + true + + true + + + + НастройкиПечатныхФорм.Печатать + + + None + + OnChange + НастройкиПечатныхФормПечататьПриИзменении + + + НастройкиПечатныхФормПечататьExtendedTooltip + 175 + true + true + + true + + Label + true + true + + Left + + + + НастройкиПечатныхФормПечататьКонтекстноеМеню + 94 + true + true + + true + + true + + CheckBoxField + EnterOnInput + true + + StdPicture.Print + + Left + true + + + + НастройкиПечатныхФормПредставление + 89 + true + true + + true + + + + НастройкиПечатныхФорм.Представление + + + + НастройкиПечатныхФормПредставлениеExtendedTooltip + 176 + true + true + + true + + Label + true + true + + Left + + + + НастройкиПечатныхФормПредставлениеКонтекстноеМеню + 90 + true + true + + true + + true + + InputField + true + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + + НастройкиПечатныхФормКоличество + 91 + true + true + + true + + + + НастройкиПечатныхФорм.Количество + + + + НастройкиПечатныхФормКоличествоExtendedTooltip + 177 + true + true + + true + + Label + true + true + + Left + + + + НастройкиПечатныхФормКоличествоКонтекстноеМеню + 92 + true + true + + true + + true + + InputField + true + Left + true + + + Tuning + НастройкиПечатныхФормКоличествоРегулирование + + 6 + true + true + true + true + true + true + true + + 0 + + + + + НастройкиПечатныхФормКоманднаяПанель + 88 + + ГруппаНастройкаКомплектаКоманднаяПанель + 121 + + КнопкаУстановитьФлажкиПодменю + 122 + true + true + + true + + + КнопкаУстановитьФлажкиПодменюExtendedTooltip + 151 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьФлажки + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаСнятьФлажкиПодменю + 123 + true + true + + true + + + КнопкаСнятьФлажкиПодменюExtendedTooltip + 152 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаПереместитьВверхПодменю + 124 + true + true + + true + + + КнопкаПереместитьВверхПодменюExtendedTooltip + 153 + true + true + + true + + Label + true + true + + Left + + + Form.Item.НастройкиПечатныхФорм.StandardCommand.MoveUp + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаПереместитьВнизПодменю + 125 + true + true + + true + + + КнопкаПереместитьВнизПодменюExtendedTooltip + 154 + true + true + + true + + Label + true + true + + Left + + + Form.Item.НастройкиПечатныхФорм.StandardCommand.MoveDown + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаСброситьНастройкиПодменю + 126 + true + true + + true + + + КнопкаСброситьНастройкиПодменюExtendedTooltip + 155 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СброситьНастройки + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Настройка комплекта</value> + + + ГруппаНастройкаКомплектаКоманднаяПанельРасширеннаяПодсказка + 150 + true + true + + true + + Label + true + true + + Left + + + + + true + true + + true + + Left + + + BeforeAddRow + НастройкиПечатныхФормПередНачаломДобавления + + + OnActivateRow + НастройкиПечатныхФормПриАктивизацииСтроки + + + OnChange + НастройкиПечатныхФормПриИзменении + + + true + true + + true + + НастройкиПечатныхФормСтрокаПоиска + 200 + + НастройкиПечатныхФормСтрокаПоискаРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + + НастройкиПечатныхФормСтрокаПоискаКонтекстноеМеню + 201 + true + true + + true + + true + + + true + + + + true + true + + true + + НастройкиПечатныхФормСостояниеПросмотра + 203 + + НастройкиПечатныхФормСостояниеПросмотраРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + + НастройкиПечатныхФормСостояниеПросмотраКонтекстноеМеню + 204 + true + true + + true + + true + + ViewStatusAddition + + true + + + + true + true + + true + + НастройкиПечатныхФормУправлениеПоиском + 206 + + НастройкиПечатныхФормУправлениеПоискомРасширеннаяПодсказка + 208 + true + true + + true + + Label + true + true + + Left + + + + НастройкиПечатныхФормУправлениеПоискомКонтекстноеМеню + 207 + true + true + + true + + true + + SearchControlAddition + + true + + + + НастройкиПечатныхФормExtendedTooltip + 174 + true + true + + true + + Label + true + true + + Left + + + + НастройкиПечатныхФормКонтекстноеМеню + 87 + + ГруппаНастройкаКомплектаКонтекстноеМеню + 107 + + КнопкаУстановитьФлажкиКонтекстноеМеню + 99 + true + true + + true + + + КнопкаУстановитьФлажкиКонтекстноеМенюExtendedTooltip + 168 + true + true + + true + + Label + true + true + + Left + + + Form.Command.УстановитьФлажки + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаСнятьФлажкиКонтекстноеМеню + 100 + true + true + + true + + + КнопкаСнятьФлажкиКонтекстноеМенюExtendedTooltip + 169 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаПереместитьВверхКонтекстноеМеню + 110 + true + true + + true + + + КнопкаПереместитьВверхКонтекстноеМенюExtendedTooltip + 170 + true + true + + true + + Label + true + true + + Left + + + Form.Item.НастройкиПечатныхФорм.StandardCommand.MoveUp + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаПереместитьВнизКонтекстноеМеню + 111 + true + true + + true + + + КнопкаПереместитьВнизКонтекстноеМенюExtendedTooltip + 171 + true + true + + true + + Label + true + true + + Left + + + Form.Item.НастройкиПечатныхФорм.StandardCommand.MoveDown + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаСброситьНастройкиКонтекстноеМеню + 128 + true + true + + true + + + КнопкаСброситьНастройкиКонтекстноеМенюExtendedTooltip + 172 + true + true + + true + + Label + true + true + + Left + + + Form.Command.СброситьНастройки + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Настройка комплекта контекстное меню</value> + + + ГруппаНастройкаКомплектаКонтекстноеМенюExtendedTooltip + 167 + true + true + + true + + Label + true + true + + Left + + + + + + НастройкиПечатныхФормКонтекстноеМенюКопироватьВБуферОбмена + 127 + true + true + + true + + + НастройкиПечатныхФормКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip + 173 + true + true + + true + + Label + true + true + + Left + + + Form.Item.НастройкиПечатныхФорм.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + true + 30 + 50 + true + true + MultiRow +
        true
        + 1 + 3 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + +
        + + Страницы + 9 + VeryHigh + + СтраницаТекущаяПечатнаяФорма + 209 + + ТекущаяПечатнаяФорма + 211 + true + true + + true + + + + ТекущаяПечатнаяФорма + + + None + + ТекущаяПечатнаяФормаРасширеннаяПодсказка + 213 + true + true + + true + + Label + true + true + + Left + + + + ТекущаяПечатнаяФормаКонтекстноеМеню + 212 + true + true + + true + + true + + SpreadsheetDocumentField + Enter + true + Left + true + + + OnActivate + ТекущаяПечатнаяФормаПриАктивизации + + 30 + true + 15 + true + true + true + Special + ScrollAlways + ScrollAlways + Always + Auto + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница текущая печатная форма</value> + + + СтраницаТекущаяПечатнаяФормаРасширеннаяПодсказка + 210 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + + СтраницаПечатнаяФормаНедоступна + 129 + + ГруппаПечатнаяФормаНедоступна + 132 + + КартинкаПечатнаяФормаНедоступна + 130 + + <key>ru</key> + <value>Картинка печатная форма недоступна</value> + + true + true + + true + + + КартинкаПечатнаяФормаНедоступнаExtendedTooltip + 183 + true + true + + true + + Label + true + true + + Left + + + + КартинкаПечатнаяФормаНедоступнаКонтекстноеМеню + 131 + true + true + + true + + true + + true + true + + + CommonPicture.Информация32 + + + + + НадписьПечатнаяФормаНедоступна + 133 + + <key>ru</key> + <value>Печатная форма недоступна.</value> + + true + true + + true + + + НадписьПечатнаяФормаНедоступнаExtendedTooltip + 184 + true + true + + true + + Label + true + true + + Left + + + + НадписьПечатнаяФормаНедоступнаКонтекстноеМеню + 134 + true + true + + true + + true + + Label + true + Center + + Left + + + true + true + + true + + + <key>ru</key> + <value>Печатная форма недоступна</value> + + + ГруппаПечатнаяФормаНедоступнаExtendedTooltip + 182 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница печатная форма недоступна</value> + + + СтраницаПечатнаяФормаНедоступнаExtendedTooltip + 181 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + true + + СтраницыExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Печатные формы</value> + + + ГруппаПечатныеФормыExtendedTooltip + 166 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + LeftNarrowest + Auto + Auto + +
        + + ОбластьПоказателей + 228 + + ОтступПоказатели + 230 + true + true + + true + + + ОтступПоказателиРасширеннаяПодсказка + 232 + true + true + + true + + Label + true + true + + Left + + + + ОтступПоказателиКонтекстноеМеню + 231 + true + true + + true + + true + + Label + true + true + true + + Left + + + + ВидыПоказателей + 233 + + Сумма + 235 + true + true + + true + + + + Сумма + + + Left + + СуммаРасширеннаяПодсказка + 237 + true + true + + true + + Label + true + true + + Left + + + + СуммаКонтекстноеМеню + 236 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 10 + true + true + false + true + true + true + true + + + + Количество + 238 + true + true + + true + + + + Количество + + + Left + + КоличествоРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + + КоличествоКонтекстноеМеню + 239 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 10 + true + true + false + true + true + true + true + + + + Среднее + 241 + true + true + + true + + + + Среднее + + + Left + + СреднееРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + + СреднееКонтекстноеМеню + 242 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 10 + true + true + false + true + true + true + true + + + + Минимум + 244 + true + true + + true + + + + Минимум + + + Left + + МинимумРасширеннаяПодсказка + 246 + true + true + + true + + Label + true + true + + Left + + + + МинимумКонтекстноеМеню + 245 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 10 + true + true + false + true + true + true + true + + + + Максимум + 247 + true + true + + true + + + + Максимум + + + Left + + МаксимумРасширеннаяПодсказка + 249 + true + true + + true + + Label + true + true + + Left + + + + МаксимумКонтекстноеМеню + 248 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 10 + true + true + false + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Виды показателей</value> + + true + false + + ВидыПоказателейРасширеннаяПодсказка + 234 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + + Style.ИтогиФонГруппы + + Auto + Auto + + + + СвернутьПоказатели + 250 + true + true + + true + + + СвернутьПоказателиРасширеннаяПодсказка + 251 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.СвернутьПоказатели + Auto + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Показатели</value> + + + ru + Показатели выделенных ячеек отчета + + true + true + + ОбластьПоказателейРасширеннаяПодсказка + 229 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Right + Picture + true + true + Auto + Auto + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnSaveDataInSettingsAtServer + ПриСохраненииДанныхВНастройкахНаСервере + + + ChoiceProcessing + ОбработкаВыбора + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + Use + true + Vertical + true + true + true + UseIfNecessary + true + true + + + КоманднаяПанельЕще + + + + + Язык + + + + ОбъектыПечати + 14 + + ValueList + + + true + + + true + + + + + + + КлючНастроек + 17 + + String + + + + true + + + true + + + + НастройкиПечатныхФорм + + <key>ru</key> + <value>Настройки печатных форм</value> + + 16 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Печатная форма</value> + + 1 + + String + + + + true + + + true + + + + Количество + + <key>ru</key> + <value>Копий</value> + + 2 + + Number + + 3 + true + + + + true + + + true + + + + Печатать + 3 + + Boolean + + + true + + + true + + + + ИмяСтраницы + 4 + + String + + + + true + + + true + + + + ИмяРеквизита + 5 + + String + + + + true + + + true + + + + ИмяМакета + 6 + + String + + + + true + + + true + + + + ПозицияПоУмолчанию + 7 + + Number + + 10 + true + + + + true + + + true + + + + Название + 8 + + String + + + + true + + + true + + + + ПутьКМакету + 9 + + String + + + + true + + + true + + + + ИмяФайлаПечатнойФормы + 10 + + String + + + + true + + + true + + + + ОфисныеДокументы + 11 + + String + + + + true + + + true + + + + ПодписьИПечать + 12 + + Boolean + + + true + + + true + + + + ДоступенВыводНаДругихЯзыках + 13 + + Boolean + + + true + + + true + + + + ТекущийЯзык + 14 + + String + + + + true + + + true + + + + ДоступныеЯзыки + 15 + + String + + + + true + + + true + + + + + ПечатнаяФормаОбразец + 19 + + SpreadsheetDocument + + + true + + + true + + + + + ПараметрыВывода + 1 + + + true + + + true + + + + НастройкиКомплектаПоУмолчанию + 2 + + ValueTable + + + true + + + true + + + ИмяМакета + 1 + + String + + + + true + + + true + + + + Количество + 2 + + Number + + 10 + + + + true + + + true + + + + ПозицияПоУмолчанию + 3 + + Number + + 10 + true + + + + true + + + true + + + + + ДоступнаНастройкаКомплекта + 3 + + Boolean + + + true + + + true + + + + Копий + + <key>ru</key> + <value>Копий</value> + + 4 + + Number + + 3 + true + + <